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

Slides:



Advertisements
Similar presentations
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
Advertisements

Chapter 8 현대 대칭키 암호를 이용한 암호화 기법
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
5장. 현대 대칭키 암호 소개 경일대학교 사이버보안학과 김현성 교수.
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
제3장 관용암호: 현대적 암호기법
Chapter 3 Symmetric Key Crypto
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
제 4장 블록 암호 모드.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
제 3장 고전 대칭키 암호 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
SSL (Secure Sockets Layers Protocol)
File Depender 중간 발표.
8장. 원격지 시스템 관리하기.
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
Error Detection and Correction
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
10 장 데이터 링크 제어(Data Link Control)
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
TCP/IP Socket Programming…
11장. 1차원 배열.
제4장 제어 시스템의 성능.
자바 암호 프로그래밍 Java Cryptography Programming
인터넷응용프로그래밍 JavaScript(Intro).
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
24장. 파일 입출력.
DK-128 FND 실습 아이티즌 기술연구소
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6 레지스터와 카운터.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
6. 레지스터와 카운터.
20 장 네트워킹과 인터네트워킹 장치 20.1 리피터(Repeaters) 20.2 브리지(Bridges)
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
CHAP 21. 전화, SMS, 주소록.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
AT MEGA 128 기초와 응용 I 기본적인 구조.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
논리회로 설계 및 실험 4주차.
9 장 오류 검출 및 오류 정정 9.1 오류 종류 9.2 검출 9.3 오류 정정 9.4 요약.
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
제 4 장 Record.
암호 시스템 (Crypto system) 신효철
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
CHAP 15. 데이터 스토리지.
 6장. SQL 쿼리.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
암호-3장. 대칭키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
7 생성자 함수.
6 객체.
ARP.
Presentation transcript:

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

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

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

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

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

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이 커지면 코드북을 사전 수집하고 유지하는 것이 매우 어려워진다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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