암호 - Part 2
2장 비밀키 암호
1. 비밀키 암호의 원리
2. DES
3. DES의 작동 모드
4. 추가된 암호 알고리즘
1. 비밀키 암호의 원리
*같은 키를 사용한다. -> 사고나면 누가 잘못했는지 알수없다(책임추적성x)*
대칭키 방식 특징
- 암호 알고리즘의 비도는 키의 *비밀성*에 의존
- 관용 암호, 대칭키 암호, 공유키 암호등으로 불림
장점
- 다양한 알고리즘 개발, 알고리즘 수행속도가 빠름
단점
- 키 관리 및 키 분배의 어려움
- 디지털 서명의 어려움
*64비트 의 키 길이?? 2의 64승개*
Feistel 암호
- 별도의 복호화 과정이 불필요
- 블록 암호의 대표적인 구조
- Li=Ri-1, Ri=Li-1 XOR
F(Ri-1)
- 라운드 함수와 무관하게 복호화가 됨
- 구조적인 취약점이 발견되지 않음
- 취약한 라운드 함수를 반복적으로 사용함으로 강한 암호를 설계
- 암호화와 복호화가 동일
*R i-1은 Li, Li-1은 Ri로 변환되며 R i-1은 Li은 암호화가 안되고 평문으로 변환되서
이 암호화는 짝수번을 해줘야한다.*
대칭키암호의 종류
- DES, AES, IDEA, SEED, RC4, 등
2. DES (Data Encryption Standard)
IBM에서 Lucifer System을 개선하여 만듬
1977년 미 상무성의 국립 표준국(NBS)에서 표준 암호 알고리즘으로 채택
암호화 키(Encryption key) = 복호화 키(Decryption key)
대칭키 암호 시스템, 단일키 암호 시스템, 관용 암호 방식
혼합(confusion), 확산(Diffusion)을 이용 원문과 암호문 간에 통계적 연관을 감춘다.
64비트 블록 암호 알고리즘
- 입력 메시지를 64비트씩 나누어 처리
56비트 키를 사용
- 64비트 중 8비트는 parity check로 사용
기본 구조
- round 수 : 16 round
- 복호화는 암호화의 역순
* f함수가 중요하다. *
초기 전치
f 함수
*S-BOX에서 48비트를 32비트로 나눌때 48비트가 전부참여하고 6비트 8박스가 같은 방식으로 4비트로 변환해준다.*
확장순열
치환 선택
S-box
순열(P)
역 전치
DES - Key
64비트의 키를 이용
- 64비트를 56비트로 축약하여 서브키를 생성
- 8번째 비트마다 패리트비트를 포함하여 64비트를 키로 이용
- 패리트비트를 제거하여 56비트로 이용
암호화 과정에 맞추어 16라운드를 실행
- 각 라운드마다 서브키를 생성
PC-1
PC-2 (축약전치)
최측이동 횟수
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1
DES – 작동 원리
DES의 작동 모드
ECB (Electronic Codebook) 모드
CBC (Cipher Block Chaining)
CFB (Cipher Feedback)
OFB (Output Feedback)
DES의 작동 모드-3중DES
DES의 brute-force공격에 대한 취약성을 보완
- 새로운 알고리즘 개발 : IDEA (128 bit 키 사용)
- DES의 응용 : 3중 DES, 2중 DES
3중 DES
- 2개의 키를 사용
- 암호화 : 암호화, 복호화, 암호화
- 복호화 : 복호화, 암호화, 복호화
- brute-force 공격에 DES보다 강함
암호화 복호화 과정
4. 추가된 암호 알고리즘
AES (Advanced Encryption Standard)
- DES를 대체하기 위한 표준암호 알고리즘
- 리인델(Rijndael), 투피쉬(Twofish), 서펀트(Serpent), MARS 등이 2차 선정 (2000)
- 2000년 10월2일 리인델이 AES로 선정
Rijndael
- 128, 192, 256 비트의 다양한 길이의 키를 사용
- 알려진 모든 공격에 대응 가능
- 스마트 카드상의 컴팩트한 보조 프로세서등에 이용 가능
IDEA (International Data Encryption Algorithm)
- 국제 데이터 암호 알고리즘
- 64비트 평문 블록에서 128비트 키를 이용 작동
- 8라운드로 작동
- PGP (Pretty Good Privacy) 의 메일 시스템에 이용
- 필 짐머맴이 개발.. (덕분에 미국에서 실형 살고 유럽으로 이주(?))
RC5
- 32,64,128비트 블록 사이즈를 이용
- 0에서 255까지 다양한 라운드 사용
- 0에서 2048비트까지의 키를 이용
SEED
- 한국 정보보호 센터에서 1999년 2월 개발
- 128비트 평문 블록에서 128비트 키를 이용 작동
- 16라운드로 작동
- G 함수가 사용된다