전자상거래 보안 (암호학과 네트워크보안) 207.4.12 Chul Ho Rhee richman3@naver.com.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
Chapter | 4 암호화 기술 Ⅱ암호화. ❖ 암호  통신문의 내용을 제 3자가 판 독할 수 없는 글자 · 숫 자 · 부호 등으로 변경 시킨 것 2/16 암호? 철수 영희 Plaintext attack attack ? ? Cryptography 개방통신로 모레 3.
8. 현대 대칭키 암호를 이용한 암호화 기법 경일대학교 사이버보안학과 김현성 교수.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
제8장 이산 푸리에 변환.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
Chapter 3 Symmetric Key Crypto
제 9 장 구조체와 공용체.
제4장 조합논리회로 내용 4.1 조합논리회로 설계 과정 4.2 산술회로 : 가산기(adder)/ 감산기(subtractor)
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
Chapter 04 C 연산자의 이해.
대칭알고리즘 AES ▪ 발표자 : 최명현.
File Depender 중간 발표.
공개키 암호화 프로그래밍 전자상거래보안.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
2009년 3월 30일 (5주차) 유 승 상용 관용 암호 방식 2009년 3월 30일 (5주차) 유 승
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
2장. 데이터의 표현 Lecture #2.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
Tail-recursive Function, High-order Function
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
Ⅱ. 정보의 표현 1. 진수 변환 2. 2진수의 연산 3. 실수의 표현 ■ 단원 학습 정리 1. 10진수와 2진수
순천향대학교 정보보호연구회 민성의 AES 순천향대학교 정보보호연구회 민성의
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
전자상거래 보안 (암호학과 네트워크보안) ) Chul Ho Rhee
JA A V W. 03.
프로그래밍 개요
Lesson 4. 수식과 연산자.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
AES(Advanced Encryption Standard)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
6 레지스터와 카운터.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제4강 처리장치 1.
1. 2진 시스템.
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
정보의 표현 정보 체계_컴퓨터 내부의 정보 표현과 정보 처리
계산기.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
데이터 동적 할당 Collection class.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
AT MEGA 128 기초와 응용 I 기본적인 구조.
제11강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
9 장 오류 검출 및 오류 정정 9.1 오류 종류 9.2 검출 9.3 오류 정정 9.4 요약.
10장 오류 검출과 오류 교정 (Error Detection and Correction)
Numerical Analysis Programming using NRs
제 4 장 Record.
수치해석 ch3 환경공학과 김지숙.
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
 6장. SQL 쿼리.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
암호-3장. 대칭키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
7 생성자 함수.
Presentation transcript:

전자상거래 보안 (암호학과 네트워크보안) 207.4.12 Chul Ho Rhee richman3@naver.com

AES (Advanced Encryption Standard) 2

AES 암호 알고리즘 AES의 개요 AES 는 2001년 미국 국립기술 표준원(NIST) 에서 공표한 대칭 키 암호 알고리즘이다. AES는 128 비트 평문을 128 비트 암호문으로 만드는 알고리즘이다. AES는 128, 192, 256 비트의 암호 키를 사용하고 키 크기에 따라 각각 10, 12, 14 라운드를 갖는 3 가지 버전이 있다. 암호 키의 크기가 달라도 라운드 키는 모두 128 비트이다. 라운드 키 수는 라운드 수보다 하나 더 많다.  라운드 키의 수 = Nr + 1 ( Nr : 라운드 수) 3

AES 암호 알고리즘 AES의 개념도 4

AES 암호 알고리즘 라운드 함수 AES는 마지막 라운드를 제외한 각 라운드에서 4개의 변환을 사용한다  SubBytes  ShiftRows  MixColumns  AddRoundKey 라운드 함수에 적용되기 전에 AddRoundKey 변환을 적용한다 마지막 라운드에서는 3개의 변환만 사용한다(MixColumns 제외) 5

AES 암호 알고리즘 라운드 함수 AES 라운드의 각 변환은 하나의 스테이트를 입력 으로 받아서 다른 스테이트 를 생성한다 6

AES 암호 알고리즘 데이터 단위 바이트(Byte) 워드(Word)  4 바이트 블록(Block)  16 바이트  16 바이트 스테이트(State)  16 바이트  4 × 4 행렬  Src (r: 행, c: 열) 7

AES 암호 알고리즘 라운드 함수 8

AES 암호 라운드의 변환 바이트 치환 변환(Substitute Bytes Trans.) SubBytes는 AES의 암호화 과정에서 사용되는 치환함수이다. 각 바이트를 4 비트씩 2개의 16진수로 계산하여 왼쪽 4비트를 S-박스 의 행을, 오른쪽 4비트를 열을 지정하여 테이블을 읽는다. 16번의 변환이 일어난다 9

AES 암호 라운드의 변환 바이트 치환 변환(SubBytes) 두 개의 바이트 (5A)16 과 (5B)16은 1개 비트만 다르지만, SubBytes 변환으로 (BE)16 과 (39)16 으로 변환되어 4개 비트가 달라진다 10

AES 암호 라운드의 변환 바이트 치환 변환(SubBytes) 평문의 입력 블럭을 SubBytes 변환으로 처리한 후, InvSubBytes 를 통해서 원래의 값으로 복원할 수 있다. 17 F0 11

AES 암호 라운드의 변환 열 혼합변환(MixColumns) 열 단위로 4개 바이트에 대하여 상수 정방행렬과 연산하여 각 바이트내의 비트들을 서로 섞어 새로운 바이트를 생성한다. 상수행렬 12

AES 암호 라운드의 변환 열 혼합변환(MixColumns) 다음은 열 단위로 4개 바이트에 대하여 16진수 상수 정방행렬과 연산하는 방법이다  16진수 곱셈을 의미한다 13

AES 암호 라운드의 변환 다항식 표현 8-비트 10011001 값을 다항식으로 다음과 같이 표현할 수 있다 14

AES 암호 라운드의 변환 다항식 표현 다항식 x + x + x 을 8-비트 워드로 만들어 보자 8-비트 워드로 표현되는 다항식의 최고 차수는 7 이고, 생략된 항들을 채워 넣는다. 이것은 8-bit 워드인 0010 0110 를 나타내는 다항식이 된다 5 2 15

AES 암호 라운드의 변환 다항식 덧셈 AES 에서의 산술연산은 갈로아체 GF(2)와 GF(2 ) 상에서 이루어 진다  즉, mod 2 연산으로 수행된다. 다항식의 지수들간의 연산은 GF(2 ) 상에서 이루어진다  GF(2 ) 상에서 다항식은 다음과 같이 나타낸다.  GF(2 ) 상에서 (x + x + x + x + 1) 를 기약다항식으로 사용한다. AES 에서 다항식간의 곱셈연산에서 차수가 8 차 이상이 나오면 기약다항식으로 나눈 후, 그 나머지를 사용한다 8 n 8 8 8 4 3 16

AES 암호 라운드의 변환 다항식 덧셈 GF(2), GF(2 ) 상에서 (x + x + x) ⊕ (x + x + 1) 를 계산해보자. 여기서 사용한 연산 기호 ⊕ 는 다항식의 덧셈을 의미한다. 덧셈은 exclusive-or (XOR)으로 연산한다. 계수에 대한 연산 결과는 유한체 GF(2) 의 원소 집합 {0,1} 중의 하나가 된다. ☞ mod 2 연산이 수행된다. 8 5 2 3 2 17

AES 암호 라운드의 변환 다항식 곱셈 기약다항식 (x + x + x + x + 1) 을 갖는 GF(2 ) 에서 (x + x + x) ⊗ (x + x + x + x + x) 를 계산해 보자. 여기서 사용한 연산기호 ⊗ 은 두 다항식의 곱셈을 의미한다. 다항식의 곱셈은 첫째 다항식의 각 항과 두 번째 각 항의 곱셈의 합이다 같은 차수의 항은 삭제한다 ☞ 덧셈은 exclusive-or (XOR) 연산결과가 8차식 이상인 경우 기약다항식으로 나누어 나머지를 결과 값으로 한다 8 4 3 8 5 2 7 4 3 2 18

AES 암호 라운드의 변환 다항식 곱셈 곱셈결과를 기약다항식으로 나누는 과정은 일반 나눗셈과 같지만 뺄셈을 할 때 덧셈으로 처리한다.  계수에 대한 연산 결과는 유한체 GF(2) 의 원소 집합 {0,1} 중의 하나가 되어야 하므로, 계수의 연산결과를 mod 2 연산으로 처리 함  GF(2) 상에서 덧셈과 뺄셈은 동일하다.  1 + 1= 1−1 = 0; 1 + 0 = 1−0 = 1 19

AES 암호 라운드의 변환 다항식 곱셈 (x + x + x) ⊗ (x + x + x + x + x) 의 계산을 컴퓨터로 구현할 때는 x ⊗ P2 연산을 (x ⊗ (x ⊗ P2 ) 와 같이 나누어 연산하는 게 효율적이다. x, x 은 곱셈 연산한 후 기약다항식으로 나누어 나머지만 취한다. 5 2 7 4 3 2 2 1 7 20

AES 암호 라운드의 변환 열 혼합변환 연산처리법 r0 =(02 • d4) + (03 • bf) + (01 • 5d) + (01 • 30) 02=0010 , d4=11010100 이므로 02 = x 이고 d4 = x + x + x + x (02 • d4) = ( x ⊗ (x + x + x + x ) = x + x + x + x (03 • bf) = (x + 1) ⊗ (x + x + x + x + x + x +1 ) = x + x + x + x + x + x + x + x + x + x + x + x + x + 1= x + x +x + 1 (02 • d4) + (03 • bf) = x + x + x + 1 7 6 4 2 8 5 3 21

AES 암호 라운드의 변환 열 혼합변환 연산처리법 (02•d4)+(03•bf) = x + x + x + 1 r0 =(02•d4)+(03•bf) + (01•5d)+(01•30) (02•d4)+(03•bf) = x + x + x + 1 (01•5d)+(01•30)= x + x + x + x + 1 + x + x = x + x + x + x +1 r0 = x ☞ 0000 0100 r0 = 04 (16진수) 6 5 3 6 4 3 2 5 4 6 5 3 2 2 22

AES 암호 라운드의 변환 라운드 키 더하기 변환(AddRoundKey) 각 스테이트 열 행렬에 라운드 키의 대응하는 워드를 논리합 연산(⊕) 을 한다. ⊕ 23

AES 암호 라운드의 변환 라운드 키 더하기 변환(AddRoundKey) 각 스테이트 열 행렬에 라운드 키의 대응하는 워드를 논리합 연산(⊕) 을 한다. 47 40 A3 4C 37 D4 70 9F 94 E4 3A 42 ED A5 A6 BC AC 19 28 57 77 FA D1 5C 66 DC 29 00 F3 21 41 6A EB 59 8B 1B 40 2E A1 C3 F2 38 13 42 1E 84 E7 D6 ⊕ = State Round Key Add Round Key 결과 24

AES 암호의 키 확장(Expansion) 25

AES 암호의 키 확장 AES-128의 키 확장 암호 키는 k0 ~ k15 까지 구성된다. 처음 W0, W1, W2, W3 등 4 개의 워드는 암호 키로부터 생성된다 W0 는 k0 에서 k3 까지 구성되고, W1 은 그 다음 4 바이트로 구성된다. 나머지 워드(Wi , 4 ≦Wi ≦ 43) 들은 다음과 같이 계산한다.  i mod 4 ≠ 0 일 경우, W i = W i-1 ⊕ W i-4 로 계산한다  i mod 4 = 0 일 경우, W i = t i ⊕ W i -4 로 계산한다  t i = SubWord( RotWord (W i-1 )) ⊕ Rcon i/4 26

AES 암호의 키 확장 27

AES 암호의 키 확장 AES-128의 키 확장 t i = SubWord( RotWord (W i-1 )) ⊕ Rcon i/4  4개의 바이트를 한 바이트씩 왼쪽으로 이동시킨다 SubWord  SubBytes 와 유사하게 S-박스 이용하여 치환한다 Rcon(라운드 상수)  각 라운드 상수 RCon은 4 바이트이다 28

AES 암호의 키 확장 AES-128의 키 확장 라운드 상수 Rcon (4바이트)  오른쪽 3 바이트는 모두 0 이다 29

AES 암호의 키 확장 AES-128의 키 확장 16 바이트 암호키(24 75 A2 B3 34 75 56 88 31 E2 12 00 13 AA 54 87)16 를 이용하여 t4 의 값을 구해보자 t i = SubWord( RotWord (W i-1 )) ⊕ Rcon i/4 RotWord(13 AA 54 87) = AA 54 87 13 ☞ SubWord(AA 54 87 13) = AC 20 17 7D ☞ t4 = AC20177D ⊕ RCon 1 = AC20177D⊕(01000000)16 = AD20177D k0 k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 k11 k12 k13 k14 k15 2 4 7 5 A 2 B 3 3 4 7 5 5 6 8 8 3 1 E 2 1 2 1 3 A 5 4 8 7 w0 w1 w2 w3 1 바이트 이동 S-Box 처리결과 1 1 1 1 ⊕ 1 1 0 1 0 1 1 0 1 30

AES 암호의 키 확장 AES-128의 키 확장 31

AES 의 암호 및 복호 암호 및 복호 처리 32

블록암호 운용모드 33

강의목차 블록암호 운영모드(긴 메시지 암호기법) ECB(Electronic Code Book) CBC(Cipher Block Chaining) CFB(Cipher Feedback) OFB(Ouput Feedback) CTR(Counter) 스트림 암호 RC4 34 34

블록암호 운영모드 현대 블록암호의 사용 현대 블록암호인 DES와 AES는 고정길이(8바이트, 16바이트) 의 평문 블록을 암호 및 복호 한다. 그러나 실제 운용환경에서는 평문의 길이가 무척 길고 가변적이다. 이에 임의의 길이의 평문을 암호화하는 방법인 운영모드가 필요하다 35

블록암호 운영모드 ECB(Electronic Codebook) 방식 운영 모드 중에서 가장 간단한 모드이다. 평문 크기가 블록 크기의 배수가 아니면 마지막 블록에 패딩을 한다 긴 평문을 64비트씩 n개의 블록(m1, m2, m3,…, mn)으로 나눈다 . 각 블록별로 동일한 키에 의해 독립적으로 암호화가 이루어진다 • 암호화 : C = E K (m i ) i = 1, 2, 3, …. n • 복호화 : m = D K (c i ) i = 1, 2, 3,…. n 동일한 평문 블록은 동일한 암호문으로 암호된다. 36

블록암호 운영모드 ECB 방식의 처리구조도 37

블록암호 운영모드 ECB 방식의 안전성 각 블록이 독립적으로 암호 및 복호가 이루어지므로 암호 및 복호 처리시간이 빠르다 • 병렬처리가 가능 블록간의 독립성으로 블록단위의 패턴이 유지된다. 평문에서 같은 값을 갖는 블록은 대응하는 암호문 블록도 동일하다 •암호문에서 1, 5, 10번째 블록 값이 동일하다면, 평문의 1, 5, 10 번째 블록도 같다. 38

블록암호 운영모드 ECB 방식의 안전성 블록간의 독립성으로 Eve(해커)는 키를 알지 못하더라도 특정암호 블록을 변조할 수 있다. • Eve가 평문에서 8번 째 블록에 항상 특정 정보(예, 급여정보)를 포함 하고 있다는 사실을 안다면, 이전에 가로챈 암호문의 8번째 블록으로 이 블록을 대체할 수 있다. 임의의 한 블록에 에러가 발생하는 경우 다른 블록으로 에러파급 (Error Propagation)이 일어 나지 않는다. 39

블록암호 운영모드 ECB 방식의 응용 데이터 베이스의 레코드를 암호하거나 복호하는 분야에 유용하다 레코드를 암호하고 복호하는데 다른 레코드와 처리순서에 관계없이 독립적으로 처리할 수 있기 때문 40

CBC(Cipher Block Chaining) 방식 블록암호 운영모드 CBC(Cipher Block Chaining) 방식 CBC 모드에서 각각의 평문 블록은 암호화되기 전에 이전 블록의 암호문과 XOR된다. 암호화된 블록은 전송된 후, 다음 블록의 암호화에 사용되기 위해서 메모리에 저장되어야 한다. 첫 번째 블록을 암호화하기 위해 초기벡터(IV) 값이 필요하다. 초기벡터(IV) 값은 송신자와 수신자가 사전에 공유한다. • 암호화 : C i = E k (m i ⊕ C i -1), i = 1, 2, 3, 4,… n • 복호화 : m i = D k (c i ) ⊕ C i -1 ; IV (= C0 ) 41

블록암호 운영모드 CBC 방식의 처리구조도 42

블록암호 운영모드 CBC 방식의 안전성 평문의 동일한 블록들은 암호문에서 서로 다른 블록으로 암호화 된다 ☞ 암호 시 전 단계의 암호블록을 이용하기 때문 CBC 모드에서 암호문 블록 C j 가 전송도중 한 비트가 오류가 발생하면 복호시 어떤 영향을 미칠까? • 복호 과정에서 평문 블록 P j 의 대부분 블록에서 오류가 발생한다. • 평문 블록 Pj+1 에서는 C j 블록의 같은 위치에서 한 비트 오류가 발생 한다 • Pj+2 부터 PN 까지의 평문 블록은 에러에 아무런 영향을 받지 않는다. 43

블록암호 운영모드 CBC 방식의 응용 암호화는 직렬처리만 가능하고, 복호화는 병렬처리가 가능하다. 44

Thanks Chul Ho Rhee richman3@naver.com 45