AES란?
AES (Advanced Encryption Standard)은 고급 암호화 표준, 암호화 및 복호화 시 동일한 키를 사용하는 대칭 알고리즘입니다
높은 안정성과 빠른 속도로 현재 가장 대중적으로 사용되어지고 있는 암호화 알고리즘입니다!
AES 종류
각각 뒤에 붙은 숫자는 암호화 및 복호화에 사용되는 키의 길이를 의미합니다.
- AES-128
- AES-192
- AES-256
AES-256
Secret Key
암호화 할 대상인 평문을 암호화하는 데 사용됩니다.
이 키는절대로 외부에 노출되면 안 됩니다
256bit의 secret key를 사용합니다.
Block Cipher(블록 암호)
128비트의 고정된 블록 단위로 암호화를 수행합니다.
주어진 암호황을 128비트씩 나누어 블록 단위로 암호화를 진행하게 되는데 이렇게 블록 단위로 쪼개진 것을 Block Cipher라고 합니다.
운용방식을 Block Cipher Mode라고 하는데,
여기에는 CBC(Cipher Block Chaining) , ECB(Elctronoc Codebook Mode) 등이 있습니다.
보통은 CBC방식이 권장됩니다.
CBC방식은 암호화를 이전 블로에 의존하도록 만드는 방식이며 안전한 방식입니다.
여기서 IV라는 개념이 사용됩니다.
암호화 대상인 plaintext가 암호화되어 ciphertext가 되는데 이때 다음 plaintext가 암호화될 때 이전에 암호화했던 블록과 XOR 연산을 한 다음에 암호화를 진행하게 됩니다!
이 때문에 같은 내용의 plaintext 라도 전혀 다른 암호문을 갖게 됩니다.
IV(initialization vector)
CBC암호화 진행 시 이전 블록에 의존하게 되는데, 첫 번째 블록은 암호화된 블록이 존재 하지 않습니다.
이를 위해 첫 번째 블록에는 IV라는것이 사용됩니다.
128비트 IV값을 가지고 첫번째 블록을 암호화합니다.
Padding
input데이터 길이는 보통 한 block size인 128비트의 배수의 길이를 가진다는 것은 보장할 수 없습니다.
AES에서는 input데이터의 길이가 128비트의 배수가 아닌 경우 128비트를 맞추기 위해 마지막 블록에 값을 추가합니다.
이때 추가되는 행위 또는 값을 padding이라고 합니다.
padding의 종류에는 PKCS5, PKCS7 등 여러 가지가 있습니다.
'Algorithm > 알고리즘 이론' 카테고리의 다른 글
[알고리즘] 그래프와 트리 (0) | 2024.08.01 |
---|---|
[알고리즘] 힙 / 해시 테이블 (0) | 2024.07.24 |
[알고리즘] 백트래킹 (0) | 2024.07.23 |
[알고리즘] 동적 계획법(DP : Dynamic programming) (0) | 2024.07.19 |
[알고리즘] 투포인터 (0) | 2024.07.18 |