AES(Advanced Encryption Standard)

Slides:



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

학자금 신청방법 대학현장협업부.  신청서 작성 시 공인인증서가 필요합니다 공인인증서란 ? - 전자상거래를 할 때 신원을 확인하고, 문서의 위조와 변조, 거래 사실의 부인 방지 등을 목적으로 공인인증기관 (CA) 이 발행하는 전자적 정보로서, 일종의 사이버 거래용 인감증명서이다.
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Chapter | 4 암호화 기술 Ⅱ암호화. ❖ 암호  통신문의 내용을 제 3자가 판 독할 수 없는 글자 · 숫 자 · 부호 등으로 변경 시킨 것 2/16 암호? 철수 영희 Plaintext attack attack ? ? Cryptography 개방통신로 모레 3.
수치해석 (Numerical Analysis) 보간법 (Interpolation). Page 2 보간법 (Interpolation) In this chapter … 보간법이란 ? 통계적 혹은 실험적으로 구해진 데이터들 (x i ) 로부터, 주어진 데이터를 만족하는 근사.
1 Chap 3. 관용 암호 방식 현대적 기법. 2
순천향대학교 정보보호연구회 김현민 DES (Data Encryption Standard)
7.1 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 7 Advanced Encryption Standard (AES)
Chapter 8 현대 대칭키 암호를 이용한 암호화 기법
Chapter 7 ARP and RARP.
Chapter 4 암호 수학 제 2부 대수구조 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
박 종 혁 3장. 블록 암호 및 DES 박 종 혁
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
Chapter 3 Symmetric Key Crypto
자바 암호 프로그래밍 Java Cryptography Programming
제 5 장 암호학의 수학기초 Network Security Lab Mun Hyung Jin.
DES (Data Encryption Standard)
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
제 4장 블록 암호 모드.
Chapter 3 Symmetric Key Crypto
수학 I 2. 방정식과 부등식.
Chapter 3 Symmetric Key Crypto
대칭알고리즘 AES ▪ 발표자 : 최명현.
교과목 소개 정보보호.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
File Depender 중간 발표.
공개키 암호화 프로그래밍 전자상거래보안.
암호에 대한 이해 정보 보안 개론 7장.
대칭알고리즘 AES ▪ 발표자 : 최명현.
대칭알고리즘 AES.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
2009년 3월 30일 (5주차) 유 승 상용 관용 암호 방식 2009년 3월 30일 (5주차) 유 승
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
DES를 이용한 GPS 위치 정보 암호화 송신 2조 김민수 문형진 안인석 조우람.
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
Modulo 연산.
CAS (Computer Algebra System) 소개
Chapter 6 Contemporary Symmetric Ciphers
행렬 기본 개념 행렬의 연산 여러가지 행렬 행렬식 역행렬 연립 일차 방정식 부울행렬.
순천향대학교 정보보호연구회 민성의 AES 순천향대학교 정보보호연구회 민성의
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
전자상거래 보안 (암호학과 네트워크보안) ) Chul Ho Rhee
JA A V W. 03.
디 지 털 공 학 한국폴리텍V대학.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
제 3 강.
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
행렬의 개요 행렬은 수를 원소로 지니는 다차원 배열이다. mn (“m by n”) 행렬은 m개의 행과 n개의 열을 갖는다.
16 장 네트워크 보안 : 방화벽과 VPN 16.1 개요 16.2 기밀성 16.3 전자 서명 16.4 인터넷 보안
1. 2진 시스템.
Fitting / Matrix / Excel
Electronic cart Electronic Cart Electronic Cart Electronic Catr
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
계산기.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
CAS (Computer Algebra System) 소개
자동제어공학 3. 물리적 시스템의 상태방정식 정 우 용.
에어 PHP 입문.
오라클 11g 보안.
점화와 응용 (Recurrence and Its Applications)
9 장 오류 검출 및 오류 정정 9.1 오류 종류 9.2 검출 9.3 오류 정정 9.4 요약.
이산수학(Discrete Mathematics)
수치해석 ch3 환경공학과 김지숙.
암호-3장. 대칭키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
C++ Espresso 제15장 STL 알고리즘.
우리나라에서 10대로 살아가기 엘리트조 오정희 / 송지선 / 손시하 / 박주현 / 김소현.
Presentation transcript:

AES(Advanced Encryption Standard)

AES(Advanced Encryption Standard) NIST에서 미국 연방정부의 공문서 등을 안전하게 저장하기 위해 전세계를 상대로 공모함 벨기에에서 제안한 Rijndael 알고리즘을 선정함 핵심함수는 수학적 대상인 유한체(finite field)에 기반함 키 길이에 따른 분류 AES-128 : 128비트의 Cipher Key 사용 AES-192 : 192비트의 Cipher Key 사용 AES-256 : 256비트의 Cipher Key 사용

AES Nb Number of columns (32-bit words) comprising the State. For this standard, Nb = 4. Nk Number of 32-bit words comprising the Cipher Key. For this standard, Nk = 4, 6, or 8. Nr Number of rounds Nk 와 고정값인 Nb에 의해 결정됨 For this standard, Nr = 10, 12, or 14. Byte의 덧셈 및 곱셈  Exclusive-OR operation · Finite field multiplication Word의 곱셈  Multiplication of two polynomials (each with degree < 4) modulo x4 + 1

AES Byte와 bits의 배열 Input bytes State array Output bytes in0 in4 in8 Input bit sequence 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … Byte number in0 in1 Bit Numbers in byte in0 in4 in8 in12 in1 in5 in9 in13 in2 in6 in10 in14 in3 in7 in11 in15 s0,0 s0,1 s0,2 s0,3 s1,0 s1,1 s1,2 s1,3 s2,0 s2,1 s2,2 s2,3 s3,0 s3,1 s3,2 s3,3 out0 out4 out8 out12 out1 out5 out9 out13 out2 out6 out10 out14 out3 out7 out11 out15 Input bytes State array Output bytes

수학적 배경 The finite field GF(28) : 각 Byte를 유한체 원소로 간주하여 계산함 원소의 표현 b = = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0 ex) ‘57’ = (0101 0111)2 = x6 + x4 + x2 + x + 1 각 byte의 덧셈 : Addition in GF(28) b + c = defined =  b7 b6 b5 b4 b3 b2 b0 b1 c7 c6 c5 c4 c3 c2 c0 c1 b7 b6 b5 b4 b3 b2 b0 b1

수학적 배경 The finite field GF(28) : 각 Byte의 곱셈연산 방법 각 byte는 최고 7차의 다항식이므로,두 byte의 곱셈을 위해서 먼저 다항식 곱셈을 수행한다 계속하여 다음의 고정된 특별 다항식 m(x)로 나눈 나머지값을 곱셈의 결과로 한다. m(x) = x8 + x4 + x3 + x + 1 = 11Bx ex) ‘57’  ’83’ = ‘C1’ (x6 + x4 + x2 + x + 1)(x7 + x + 1) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 x13+x11+x9+x8+x6+x5+x4+x3+1 (mod x8 + x4 + x3 + x + 1) = x7 + x6 + 1 = ‘C1’

수학적 배경 The finite field GF(28) : 곱셈 구현의 최적화 방법 유한체의 특성상 다음 다항식은 0과 같다. m(x) = x8 + x4 + x3 + x + 1 = 11Bx (irreducible over Z2) x8 = x4 + x3 + x + 1 x9 = x  x8 = x  (x4 + x3 + x + 1) = x5 + x4 + x2 + x x10 = x2  x8 = x2  (x4 + x3 + x + 1) = x6 + x5 + x3 + x2 x11 = x3  x8 = x3  (x4 + x3 + x + 1) = x7 + x6 + x4 + x3 x12 = x4  x8 = x4  (x4 + x3 + x + 1) = x8 + x7 + x5 + x4 = (x4 + x3 + x + 1) + x7 + x5 + x4 = x7 + x5 + x3 + x + 1 and so on.

x  b = b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x = LeftShift[b] 수학적 배경 xtime(b): 곱셈 구현의 최적화 위한 방법 If we multiply b(x) by the polynomial x, we have x  b = b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x IF b7 = 0, then next reduction is identity operation x  b = b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x = LeftShift[b] IF b7 = 1, then x8 = x4 + x3 + x + 1 must be subtracted (i.e., XORed) x  b = b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x = (x4 + x3 + x + 1) + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x = b6x7 + b5x6 + b4x5 + (b3  1)x4 + (b2  1)x3 + (b0  1)x + 1 = LeftShift[b]  00011011 This operation is denoted by xtime(b) Multiplication by higher powers of x can be implemented by iterations

수학적 배경 Ex) ‘57’  ‘13’ = ‘FE’ ‘57’  ‘02’ = xtime(57) = ‘AE’ ‘57’  ‘08’ = xtime(47) = ‘8E’ ‘57’  ‘10’ = xtime(8E) = ‘07’ ‘57’  ‘13’ = ‘57’  (‘10’  ‘02’  ‘01’) = ‘07’  ‘AE’  ‘57’ = ‘FE’

수학적 배경 Word의 덧셈 및 곱셈 A(y) a0 a1 a2 a3 A(y) = a3y3 + a2y2 + a1y + a0 4개의 byte로 이루어진 word를 3차, 2차, 1차, 상수항 등의 다항식으로 간주함 Byte : x 기호 사용 Word : y 기호 사용 Word의 덧셈은 bitwise XOR 연산임 곱셈은 byte 곱셈과는 다른 방법을 이용함 (y4 = 1) A(y) = a3y3 + a2y2 + a1y + a0 B(y) = b3y3 + b2y2 + b1y + b0 where ai, bi GF(28) i.e., bytes A(y) a0 4Byte Word a1 a2 a3

AES Key-Block-Round Combinations Key Length (Nk words) Block size (Nb words) Number of Rounds (Nr) AES-128 4 10 AES-192 6 12 AES-256 8 14

AES 암호화 과정(Ciphering) Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4, Nb] state = in AddRoundKey(state, w[0, Nb-1]) // 초기 키 값이 add 됨 for round = 1 step 1 to Nr–1 // 라운드 수 보다 한 번 적게 돌아감 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) out = state end

AES 암복호화 과정(Ciphering) 세부사항 SubBytes() Transformation ShiftRows() Transformation MixColumn() Transformation AddRoundKey() Transformation

AES SubBytes() Transformation S-Box sr,c s'r,c 다음 2가지 연산으로 구성 S-1 계산 : 각 byte를 유한체의 원소로 보고 곱셈에 대한 역원 계산 단 ‘00’은 계산 없이 ’00’으로 변환함 Affine 변환 : 각 바이트에 fixed 행렬을 곱하고 fixed 열벡터 XOR 이 모든 과정을 Lookup table 이용할 수 있음 28 Byte array needed S-Box s-1 계산 Affine 변환 s0,0 s0,1 s0,2 s0,3 s1,0 s1,1 s1,2 s1,3 s2,0 s2,1 s2,2 s2,3 s3,0 s3,1 s3,2 s3,3 s'0,0 s'0,1 s'0,2 s'0,3 s'1,0 s'1,1 s'1,2 s'1,3 s'2,0 s'2,1 s'2,2 s'2,3 s'3,0 s'3,1 s'3,2 s'3,3 sr,c s'r,c

AES SubBytes() Transformation Affine 변환 b’0 1 0 0 0 1 1 1 1 b0 1 Right to Left

AES y 1 2 … x 63 7c 77 ca 82 c9 b7 fd 93 SubBytes() Transformation S-box Lookup Table : input ‘xy’-values y 1 2 … x 63 7c 77 ca 82 c9 b7 fd 93

AES ShiftRows() Transformation 각 행을 LeftRotation함 : different offsets No Rotation

AES MixColumn() Transformation a(x) = {03}x3 + {01}x2 + {01}x + {02} 각 열(word)벡터에 다음의 고정된 a(y) 다항식을 곱한 결과로 변환함 Word 곱셈 a(y)  s(y)이 필요함 a(x) = {03}x3 + {01}x2 + {01}x + {02} 다음의 행렬 곱셈과 같은 결과를 얻을 수 있음 s’0,c 02 03 01 01 s0,c s’1,c = 01 02 03 01 s1,c s’2,c 01 01 02 03 s2,c s’3,c 03 01 01 02 s3,c

AES MixColumn() Transformation MixColumn() s0,c s’0,c s1,c s’1,c s2,c Column-by-column 암호화에 a(x)를 곱하는 과정 복호화에서는 다른 다항식 a-1(x)를 곱하게 됨 암.복호화 과정이 different MixColumn() s0,c s0,0 s0,1 s0,2 s0,3 s1,0 s1,1 s1,2 s1,3 s2,0 s2,1 s2,2 s2,3 s3,0 s3,1 s3,2 s3,3 s'0,0 s'0,1 s'0,2 s'0,3 s'1,0 s'1,1 s'1,2 s'1,3 s'2,0 s'2,1 s'2,2 s'2,3 s'3,0 s'3,1 s'3,2 s'3,3 s’0,c s1,c s’1,c s2,c s’2,c s3,c s’3,c ?

AES AddRoundKey() Transformation AddRoundKey() s0,c s’0,c s1,c s’1,c 각 coulmn에 RoundKey를 XOR 하는 과정 암.복호화 과정에 개별적인 비밀인 Key 정보가 추가됨 AddRoundKey() s0,c s0,0 s0,1 s0,2 s0,3 s1,0 s1,1 s1,2 s1,3 s2,0 s2,1 s2,2 s2,3 s3,0 s3,1 s3,2 s3,3 s'0,0 s'0,1 s'0,2 s'0,3 s'1,0 s'1,1 s'1,2 s'1,3 s'2,0 s'2,1 s'2,2 s'2,3 s'3,0 s'3,1 s'3,2 s'3,3 s’0,c s1,c s’1,c s2,c s’2,c s3,c s’3,c

AES Key Expansion Cipher key 값인 K(128, 192 or 256 bits)로부터 추출 Key 길이가 256 bits인 경우 약간 다른 과정을 수행함 각 round에 필요한 key-words 생성하는 과정 Total Nb(Nr + 1) words가 필요함 SubWord() Input, output : 4 byte word 각 byte를 S-box의 lookup table을 통하여 변환시킴 RotWord() Input : word [a0, a1, a2, a3] Output : word [a1, a2, a3, a0] Rcon[i] Word [xi-1, {00}, {00}, {00}] where xi-1을 byte로 표현함

AES end KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk) begin word temp i = 0 while (i < Nk) w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) i = i+1 end while i = Nk while (i < Nb * (Nr+1) temp = w[i-1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] else if (Nk > 6 and i mod Nk = 4) temp = SubWord(temp) end if w[i] = w[i-Nk] xor temp i = i + 1 end

AES Key Expansion of a 128-bit Cipher Key (Nk = 4) Cipher Key = 2b7e1516 28aed2a6 abf71588 09cf4f3c w0 = 2b7e1516 w1 = 28aed2a6 w2 = abf71588 w3 = 09cf4f3c i (dec) temp After RotWord() SubWord() Rcon[i/Nk] After XOR with Rcon w[i-Nk] w[i] = temp XOR w[i-Nk] 4 09cf4f3c cf4f3c09 8a84eb01 01000000 8b84eb01 2b7e1516 a0fafe17 5 28aed2a6 88542cb1 6 abf71588 23a33939 7 2a6c7605 8 6c76052a 50386be5 02000000 52386be5 f2c295f2 9 7a96b943 …

AES 복호화 과정(Inverse Ciphering) 암호화 과정의 역순과 유사하지만 세부 과정에서 다른 경우가 있음 실제 암호화와 복호화에 속도차이가 나타남 InvShiftRows() InvSubBytes() InvMixColumns() AddRoundKey()

AES 복호화 과정(Ciphering) InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4, Nb] state = in AddRoundKey(state, w[Nr * Nb, (Nr + 1)*Nb - 1]) for round = Nr – 1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb - 1]) InvMixColumns(state) end for AddRoundKey(state, w[0, Nb-1]) out = state end

AES InvMixColumn() Transformation 각 열(word)벡터에 다음의 고정된 a-1(y) 다항식을 곱한 결과로 변환함 Word 곱셈 a-1(y)  s(y)이 필요함 a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} 다음의 행렬 곱셈과 같은 결과를 얻을 수 있음 Lookup table을 이용하는 경우는 암호화와 동일한 속도 가능 H/W 구현의 경우 항의 수가 많기 때문에 다소 느려질 수 있음 s’0,c 0e 0b 0d 09 s0,c s’1,c = 09 0e 0b 0d s1,c s’2,c 0d 09 0e 0b s2,c s’3,c 0b 0d 09 0e s3,c

AES 응용 분야 3GPP의 가입자 인증(Authentication & Key Agreement) 3GPP의 Network Domain Security(MAPSEC) 제공 3GPP2의 가입자 인증 및 암호화 ESP(Enhanced Subscriber Privacy) 제공 위한 핵심기능 제공 실제 응용에서는 AES 알고리즘의 독립적인 사용보다는 AES 알고리즘을 핵심함수로 이용하며 다양한 변화를 준다. Modes of Operation OCB, CTR-CBC mode 등이 무선랜 보안 알고리즘으로 활용됨

AES Modes of Operation of Block Cipher ECB(Electronic Codebook) mode CBC(Cipher Block Chaining) mode CFB(Cipher FeedBack) mode OFB(Output FeedBack) mode CTR(Counter) mode OCB(Offset Codebook) mode

AES Modes of Operation of Block Cipher CTR(Counter) mode 병렬처리 가능 전처리 가능 수행속도가 블록암호의 속도와 동일 다량의 메시지를 한 개의 Key로 암호화 할 수 있음 OCB(Offset Codebook) mode 하나의 Key로 기밀성과 무결성을 동시에 제공 가능

Q & A