490 likes | 778 Views
제 4 장 최신 관용암호 기법 Contemporary Symmetric Ciphers. 200 7. 10. 네트워크보안연구실 / 문형진 (sky@ezpia.info). 목 차. 4.1 3 중 DES (Triple DES) 4.1.1 2 중 DES 4.1.2 2 키에 의한 3 중 DES 4.1.3 3 키에 의한 3 중 DES 4.2 Blowfish 4.2.1 서브 키와 S- 박스의 생성 4.2.2 암호화 및 복호화 4.2.3 논의 사항 4.3 RC5
E N D
제 4장 최신 관용암호 기법Contemporary Symmetric Ciphers 2007. 10. 네트워크보안연구실 / 문형진 (sky@ezpia.info)
목 차 4.1 3중 DES (Triple DES) 4.1.1 2중 DES 4.1.2 2 키에 의한 3중 DES 4.1.3 3 키에 의한 3중 DES 4.2 Blowfish 4.2.1 서브 키와 S-박스의 생성 4.2.2 암호화 및 복호화 4.2.3 논의 사항 4.3 RC5 4.4 개선된 대칭 블록암호의 특징 4.5 RC4 Stream Cipher 2
4.1 3중 DES • 2중 DES • 2 키에 의한 3중 DES • 3 키에 의한 3중 DES 3
DES 알고리즘 4
4.1 3중 DES • DES의 brute-force공격에 대한 취약성 보완 대안 • 차세대 암호 알고리즘 표준의 개발 • AES (Advanced Encryption Standard) : Rijndael 채택 • DES에 다중 키사용(기존 설비의 활용 측면) • 2중 DES , 3중 DES 5
4.1.1 2중 DES (1/2) • 2개의 암호화 단계와 2 개의 키 사용 • 암호화 C = EK2[EK1[P]] • 복호화 P = DK1[DK2[C]] • 암호화 키가 112 비트로 증가되어 암호의 강도가 증가 그림 6.1 (a) 6
4.1.1 2중 DES (2/2) 1) 단일 단계로의 축소 • 키K3 존재에 대한 가정 • 단일 단계로 축소 : EK 2[EK 1[P]]= EK 3[P] • 단일 DES와 같은 결과를 가지므로 2중 DES는 의미가 없음 • 키K3 존재하지 않는 경우 의미가 있음 2) 중간결과에 의한 공격(Meet-in-the-middle Attack) • DES의 특성 때문이 아닌블록 암호화에 대한 공격임 • C = EK2[EK1[P]] 이면 X = EK1[P] = DK2[C] • 기지 평문-암호문 쌍((P, C)에 대한 공격 복잡도 : 256 • 단일 DES의 경우 : 255 7
4.1.2 2키 3중 DES (1/2) • 중간결과에 대한 공격 대책 : 3 단계 암호화 • [TUCH79] : 2키 3중 암호 방법 제안 • 암호화 C = EK1[DK2[EK1[P]]] • 복호화 P = DK1[EK2[DK1[C]]][C]]] 그림 6.1 (b) 8
4.1.2 2키 3중 DES (2/2) 그림 6.2 3중 DES에 대한 기지 평문 공격 9
4.1.3 3키 3중 DES • 2키 3중 DES에 대한 공격이 어렵지만 우려가 존재 • [KALI96]: 3키 3중 DES를 제안 • 56 x 3 =168비트 길이: 긴키를 사용하는 단점 • C = EK3[DK2[EK1[P]]] P = DK1[EK2[DK3[C]]] • PGP, S/MIME, 인터넷 응용 등에서 사용 10
4.2 Blowfish 4.2.1 서브 키와 S-박스의 생성 4.2.2 암호화 및 복호화 4.2.3 논의 사항 11
4.2 Blowfish • Blowfish • DES 대체 암호화 알고리즘 • 32~488 비트까지 가변적인 길이의 키를 사용 • 대칭 블록 암호 알고리즘 • Blowfish는 기존의 암호화 알고리즘의 대안 • 1993년 Bruce Schneier에 의해 설계 • Blowfish는 32비트 명령어 프로세서를 염두에 두고 설계 • 그래서 DES에 비해 현저히 빠르다. • 사용 • 특허 미등록으로 사용승인이 필요 없고, 모든 용도에 사용 가능 12
4.2 Blowfish • 특징 • 빠른 속도 : 32비트 마이크로 프로세스에서 1 byte당 18클럭 소요 • 간결성 : 5K 이내의 메모리에서 실행 가능 • 단순성 : 구현 용이, 알고리즘 강도 결정 용이 • 보안의 가변성 : 키 길이 가변(32 - 448비트), 속도와 보안성 고려 13
4.2.1 서브키와 S-박스의 생성 (1/3) • 키는 K-배열에 저장 • 키의 사용(32 비트부터 448 비트까지 가능) • K1,, K2, … , Kj (1≤j≤14) Ki : 32 bit • 18개의 32bit 서브 키와 4개의 S-박스의 생성에 사용 • 서브키는 P배열에 저장 • P1, P2, … , P18 Pi : 32 bit • 256(8×32)개의 32 비트 엔트리를 갖는 4 개의 S-박스( • 1024개의 32비트 값= 4168바이트 • S박스1 : S1,0,, S1,1, … , S1,255 • S박스 2: S2,0,, S2,1, … , S2,255 • S박스3 : S3,0,, S3,1, … , S3,255 • S박스4 : S4,0,, S4,1, … , S4,255 15
4.2.1 서브키와 S-박스의 생성 (2/3) • P 배열과 S-박스의 생성 • 상수 π 의 소수부 비트를 이용 • P1=243F6A88:π의 소수부 왼쪽부터 첫번째 32비트(16진수) • P2=85A308D3:π의 소수부 왼쪽부터 2번째 32비트 …… • S1,0 : π 의 소수부 왼쪽부터 19번째 32비트 …… • S4,254 = 578FDFE3 / S4,255 = 3AC372E6 • K-배열의 워드를 재 사용하여 18개의 P 배열을 재 계산 16
4.2.1 서브키와 S-박스의 생성 (3/3) • 현재의 P 배열과 S 배열을 사용하여 0 값을 갖는 초기 평문 64비트 블록을 암호화(P1, P2의 내용을 대치함) • 앞 단계의 출력인 P1, P2을 입력으로 암호화하여 P3, P4생성 • 이 과정을 계속 진행( • 521회 암호화 수행:: P 배열:: 9회, S박스:: 512회 P1, P2 = EP,S[0] P3, P4 = EP,S[P1||P2] … P17, P18 = EP,S[P15||P16] S1,0, S1,1 = EP,S[P17||P18] … S4,254, S4,255 = EP,S[S4,252, S4,253] 17
4.2.2 암호화/복호화 (1/3) 그림 6.4 Blowfish의 상세 단일 반복 18
4.2.2 암호화/복호화 (2/3) • 덧셈과 XOR 연산, S-박스를 사용 • 암호화 • 64비트 평문을 32 비트씩 분할((LE0, RE0) • i라운드 후의 결과를 LEi, REi • 16개 라운드별 저장된 서브키 32비트를 각각 적용(P1, P2, …, P16) F 함수의 32 비트 입력을 4바이트로 나누어 각각 a, b, c, d라 하면 F[a, b, c, d] = ((S1,a + S2,b) Å S3,c) + S4,d • 16번째 라운드 결과에 서브키 P18, P17를 적용한 결과가 암호문 19
4.2.2 암호화/복호화 (3/3) • 복호화 • 그림 6.3b • 64비트 암호문을 32 비트씩 분할((LD0, RD0) • i 라운드 후의 결과를 LDi, RDi • 서브키를 역순으로 사용(P16, …, P2, P1) • 암호화와 같은 방향으로 수행됨 20
4.2.2 논의사항 (1/3) • 소개된 관용암호 알고리즘 중 가장 강력 • 서브키와 S-박스 생성에 Blowfish 자신의 반복과정을적용 • 비트열이 토막 잘림은 해독을난해하게 하는 효과 • 데이터의 양쪽 모두에 대하여 연산 수행 • 매 반복의 입력에서 Li와 Ri를 교환하여 사용 • 암호학적 강도를 더욱 강화 • 실행 속도가 매우 빠름(표 6.1) 21
4.2.2 논의사항 (2/3) 표 6.1 Pentium상의 블록 암호 속도 비교 22
4.2.2 논의사항 (3/3) • [SCHN93] 설계상의 논의사항 • 서브키 생성처리에 소요되는 시간 때문에 본래의 키 길이에 대한 전사적 공격은 더욱 난해 • 함수 F는 우수한 쇄도 효과를 일으키는 결과 • 함수 F의 입력 비트는 단 하나의 S-박스 입력으로 사용됨 • CAST와 다르게 함수 F는 반복 과정에 의존적이 아님 23
4.3 RC5 4.3.1 RC5 매개 변수 4.3.2 키 확장 4.3.3 암호화 4.3.4 복호화 4.3.5 RC5 모드 24
4.3 RC5 (1/2) • Ron Rivest에 의해 개발된 대칭 암호 알고리즘 • 보안제품 BSAFE, JSAFE, S/MAIL등에 사용 • 특징 • 하드웨어 및 소프트웨어에의 적합성 • CPU에서 일반적으로 사용되는 기본 연산만 사용 • 빠른 속도 • 간단한 알고리즘을 사용 • 기본연산이 한번에 full word를 처리 • 다른 단어 길이 프로세서에서의 적응성 • 단어 당 비트 수는 RC5의 매개변수 • 다른 단어 길이는 다른 알고리즘이 됨 25
4.3 RC5 (2/2) • 반복 수의 가변성과 가변 길이의 키 • 각각 RC5의 두 번째와 세 번째 매개변수 • 빠른 속도와 높은 보안 사이의 선택 • 단순성 • 간단한 구조로 구현이 용이 • 알고리즘 강도 결정(보안 허점 탐지)이 용이 • 낮은 메모리 요구량 • 스마트 카드나 한정된 메모리를 사용하는 장치에 적당 • 높은 보안성 • 적당한 매개변수로 높은 보안성을 제공하도록 설계 • 데이터 의존적인 순환 이동 • 데이터의 양에 따라 결정되는 회전 이동(순환비트이동)을 채용 • 알고리즘 강도에 기여 26
4.3.1 RC5 매개변수 • 특정 버전의 표기:: RC5-w/r/b • 예:: RC5-32/12/16 • 32 비트 단어(64 비트 블록 처리) • 12 회 반복의 암호 및 복호 처리 • 16 바이트 키((128비트) 27
4.3.2 키 확장 • t 개의 서브키(w 비트 단위) 개념 • 각 라운드별 2 개의 서브키 + 별도 연산적용 2 개 (t=2r+2); S[0], S[1], … S[t-1] • 배열 S의 초기화 • S[0]=Pw; • for i=1 to t-1 do S[i]=S[i-1] + Qw; • Pw, Qw : 2 단어 길이의 상수 • 키 변환 • ‘b’ byte 키 K[0], …,K[b-1] 를 ‘c’word 배열 L[0], …L[c-1]로 변환 (byte àword) • 최종 배열 S생성 • L의 내용을 S의 초기화된 값 에 혼합(Mix)연산 수행 28
4.3.3 암호화 (2/3) • 평문 2 단어를 w 비트 레지스터 A와 B에 각각 저장 • 각 r라운드에서 좌우 양쪽 치환, 순열, 키 의존치환 처리 • 양쪽 단어는 매 라운드마다 갱신 • DES의 2회 반복 과정이 RC5의 1회에 해당 • 덧셈 : + 로 표시, 2w 를 법으로 한 덧셈 • 뺄셈 : - 로 표시, 2w 를 법으로 한 뺄셈 • 좌측순환이동 : 단어 x 의 y 비트 좌측 순환이동은 x <<< y 로 표시 • 우측 순환이동 : 단어 x 의 y 비트 우측 순환이동은 x >>> y 로 표시 31
4.3.3 암호화 (3/3) • 먼저 평문 블록을 2개의 32비트 블록으로 나눈다. (A and B) LE0 = A + S[0] ; RE0 = B + S[1]; For i = 1 to r do LE i = ((LE i-1 RE i-1 -1 ) RE i-1 -1) + S[2Xi]; RE i = ((RE i-1 LE i-1 -1 ) LE i-1 -1) + S[2Xi+1]; 출력값은 LE r ,RE rregister에 있다. 32
4.3.4 복호화 • 그림 6.6(b) • 암호화의 역방향으로 진행됨 • 덧셈은 뺄셈으로 • 좌측순환이동은 우측순환이동으로 변경됨 • Plaintext block을 2개 word A, B로 나눈다. For i = r down to 1 do RDi-1 =((RDi - S[2 I +1] LDi ) LDi ); LDi-1 = ((LDi - S[2 i] RDi ) RDi ); B = RD0- S[1]; A = LD0 – S[0]; “>>>”은 오른쪽 rotation, 모든 add, sub는 mod 232이다 33
4.3.5 RC5 모드 (1/2) • RC5 블록 암호 모드 • 고정크기 입력블록(2w)를 같은 크기 암호 블록 생성 • RC5 ECB 모드라 부름(그림 3.11 참조) • RC5-CBC 모드 • RC5 CBC 모드(그림3.12 참조) • RC5-CBC-Pad 모드 • CBC 유형의 알고리즘; • 블록 길이의 정수배가 아닌 메시지 처리를 위한 패딩 • RC5-CTS (Cipher Text Stealing) 모드 • CBC 유형의 알고리즘 • 임의 길이 평문을 입력받아 같은 길이의 암호문 생성 34
4.3.5 RC5 모드 (2/2) 그림 6.7 RC5 Ciphertext Stealing Modes 35
4.4 개선된 대칭블록 암호의 특징 (1/2) • 가변 키 길이 • Blowfish, RC5, CAST-128, RC2 • 혼합연산자 • 산술 및 부울 연산자 중 하나 이상 사용, 비선형성 제공 • 3중-DES를 제외한 알고리즘에서 사용 • 데이터 의존 회전 이동 • 회전이동은 서브키에 의존하지 않고, 데이터 블록에의존 • RC5 • 키 의존 S-박스 • S-박스의 내용이 키에 의존, 상이한 키는 상이한 S-박스 생성 • 높은 비선형성 제공, Blowfish에서 채택 36
4.4 개선된 대칭블록 암호의 특징 (2/2) • 긴 키 스케줄 알고리즘 • 서브키 생성이 단일 암호화 또는 복호화 보다 더 오래 걸림 • 전사적 공격에 강함, Blowfish에서 채택 • 가변적 평문/암호문 블록 길이 • 편의성 제공 (알고리즘 응용에 맞출 수 있음), RC5에서 채택 • 가변적 반복 횟수 • 보안성과 실행속도와의 관계 조정 가능, RC5 37
4.4 개선된 대칭블록 암호의 특징 (2/2) • 매 반복 시 양쪽 데이터 절반의 연산 • 최소한의 연산 시간 증가로 높은 보안성 획득 • IDEA, Blowfish, RC5 • 가변적 F 함수 • 라운드마다 변하는 F함수 • CAST-128 에서 채택 • 키 의존 회전 이동 • CAST-128 에서 채택 38
4.5 RC4 STREAM 암호 6.5.1 Stream 암호 6.5.2 RC4 알고리즘 40
일반 블럭 암호 스트림 암호 m 비트 키 이진 키수열 암호 알고리즘 암호 알고리즘 n 비트 평문 n 비트 암호문 n 비트 초기값 이진 평문 수열 m 비트 키 평문: M=m1m2m3… 암호문: C= EK(m1)EK(m2)EK(m3)… 평문: M=m1m2m3… 암호문: C= EZ1(m1)EZ2(m2)EZ3(m3)… 4.5.1 Stream 암호 41
키계열 키계열 암호문 C 송신자 수신자 평문 M 평문 M 4.5.1 Stream 암호 평문 1 0 1 1 1 0 1 1 암호문 0 1 1 1 1 1 1 0 키계열 1 1 0 0 0 1 0 1 키계열 1 1 0 0 0 1 0 1 암호문 0 1 1 1 1 1 1 0 평문 1 0 1 1 1 0 1 1 42
4.5.1 Stream 암호 • 송수신자간에 사전에 공유된 비밀키(secret key)와 현재의 스트림 암호시스템상태(initial state)로부터 도출되는 키 수열(key steam)이 평문과 결합되어 암호문을 형성 • 키 수열의 길이는 평문의 길이와 동일하고 단 한번만 사용됨 예 : I LOVE YOU 메시지 -> 11001001 10100000 11001100 키 -> 01000001 01000010 11000011 (eXclusive OR) 암호문 -> 10001001 11100010 00001111 • 활용 : 블럭암호에 비해서 빠르게 운영 • 이동통신에서 전송되는 data의 암호화에 사용 45
4.5.1 Stream 암호 • 키 스트림 주기 • 주기적 (periodic) 스트림 암호 : 키 스트림이 어떤 주기를 갖고 반복 • 비주기적 스트림 암호 : 키가 반복없이 표현되는 일회용 패드(one-time pad)방식 • 평문과 키의 관계 • 동기식 스트림 암호(Synchronous Stream Cipher) • 암호문을 복호화하여 평문을 찾을때 키 스트림과 암호문 사이에 동기가 필요 • 키 스트림이 평문과 관계없이 생성되므로 암호문과 암호문에 들어있는 키 스트림이 독립적이어서 정보유출의 가능성이 적다 • 선형 귀한 치환 레지스터(Linear Feedback Shift Register) 46
4.5.1 Stream 암호 • 평문과 키의 관계 • 자기 동기식 스트림 암호(Self-Synchronous Stream Cipher) • 키 스트림이 평문과 암호문과 관계를 갖는다. • 키 스트림은 평문 또는 암호문으로 부터 함수 관계에 의해 생성 • 전송 중 암호문의 비트가 손실 또는 변경되더라도 그 오류의 영향이 유한하게 된다. • 오류 정정의 기능을 포함 가능 • 키 스트림과 암호문의 종속성으로 인해 해독하기 쉽다. • 암호문 귀한 자동키 (Feedback autokey)암호시스템 • 동기식 스트림 암호 시스템에 자기동기식 스트림암호의 장점을 결합하여 사용가능 47
4.5.1 Stream 암호 • 스트림 암호 시스템의 장점과 사용 • 군사 및 외교용으로 널리 사용 • 이동통신 환경에서 구현이 용이 • 안전성을 수학적으로 엄밀하게 분석 가능 • 이동통신 등의 무선 통신 데이터 보호에 적합 • 종류 • RC4 • SEAL 48
4.5.2 RC4 알고리즘 • 1987년 Rivest에 의해 설계된 가변 키 길이를 지원 원래는 미공개 • 1994년 인터넷 뉴스그룹에 익명으로 공개된 알고리즘 • Netscape Navigator의 데이타 보호용으로 사용되고 있으며, 다른 인터넷 응용들에서도 널리 사용되는 스트림 암호이다. 49