ns_ch4 최신 관용암호 기법
Download
Report
Transcript ns_ch4 최신 관용암호 기법
정보보호기초강의
제 4장 최신 관용암호 기법
Contemporary Symmetric Ciphers
2007. 10.
네트워크보안연구실 / 문형진
([email protected])
http://www.ezpia.biz
[[email protected]]
목차
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
2007-02 정보보호기초
2
4.1 3중 DES
2중 DES
2 키에 의한 3중 DES
3 키에 의한 3중 DES
2007-02 정보보호기초
3
DES 알고리즘
2007-02 정보보호기초
4
4.1 3중 DES
DES의 brute-force 공격에 대한 취약성 보완 대안
차세대 암호 알고리즘 표준의 개발
AES (Advanced Encryption Standard) : Rijndael 채택
DES에 다중 키 사용(기존 설비의 활용 측면)
2중 DES , 3중 DES
2007-02 정보보호기초
5
4.1.1 2중 DES (1/2)
2개의 암호화 단계와 2 개의 키 사용
암호화 C = EK2[EK1[P]]
복호화 P = DK1[DK2[C]]
암호화 키가 112 비트로 증가되어 암호의 강도가 증가
그림 6.1 (a)
2007-02 정보보호기초
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
2007-02 정보보호기초
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)
2007-02 정보보호기초
8
4.1.2 2키 3중 DES (2/2)
그림 6.2 3중 DES에 대한 기지 평문 공격
2007-02 정보보호기초
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, 인터넷 응용 등에서 사용
2007-02 정보보호기초
10
4.2 Blowfish
4.2.1 서브 키와 S-박스의 생성
4.2.2 암호화 및 복호화
4.2.3 논의 사항
2007-02 정보보호기초
11
4.2 Blowfish
Blowfish
DES 대체 암호화 알고리즘
32~488 비트까지 가변적인 길이의 키를 사용
대칭 블록 암호 알고리즘
Blowfish는 기존의 암호화 알고리즘의 대안
1993년 Bruce Schneier에 의해 설계
Blowfish는 32비트 명령어 프로세서를 염두에 두고 설계
그래서 DES에 비해 현저히 빠르다.
사용
특허 미등록으로 사용승인이 필요 없고, 모든 용도에 사용 가능
2007-02 정보보호기초
12
4.2 Blowfish
특징
빠른 속도 : 32 비트 마이크로 프로세스에서 1 byte당 18 클럭
소요
간결성 : 5K 이내의 메모리에서 실행 가능
단순성 : 구현 용이, 알고리즘 강도 결정 용이
보안의 가변성 : 키 길이 가변(32 - 448 비트), 속도와 보안성
고려
2007-02 정보보호기초
13
2007-02 정보보호기초
14
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
2007-02 정보보호기초
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 배열을 재 계산
2007-02 정보보호기초
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]
2007-02 정보보호기초
17
4.2.2 암호화/복호화 (1/3)
그림 6.4 Blowfish의 상세 단일 반복
2007-02 정보보호기초
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를 적용한 결과가 암호문
2007-02 정보보호기초
19
4.2.2 암호화/복호화 (3/3)
복호화
그림 6.3b
64 비트 암호문을 32 비트씩 분할((LD0, RD0)
i 라운드 후의 결과를 LDi, RDi
서브키를 역순으로 사용(P16, …, P2, P1)
암호화와 같은 방향으로 수행됨
2007-02 정보보호기초
20
4.2.2 논의사항 (1/3)
소개된 관용암호 알고리즘 중 가장 강력
서브키와 S-박스 생성에 Blowfish 자신의 반복과정을 적용
비트열이 토막 잘림은 해독을 난해하게 하는 효과
데이터의 양쪽 모두에 대하여 연산 수행
매 반복의 입력에서 Li와 Ri를 교환하여 사용
암호학적 강도를 더욱 강화
실행 속도가 매우 빠름(표 6.1)
2007-02 정보보호기초
21
4.2.2 논의사항 (2/3)
알고리즘
라운드별
클록 사이클
라운드 수
암호화 바이트별
클록 사이클
Blowfish
9
16
18
RC5
12
16
23
DES
18
16
45
IDEA
50
8
50
3중 DES
18
48
108
표 6.1 Pentium상의 블록 암호 속도 비교
2007-02 정보보호기초
22
4.2.2 논의사항 (3/3)
[SCHN93] 설계상의 논의사항
서브키 생성처리에 소요되는 시간 때문에 본래의 키 길이에 대
한 전사적 공격은 더욱 난해
함수 F는 우수한 쇄도 효과를 일으키는 결과
함수 F의 입력 비트는 단 하나의 S-박스 입력으로 사용됨
CAST와 다르게 함수 F는 반복 과정에 의존적이 아님
2007-02 정보보호기초
23
4.3 RC5
4.3.1 RC5 매개 변수
4.3.2 키 확장
4.3.3 암호화
4.3.4 복호화
4.3.5 RC5 모드
2007-02 정보보호기초
24
4.3 RC5 (1/2)
Ron Rivest에 의해 개발된 대칭 암호 알고리즘
보안제품 BSAFE, JSAFE, S/MAIL등에 사용
특징
1. 하드웨어 및 소프트웨어에의 적합성
CPU에서 일반적으로 사용되는 기본 연산만 사용
2. 빠른 속도
간단한 알고리즘을 사용
기본 연산이 한번에 full word를 처리
3. 다른 단어 길이 프로세서에서의 적응성
단어 당 비트 수는 RC5의 매개변수
다른 단어 길이는 다른 알고리즘이 됨
2007-02 정보보호기초
25
4.3 RC5 (2/2)
4. 반복 수의 가변성과 가변 길이의 키
각각 RC5의 두 번째와 세 번째 매개변수
빠른 속도와 높은 보안 사이의 선택
5. 단순성
간단한 구조로 구현이 용이
알고리즘 강도 결정(보안 허점 탐지)이 용이
6. 낮은 메모리 요구량
스마트 카드나 한정된 메모리를 사용하는 장치에 적당
7. 높은 보안성
적당한 매개변수로 높은 보안성을 제공하도록 설계
8. 데이터 의존적인 순환 이동
데이터의 양에 따라 결정되는 회전 이동(순환비트이동)을
채용
알고리즘 강도에 기여
2007-02 정보보호기초
26
4.3.1 RC5 매개변수
특정 버전의 표기:: RC5-w/r/b
예:: RC5-32/12/16
32 비트 단어(64 비트 블록 처리)
12 회 반복의 암호 및 복호 처리
16 바이트 키((128 비트)
2007-02 정보보호기초
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) 연산 수행
2007-02 정보보호기초
28
4.3.2 키 확장 (cont’)
2007-02 정보보호기초
29
4.3.3 암호화 (1/3)
2007-02 정보보호기초
30
4.3.3 암호화 (2/3)
평문 2 단어를 w 비트 레지스터 A와 B에 각각 저장
각 r 라운드에서 좌우 양쪽 치환, 순열, 키 의존치환 처리
양쪽 단어는 매 라운드마다 갱신
DES의 2회 반복 과정이 RC5의 1회에 해당
덧셈 : + 로 표시, 2w 를 법으로 한 덧셈
뺄셈 : - 로 표시, 2w 를 법으로 한 뺄셈
좌측순환이동 : 단어 x 의 y 비트 좌측 순환이동은
x <<< y 로 표시
우측 순환이동 : 단어 x 의 y 비트 우측 순환이동은
x >>> y 로 표시
2007-02 정보보호기초
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
RE
i
=
출력값은 LE
r
i-1
((RE
,RE
r
i-1
RE
i-1
-1 ) RE
i-1
-1) + S[2Xi];
LE
i-1
-1 ) LE
i-1
-1)
+ S[2Xi+1];
register에 있다.
2007-02 정보보호기초
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이다
2007-02 정보보호기초
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 유형의 알고리즘
임의 길이 평문을 입력받아 같은 길이의 암호문 생성
2007-02 정보보호기초
34
4.3.5 RC5 모드 (2/2)
그림 6.7 RC5 Ciphertext Stealing Modes
2007-02 정보보호기초
35
4.4 개선된 대칭블록 암호의 특징 (1/2)
가변 키 길이
Blowfish, RC5, CAST-128, RC2
혼합연산자
산술 및 부울 연산자 중 하나 이상 사용, 비선형성 제공
3중-DES를 제외한 알고리즘에서 사용
데이터 의존 회전 이동
회전이동은 서브키에 의존하지 않고, 데이터 블록에 의존
RC5
키 의존 S-박스
S-박스의 내용이 키에 의존, 상이한 키는 상이한 S-박스 생성
높은 비선형성 제공, Blowfish에서 채택
2007-02 정보보호기초
36
4.4 개선된 대칭블록 암호의 특징 (2/2)
긴 키 스케줄 알고리즘
서브키 생성이 단일 암호화 또는 복호화 보다 더 오래 걸림
전사적 공격에 강함, Blowfish에서 채택
가변적 평문/암호문 블록 길이
편의성 제공 (알고리즘 응용에 맞출 수 있음), RC5에서 채택
가변적 반복 횟수
보안성과 실행속도와의 관계 조정 가능, RC5
2007-02 정보보호기초
37
4.4 개선된 대칭블록 암호의 특징 (2/2)
매 반복 시 양쪽 데이터 절반의 연산
최소한의 연산 시간 증가로 높은 보안성 획득
IDEA, Blowfish, RC5
가변적 F 함수
라운드마다 변하는 F함수
CAST-128 에서 채택
키 의존 회전 이동
CAST-128 에서 채택
2007-02 정보보호기초
38
4.4.1 주요 대칭 블록암호의 특징
2007-02 정보보호기초
39
4.5 RC4 STREAM 암호
6.5.1 Stream 암호
6.5.2 RC4 알고리즘
2007-02 정보보호기초
40
4.5.1 Stream 암호
일반 블럭 암호
스트림 암호
m 비트 키
n 비트
평문
암호
알고리즘
n 비트
암호문
n 비트
초기값
암호
알고리즘
이진 키수열
이진 평문 수열
m 비트 키
평문: M=m1m2m3…
암호문: C= EK(m1) EK(m2) EK(m3)…
평문: M=m1m2m3…
암호문: C= EZ1(m1) EZ2(m2) EZ3(m3)…
2007-02 정보보호기초
41
4.5.1 Stream 암호
키계열
송신자
평문 M
평문
키계열
암호문 C
수신자
평문 M
10111011
암호문 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
평문
10111011
2007-02 정보보호기초
42
4.5.1 Stream 암호
2007-02 정보보호기초
43
4.5.1 Stream 암호
2007-02 정보보호기초
44
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의 암호화에 사용
2007-02 정보보호기초
45
4.5.1 Stream 암호
키 스트림 주기
주기적 (periodic) 스트림 암호 : 키 스트림이 어떤 주기를 갖고 반
복
비주기적 스트림 암호 : 키가 반복없이 표현되는 일회용 패드
(one-time pad)방식
평문과 키의 관계
동기식 스트림 암호(Synchronous Stream Cipher)
암호문을 복호화하여 평문을 찾을때 키 스트림과 암호문 사이
에 동기가 필요
키 스트림이 평문과 관계없이 생성되므로 암호문과 암호문에
들어있는 키 스트림이 독립적이어서 정보유출의 가능성이 적다
선형 귀한 치환 레지스터(Linear Feedback Shift Register)
2007-02 정보보호기초
46
4.5.1 Stream 암호
평문과 키의 관계
자기 동기식 스트림 암호(Self-Synchronous Stream Cipher)
키 스트림이 평문과 암호문과 관계를 갖는다.
키 스트림은 평문 또는 암호문으로 부터 함수 관계에 의해 생성
전송 중 암호문의 비트가 손실 또는 변경되더라도 그 오류의 영향이
유한하게 된다.
오류 정정의 기능을 포함 가능
키 스트림과 암호문의 종속성으로 인해 해독하기 쉽다.
암호문 귀한 자동키 (Feedback autokey)암호시스템
동기식 스트림 암호 시스템에 자기동기식 스트림암호의 장점을 결합하여 사용
가능
2007-02 정보보호기초
47
4.5.1 Stream 암호
스트림 암호 시스템의 장점과 사용
군사 및 외교용으로 널리 사용
이동통신 환경에서 구현이 용이
안전성을 수학적으로 엄밀하게 분석 가능
이동통신 등의 무선 통신 데이터 보호에 적합
종류
RC4
SEAL
2007-02 정보보호기초
48
4.5.2 RC4 알고리즘
1987년 Rivest에 의해 설계된 가변 키 길이를 지원 원래는 미공개
1994년 인터넷 뉴스그룹에 익명으로 공개된 알고리즘
Netscape Navigator의 데이타 보호용으로 사용되고 있으며, 다른
인터넷 응용들에서도 널리 사용되는 스트림 암호이다.
2007-02 정보보호기초
49