블록 암호 알고리즘이자, 대칭키 암호 알고리즘으로 유명한 AES와 DES에 대해서 알아보겠습니다.
[ Contents ]
1. DES (Data Encryption Standard)
64bit(8byte) 블록단위로 라운드 함수를 16번 반복하는 암호 알고리즘
DES는 평문을 같은 크기의 암호문(8byte)으로 바꾸는 대칭키 암호 알고리즘입니다. 물론 7bit마다 오류검출을 위한 검증비트(1bit)가 들어가므로, 정확히는 56bit의 키 길이를 갖습니다.
16단계의 페이스텔 네트워크(Feistel Network)를 사용하며, 쉽게 말하자면 라운드 함수라는 걸 16번이나 반복해서 평문을 얻기 어렵게 만든 알고리즘입니다. 당연히 라운드 함수를 거꾸로 16번 반복하면 평문이 구해집니다.
과거에는 64bit의 암호문을 복호화하기 어려웠기 때문에 썼지만, 지금은 컴퓨팅 파워가 좋아져서 쉽게 해독되는 암호 알고리즘입니다. 또한 더 쉬운 파훼법(선형 공격)도 나와서 지금은 사용되지 않습니다.
이를 극복하고자 단순히 DES과정을 2, 3번 반복하는 알고리즘(3-DES)도 나왔지만 이 역시 사용되진 않습니다.
2. AES (Advanced Encryption Standard)
128bit(16byte) 블록단위로 입력값을 변환한 뒤, 라운드 함수를 적용하는 암호 알고리즘
AES는 128bit(8byte)의 평문을 암호화하는 대칭키 알고리즘입니다. 키의 길이는 128, 192, 256으로 다양하며 SPN구조를 사용해서 암호화 속도나 효율성도 좋습니다. 기존 DES의 경우 swap연산과 라운드 함수 단순 반복으로 복잡도를 높였지만, AES는 입력데이터를 S-Box의 지정된 데이터로 치환하고 SPN구조를 반복해서 키의 길이를 늘립니다.
SPN은 SubBytes, ShiftRows, MixColumns, AddRoundKey 4단계를 거칩니다. S-Box로 입력데이터를 치환하고(SubBytes), 행/열을 이동시키고(ShiftRows, MixColumns), 만들어진 라운드 키로 XOR연산하는 과정이 진행됩니다.
AES는 복호화하기 위한 역함수가 필요하지만, 병렬연산이 가능하며 효율성이 좋아서 지금도 사용되는 암호 알고리즘입니다. 현재는 보안을 위해 256 이상의 키 길이를 추천하고 있습니다.
'CS > 보안' 카테고리의 다른 글
[보안] 전자서명의 개념과 주요 기능: 위조불가, 인증, 부인 방지, 변경 불가, 재사용 불가 (0) | 2023.05.15 |
---|---|
[보안] 대칭키 방식과 비대칭키(공개키) 방식: 개념과 장단점, 차이점 (0) | 2023.05.15 |
[보안] 키 배송 문제와 해결방안: 사전 공유, 키 배포센터, Diffie-ellman 알고리즘, 공개키 암호 (0) | 2023.05.12 |
[보안] 스트림 암호와 블록 암호의 개념과 장단점 (4) | 2023.05.11 |
[보안] 정보보호의 목표: 기밀성, 무결성, 가용성, 인증성, 책임추적성, 부인방지 (0) | 2023.05.11 |
댓글