5장.AES(성의)

Download Report

Transcript 5장.AES(성의)

AES
순천향대학교 정보보호연구회
2008.08.14
민성의
[email protected]
목 차
1. AES의 기원
2. AES 평가
3. AES 암호
2
프로그래밍 세미나
1. AES의 기원

3중 DES의 장점
DES의 전사적 공격에 대한 취약점을 168비트 길이의
키를 사용함으로써 극복
• DES와 같은 암호 알고리즘 방식을 사용
• 전사적 공격 이외의 어떤 유효한 암호해독 공격도 발견
되지 않음
•

3중 DES의 단점
•
•
상대적으로 느린 소프트웨어 상의 속도
64비트 블록 길이를 사용함으로 인한 비효율성
3
프로그래밍 세미나
프로그래밍
세미나
1. AES의 기원(계속)

AES (Advanced Encryption Standard)
•
•
•
미국 차세대 암호표준
2001년 NIST (National Institute of Standards and
Technology) 에 의해 공포
블록 길이가 128비트인 대칭 블록 암호화 방식
으로 128, 192, 256 비트 길이의 키를 지원할 수
있어야 함
4
프로그래밍 세미나
프로그래밍
세미나
2. AES 평가

AES에 대한 NIST평가 기준(1997.09.12)
•
보안성



•
비용


•
실제 보안성, 임의성, 견고성, 기타 보안요소
알고리즘 해독에 요구되는 노력에 적용
공격에 대한 실용성
( 최소 키 길이가 128비트이기 때문에 예측되는 기술에 의한
전사적 공격 고려 불필요 )
특허 요구 사항, 계산상 효율성, 메모리 요구사항
넓은 응용 분야에 적용될 것을 의도로 반드시 계산상 효율성을
가져야 하며 광대역 링크와 같은 고속 응용에 적합해야 함
알고리즘 및 개발특징

유연성, 하드웨어 및 소프트웨어 적합성, 간결성,
ILP를 위한 잠재성
5
프로그래밍 세미나
2. AES 평가(계속)
 후에
NIST평가기준을 이용하여 21개의
후보 알고리즘이 15개로, 다시 5개로 압축
 Rijndael 에 대한 NIST의 최종평가(2000.10.02)
•
•
•
•
•
•
•
•
•
전반적인 안전성
소프트웨어 구현
제한된 공간 환경
하드웨어 구조
구현상 공격
암호화 대 복호화
키의 민첩성
기타 유통성 및 유연성
ILP를 위한 잠재성
6
프로그래밍 세미나
3. AES 암호
 Rijndael
•
•
•
미국 NIST가 차세대 암호화 표준(AES)으로 선정한
알고리즘
블록 길이와 키 길이가 독립적으로 128, 192, 256 bit 중
선택하는 암호 알고리즘
Rijndael 의 특성



모든 알려진 공격에 대한 저항력
다양한 플랫폼에 대한 속도와 코드의 간결성
단순한 설계
 AES의
•
파라미터
키의 길이에 따라 각각 다를 수 있음
7
프로그래밍 세미나
3. AES 암호(계속)

AES의 전체적인 구조
Plaintext
Inverse sub bytes
Expand key
Shift rows
Mix columns
Add round key
Add round key
Inverse shift rows
Inverse mix cols
w [ 4, 7 ]
Add round key
Shift rows
Mix columns
Add round key
Round 10
Inverse shift rows
Substitute bytes
Inverse mix cols
w [ 36. 39 ]
Inverse sub bytes
Substitute bytes
Inverse shift rows
Shift rows
Add round key
Add round key
Round 1
Round 9
Inverse sub bytes
Round 9
Round 1
Substitute bytes
w [ 0, 3 ]
Plaintext
Round 10
Add round key
Key
w [ 40, 43 ]
Ciphertext
Add round key
Ciphertext
프로그래밍 세미나
프로그래밍
세미나
8
3. AES 암호(계속)

AES 테이터 구조
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
S1,3
out1
out5
out9
out13
S2,2
S2,3
out2
out6
out10
out14
S3,2
S3,3
out3
out7
out11
out15
S0,0
S0,1
S0,2
S0,3
S1,0
S1,1
S1,2
S2,0
S2,1
S3,0
S3,1
(a)Input, state array, and output
9
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

AES 데이터 구조(계속)
k0
k4
k8
k12
k1
k5
k9
k12
k2
k6
k10
k14
k3
k7
k11
k15
w0
w1
w2
w42
w43
(b) Key and expanded key
10
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

S – box
16 x 16행렬을 정의
• 256가지의 모든 가능한 8비트 값의 순열을 포함
• 바이트의 가장 왼쪽 4비트는 행 값, 가장 오른쪽 4비트는
열 값으로 사용
• S-box 구성
•
-- 바이트 값으로 S-box를 행 별 오름차순으로 초기화
-- 각 바이트를 그 바이트의 유한체 GF(28)상의 곱셈 역으로 맵핑
값{00} 은 그 자신으로 맵핑
11
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

AES의 4개 단계
•
치환 바이트 변환(Substitute Bytes Transformation)


순변환과 역변환
-- 순 치환 바이트 변환(forward substitute byte transformation)
- SubBytes 라 부르며 단순 테이블 룩업
-- 역 치환 바이트 변환(inverse substitute byte transformation)
- InvSubBytes 라고 부르며 역 S-box 이용
원리
-- S-box는 알려진 암호해독 공격에 대한 저항력을 갖도록 설계
--입력과 출력 비트 사이의 낮은 상관관계를 갖고, 출력이
입력의 단순한 수학적 함수로 설명될 수 없는 특성을 갖는
설계를 구상
12
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

AES의 4개 단계(계속)
•
행 이동 변환(Shift Row Transformation)

순변환과 역변환
-- 순 행 이동 변환(forward shift row transformation)
-ShiftRow 라고 부름
- 상태 배열의 첫 번째 행은 바뀌지 않음
- 두 번째 행은 1바이트, 세 번째 행은 2바이트,
네 번째 행은 3바이트 씩 왼쪽순환이동
- 예) 87 F2 4D 97
87 F2 4D 97
EC
6E
4C
90
6E
4C
90
EC
4A
C3
46
E7
46
E7
4A
C3
8C
D8
95
A6
A6
8C
D8
95
-- 역 행 이동 변환(inverse shift row transformation)
- InvShiftRow 라고 부름
- 첫 번째 행은 바뀌지 않고 두 번째 행은 1바이트,
세 번째 행은 2바이트, 네 번째 행은 3바이트 씩
각각 오른쪽순환이동
프로그래밍 세미나
프로그래밍
세미나
13
3. AES 암호(계속)

AES의 4개 단계(계속)
•
행 이동 변환(Shift Row Transformation)(계속)

원리
- 암호 입출력 뿐만 아니라 상태 배열이 4열의 4바이트
배열로 취급
- 암호화에서 평문의 첫 4바이트는 상태 배열의 첫 열에,
두 번째 4바이트는 상태 배열의 두 번째 열에 등으로 복사
- 라운드 키는 상태 배열에 열 단위로 적용
- 행 이동은 각각의 바이트가 하나의 열에서 4바이트 배수의
선형 거리인 다른 열로 이동
- 한 열의 4바이트가 4개의 다른 열로 흩어짐
14
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

AES의 4개 단계(계속)
•
열 혼합 변환(Mix Column Transformation)


순변환과 역변환
-- 순 열 혼합 변환(forward mix column transformation)
- MixColumns 라 부르며, 각 열 별로 작동
-열의 각 바이트는 그 열의 모든 4바이트 함수의 새로운
값으로 맵핑
- 적행렬의 각 원소는 한 행과 한 열의 원소들의 곱의 합
-- 역 열 혼합 변환(inverse mix column transformation)
- InvMixColumns라 부르며, 행렬 곱셈으로 정의
원리
-- 행렬의 계수는 코드 워드들 간의 최대 거리를 갖는 선형 코드
가 바탕이 되며 각 열의 바이트들이 잘 혼합되게 함
-- 행 이동 변환과 함께 불과 몇 라운드의 실행 후에는 모든 출
력 비트가 모든 입력 비트에 의존하게 함
15
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)

AES의 4개 단계(계속)
•
라운드 키 추가 변환(Add Round Key Transformation)


순변환과 역변환
-- 순 라운드 키 추가 변환(forward add round key transformation)
- AddRoundKey 라 부름
- 상태 배열의 128비트는 라운드 키의 128비트와 비트단위로
XOR됨
-- 역 라운드 키 추가 변환(inverse add round key transformation)
- 순 라운드 키 추가 변환과 동일
: XOR연산은 그 연산의 역이기 때문에
원리
-- 상태 배열의 모든 비트에 영향
-- 라운드 키 확장의 복잡성은 AES의 다른 단계의 복잡성과 함께
안전성 보장
16
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)
 AES 키 확장
키 확장 알고리즘
 4워드(16바이트)를 입력으로 취하여 44워드(156바이트)의
선형 배열 생성
 44워드 배열은 초기 라운드 키 추가 단계를 위한 4워드 라운드
키와 10 라운드의 각 암호화 라운드에 충분
• 키 확장
•
k0
k4
k8
k12
k1
k5
k9
k12
k2
k6
k10
k14
k3
k7
k11
k15
w0
w1
w2
w3
g
w0
프로그래밍 세미나
프로그래밍
세미나
w1
w2
w3
17
3. AES 암호(계속)

AES 키 확장(계속)
•
원리


라운드 상수를 라운드 종속으로 설정함으로써 라운드 키가 각
라운드에서 생성되는 방식의 대칭성과 유사성 제거
세부 기준
-- 암호화 키 또는 라운드 키의 일부분을 알도록 다른 라운드 키
비트 계산이 불가능
-- 역 변환
-- 넓은 범위의 프로세서 속도
-- 암호화 키의 차이가 라운드 키로 확장
-- 대칭성을 제거하기 위한 라운드 상수의 사용
-- 설명의 간결성
18
프로그래밍 세미나
프로그래밍
세미나
3. AES 암호(계속)
 등가
•
InvShiftRows 와 InvSubBytes 의 교환


•
역 암호화
InvShiftRows 는 상태 배열의 바이트 순서에 영향을 주지만 바이트
내용을 바꾸지는 않고 변환을 수행하기 위한 바이트 내용에 좌우되
지 않음
InvSubBytes 는 상태 배열의 바이트 내용에 영향을 주지만 바이트
순서는 바꾸지는 않고 변환을 수행하기 위한 바이트 순서에 좌우되
지 않음
AddRoundKey 와 InvMixColumns 의 교환


상태 배열의 바이트 순서를 바꾸지 않음
열 입력에 대해여 선형
19
프로그래밍 세미나
프로그래밍
세미나
수고하셨습니다.
20
프로그래밍 세미나
프로그래밍
세미나