암호 (2) - 대칭 암호화 방식(Key, DES/3DES, AES, 블록 암호 모드)
1. 대칭 암호화 방식
1) 대칭키(Symmetric key) 암호화 방식
– 암호화 키와 복호화 키가 같은 암호화 방식
– 암·복호화에 걸리는 시간이 짧으며, 비교적 간단한 방식으로 구현 가능
– 현대에 가장 많이 사용되는 암호 방식 중 하나
2. KEY
– 암호화, MAC, 전자서명 등 암호기술에 반드시 필요한 number
– 가능한 키의 bit길이가 길수록 brute force 공격에 강함
– 키는 평문과 같은 가치를 가짐
– 종류
• 재사용 여부
- 세션키: 통신 때마다 한 번만 사용되는 키(SSL/TLS 암호화 통신)
- 마스터키: 반복적으로 사용되는 키
• 암호화 대상
- CEK(Contents Encrypting Key)
- KEK(Key Encrypting Key)
– 의사난수생성기(PRNG, pseudo random number generator) • 키 생성에 필요한 값(난수)을 만들어 냄
3. DES
– DES(Data Encryption Standard)
• 1997년 미국의 연방정보처리의 표준 암호로 채택됨
• 64bit 평문을 64bit 암호문으로 암호화
• DES는 64bit의 블록 암호화 알고리즘
• 키의 크기: 56bit(오류 검출을 위해 8bit가 사용)
• Brute force 공격으로 DES의 해독이 가능해짐에 따라 1998년 11월 이후 공식적 사용을 중단했으나 아직도 여러 응용 프로그램에서 많이 사용됨
– 암호화 과정 개요
• Pre-Processing 단계: 초기치환(Initial Permutation) 실행
• 16번의 중간 라운드 (Round) 수행
• Post-Processing 단계: 최종치환(Final Permutation) 실행

– Pre-processing
• 입력: 64bit 단위로 나눈 평문의 조각
• 각 평문(64bit)의 비트위치를 규칙에 의해 바꿈(Initial-permutation)
• 왼쪽 L(32bit)과 오른쪽 R(32bit)로 나눔

– 1~16 라운드
• 입력: 이전 라운드에서 만들어진 L과 R
• L1= R0 , R1 = L0 ⊕ f(R0 ,K1 )
• ⊕: 배타적 논리합

– Post-processing
• 입력: 이전 라운드에서 만들어진 L과 R
• 최종적으로 계산된 L과 R을 합쳐서 하나의 블록으로 만듦
• 초기치환의 역치환 IP-1 적용(Final-permutation)

4. 트리플 DES(Triple DES, 3DES)
– DES의 대안으로 제시된 DES의 암호화 강도를 높인 대칭키 암호 방식
– DES를 3번 연속 실행해서 3DES라고도 불림
• 2번의 DES 암호화 중간에 DES 복호화가 1번 실행됨
• 2개의 키, 혹은 3개의 키를 사용
• 기존 DES와의 호환성 유지 목적(모든 키를 동일하게 하는 경우)
– 수학적으로 DES 알고리즘보다 2배의 암호화 강도를 가짐
• 충분한 암호 강도가 아니기 때문에 AES가 권장됨


5. AES(Advanced Encryption Standard)
– 1997년 미국 NIST의 암호 공모에서 새로운 대칭 암호의 표준으로 채택된 대칭키 암호 방식(Rijndael)
– 암호 공모 조건
• 안전성(Security)
• 비용(Cost)
• 구현 효율성(Implementation)
– 특징
• 128bit 평문을 128bit 암호문으로 암호화
• 키의 길이: 128, 192, 256bit
• 라운드(Round)회수: 10, 12, 14

– AES의 각 라운드 구성연산
• SubBytes: byte 단위 substitution 수행
• ShiftRows: row 단위로 cyclic shift 수행
• MixColumns: 높은 diffusion을 위해 column 단위로 mixing
• AddRoundKey(마지막 연산): round key와 state를 XOR

6. 그 밖의 대칭 암호
1) SEED
• 국산 128bit 블록 암호 알고리즘
• 한국인터넷진흥원과 국내 암호 전문가들이 순수 국내 기술로 개발
• 전자상거래, 금융, 무선통신 등에서 전송되는 중요정보 보호 목적
• SEED 128(128bit key), SEED 256(256bit key)
2) ARIA
• 국산 128bit 블록 암호화 알고리즘
• 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
• AES와 마찬가지로 128/192/256bit 암호화 키를 지원
3) IDEA
• 유럽에서 많이 사용
• 128bit key를 사용하여 64bit 평문을 8라운드를 거쳐 64bit 암호문으로 만드는 방식
• 모든 연산이 16bit 단위로 이루어지도록 하여 16bit 프로세서에서 구현이 용이하며 주로 키 교환에 쓰임
4) RC5
• 미국 RSA 연구소에서 개발
• RC5(Ron’s Code 5) 알고리즘
• 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공하며 모든 하드웨어에 적합함
• 입출력, 키, 라운드 수가 가변인 블록 알고리즘
• RC5는 32, 64 또는 128bit 키가 사용되며 속도는 DES의 약 10배
5) Skipjack
• 미국 국가안보국(NSA)에서 개발한 클리퍼 칩에 내장된 블록 알고리즘으로, 비밀로 유지되던 알고리즘의 형태와 구조가 1998년에 공개됨
• 64bit 입출력, 80bit 키를 이용하여 총 32라운드의 암호화 과정을 수행함
6) LEA
• 고속 환경 및 모바일 기기 등의 경량 환경에서 confidentiality를 제공하기 위해 국내에서 개발된 암호화 알고리즘으로 AES 대비 1.5~2배 빠름
• 128bit 데이터 블록으로 128, 192, 256bit 비밀 키를 사용할 수 있음