840 likes | 1.86k Views
6 장 . Data Encryption Standard (DES). 경일대학교 사이버보안학과 김 현 성 교수. 목차. 6.1 개요 6.2 DES 의 구조 6.3 DES 분석 6.4 다중 DES 6.5 DES 의 안전성. 6.1 개요. DES 대칭키 블록암호로 미국 국립기술표준원 (NIST, National Institute of Standards Technology) 에서 공표 이 절의 내용 역사 (History) 개요 ( Overview). 6.1 개요 – 역사.
E N D
6장. Data Encryption Standard(DES) 경일대학교 사이버보안학과 김 현 성 교수
목차 • 6.1 개요 • 6.2 DES의 구조 • 6.3 DES 분석 • 6.4 다중 DES • 6.5 DES의 안전성
6.1 개요 • DES • 대칭키 블록암호로 미국 국립기술표준원(NIST, National Institute of Standards Technology)에서 공표 • 이 절의 내용 • 역사(History) • 개요(Overview)
6.1 개요 – 역사 • 미국 국립기술표준원(NIST) • 1973년, 국가적으로 사용할 대칭키 암호시스템의 제안 요청서를 발표 • Lucifer 프로젝트의 수정판인 IBM의 제안이 DES로 채택 • 루시퍼 암호(Lucifer Cipher) • DES의 바탕이 되었던 암호시스템 • 개발자는 IBM의 호스트 파이스텔(Horst Feistel) • 1975년, 연방정보처리기준(FIPS, Federal Information processing Standard)의 초안(draft)로 공표 • 1977년, 연방관보에 FIPS 46이란 이름으로 발표 • 그 후, DES를 세 번 반복하는 삼중 DES의 사용을 권고하는 새로운 표준(FIPS 46-3)발표
6.1 개요 – 역사 (계속) • DES 초안에 대한 비판 • 56비트 키 사이즈 • 전수조사 공격에 대해 취약 • DES 내부 구조 안에 감춰진 설계에 대한 염려 • S-박스에 트랩도어(trapdoor)가 숨겨져 있다고 생각 • 2000년, DES를 대체하기 위한 최신 블록암호 표준 AES를 제정 • 세계 최초로 표준화된 상용 암호
6.1 개요 – 개관 • [그림 6.1] DES의 암호화와 복호화 과정
6.2 DES의 구조 • 암호화 과정 • 두 개의 치환(P-박스)과 16 개의 Feistel 라운드 함수로 구성 • 이 절의 내용 • 초기치환과 최종치환 (Initial and Final Permutations) • 라운드 (Rounds) • 암호화와 복호화 (Cipher and Reverse Cipher) • 예 (Examples)
6.2 DES의 구조 (계속) [그림 6.2] DES의 일반적인 구조
6.2 DES의 구조 - 초기치환과 최종치환 • 초기치환(IP)과 최종치환(IP-1) • 서로 역의 관계이며, 키가 없는 단순 치환 • [그림 6.3] DES에서 초기치환과 최종치환 단계
6.2 DES의 구조 - 초기치환과 최종치환 (계속) • [표 6.1] 초기/최종 치환 표 • 초기치환과 최종치환은 암호학적으로 중요하지 않음 • 키와 관련 없는 이미 고정된 하나의 함수
6.2 DES의 구조 - 초기치환과 최종치환 (계속) • [예제 6.1] • 입력 값이 다음과 같은 16 진수일 때초기치환에 의한 출력 값을 찾아라. 0x0002 0000 0000 0001 • [풀이] 입력 값은 최상위 비트 위치로부터 15 번째 비트와 64 번째 비트에만 1의 값이 있기 때문에 64-비트 출력 값은 두 군데의 비트에만 1의 값을 갖는다. 0x0000 0080 0000 0002
6.2 DES의 구조 - 초기치환과 최종치환 (계속) • [예제 6.2] • 최종치환의 입력 값이 다음과 같을 경우, 최종 치환의 출력 값을 찾음으로 두 치환이 서로 역의 관계임을 증명하여라. 0x0000 0080 0000 0002 • [풀이] 25 번째와 63 번째 비트 값만 1이고, 나머지 비트 값들은 모두 0이다. 최종 치환에서 입력 값의 25 번째 비트는 출력 값의 64번째 비트가 되고, 입력 값의 63 번째 비트는 출력 값의 15 번째 비트가 된다. 따라서 16진수로 나타낸 결과는 다음과 같다. 따라서 두 치환은 역의 관계임을 알 수 있다. 0x0002 0000 0000 0001
6.2 DES의 구조 - 라운드 함수 • 16 번의 라운드 함수를 사용 • 각 라운드 함수는 Feistel 암호 • 각 라운드 • 혼합기(mixer)와 스와퍼(swapper)로 구성 • 역 연산이 가능 • 스와퍼 : 절반 교환 • 혼합기 : 단순한 XOR 연산 • 그 외 비가역 요소 : 함수 f(RI-1, KI) 안에 모여 있음
6.2 DES의 구조 - 라운드 함수 (계속) • [그림 6.4] DES의 라운드함수 (암호화 과정)
6.2 DES의 구조 - 라운드 함수 (계속) • DES의 핵심은 DES 함수 • 라운드 함수에 사용된 f(RI-1, KI )를 의미함 • 32-비트 출력 값을 산출하기 위하여 오른쪽 32-비트(RI-1)에 48-비트 키를 적용 • DES 함수의 구성 • 확장 P-박스 • 키 XOR • 8개의 S-박스 • 단순 P-박스
6.2 DES의 구조 - 라운드 함수 (계속) • [그림 6.5] DES 함수
6.2 DES의 구조 - 라운드 함수 (계속) • 확장 P-박스(Expansion P-box) • RI−1는 32-비트 입력 값이고, KI는 48-비트 라운드 키이기 때문에 우선 32-비트 RI−1을 48-비트 값으로 확장할 필요가 있음 • [그림 6.6] 확장치환
6.2 DES의 구조 - 라운드 함수 (계속) • [표 6.2] 확장 P-박스 표
6.2 DES의 구조 - 라운드 함수 (계속) • Whitener (XOR) • 확장치환을 적용한 이후에, 확장치환의 출력 값에 라운드 키를 XOR 연산 • 확장치환의 출력 값과 라운드 키 값 모두 48-비트 • 라운드 키는 이 연산에서만 사용
6.2 DES의 구조 - 라운드 함수 (계속) • S-Boxes • 실제로 섞어주는 역할을 수행 • 즉 혼돈(confusion) 역할 수행 • 8개의 S-박스를 사용 • 각 6-비트 입력 값과 4-비트 출력 값을 갖음 • [그림 6.7] S-박스
6.2 DES의 구조 - 라운드 함수 (계속) • [그림 6.8] S-박스 규칙
6.2 DES의 구조 - 라운드 함수 (계속) • [표 6.3] S-box 1
6.2 DES의 구조 - 라운드 함수 (계속) • [예제 6.3] • S-박스 1의 입력이 100011이다. 출력은 무엇인가? • [풀이] 첫 번째와 여섯 번째 비트를 합쳐서 쓰면 2진수로 11을 얻는데, 10진수로 3이다. 남아있는 비트는 2진수로 0001을 얻는데, 10진수로 1이다. 표 6.3(S-박스 1)에서 3행 1열에 있는 값을 찾는다. 그 결과는 10진수로 12인데, 2진수로 1100이다. 그래서 입력 100011은 출력 1100을 산출한다.
6.2 DES의 구조 - 라운드 함수 (계속) • 단순 치환(Straight Permutation) • DES 함수에서 마지막 연산 • 32-비트 입력과 32-비트 출력 • [표 6.11] 단순 치환표
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 • 혼합기(mixer)와 스와퍼(swapper)를 사용함으로써 16 라운드를 갖는 암호 알고리즘과 복호 알고리즘 (reverse cipher)을 만들 수 있음 • 첫 번째 접근방법 • 마지막 라운드(라운드 16) 함수를 swapper가 없고 mixer만 존재하도록 만듦
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [그림 6.9] 첫 번째 접근방법에의한 DES 암호 알고리즘과 복호 알고리즘
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.1] DES 암호화 과정에 대한 의사코드
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.1] (계속)
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.1] (계속)
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.1] (계속)
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • 두번째접근 방법 • 동일한 라운드를 16번 반복 사용한 후, 마지막 라운드에 스와퍼를 추가하는 방법 • 마지막 라운드에는 두 개의 스와퍼가 연속 사용되므로 서로 상쇄. • 키 생성 (Key Generation) • 라운드 키 생성기(round-key generator)는 56-비트 암호키로부터 16 개의 48-비트 라운드 키를 만들어 낸다.
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [그림 6.10] 키 생성
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [표 6.12] 패리티 비트 제거 표 • [표 6.13] 순환 이동 비트 량
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • 축소치환(P-박스) • 56-비트를 48-비트로 바꾸는 데 사용 • 48-비트 출력은 한 라운드의 라운드 키로 사용 • [표 6.14] 키 축소 표
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.2] 라운드 키 생성을 위한 알고리즘
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [알고리즘 6.2] 라운드 키 생성을 위한 알고리즘 (계속)
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [예제 6.5] • 평문 블록과 키를 랜덤하게 선택한 후, 16 진수 형태의 암호문 블록 : • [표 6.15] 예제 6.5의 데이터의 결과
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [표 6.15] 예제 6.5의 데이터의 결과 (계속)
6.2 DES의 구조 - 암호 알고리즘과 복호 알고리즘 (계속) • [예제 6.6] • 수신자(destination)인 Bob이 어떻게 동일한 키를 사용하는 Alice로부터 받은 암호문을 해독할 수 있는지 보자.
6.3 DES 분석 • 이 절의 내용 • 성질 (Properties) • 설계 기준 (Design Criteria) • DES 약점 (DES Weaknesses)
6.3 DES 분석 - 성질 • 블록암호에서 요구되는 2가지 성질 • 쇄도효과(avalanche effect) • 완비성 효과 (completeness effect) • [예제 6.7] • DES에서 쇄도효과를 검사하기 위하여, 1 비트만 다른 2개의 평문 블록을 동일한 키를 가지고 암호화하고, 각 라운드 출력 값들의 차이를 관찰하자.
6.3 DES 분석 – 성질 (계속) • [예제 6.7 계속] • 2개의 평문 블록이 가장 오른쪽의 비트만 다를지라도, 암호문은 29비트가 다름을 알 수 있다. 이것은 평문의 약 1.5 퍼센트가 변하는 것은 암호문에서 약 45 퍼센트의 변화를 만들어낼 수 있다는 것을 의미한다. 표 6.17은 각 라운드에서 발생하는 변화를 보여준다. 그리고 세 번째 라운드에서 이미 상당한 변화들이 생김을 알 수 있다. • [표 6.17] 예 6.7에 대한 비트 차이의 개수
6.3 DES 분석 – 성질 (계속) • 쇄도효과(Avalanche effect) • 평문(또는 키)에서 작은 변화가 암호문에서는 상당한 변화를 야기하는것을 의미 • 완비성 효과 (Completeness effect) • 암호문의 각 비트는 평문의 많은 비트들에 의존할 필요가 있다는 것을 의미 • DES에서 P-박스와 S-박스에 의해 야기된 확산(diffusion)과 혼돈(confusion)은 매우 강한 완비성 효과를 보여줌
6.3 DES 분석 – 성질 (계속) • S-박스 • 각 라운드로부터 그 다음 라운드까지 혼돈과 확산 성질을 만족하게끔 설계 • P-박스 • P-박스는 비트들을 확산(diffusion) 시킴 • 라운드 수 • DES는 각 라운드가 Feistel 암호인 16개의 라운드로 구성 • 8라운드 이후에는 각 암호문이 모든 평문 비트와 키 비트의 함수임이 증명 • 즉 평문을 입력으로 받아 암호문을 출력하는 랜덤 함수
6.3 DES 분석 – DES의 취약성 • 분석가들은 DES에서 몇 가지 취약성을 찾아냄 • 암호 설계에서의 취약점 • 1. S-box의 취약점 • 2. P-box의 취약점 • 3. Key의 취약점 – 키크기, 취약키, 준 취약키, 가능한 취약키. • [표 6.18] Weak keys
6.3 DES 분석 – DES의 취약성 (계속) • 표 6.18에 있는 첫 번째 취약키를 가지고 두 번 암호화하면 본래의 평문 블록이 만들어짐
6.3 DES 분석 – DES의 취약성 (계속) • [그림 6.11] 취약키를 가진 2중 암호화와 복호화
6.3 DES 분석 – DES의 취약성 (계속) • [표 6.19] 준 취약키 • 준 취약키라 불리는 6개의 키 쌍이 있음 • 준 취약키는 오직 두 가지 다른 형태의 라운드 키만을 생성 • 각 라운드 키는 8번씩 반복됨 • 하나의 쌍으로 묶인 두 개의 준 취약키는 순서만 다를 뿐 동일한 라운드 키를 생성
6.3 DES 분석 – DES의 취약성 (계속) • 첫번째 준 취약키 쌍으로 라운드 키들을 생성
6.3 DES 분석 – DES의 취약성 (계속) • [그림 6.12] 암호화 및 복호화에서의 준 취약키 쌍