Transcript 관용암호방식알고리즘
Chap 4. 대칭 키 알고리즘 CS&AI Labs 7월 20일 신승목 1 Contents 3-DES 개발 배경 및 구조 다양한 대칭 키 블록 암호기 대칭 키 스트림 암호기의 구조와 특징 2 4.1 3중 DES DES의 brute-force 공격에 대한 잠재적인 취약성 => 대안책 필요 DES와 다른 완전히 새로운 알고리즘 설계 Blowfish RC5 AES 기존의 소프트웨어와 장비에 암호화 강화 DES + 다중키 => 다중 암호화 => Triple DES 3 4.1 2중 DES 2중 DES C=EK2[EK1[P]] P=DK1[DK2[C]] 4 4.1 2중 DES 중간 결과에 의한 공격 X=EK1[P]=DK2[C] 평문 P를 2^56개의 가능한 모든 키 K1으로 암호한 다음 결과를 테이블로 저장 암호문 C를 키 K2의 가능한 모든 2^56개의 값으로 복호화 5 4.2 3중 DES 3키에 의한 3중 DES 3단계 암호화 과정을 이용 기지 평문 공격의 복잡도 2^112 현실성 없는 공격법 => 공격 불가능 문제점 56*3 = 168 비트의 키를 사용 사실상 사용하기가 어려움 6 4.2 3중 DES 2키에 의한 3중 DES 7 4.2 3중 DES 1979년 Tuchman 에 의해 제안 키 관리 표준 ANS X9.17과 ISO 8732에 의해 채택 현재까지 실용적인 암호 분석 공격이 없음 Coppersmith Brute-force 공격 : 2^112 = 5*10^33 차수로 가능 차분 암호 해독은 단일 DES와 비교하여 10^52이 넘는 지수적인 복잡도를 가짐 장래의 성공적인 공격 가능 유형 Merkle & Hellman OORS 90 8 4.4 Blowfish Bruce Schneier에 의해 개발된 대칭 블록 암호 방식 특성 빠른 속도 : 32비트 마이크로 프로세스에서 1 바이트 당 18클럭 사이클의 속도로 암호화 간결성 : 5K 이내의 메모리에서도 실행가능 단순성 : 간단한 구조로 구현이 쉽고 알고리즘의 강도 결정이 용이함 보안의 가변성 : 키의 길이는 가변적이며 448비트만큼 길어질 수 있어 높은 속도와 보안성 사이의 균형이 가 능 64비트 블록의 평문을 암호화 9 4.4 Blowfish 키 사이즈 : 32비트에서 448비트 범위 생성 키는 K-배열에 저장 18개의 32비트 서브키 32비트 엔트리를 갖는 4개의 8*32 S박스 생성 K1, K2, …, Kj 1<= j <= 14 서브키는 P-배열에 저장 P1, P2, …, P18 10 4.4 Blowfish P-배열과 S-박스 생성 법 1. 우선 P-배열과 4개의 S-박스를 차례로 상수 phi의 소수부 비트를 이용하여 초기화함. 그러므로 phi의 소수부의 맨 왼 쪽 32비트 부터 계속 P1, P2, …, P18이 됨. 2. 필요 시 K-배열의 워드를 재 사용하여 P-배열과 K-배열을 비트 단위 XOR 연산을 수행 P1= P1 XOR K1, P2= P2 XOR K2 … 3. 현재의 P-배열과 S-배열을 이용하여 모두 0인 64비트 블록 을 암호화, P1과 P2를 암호문으로 대체 4. 현재의 P-배열과 S-배열을 이용하여 단계 3)의 결과를 암 호화하고 P3와 P4를 암호문으로 대체 5. 이 과정을 계속하여 P의 모든 요소와 S의 모든 요소를 차례 로 매 단계마다 계속 변하는 Blowfish 알고리즘의 결과를 11 이용하여 갱신 12 13 4.4 Blowfish 최종적인 S와 P를 생성키 위해서 Blowfish 암호 알고리즘이 총 521회 필요 비밀키가 자주 바뀌는 응용에는 적합하지 않음 빠른 실행을 위해서는 P와 S-배열은 알고리즘이 사용될 때마다 키로부터 유도하기 보다는 테이블에 저장 소요되는 메모리는 4K 바이트가 넘는다. Blowfish는 메모리 용량이 제한된 스마트카드와 같은 응용에는 적합하지 않음 14 암호화 및 복호화 기본연산 덧셈 : 2^32을 법으로 하는 연산 비트 XOR 연산 알고리즘 for i = 1 to 16 do REi = LEi-1 Pi; LEi = F[REi] REi-1; LE17 = RE16 P18 ; RE17 = LE16 P17; 15 4.4 Blowfish 논의 사항 Blowfish의 특성 암호해독이 매우 어려움 데이터 양쪽 모두에 대해서 연산이 수행됨 서브키와 S 박스들이 Blowfish 자신의 반복 적용에 의해 생성 고전 Feistel 암호와의 차이점 실행속도가 매우 빠름 16 4.5 RC5 Ron Rivest에 의해 개발된 대칭 암호 알고리즘 RSA 데이터 보안회사의 BSAFE, JSAFE, S/MAIL등에 사 용 17 4.5 RC5 특성 하드웨어 및 소프트웨어의 적합성 : 마이크로프로세서에서 일반적으로 사용되는 기본 연산만 사용 빠른 속도 : 단어 단위로 처리, 기본 연산은 한번에 데이터 단어 전체를 처리 다른 단어 길이 프로세서에의 적응성 : 단어 당 비트수를 매개변수로 이 용, 매개변수가 다르면 다른 알고리즘이 됨 반복 수의 가변성 가변 길이의 키 단순성 : 구현이 쉽고 알고리즘의 강도 결정이 용이 낮은 메모리 요구량 : 스마트 카드나 기타 한정된 메모리를 사용하는 장 치에 적당 높은 보안성 : 적당한 매개변수로 높은 보안성 제공 데이터 의존적인 순환 이동 : 데이터 양에 따라 결정되는 회전 이동을 채 용=> 암호 해독에 대한 알고리즘의 강도를 높여 줌 18 4.5 RC5 RC5 매개변수 w : 단어의 비트 수, 16, 32, 64 r : 반복횟수, 0,1,…,255 b : 비밀 키 K 내의 8비트 바이트수 0,1,…,255 특정버전 : RC5-w/r/b RC5-32/12/6 32비트 단어(64비트 블록 처리) 12회 반복의 암호 및 복호 처리 16바이트 키(128비트) 19 4.5 RC5 키 확장과정 20 21 4.5 RC5 암호화 LE0 = A + S[0] ; RE0 = B + S[1]; For i = 1 to r do LE i = ((LE i-1 1 RE i-1 -1 ) RE i-1 -1) + S[2 i]; RE i = ((RE i-1 - 1 LE i-1 -1 ) LE i-1 -1) + S[2 i+1]; 22 DES challenge DES Challenge 일자 해독시간 수상자 비고 I 1997년1월 96일 R.Verser -DESHALL 팀구성 -인터넷의 위력 입증 -약 24.6%의 키 공간 조사 II 1998년1월 41일 Distributed.Net -약 22,000명 참여 -약 50,000 CPU 링크 II-2 1998년7월 56시간 EFF -DES Cracker 라는 칩사용($250,000) -초당 880억개의 키를 조사하는 속도 1999년1월 22시간 15분 EFF & Distrubuted.Net -Deep Crack 사용 -약 10만대의 PC 이용 -초당 2,450억개의 키 조사속도 III 23 Rijndeal Structure • 블록사이즈 : 128 비트 , 키 사이즈 : 128/192/256 비트 • 구조 : 10 / 12 / 14 라운드의 구조 - Byte 단위의 연산을 이용 - 세개의 layer로 구성 ► Linear mixing layer ► Non-linear Layer ► Key Addition Layer Nr Nb=4 Nb=6 Nb=8 Nk=4 10 12 14 Nk=6 12 12 14 Nk=8 14 14 14 Nr : rounds Nb : block size / 32bit Nk : key size / 32bit 여러 라운드에 걸친 높은 확산 ShiftRow(state) , MixColumn(state) S-box의 병렬 적용 ByteSub(state) 중간 state에 라운드 키의 EXOR AddRoundKey(state) 24 Smplified Rijndael Scheme 암호화 복호화 25 Substitute Bytes Transformation ◈ state 의 각 바이트를 치환 • 각 바이트를 16x16 s-box를 이용하여 치환 • 8비트를 상위 4비트가 행, 하위 4비트가 열로 사용. 26 Shift row Transformation • 각행을 행의 index 만큼 왼쪽으로 circular shift 함 . 27 Mix Column c(x)의 최고차항이 4보다 크기때문에 mod m(x) 연산을 해주 면 그값은 아래와 같다. c(x)mod m(x)= d(x) = d3x3 +d2x2 +d1x+d0 = c3x3 +c2x2+c6x2 +c1x+c5x+c4 +c0 d0 = a0•b0 a3•b1 a2•b2 d1 = a1•b0 a0•b1 a3•b2 d2 = a2•b0 a1•b1 a0•b2 d3 = a3•b0 a2•b1 a1•b2 위 식을 간단히 하면 아래와 같이 된다. a0 d0 a d1 = 1 d2 a2 d3 a3 a3 a2 a1 a0 a3 a2 a1 a0 a3 a2 a1 a0 b0 b1 b2 b3 a1•b3 a2• b3 a3• b3 a0• b3 02 d0 01 d1 = d2 01 d3 03 03 01 01 02 03 01 01 02 03 01 01 02 b0 b1 b2 b3 28 대칭키 스트림 암호기 메시지를 비트 단위 또는 바이트 단위로 처리하는 방식 의사난수형태의 스트림 키를 평문과 XOR하여 암호문 생성 29 30 4.5 RC4 1987년 Ron Rivest가 고안한 대칭키 스트림 암호기 키 크기 – 가변적(8 ~ 2048 비트) 초기화 – 256바이트의 상태 벡터 S 치환 키 스트림생성 – 인덱스 덧셈과 교환(swap) 31 32