Presentation is loading. Please wait.

Presentation is loading. Please wait.

8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수.

Similar presentations


Presentation on theme: "8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수."— Presentation transcript:

1 8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수

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

3 8.1 현대 블록암호의 사용 블록 암호 운영 모드 블록 단위로 데이터를 암호 또는 복호화
예) DES : 64 비트, AES : 128 비트 등 운영 모드 실제 응용 환경에서 임의의 길이의 데이터를 블록 단위로 암호화하는 방법인 운영모드가 필요

4 8.1 현대 블록암호의 사용 – ECB 모드 Electronic Codebook (ECB) 모드 가장 간단한 모드
평문을 N개의 n비트 블록으로 분할 평문 크기가 블록 크기의 배수가 아니면 패딩(padding) 각 블록을 독립된 것으로 하여 개별적으로 암호화하고 복호화하는 방식

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

6 8.1 현대 블록암호의 사용 – ECB 모드(계속) [예제 8.1] Pi = DK(Ci) = DK(EK(Pi)) = Pi
Bob은 Alice가 암호화한 평문 블록을 정확하게 복구할 수 있다. 왜냐하면 암호화와 복호화는 서로 역관계에 있기 때문이다. Pi = DK(Ci) = DK(EK(Pi)) = Pi [예제 8.2] ECB 모드는 두 개의 열에 2n개의 성분을 갖는 2k 개의 코드북을 사전 수집할 수 있으므로 Electronic codebook으로 불린다. 각각의 성분은 평문과 그에 대응하는 암호문을 목록화 할 수 있다. 하지만, k와 n이 커지면 코드북을 사전 수집하고 유지하는 것이 매우 어려워진다.

7 8.1 현대 블록암호의 사용 – ECB 모드(계속) 안전성 문제 [예제 8.3] 동일한 블록은 동일한 암호문을 생성
Eve는 블록 간의 독립성을 이용해 특정 암호문을 변조 가능 [예제 8.3] Eve가 회사에서 한 달에 단지 몇 시간만 일을 하고 그녀의 급여가 매우 적다고 가정하자. 그리고 Eve는 회사가 각 고용자의 계좌에 지급해야 할 금액에 대한 정보가 17번째 블록에 저장된다는 사실을 알고 있다고 하자. Eve는 월말에 회사가 은행에 보내는 암호문을 가로채서 풀타임 일을 한 동료의 급여 정보를 갖는 블록을 복사하여 자신의 급여 정보를 갖는 블록과 대체할 수 있다. 매달 Eve는 자신이 일한 대가보다 훨씬 더 많은 급여를 받을 수 있다.

8 8.1 현대 블록암호의 사용 – ECB 모드(계속) 오류 파급 (Error Propagation) 알고리즘
전송 도중에 발생하는 단일 비트의 에러는 대응되는 블록 내의 비트들에만 에러를 발생시킴 알고리즘

9 8.1 현대 블록암호의 사용 – ECB 모드(계속) 응용
안전하지 않은 채널을 통하여 두 개 이상의 블록을 갖는 메시지를 암호화하여 전송하는 수단으로 적당하지 않음 메시지 크기가 한 블록 이하라면 안전성 및 오류 파급은 문제가 되지 않음 데이터베이스에 암호화된 레코드를 저장하거나 암호화된 레코드를 복호화할 때는 암호문 블록의 독립성이 유용 데이터베이스에 랜덤하게 접근 가능 다른 레코드에 영향을 주지 않고 중간 레코드 수정 가능 큰 데이터베이스를 암호화할 때 병렬적으로 처리 가능

10 8.1 현대 블록암호의 사용 – CBC모드 Cipher Block Chaining(CBC) 모드
각각의 평문 블록은 암호화되기 전에 이전 블록의 암호문과 XOR됨 암호문은 다음 블록을 암호화할 때 사용되기 위해 메모리에 저장되어야 함 첫 블록을 암호화 할 때는 초기벡터(IV)를 사용

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

12 8.1 현대 블록암호의 사용 – CBC모드(계속) [예제 8.4] 초기벡터 (Initialization Vector : IV)
Alice가 암호화한 평문 블록을 Bob은 정확하게 복구할 수 있다. 왜냐하면 암호화와 복호화 과정은 서로 역관계에 있기 때문이다. 초기벡터 (Initialization Vector : IV) 송신자와 수신자간에 공유되어야 하지만 반드시 비밀일 필요는 없음 변조되어서는 안됨 효과적인 방법: 송신자가 난수 선택 후 안전하게 전송

13 8.1 현대 블록암호의 사용 – CBC모드(계속) 오류 파급 (Error Propagation) 안전성 문제
암호문 블록 Cj가 전송 도중 한 비트 오류가 발생하였다고 가정하자. 그러면 복호화 과정에서는 평문 블록 Pj 에서는 대부분의 비트에서 오류가 발생되고, 평문 블록 Pj+1 에서는 Cj 의 오류 비트와 같은 위치에서 한 비트 오류가 발생 Pj+2부터 PN 까지의 평문 블록은 이러한 한 비트 에러에 영향 받지 않음. 그러므로 암호문의 한 비트 에러는 자기 복구가 이루어짐 안전성 문제 한 메시지 내에서 동일한 평문 블록들은 다른 암호문 블록으로 암호화되지만 다른 두 메시지 내의 동일한 평문 블록에서는 IV가 같다면 동일 Eve는 암호문의 끝에 특정 암호문 블록을 덧붙일 수 있음

14 8.1 현대 블록암호의 사용 – CBC모드(계속) 알고리즘 응용 블록간의 연관성 때문에 병렬처리 불가능
랜덤하게 선택된 파일 레코드(DB)를 암복호할 때 사용 불가능

15 8.1 현대 블록암호의 사용 – CFB모드 Cipher Feedback (CFB) 모드
블록의 크기가 r(≤n) 단위로 암복호화 가능 평문을 직접 블록암호를 사용하여 암호화하지 않음

16 8.1 현대 블록암호의 사용 – CFB모드(계속) 평문 블록과 암호문 블록 사이의 관계
SelectLeftr : 입력값의 왼쪽 최상위 r 비트를 출력하는 함수 ShiftLeftr : 입력값을 왼쪽으로 r 비트 이동시키는 함수 (왼쪽 최상위 r비트는 소실됨)

17 8.1 현대 블록암호의 사용 – CFB모드(계속) 스트림 암호로서의 CFB 모드
블록 암호를 위한 운영 모드이지만 그 결과는 스트림 암호와 동일 키 스트림이 암호문에 의존하는 비동기식 스트림 암호

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

19 8.1 현대 블록암호의 사용 – CFB모드(계속) 안전성 오류파급 블록 단위의 패턴이 유지되지 않음
Alice는 메시지를 전송할 때마다 다른 IV를 사용해야 함 Eve는 암호문의 끝에 특정 암호문 블록을 덧붙일 수 있음 오류파급 전송 도중 암호문에 한 비트 오류가 발생하면 복호 시에 평문의 같은 비트 위치에 한 비트 오류 발생하지만 다음 평문 블록에는 대부분의 비트에 오류가 발생

20 8.1 현대 블록암호의 사용 – OFB모드 Output Feedback(OFB) 모드
모든 암호문 블록의 각 비트는 이전 암호문 비트들과 독립 전송 중 오류가 발생해도 다음 블록 비트에 영향주지 않음

21 8.1 현대 블록암호의 사용 – OFB모드(계속) 스트림 암호로서의 OFB 모드
CFB와 같이 블록암호를 기반으로 한 스트림 암호 키 스트림은 평문/암호문과는 독립인 동기식 스트림 암호

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

23 8.1 현대 블록암호의 사용 – OFB모드(계속) 안전성 오류 파급 블록 단위의 패턴이 유지되지 않음
암호문이 임의로 변조된다면 수신자가 복호화하는 평문에 영향을 줌 오류 파급 암호문의 한 비트 오류는 단지 대응되는 평문의 한 비트에만 영향

24 8.1 현대 블록암호의 사용 – CTR모드 Counter(CTR) 모드 암호화 시 피드백이 존재하지 않음
키 스트림의 의사난수성은 카운터를 사용함으로써 성취됨 n비트 카운터는 IV 값으로 초기화되고 규칙에 따라 증가 블록 크기는 블록 암호(DES, AES)의 블록 크기와 동일 이전 암호문 블록과 독립인 키 스트림을 생성하지만 피드백을 사용하지 않음 서로 독립인 n 비트 암호문 블록을 생성 실시간 프로세싱에 사용될 수 없고 완전한 n 비트 블록이 입력되어야 암호화 수행 시작 랜덤하게 접근한 파일을 암복호 가능

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

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

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

28 8.1 현대 블록암호의 사용 – CTR모드(계속) 안전성 오류 파급 OFB 모드의 안전성과 동일
암호문의 한 비트 오류는 단지 대응되는 평문의 한 비트에만 영향

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

30 8.2 스트림 암호의 사용 개요 다섯 가지 운영 모드가 메시지나, 큰 단위(ECB, CBC, CTR 모드)의 파일과 작은 단위(CFB, OFB 모드)의 데이터를 암호화하기 위하여 이용될 수 있음 그러나 문자나 비트와 같은 작은 단위의 데이터를 암호화하기 위하여 스트림 암호가 필요 스트림 암호는 real-time 프로세싱에서 좀 더 효율성을 갖음 몇몇 스트림 암호는 지난 수십년 동안 다양한 프로토콜에서 사용되기도 하였음

31 8.2 스트림 암호의 사용 – RC4 1984년 Ronald Rivest에 의해 설계
현재, 다수의 데이터통신, SSL/TLS, IEEE 무선 LAN 표준을 포함하는 네트워킹 프로토콜에서 사용 바이트 단위 스트림 암호로서, 평문 1 바이트(8 비트)와 키 1 바이트가 XOR되어 암호문의 1 바이트를 생성 키 스트림을 생성하는 키는 1~256 바이트 사이의 어떤 값이어도 됨

32 8.2 스트림 암호의 사용 – RC4 (계속) State RC4는 State 개념을 사용
원소의 인덱스는 0~255 사이에 있는 값이고, 각 원소의 항목도 0~255 사이의 값을 갖는 1바이트

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

34 8.2 스트림 암호의 사용 – RC4 (계속) 초기화 2 단계로 수행 키 스트림 생성 키 스트림의 키는 한 개씩 생성

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

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

37 8.2 스트림 암호의 사용 – RC4 (계속) 안전성 비밀키 크기가 적어도 128비트(16바이트)라면 RC4는 안전하다고 여겨짐 다른 세션에 대하여 다른 키를 사용하기를 권장 : Eve가 차분 분석법을 이용하여 암호를 분석하는 것으로부터 보호

38 8.2 스트림 암호의 사용 – A5/1 개요 비트 스트림을 생성하기 위하여 LFSR을 이용
휴대전화 통신을 위한 네트워크 GSM에서 사용 GSM 상에서 전화통신은 228비트 프레임의 수열로서 수행 각 프레임은 4.6 ms 동안 지속

39 8.2 스트림 암호의 사용 – A5/1 (계속) 키 생성기 각각 길이가 19, 22, 23개의 셀을 갖는 세 개의 LFSR을 사용 [그림 8.12] A5/1의 세 개의 LFSR

40 8.2 스트림 암호의 사용 – A5/1 (계속) 키 생성기(계속) 초기화 1. 세 개 LFSR의 모든 셀을 0으로 초기화한다.
2. 다음 코드에 따라 레지스터의 값을 64 비트 키로 섞는다. 3. 22 비트 프레임 넘버를 이용하여 이전 과정을 반복한다

41 8.2 스트림 암호의 사용 – A5/1 (계속) 키 생성기(계속) 초기화(계속) Majority 함수
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

42 8.2 스트림 암호의 사용 – A5/1 (계속) 키 생성기(계속)
키 스트림 비트 키 생성기는 매번 1비트 키 스트림을 생성 키가 생성되기 전에 majority 함수가 계산됨 만약 클럭킹 비트가 majority 함수의 출력값과 일치하면 LFSR이 클럭(이동)됨, 일치하지 않으면 클럭되지 않음 [예제 8.7] 특정 시점에 클럭킹 비트가 1,0,1이다. 어떤 LFSR이 클럭(이동)되는가?  majority 함수의 결과값은 Majority(1,0,1)=1을 만족한다. LFSR1과 LFSR3은 이동되고 LFSR2는 이동되지 않는다.

43 8.2 스트림 암호의 사용 – A5/1 (계속) 암호화/복호화 안전성
키 생성기로부터 생성된 비트 스트림은 암호문 프레임을 생성하기 위하여 평문 프레임과 XOR 하기 위한 228 비트 키를 형성하기 위하여 버퍼에 저장 암호화/복호화는 동시에 한 프레임에 대하여 수행 안전성 2000년 Biryukov 등은 작은 기지 평문으로 1분 안에 키를 찾을 수 있는 실시간 공격을 보임, 그러나 248의 전처리 필요 2003년 Ekdahl 등은 2~5분 사이의 평문을 이용하여 몇분 안에 A5/1을 깰수 있는 공격을 공개

44 8.3 기타 - 키관리 Alice와 Bob이 대칭키 암호를 이용하여 안전하게 통신을 하기 위해서는 그들 사이에 미리 비밀키를 공유해야 함 만약 커뮤니티에 n명의 구성원이 있다면, 각 구성원은 n-1명과 비밀 통신을 하기 위하여 비밀키가 필요 그러므로 총 n(n − 1)/2 개의 비밀키가 필요 예) 100만명 회원이라면, 5억개의 키 교환 필요

45 8.3 기타 - 키생성 대칭키 암호는 안전한 키 생성을 위한 효율적인 방법이 필요
키는 랜덤하게 선택되어야만 함 : 난수 생성기가 필요


Download ppt "8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수."

Similar presentations


Ads by Google