1 / 49

제 4 장 최신 관용암호 기법 Contemporary Symmetric Ciphers

제 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

Download Presentation

제 4 장 최신 관용암호 기법 Contemporary Symmetric Ciphers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 4장 최신 관용암호 기법Contemporary Symmetric Ciphers 2007. 10. 네트워크보안연구실 / 문형진 (sky@ezpia.info)

  2. 목 차 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

  3. 4.1 3중 DES • 2중 DES • 2 키에 의한 3중 DES • 3 키에 의한 3중 DES 3

  4. DES 알고리즘 4

  5. 4.1 3중 DES • DES의 brute-force공격에 대한 취약성 보완 대안 • 차세대 암호 알고리즘 표준의 개발 • AES (Advanced Encryption Standard) : Rijndael 채택 • DES에 다중 키사용(기존 설비의 활용 측면) • 2중 DES , 3중 DES 5

  6. 4.1.1 2중 DES (1/2) • 2개의 암호화 단계와 2 개의 키 사용 • 암호화 C = EK2[EK1[P]] • 복호화 P = DK1[DK2[C]] • 암호화 키가 112 비트로 증가되어 암호의 강도가 증가 그림 6.1 (a) 6

  7. 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

  8. 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

  9. 4.1.2 2키 3중 DES (2/2) 그림 6.2 3중 DES에 대한 기지 평문 공격 9

  10. 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

  11. 4.2 Blowfish 4.2.1 서브 키와 S-박스의 생성 4.2.2 암호화 및 복호화 4.2.3 논의 사항 11

  12. 4.2 Blowfish • Blowfish • DES 대체 암호화 알고리즘 • 32~488 비트까지 가변적인 길이의 키를 사용 • 대칭 블록 암호 알고리즘 • Blowfish는 기존의 암호화 알고리즘의 대안 • 1993년 Bruce Schneier에 의해 설계 • Blowfish는 32비트 명령어 프로세서를 염두에 두고 설계 • 그래서 DES에 비해 현저히 빠르다. • 사용 • 특허 미등록으로 사용승인이 필요 없고, 모든 용도에 사용 가능 12

  13. 4.2 Blowfish • 특징 • 빠른 속도 : 32비트 마이크로 프로세스에서 1 byte당 18클럭 소요 • 간결성 : 5K 이내의 메모리에서 실행 가능 • 단순성 : 구현 용이, 알고리즘 강도 결정 용이 • 보안의 가변성 : 키 길이 가변(32 - 448비트), 속도와 보안성 고려 13

  14. 14

  15. 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

  16. 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

  17. 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

  18. 4.2.2 암호화/복호화 (1/3) 그림 6.4 Blowfish의 상세 단일 반복 18

  19. 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

  20. 4.2.2 암호화/복호화 (3/3) • 복호화 • 그림 6.3b • 64비트 암호문을 32 비트씩 분할((LD0, RD0) • i 라운드 후의 결과를 LDi, RDi • 서브키를 역순으로 사용(P16, …, P2, P1) • 암호화와 같은 방향으로 수행됨 20

  21. 4.2.2 논의사항 (1/3) • 소개된 관용암호 알고리즘 중 가장 강력 • 서브키와 S-박스 생성에 Blowfish 자신의 반복과정을적용 • 비트열이 토막 잘림은 해독을난해하게 하는 효과 • 데이터의 양쪽 모두에 대하여 연산 수행 • 매 반복의 입력에서 Li와 Ri를 교환하여 사용 • 암호학적 강도를 더욱 강화 • 실행 속도가 매우 빠름(표 6.1) 21

  22. 4.2.2 논의사항 (2/3) 표 6.1 Pentium상의 블록 암호 속도 비교 22

  23. 4.2.2 논의사항 (3/3) • [SCHN93] 설계상의 논의사항 • 서브키 생성처리에 소요되는 시간 때문에 본래의 키 길이에 대한 전사적 공격은 더욱 난해 • 함수 F는 우수한 쇄도 효과를 일으키는 결과 • 함수 F의 입력 비트는 단 하나의 S-박스 입력으로 사용됨 • CAST와 다르게 함수 F는 반복 과정에 의존적이 아님 23

  24. 4.3 RC5 4.3.1 RC5 매개 변수 4.3.2 키 확장 4.3.3 암호화 4.3.4 복호화 4.3.5 RC5 모드 24

  25. 4.3 RC5 (1/2) • Ron Rivest에 의해 개발된 대칭 암호 알고리즘 • 보안제품 BSAFE, JSAFE, S/MAIL등에 사용 • 특징 • 하드웨어 및 소프트웨어에의 적합성 • CPU에서 일반적으로 사용되는 기본 연산만 사용 • 빠른 속도 • 간단한 알고리즘을 사용 • 기본연산이 한번에 full word를 처리 • 다른 단어 길이 프로세서에서의 적응성 • 단어 당 비트 수는 RC5의 매개변수 • 다른 단어 길이는 다른 알고리즘이 됨 25

  26. 4.3 RC5 (2/2) • 반복 수의 가변성과 가변 길이의 키 • 각각 RC5의 두 번째와 세 번째 매개변수 • 빠른 속도와 높은 보안 사이의 선택 • 단순성 • 간단한 구조로 구현이 용이 • 알고리즘 강도 결정(보안 허점 탐지)이 용이 • 낮은 메모리 요구량 • 스마트 카드나 한정된 메모리를 사용하는 장치에 적당 • 높은 보안성 • 적당한 매개변수로 높은 보안성을 제공하도록 설계 • 데이터 의존적인 순환 이동 • 데이터의 양에 따라 결정되는 회전 이동(순환비트이동)을 채용 • 알고리즘 강도에 기여 26

  27. 4.3.1 RC5 매개변수 • 특정 버전의 표기:: RC5-w/r/b • 예:: RC5-32/12/16 • 32 비트 단어(64 비트 블록 처리) • 12 회 반복의 암호 및 복호 처리 • 16 바이트 키((128비트) 27

  28. 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

  29. 4.3.2 키 확장 (cont’) 29

  30. 4.3.3 암호화 (1/3) 30

  31. 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

  32. 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

  33. 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

  34. 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

  35. 4.3.5 RC5 모드 (2/2) 그림 6.7 RC5 Ciphertext Stealing Modes 35

  36. 4.4 개선된 대칭블록 암호의 특징 (1/2) • 가변 키 길이 • Blowfish, RC5, CAST-128, RC2 • 혼합연산자 • 산술 및 부울 연산자 중 하나 이상 사용, 비선형성 제공 • 3중-DES를 제외한 알고리즘에서 사용 • 데이터 의존 회전 이동 • 회전이동은 서브키에 의존하지 않고, 데이터 블록에의존 • RC5 • 키 의존 S-박스 • S-박스의 내용이 키에 의존, 상이한 키는 상이한 S-박스 생성 • 높은 비선형성 제공, Blowfish에서 채택 36

  37. 4.4 개선된 대칭블록 암호의 특징 (2/2) • 긴 키 스케줄 알고리즘 • 서브키 생성이 단일 암호화 또는 복호화 보다 더 오래 걸림 • 전사적 공격에 강함, Blowfish에서 채택 • 가변적 평문/암호문 블록 길이 • 편의성 제공 (알고리즘 응용에 맞출 수 있음), RC5에서 채택 • 가변적 반복 횟수 • 보안성과 실행속도와의 관계 조정 가능, RC5 37

  38. 4.4 개선된 대칭블록 암호의 특징 (2/2) • 매 반복 시 양쪽 데이터 절반의 연산 • 최소한의 연산 시간 증가로 높은 보안성 획득 • IDEA, Blowfish, RC5 • 가변적 F 함수 • 라운드마다 변하는 F함수 • CAST-128 에서 채택 • 키 의존 회전 이동 • CAST-128 에서 채택 38

  39. 4.4.1 주요 대칭 블록암호의 특징 39

  40. 4.5 RC4 STREAM 암호 6.5.1 Stream 암호 6.5.2 RC4 알고리즘 40

  41. 일반 블럭 암호 스트림 암호 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

  42. 키계열 키계열 암호문 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

  43. 4.5.1 Stream 암호 43

  44. 4.5.1 Stream 암호 44

  45. 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

  46. 4.5.1 Stream 암호 • 키 스트림 주기 • 주기적 (periodic) 스트림 암호 : 키 스트림이 어떤 주기를 갖고 반복 • 비주기적 스트림 암호 : 키가 반복없이 표현되는 일회용 패드(one-time pad)방식 • 평문과 키의 관계 • 동기식 스트림 암호(Synchronous Stream Cipher) • 암호문을 복호화하여 평문을 찾을때 키 스트림과 암호문 사이에 동기가 필요 • 키 스트림이 평문과 관계없이 생성되므로 암호문과 암호문에 들어있는 키 스트림이 독립적이어서 정보유출의 가능성이 적다 • 선형 귀한 치환 레지스터(Linear Feedback Shift Register) 46

  47. 4.5.1 Stream 암호 • 평문과 키의 관계 • 자기 동기식 스트림 암호(Self-Synchronous Stream Cipher) • 키 스트림이 평문과 암호문과 관계를 갖는다. • 키 스트림은 평문 또는 암호문으로 부터 함수 관계에 의해 생성 • 전송 중 암호문의 비트가 손실 또는 변경되더라도 그 오류의 영향이 유한하게 된다. • 오류 정정의 기능을 포함 가능 • 키 스트림과 암호문의 종속성으로 인해 해독하기 쉽다. • 암호문 귀한 자동키 (Feedback autokey)암호시스템 • 동기식 스트림 암호 시스템에 자기동기식 스트림암호의 장점을 결합하여 사용가능 47

  48. 4.5.1 Stream 암호 • 스트림 암호 시스템의 장점과 사용 • 군사 및 외교용으로 널리 사용 • 이동통신 환경에서 구현이 용이 • 안전성을 수학적으로 엄밀하게 분석 가능 • 이동통신 등의 무선 통신 데이터 보호에 적합 • 종류 • RC4 • SEAL 48

  49. 4.5.2 RC4 알고리즘 • 1987년 Rivest에 의해 설계된 가변 키 길이를 지원 원래는 미공개 • 1994년 인터넷 뉴스그룹에 익명으로 공개된 알고리즘 • Netscape Navigator의 데이타 보호용으로 사용되고 있으며, 다른 인터넷 응용들에서도 널리 사용되는 스트림 암호이다. 49

More Related