Transcript
Page 1: 8.  현대  대칭키  암호를 이용한  암호화 기법

1

경일대학교 사이버보안학과김현성 교수

Page 2: 8.  현대  대칭키  암호를 이용한  암호화 기법

2

목차8.1 현대 블록 암호의 사용8.2 스트림 암호의 사용8.3 기타

Page 3: 8.  현대  대칭키  암호를 이용한  암호화 기법

3

8.1 현대 블록암호의 사용블록 암호

블록 단위로 데이터를 암호 또는 복호화예 ) DES : 64 비트 , AES : 128 비트 등

운영 모드실제 응용 환경에서 임의의 길이의 데이터를 블록

단위로 암호화하는 방법인 운영모드가 필요

Page 4: 8.  현대  대칭키  암호를 이용한  암호화 기법

4

8.1 현대 블록암호의 사용 – ECB 모드Electronic Codebook (ECB) 모드

가장 간단한 모드평문을 N 개의 n 비트 블록으로 분할평문 크기가 블록 크기의 배수가 아니면 패딩

(padding)각 블록을 독립된 것으로 하여 개별적으로 암호화하고

복호화하는 방식

Page 5: 8.  현대  대칭키  암호를 이용한  암호화 기법

5

8.1 현대 블록암호의 사용 – ECB 모드 ( 계속 )[ 그림 8.2] Electronic Codebook (ECB) 모드

Page 6: 8.  현대  대칭키  암호를 이용한  암호화 기법

6

8.1 현대 블록암호의 사용 – ECB 모드 ( 계속 )[ 예제 8.1]

Bob 은 Alice 가 암호화한 평문 블록을 정확하게 복구할 수 있다 . 왜냐하면 암호화와 복호화는 서로 역관계에 있기 때문이다 .

Pi = DK(Ci) = DK(EK(Pi)) = Pi

[ 예제 8.2] ECB 모드는 두 개의 열에 2n 개의 성분을 갖는 2k 개의

코드북을 사전 수집할 수 있으므로 Electronic codebook으로 불린다 . 각각의 성분은 평문과 그에 대응하는 암호문을 목록화 할 수 있다 . 하지만 , k 와 n 이 커지면 코드북을 사전 수집하고 유지하는 것이 매우 어려워진다 .

Page 7: 8.  현대  대칭키  암호를 이용한  암호화 기법

7

8.1 현대 블록암호의 사용 – ECB 모드 ( 계속 )안전성 문제

동일한 블록은 동일한 암호문을 생성Eve 는 블록 간의 독립성을 이용해 특정 암호문을 변조 가능

[ 예제 8.3] Eve 가 회사에서 한 달에 단지 몇 시간만 일을 하고 그녀의

급여가 매우 적다고 가정하자 . 그리고 Eve 는 회사가 각 고용자의 계좌에 지급해야 할 금액에 대한 정보가 17 번째 블록에 저장된다는 사실을 알고 있다고 하자 .

Eve 는 월말에 회사가 은행에 보내는 암호문을 가로채서 풀타임 일을 한 동료의 급여 정보를 갖는 블록을 복사하여 자신의 급여 정보를 갖는 블록과 대체할 수 있다 . 매달 Eve 는 자신이 일한 대가보다 훨씬 더 많은 급여를 받을 수 있다 .

Page 8: 8.  현대  대칭키  암호를 이용한  암호화 기법

8

8.1 현대 블록암호의 사용 – ECB 모드 ( 계속 )오류 파급 (Error Propagation)

전송 도중에 발생하는 단일 비트의 에러는 대응되는 블록 내의 비트들에만 에러를 발생시킴

알고리즘

Page 9: 8.  현대  대칭키  암호를 이용한  암호화 기법

9

8.1 현대 블록암호의 사용 – ECB 모드 ( 계속 )응용

안전하지 않은 채널을 통하여 두 개 이상의 블록을 갖는 메시지를 암호화하여 전송하는 수단으로 적당하지 않음

메시지 크기가 한 블록 이하라면 안전성 및 오류 파급은 문제가 되지 않음

데이터베이스에 암호화된 레코드를 저장하거나 암호화된 레코드를 복호화할 때는 암호문 블록의 독립성이 유용 데이터베이스에 랜덤하게 접근 가능 다른 레코드에 영향을 주지 않고 중간 레코드 수정 가능 큰 데이터베이스를 암호화할 때 병렬적으로 처리 가능

Page 10: 8.  현대  대칭키  암호를 이용한  암호화 기법

10

8.1 현대 블록암호의 사용 – CBC모드Cipher Block Chaining(CBC) 모드

각각의 평문 블록은 암호화되기 전에 이전 블록의 암호문과 XOR 됨 암호문은 다음 블록을 암호화할 때 사용되기 위해 메모리에

저장되어야 함 첫 블록을 암호화 할 때는 초기벡터 (IV) 를 사용

Page 11: 8.  현대  대칭키  암호를 이용한  암호화 기법

11

8.1 현대 블록암호의 사용 – CBC모드 ( 계속 )[ 그림 8.3] Cipher block chaining (CBC) 모드

Page 12: 8.  현대  대칭키  암호를 이용한  암호화 기법

12

8.1 현대 블록암호의 사용 – CBC모드 ( 계속 )[ 예제 8.4]

Alice 가 암호화한 평문 블록을 Bob 은 정확하게 복구할 수 있다 . 왜냐하면 암호화와 복호화 과정은 서로 역관계에 있기 때문이다 .

초기벡터 (Initialization Vector : IV)송신자와 수신자간에 공유되어야 하지만 반드시 비밀일

필요는 없음변조되어서는 안됨효과적인 방법 : 송신자가 난수 선택 후 안전하게 전송

Page 13: 8.  현대  대칭키  암호를 이용한  암호화 기법

13

8.1 현대 블록암호의 사용 – CBC모드 ( 계속 )오류 파급 (Error Propagation)

암호문 블록 Cj 가 전송 도중 한 비트 오류가 발생하였다고 가정하자 . 그러면 복호화 과정에서는 평문 블록 Pj 에서는 대부분의 비트에서 오류가 발생되고 , 평문 블록 Pj+1 에서는 Cj 의 오류 비트와 같은 위치에서 한 비트 오류가 발생

Pj+2 부터 PN 까지의 평문 블록은 이러한 한 비트 에러에 영향 받지 않음 . 그러므로 암호문의 한 비트 에러는 자기 복구가 이루어짐

안전성 문제한 메시지 내에서 동일한 평문 블록들은 다른 암호문 블록으로

암호화되지만 다른 두 메시지 내의 동일한 평문 블록에서는 IV 가 같다면 동일

Eve 는 암호문의 끝에 특정 암호문 블록을 덧붙일 수 있음

Page 14: 8.  현대  대칭키  암호를 이용한  암호화 기법

14

8.1 현대 블록암호의 사용 – CBC모드 ( 계속 )알고리즘

응용블록간의 연관성 때문에 병렬처리 불가능랜덤하게 선택된 파일 레코드 (DB) 를 암복호할 때 사용

불가능

Page 15: 8.  현대  대칭키  암호를 이용한  암호화 기법

15

8.1 현대 블록암호의 사용 – CFB모드Cipher Feedback (CFB) 모드

블록의 크기가 r(≤n) 단위로 암복호화 가능평문을 직접 블록암호를 사용하여 암호화하지 않음

Page 16: 8.  현대  대칭키  암호를 이용한  암호화 기법

16

8.1 현대 블록암호의 사용 – CFB모드 ( 계속 )평문 블록과 암호문 블록 사이의 관계

SelectLeftr : 입력값의 왼쪽 최상위 r 비트를 출력하는 함수

ShiftLeftr : 입력값을 왼쪽으로 r 비트 이동시키는 함수 ( 왼쪽 최상위 r 비트는 소실됨 )

Page 17: 8.  현대  대칭키  암호를 이용한  암호화 기법

17

8.1 현대 블록암호의 사용 – CFB모드 ( 계속 )스트림 암호로서의 CFB 모드

블록 암호를 위한 운영 모드이지만 그 결과는 스트림 암호와 동일

키 스트림이 암호문에 의존하는 비동기식 스트림 암호

Page 18: 8.  현대  대칭키  암호를 이용한  암호화 기법

18

8.1 현대 블록암호의 사용 – CFB모드 ( 계속 )알고리즘

Page 19: 8.  현대  대칭키  암호를 이용한  암호화 기법

19

8.1 현대 블록암호의 사용 – CFB모드 ( 계속 )안전성

블록 단위의 패턴이 유지되지 않음Alice 는 메시지를 전송할 때마다 다른 IV 를 사용해야

함Eve 는 암호문의 끝에 특정 암호문 블록을 덧붙일 수

있음오류파급

전송 도중 암호문에 한 비트 오류가 발생하면 복호 시에 평문의 같은 비트 위치에 한 비트 오류 발생하지만 다음 평문 블록에는 대부분의 비트에 오류가 발생

Page 20: 8.  현대  대칭키  암호를 이용한  암호화 기법

20

8.1 현대 블록암호의 사용 – OFB모드Output Feedback(OFB) 모드

모든 암호문 블록의 각 비트는 이전 암호문 비트들과 독립전송 중 오류가 발생해도 다음 블록 비트에 영향주지 않음

Page 21: 8.  현대  대칭키  암호를 이용한  암호화 기법

21

8.1 현대 블록암호의 사용 – OFB모드 ( 계속 )스트림 암호로서의 OFB 모드

CFB 와 같이 블록암호를 기반으로 한 스트림 암호키 스트림은 평문 /암호문과는 독립인 동기식 스트림

암호

Page 22: 8.  현대  대칭키  암호를 이용한  암호화 기법

22

8.1 현대 블록암호의 사용 – OFB모드 ( 계속 )알고리즘

Page 23: 8.  현대  대칭키  암호를 이용한  암호화 기법

23

8.1 현대 블록암호의 사용 – OFB모드 ( 계속 )안전성

블록 단위의 패턴이 유지되지 않음암호문이 임의로 변조된다면 수신자가 복호화하는

평문에 영향을 줌

오류 파급암호문의 한 비트 오류는 단지 대응되는 평문의 한

비트에만 영향

Page 24: 8.  현대  대칭키  암호를 이용한  암호화 기법

24

8.1 현대 블록암호의 사용 – CTR모드Counter(CTR) 모드

암호화 시 피드백이 존재하지 않음키 스트림의 의사난수성은 카운터를 사용함으로써 성취됨n 비트 카운터는 IV 값으로 초기화되고 규칙에 따라 증가블록 크기는 블록 암호 (DES, AES) 의 블록 크기와 동일이전 암호문 블록과 독립인 키 스트림을 생성하지만

피드백을 사용하지 않음서로 독립인 n 비트 암호문 블록을 생성실시간 프로세싱에 사용될 수 없고 완전한 n 비트 블록이

입력되어야 암호화 수행 시작랜덤하게 접근한 파일을 암복호 가능

Page 25: 8.  현대  대칭키  암호를 이용한  암호화 기법

25

8.1 현대 블록암호의 사용 – CTR모드 ( 계속 )

Page 26: 8.  현대  대칭키  암호를 이용한  암호화 기법

26

8.1 현대 블록암호의 사용 – CTR모드 ( 계속 )스트림 암호로서의 Counter (CTR) 모드

Page 27: 8.  현대  대칭키  암호를 이용한  암호화 기법

27

8.1 현대 블록암호의 사용 – CTR모드 ( 계속 )알고리즘

Page 28: 8.  현대  대칭키  암호를 이용한  암호화 기법

28

8.1 현대 블록암호의 사용 – CTR모드 ( 계속 )안전성

OFB 모드의 안전성과 동일

오류 파급암호문의 한 비트 오류는 단지 대응되는 평문의 한

비트에만 영향

Page 29: 8.  현대  대칭키  암호를 이용한  암호화 기법

29

8.1 현대 블록암호의 사용 – CTR모드 ( 계속 )다른 운영 모드와의 비교

Page 30: 8.  현대  대칭키  암호를 이용한  암호화 기법

30

8.2 스트림 암호의 사용개요

다섯 가지 운영 모드가 메시지나 , 큰 단위 (ECB, CBC, CTR 모드 ) 의 파일과 작은 단위 (CFB, OFB 모드 ) 의 데이터를 암호화하기 위하여 이용될 수 있음

그러나 문자나 비트와 같은 작은 단위의 데이터를 암호화하기 위하여 스트림 암호가 필요

스트림 암호는 real-time 프로세싱에서 좀 더 효율성을 갖음

몇몇 스트림 암호는 지난 수십년 동안 다양한 프로토콜에서 사용되기도 하였음

Page 31: 8.  현대  대칭키  암호를 이용한  암호화 기법

31

8.2 스트림 암호의 사용 – RC41984년 Ronald Rivest 에 의해 설계현재 , 다수의 데이터통신 , SSL/TLS, IEEE

802.11 무선 LAN 표준을 포함하는 네트워킹 프로토콜에서 사용

바이트 단위 스트림 암호로서 , 평문 1 바이트 (8 비트 ) 와 키 1 바이트가 XOR 되어 암호문의 1 바이트를 생성

키 스트림을 생성하는 키는 1~256 바이트 사이의 어떤 값이어도 됨

Page 32: 8.  현대  대칭키  암호를 이용한  암호화 기법

32

8.2 스트림 암호의 사용 – RC4 ( 계속 )State

RC4 는 State 개념을 사용State 는 256 바이트 배열로 구성

원소의 인덱스는 0~255 사이에 있는 값이고 ,각 원소의 항목도 0~255 사이의 값을 갖는 1 바이트

Page 33: 8.  현대  대칭키  암호를 이용한  암호화 기법

33

8.2 스트림 암호의 사용 – RC4 ( 계속 )RC4 스트림 암호의 개괄적 암호화 과정

Page 34: 8.  현대  대칭키  암호를 이용한  암호화 기법

34

8.2 스트림 암호의 사용 – RC4 ( 계속 )초기화

2 단계로 수행

키 스트림 생성키 스트림의 키는 한 개씩 생성

Page 35: 8.  현대  대칭키  암호를 이용한  암호화 기법

35

8.2 스트림 암호의 사용 – RC4 ( 계속 )알고리즘

Page 36: 8.  현대  대칭키  암호를 이용한  암호화 기법

36

8.2 스트림 암호의 사용 – RC4 ( 계속 )알고리즘 ( 계속 )

Page 37: 8.  현대  대칭키  암호를 이용한  암호화 기법

37

8.2 스트림 암호의 사용 – RC4 ( 계속 )안전성

비밀키 크기가 적어도 128 비트 (16바이트 ) 라면 RC4 는 안전하다고 여겨짐

다른 세션에 대하여 다른 키를 사용하기를 권장 : Eve가 차분 분석법을 이용하여 암호를 분석하는 것으로부터 보호

Page 38: 8.  현대  대칭키  암호를 이용한  암호화 기법

38

8.2 스트림 암호의 사용 – A5/1개요

비트 스트림을 생성하기 위하여 LFSR 을 이용휴대전화 통신을 위한 네트워크 GSM 에서 사용

GSM 상에서 전화통신은 228 비트 프레임의 수열로서 수행

각 프레임은 4.6 ms 동안 지속

Page 39: 8.  현대  대칭키  암호를 이용한  암호화 기법

39

8.2 스트림 암호의 사용 – A5/1 ( 계속 )키 생성기

각각 길이가 19, 22, 23 개의 셀을 갖는 세 개의 LFSR 을 사용

[ 그림 8.12] A5/1 의 세 개의 LFSR

Page 40: 8.  현대  대칭키  암호를 이용한  암호화 기법

40

8.2 스트림 암호의 사용 – A5/1 ( 계속 )키 생성기 ( 계속 )

초기화 1. 세 개 LFSR 의 모든 셀을 0으로 초기화한다 . 2. 다음 코드에 따라 레지스터의 값을 64 비트 키로 섞는

다 .

3. 22 비트 프레임 넘버를 이용하여 이전 과정을 반복한다

Page 41: 8.  현대  대칭키  암호를 이용한  암호화 기법

41

8.2 스트림 암호의 사용 – A5/1 ( 계속 )키 생성기 ( 계속 )

초기화 ( 계속 ) 100 사이클 동안 전체 생성기를 클럭킹 ( 이동 ) 한다 . 그러나

LFSR 의 클럭은 Majority 함수를 이용한다 .

Majority 함수 만약 , 클럭킹 (clocking) 비트들 중의 2개 이상의 비트가 1이면 ,

Majority(b1, b2, b3) = 1 을 출력 . 예 ) Majority(1, 0, 1) = 1 만약 , 클럭킹 (clocking) 비트들 중의 2개 이상의 비트가 0이면 ,

Majority(b1, b2, b3) = 0 을 출력 . 예 ) Majority(0, 0, 1) = 0

Page 42: 8.  현대  대칭키  암호를 이용한  암호화 기법

42

8.2 스트림 암호의 사용 – A5/1 ( 계속 )키 생성기 ( 계속 )

키 스트림 비트 키 생성기는 매번 1비트 키 스트림을 생성 키가 생성되기 전에 majority 함수가 계산됨 만약 클럭킹 비트가 majority 함수의 출력값과 일치하면

LFSR 이 클럭 ( 이동 ) 됨 , 일치하지 않으면 클럭되지 않음

[ 예제 8.7] 특정 시점에 클럭킹 비트가 1,0,1 이다 . 어떤 LFSR 이 클럭 ( 이동 ) 되는가 ?  majority 함수의 결과값은 Majority(1,0,1)=1 을

만족한다 . LFSR1 과 LFSR3 은 이동되고 LFSR2는 이동되지 않는다 .

Page 43: 8.  현대  대칭키  암호를 이용한  암호화 기법

43

8.2 스트림 암호의 사용 – A5/1 ( 계속 )암호화 /복호화

키 생성기로부터 생성된 비트 스트림은 암호문 프레임을 생성하기 위하여 평문 프레임과 XOR 하기 위한 228 비트 키를 형성하기 위하여 버퍼에 저장

암호화 /복호화는 동시에 한 프레임에 대하여 수행

안전성2000년 Biryukov 등은 작은 기지 평문으로 1분 안에

키를 찾을 수 있는 실시간 공격을 보임 , 그러나 248 의 전처리 필요

2003년 Ekdahl 등은 2~5 분 사이의 평문을 이용하여 몇분 안에 A5/1 을 깰수 있는 공격을 공개

Page 44: 8.  현대  대칭키  암호를 이용한  암호화 기법

44

8.3 기타 - 키관리Alice 와 Bob 이 대칭키 암호를 이용하여 안전하게

통신을 하기 위해서는 그들 사이에 미리 비밀키를 공유해야 함만약 커뮤니티에 n 명의 구성원이 있다면 , 각

구성원은 n-1명과 비밀 통신을 하기 위하여 비밀키가 필요

그러므로 총 n(n − 1)/2 개의 비밀키가 필요예 ) 100 만명 회원이라면 , 5억개의 키 교환 필요

Page 45: 8.  현대  대칭키  암호를 이용한  암호화 기법

45

8.3 기타 - 키생성대칭키 암호는 안전한 키 생성을 위한 효율적인

방법이 필요키는 랜덤하게 선택되어야만 함 : 난수 생성기가 필요


Top Related