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