대칭키 암호
대칭키 암호 정의
암호화 방식 중 암호화할 때 사용한 키와 복호화할 때 사용한 키가 같은 암호 방식. 공유 비밀키 방식 또는 대칭키 방식이라고 부른다.
대칭키 암호의 종류
1) 스트림 암호
- 비트/바이트/단어들을 순차적으로 암호화
- 비트나 바이트 처럼 데이터의 작은 단위들이 입력되며, 현재 입력에 대한 출력은 과거의 입력에 대한 영향을 받는 방식의 알고리즘
- 동기식 스트림암호 / 비동기 스트림 암호
- 예 : RC4
2) 블록 암호
- 한번에 하나씩 데이터 블록을 암호화 (고정 길이의 블록을 암호화하는 암호 알고리즘)
- 데이터를 큰 블록으로 나누고 현재의 출력 블록은 현재의 입력 블록에만 영향을 받는 방식의 알고리즘
- 예 : DES. AES. SEED, ARIA
블록 암호 모드
- 모드 : 긴 평문을 암호화하기 위해서는 블록 암호 알고리즘을 반복해서 사용해여 긴 평문 전부를 암호화할 필요가 있다. 이처럼 반복하는 방법을 블록 암호의 모드(mode)라고 한다.
1. ECB (Electronic Code Block) Mode
- 평문 블록을 암호한 것이 그대로 암호문 블록이 된다.
- 간단, 고속, 병렬 처리 가능( 암호화, 복호화 양쪽 모두 )
- 마지막 평문 블록이 모자라면 패딩(padding) 추가
- 에러의 전파 없음
- 같은 평문 블럭일 경우, 같은 암호문이 생성된다.
- 총신의 형식을 알고 있으면, 암호문을 해독하는 일이 없이 평문을 조작할 수 있다.
- 재전송 공격 가능
2. CBC (Cihper Block Chaining) Mode
- 평문의 반복은 암호문에 반영되지 않는다
- 병렬 처리 가능 ( 복호화만 )
- 임의의 암호문 블록을 복호화할 수 있다.
- 에러의 전파
3. CFB (Cipher FeedBack) Mode
- 암호화 알고리즘과 복호화 알고리즘이 같다.
- 패딩이 필요 없다.
- 병렬 처리 가능 ( 복호화만 )
- 임의의 암호문 블록을 복호화할 수 있다.
- 에러 전파
- 재전송 가능 가능
4. OFB (Output FeedBack) Mode
- 패딩이 필요 없다.
- 암호화, 복호화의 사전 준비를 할 수 있다.
- 암호화와 복호화가 같은 구조
- 에러 전파 없음
- 병렬 처리 할 수 없다.
5. CTR (CounTeR) Mode
- 패딩이 필요 없다.
- 암호화/ 복호화의 사전 준비를 할 수 있다,
- 암호화와 복호화가 같은 구조
- 에러 전파 없음
- 병렬 처리 가능
- 적극적인 공격자가 암호문 블록을 비트 반전시키면 대응하는 평문 블록이 비트 반전된다.
DES
- 1977년에 미국 규격으로 채택된 대칭 암호.
- 64비트 평문을 64비트 암호문으로 암호화하는 대칭 암호 알고리즘
- 키의 비트 길이는 56비트 ( 키는 64비트이지만, 7비트마다 오류 검출을위한 비트가 있어서 실질적 56비트 )
- 블록 암호
- 구조 : 페이스텔(Feistel) ; 라운드(round)라는 암호화의 1단계를 여러 번 반복해서 수행하도록 되어 있다. 16회 반복한다.
AES
- DES를 대신하여 새로운 표준이 된 대칭 알고리즘
- 구조 : SPN(Substitution-Permutation Network)
- 입력블록 128, 키 사이즈는 128, 192, 256비트이고 그에 따라서 라운드 수는 각각 10, 12, 14이다.
- 암호 방법
: SubBytes -> ShiftRows -> MixColumns -> AddRoundKey
- 마지막 라운드에서는 MixColumns을 수행하지 않는다.
블록 암호 비교
블록 크기(bit) | 키 사이즈(bit) | 라운드 수 | 응용 | |
DES | 64 | 56 | 16 | SET, Kerberos |
3DES | 64 | 112 혹은 168 | 48 | 금융 키 관리, PGP, S/MIME |
AES | 128 | 128, 192, 256 | 10, 12, 14 | DES와 3DES를 대체 |
SEED | 128 | 125, 256 | 16, 24 | 정보보호진흥원에서 개발 |
ARIA | 128 | 128, 192, 256 | 12, 14, 16 | 국가보안기술연구원 개발 |
IDEA | 64 | 128 | 8 | PGP |
Blowfish | 64 | 448 까지 다양 | 16 | 다양한 소프트웨어 패키지 |
RC5 | 64 | 2048까지 다양 | 255까지 다양 | 다양한 소프트웨어 패키지 |
[참조]
히로시 유키, 알기쉬운 정보보호개론: 흥미로운 암호 기술의 세계, 인피니티북스
[사진 출처]
DES feistel : https://en.wikipedia.org/wiki/Feistel_cipher#/media/File:Feistel_cipher_diagram_en.svg
AES : https://crypto.stackexchange.com/questions/2711/does-the-mixcolumns-step-come-before-or-after-addroundkey-in-aes-decryption