AES(Advanced Encryption Standard)
(1) 개요
- 1997년 미국 국립기술표준원은 DES를 대체하기 위해 AES 암고리즘을 공모하였다.
- 1차 심사시 15개 응모작을 선택, 2차 심사시 5개(MARS, RC6, Rijndael, Serpent, Twofish)로 줄였고, NIST는 2001년 11월에 최종 선택안을 공표하였다.
- AES알고리즘으로 선택한 것은 레인달(Rijndael), 레인달 개발자는 벨기에 암호학자 요안 대문(Joan Daemon)과 빈슨트 레이믄(Vincent Rijmen)이다.
(2) 선정기준
- 미국 국립기술표준원에서 제시한 것은 안전성(Security), 비용(Cost), 구현 효율성(Implementation)이고, 레인달이 가장 잘 부합됨.
(3) 라운드(Rounds)
★★
- 128비트 평문을 128비트 암호문으로 출력, Non-Feistel 알고리즘에 속함.
- 10,12,14라운드를 사용한다.
- 각 라운드 대응 키 크기는 128, 192, 256비트이다.
- 키 크기에 따라 AES-128, AES-192, AES-256로 나뉘지만 키 확장 알고리즘으로부터 생성되는 라운드 키 크기는 평문과 암호문 크기와 동일한 128비트이다.
(4) 암호(Cipher)★★
1. DES에서는 페이스텔 네트워크가 기본 구조, 레인달은 SPN이라는 구조를 사용하고 있다.
- SubBytes() 연산 : 비 선형성을 갖는 S-Box를 적용하여 바이트 단위로 치환을 수행
- ShiftRows() 연산 : 행 단위로 순환 시프트(Cyclic shift)를 수행
- MixColumns() 연산 : 높은 확산을 제공하기 위해 열 단위로 혼합
- AddRoundKey() 연산 : 라운드 키와 state를 EX-OR연산을 수행
2. 암호화의 마지막 라운드에서는 MixColumns()연산을 수행하지 않는다.
SPN구조★
라운드 함수가 역변환이 되어야 한다는 제약이 있으나 더 많은 병렬성(parallelism)을 제공하기 때문에 암,복호화 알고리즘의 고속화를 요구, 컴퓨터 프로세서(CPU)가 더 많은 병렬성을 지원하게 된 현 추세에 부응하는 방식
입력을 여러 개의 소블록으로 나누고 각 소블록을 S-box에 입력하여 치환, S-box의 출력을 P-box로 전치하는 과정을 반복한다.
Feistel과 SPN구조 알고리즘★★
Feistel : DES, LOKI, CAST, Blowfish, MISTY, RC5, RC6, CAST256, E2, Twofish, Mars
SPN : SAFER, SHARK, Square, CRYPTON, Rijndael, SAFER+, Serpent, PRESENT
구분 | DES | AES |
년도 | 1976 | 1999 |
블록크기 | 64bits | 128bits |
키 길이 | 56bits | 128, 192, 256bits |
암호화 프리미티브 | 치환, 전치 | 치환, 시프트, 비트 혼합 |
암호학적 프리미티브 | 혼돈, 확산 | 혼돈, 확산 |
설계 | 공개 | 공개 |
설계 원칙 | 공개 | 공개 |
선택 과정 | 비밀 | 비밀, 공모 |
출처 | IBM, NSA | 벨기에 암호학자 |
기타 대칭키 암호 알고리즘
(1) 국제 암호 알고리즘
1) IDEA(International Data Encryption Algorithm)★
- DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 알고리즘
- 128비트 키, 64비트 블록 암호로 Feistel 구조를 변형함
- 8라운드에 걸쳐 데이터를 변환, 마지막에 한 번 더 키를 작용시켜 64비트 암호문을 생성하기 때문에 8.5라운드라고 한다.
- DES와 달리 S-box를 사용하지 않고, 대수적 구조가 다른 연산을 교대로 사용하여 암호학적 강도를 증가시켰다.
- PGP(Pretty Good Privacy)의 데이터 암호 알고리즘으로 채택되어 사용되고 있다.
- DES보다 2배 정도 빠르고, 무차별 공격에 더욱 효율적으로 대응
2) RC5
- 1994년 미국 RSA 연구소의 라이베스트가 개발함.
- 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공함.
- 입출력, 키, 라운드 수가 가변인 블록 알고리즘이며 32/64/128 비트의 블록을 가지며, DES속도의 10배다.
(2) 국내 암호 알고리즘
1) SEED
- 1999년 한국인터넷진흥원과 국내 암호전문가들이 함께 개발한 알고리즘이다.
- 인터넷, 전자상거래, 무선 통신 등에 공개될 경우 민감한 영향을 끼칠 수 있는 중요 정보 및 개인 정보를 보호하기 위한 대칭키 알고리즘이다.
- 128비트 비밀키에서 생성된 16개의 64비트 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128비트 평문 블록을 128비트 암호문 블록으로 암호화하여 출력하는 방식
- SEED의 F함수는 수정도니 64비트 Feistel 형태로 구성된다.
2) ARIA(Academy Research Institue Agency)
- 국가보안기술연구소(NSRI)주도로 학계, 국가정보원 등의 힘을 모아 개발한 국가 암호화 알고리즘
- ISPN(Involutional SPN) 구조의 128비트 블록 암호로 128비트, 192비트, 256비트의 3종류의 키 사용을 제공한다.
- 입출력 크기와 사용 가능한 키 크기는 미국 표준 블록암호인 AES와 동일하다.
3) HIGHT(HIGh security and light weigHT)
- RFID, USN 등과 같이 저전력,경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 2005년 KISA 및 고려대 등이 공동으로 개발한 64비트 블록암호이다.
- 2006년 12월 정보통신단체표준(TTA)으로 제정되었고, 2010년 ISO/IEC 국제 암호 표준으로 제정되었다.
4) LEA(Lightweight Encryption Algorithm)
- 2012년 국가보안기술연구소가 개발한 128bit 경량 고속 블록 암호 알고리즘이다.
- AES보다 1.5~2배 빠르다.
- 사물 인터넷(IoT) 등 저전력 암호화에 널리 쓸 수 있다.
- 특히 단시간에 배치작업을 완료해야 하는 금융 분야에 강하다.
구분 | 개발국가 | 개발년도 | 특징 | 블록크기 | 키의 길이 | 라운드 수 |
DES | 미국 | 1972 | NIST에서 표준으로 공표 | 64 | 56 | 16 |
IDEA | 유럽 | 1990 | PGP채택 | 64 | 128 | 8 |
Rijndael | 벨기에 | 1998 | AES알고리즘으로 선정 | 128 | 128,192,256 | 10,12,14 |
SEED | 한국 | 1999 | 한국표준 블록암호 알고리즘 | 128 | 128,256 | 16,24 |
현대 대칭키 암호를 이용한 암호화 기법
(1) 블록 암호의 사용 방식
블록 암호를 다양한 응용에 사용하기 위해 NIST에서 5가지 운영 모드를 정의하였다.
이 모드는 DES나 AES를 포함한 어떤 대칭 블록 암호에도 적용할 수 있다.
ECB모드 : Electronic CodeBook mode(전자 부호표 모드)
CBC모드 : Cipher Block Chaining mode(암호 블록 연쇄 모드)
CFB모드 : Cipher-FeedBack mode(암호 피드백 모드)
OFB모드 : Output-FeedBack mode(출력 피드백 모드)
CTR모드 : CounTeR mode(카운터 모드)
1) ECB(Electronic CodeBook) 모드
(가) 개요
- 가장 간단한 모드
- 평문은 N개의 n비트 블록으로 분할된다.
- 평문 크기가 블록 크기의 배수가 아니면, 평문의 마지막 블록에는 다른 블록들과 동일한 크기로 만들기 위해 Padding이 필요하다.
- 각각의 블록을 암호화 혹은 복호화하기 위해 사용되는 키는 동일하다.
(나) 특징
- ECB 모드의 장점은 블록 간의 독립성이다.
- 블록에서 발생하는 오류가 다른 블록에 영향을 주지 않는다.
- 평문의 블록 패턴과 암호문의 블록 패턴이 동일하게 유지되는 문제점을 안고 있다.
- 동일한 키로 여러 블록의 평문을 암호화할 때에는 ECB방식의 사용을 권고하지 않는다.
(다) 응용
- 매우 많은 데이터베이스를 암호화할때 병렬적으로 처리할 수 있다.
- 다른 레코드에 영향을 주지 않고도 수정된 이후 레코드를 중간에서부터 암호화, 복호화할 수 있다.
2) Ciper Block Chaning(CBC) 모드
(가) 개요
- 각각의 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR된다.
- 첫 번째 블록을 암호화할 때는 이전의 암호문 블록이 존재하지 않아, 초기벡터(IV)라고 불리는 허구의 블록이 사용된다.
(나) 초기벡터(IV)
- IV는 반드시 송수진 양자 모두가 알고 있어야 하며, 제3자로부터 예측이 불가능해야 한다.
(다) 특징
- 초기 평문에서 첫 번째 블록이 바뀌면 암호문 블록은 모두 바뀐다.
- 암호문은 모든 평문의 영향을 받아 생성된다.
- 암호문을 제대로 복호화하기 위해서는 평문이 순서대로 배열되어 있어야 한다.
(라) 암호화와 복호화
- 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행한다.
- 복호화시 암호문 블록이 1개 파손된 경우, 암호문 블록의 길이가 바뀌지 않았다면 평문 블록에 미치는 영향은 2개 블록에 머문다.
- 그러나 평문 블록의 한 비트 오류는 출력되는 모든 암호문에 영향을 미친다.
(마) CBC 모드 활용
- 인터넷에서 보안을 제공하는 프로토콜 중 하나인 IPSec에서 통신의 기밀성을 지키기 위해 사용한다.
- 3DES-CBC, AES-CBC 등이 여기에 해당한다.
- 인증을 수행하는 대칭키 암호 시스템의 하나인 Kerberos version 5에서도 사용된다.
3) Cipher FeedBack(CFB) 모드 ★
(가) 개요
- 어떤 블록 암호도 스트림 암호로 바꿀 수 있다.
- 스트림 암호의 경우 메시지 길이가 블록의 정수배가 되도록 Padding할 필요가 없다.
(나) 암호화와 복호화
- 복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀌었을 뿐 동일하다.
- 암호 함수는 DES나 AES를 사용한다.
- 복호화 시 복호화 함수가 아닌 암호화 함수 사용
(다) 스트림 암호로서의 CFB 모드
- 키 스트림이 암호문에 의존하는 비동기식 스트림 암호이다.
4) Output FeedBack(OFB) 모드 ★
(가) 개요
- ECB 모드의 단점과 CBC모드, CFB모드의 단점을 개선한 동작 모드이다.
- 암호기의 출력과 평문을 EX-OR하여 암호문을 생성하고 있어서 오류 전파가 발생하지 않는다.
- 전송중인 암호문의 비트 손실이나 삽입 등에 유의해야 하는 방식이다.
- 초기화 벡터(IV)를 사용한다.
(나) 특징
- 초기치가 바뀌면 암호문은 모두 바뀐다.
- 암호 알고리즘의 출력은 평문과 무관하다.(동기식)
- 전송 중의 비트 오류가 전파되지 않는다.
(다) 스트림 암호로서의 OFB 모드
- 키스트림은 평문이나 암호문과는 독립적이므로 동기식 스트림 암호이다.
5)CounTeR(CTR) 모드★
(가) 개요
- 암호화 시 피드백이 존재하지 않는다.
- 키 스트림의 의사난수성은 카운터를 사용함으로써 성취할 수 있다.
- 서로 독립적인 n비트 암호문 블록을 생성한다.
(나) 카운터 만드는 법
- 암호화 때마다 다른 값(비표)을 기초로 해서 만든다.
- 블록 길이가 128비트인 경우 카운터의 초기값은 다음과 같다.
66 1F 98 CD 37 A3 8B 4B | 00 00 00 00 00 00 00 01 |
비표(nonce) | 블록 번호 |
(다) 스트림 암호로서의 CTR 모드
- 동기식 스트림 암호화를 지원한다.
- 피드백이 없으므로 병렬 처리가 가능하다.
- OFB모드의 장점을 대부분 지원한다.
구분 | ECB | CBC | CFB | OFB | CTR |
병렬처리 | 암호화,복호화가능 | 복호화 가능 | 복호화 가능 | X | 암호화 ,복호화 가능 |
초기벡터 유무 | X | O | O | O | O(카운터) |
암호화 함수 복호화 함수 |
암호화, 복호화 | 암호화, 복호화 | 암호화, 암호화 | 암호화, 암호화 | 암호화, 암호화 |
사용 연산 | 암호화 | 암호화, XOR | XOR | XOR | XOR |
결과 TYPE | 블록 암호 | 블록 암호 | 스트림 암호 | 스트림 암호 | 스트림 암호 |
'IT관련 > 정보보안기사' 카테고리의 다른 글
[정보보안기사 2회] 실기 기출문제 (0) | 2023.02.20 |
---|---|
[정보보안기사 1회] 실기 기출문제 (2) | 2023.02.17 |
[정보보안기사] Part2-3 대칭키 암호 (1) | 2022.03.24 |
[정보보안기사] Part2-2 암호학 개요 (2) | 2022.03.22 |
[정보보안기사] Part2-1 암호학 개요 (10) | 2022.03.20 |
댓글