들어가기 전
AES 암호화 알고리즘에 대해 자세히 이해하기 위해 글을 작성한다.
본문
1. AES 암호화 알고리즘
AES는 대칭키 암호 알고리즘으로, 암호화와 복호화에 사용되는 키가 동일하다. 아래와 같은 장점과 단점이 존재한다.
장점: 키가 동일하기 때문에 암호화, 복호화 과정이 빠르다
단점: 암호화, 복호화에 사용되는 키가 동일하기 때문에 서버와 클라이언트가 키를 교환하는 과정에서 어쩔 수 없이 노출이 될 수 있는데, 해당 키가 해커에게 탈취될 수 있는 문제가 존재한다.
AES 종류로는 AES-128, AES-192, AES-256이 존재한다. 128, 192, 256비트인 세 가지 종류가 존재하는 것이다.
Secret Key
암호화 할 대상인 평문을 암호화하는 데 사용되며, 외부에 노출되서는 안된다.
Block Cipher(=블록암호)
기밀성 있는 정보를 정해진 블록 단위로 암호화하는 시스템이다.
Block Cipher을 사용할 때 운용하는 방식을 Block Cipher Mode라고 하는데 여기에는 CBC, ECB 모드가 있다.
주로 CBC 모드를 사용하는데, CBC 방식은 이전 블록에 의존하도록 만드는 방식이다.
암호화 대상인 각 plaintext 가 암호화가되어 ciphertext 가 되는데 이때 다음 plaintext 가 암호화 될 때 이전에 암호화했던 블록과 xor 연산을 한 다음에 암호화를 진행하게 된다. 여기서 IV라는 개념이 나온다.
IV
첫 번째 블록은 이전 암호화된 블록이 존재하지 않는다. 이를 위해 첫 번째 블록에는 IV라는 것이 사용된다. 간단하게 이야기하면 생성된 128비트 IV 값을 가지고 첫 번째 블록을 암호화한다. 매번 다른 IV를 생성하면 같은 plaintext라도 매번 다른 ciphertext를 생성할 수 있다.
Padding
AES는 128 비트의 블록 단위로 암호화를 진행한다. 하지만 암호화의 대상이 되는 input 데이터가 매번 128비트의 배수 길이를 가진다는 것은 보장할 수 없기 때문에 input 데이터의 길이를 128비트로 맞추기 위해 마지막 블록에 값을 추가하는데 이때 채워지는 값 또는 행위를 패딩이라고 한다. padding의 종류에는 PKCS5, PKCS7 등이 있다
2. 대칭키
대칭키는 암호화와 복호화에 사용하는 키가 동일하다
종류: DES, 3DES, AES, SEED, ARIA
장점: 속도가 빠름
단점: 탈취될 수 있는 문제가 존재, 관리해야 할 키가 많음
3. 비대칭키(공개키)
암호화 키와 복호화 키가 다르다. 비대칭키 암호화 방식에서 암호화하기 위한 키를 공개키라고 하며, 복호화하기 위한 키를 개인키라고 한다. 그래서 공개키는 모두에게 공개되어 있어 전송하기 전 데이터를 암호화 가능하지만, 개인키는 각 사용자만이 가지고 있기 때문에 해당 데이터를 복호화하기 위해서는 데이터를 받는 쪽의 개인키를 통해 복호화가 가능하다.
종류: RSA: DSA, ECC, Diffie Hellman
장점: 키분배 필요가 없음
단점: 속도가 느림
마무리
AES에 대해 정리하면서 대칭키와 비대칭키에 대해서도 정리해 봤다.
'Knowledge' 카테고리의 다른 글
[Knowledge] REST / REST API / RESTful (0) | 2024.08.31 |
---|---|
[Knowledge] RSA 암호화 알고리즘 (0) | 2024.08.21 |
[Knowledge] 유출, 누출, 노출 차이 (0) | 2024.08.12 |
[Knowledge] SSL/TLS 프로토콜과 Cipher Suite의 이해 (0) | 2024.07.22 |
[Knowledge] JWT 토큰 (0) | 2024.07.21 |