AES
- Advanced Encryption Standard(AES)
- 2001년에 NIST에서 표준화함
- GF(2^8)를 사용
- 8bit byte단위
- Irreducible polynomial: 규악!
- (x^8 + x^4 + x^3 + x + 1)
- 나눗셈은 역원을 이용함
- a /b = a (b^(-1))
General Structure
- State(자료구조)
- 4x4 byte단위의 사각형 배열
- key & Round
- 128 & 10
- 192 & 12
- 256 & 14
- SPN 구조를 사용
- Substitution-permutation network
- Round: 4가지 형태의 함수
- Permutation: ShiftRows
- Substitution: SubBytes / MixColumns / AddRoundKeyAES Encryption Process
- Input으로 Plaintext 16bytes씩 받는다.
- 이 16 bytes를 각 4bytes 씩 나눈다.
- 각 줄을 4열로 세운다.
- 이를 통해 4x4 byte단위의 사각형 배열을 생성함
- Key 또한 1~3번 과정을 거치면서 State구조를 만든다.
- 생성된 Key와 Plaintext를 XOR연산 수행한다.
- 이를 Initial transformation이라 한다.
- 이를 통해 성성된 state를 가지고 각 Round를 수행한다.
- 각 Round에 필요한 Key는 Key Expansion을 통해 생성한다.
Detailed Structure
128bit임을 가정한다.
- 전체 데이터 블록들을 하나의 4x4 byte배열로 보고 각 round마다 substitutions and permutation을 이용하여 업데이트를 수행함
- Input으로 주어지는 key가 Round가 10이므로 11개의 key가 필요
- 따라서, 4 x 11 word
- w[0] ~ w[43]
- 각 Round마다 들어있는 함수
- Substitute bytes(sub byte)
- byte단위로 치환함
- 이처럼 update를 해주는 table을 S-box라 한다.
- ShiftRows
- 행을 Rotation을 수행함
- MixColumns
- GF(28)를 이용하여 열을 섞는다.
- AddRoundKey
- XOR연산 수행
- Substitute bytes(sub byte)
- 암호는 처음 과 끝이 AddRoundKey이다.
- 각 Stage는 역연산이 가능하다.
- decryption algorithm은 암호화 과정과 다르다.
- 암호 과정의 역연산들을 수행함
- 암호 과정의 역연산들을 수행함
각 함수별 수행 과정
1. AES SubBytes
S-box를 통해 문자 치환을 수행한다.
- S-box 생성과정
- Plaintext의 문자 하나(A)와 GF(2^8)의 역원(Z)을 스칼라 곱을 한다.
- 그 후 생성된 값과 Key(C)를 XOR연산을 수행한다.
- 생성된 값이 Plaintext의 대체 문자(Y)이다.
- Y = AZ XOR C
왜 S-Box를 사용하는가
- 지금까지 알려진 암호학 공격에 대해 방어하기 위해 설계됨
- input과 output의 상관관계를 알아내기 힘들게 하기 위함
- 선형식은 취약하므로 비선형식으로 만들기 위함
2. Shift Rows
- 4 x 4 행렬에서 첫 번째 행은 그대로 가져간다.
- 두 번째 행은 왼쪽으로 한 칸씩 이동한다.
- 세 번째 행은 왼쪽으로 두 칸씩 이동한다.
- 네 번째 행은 왼쪽으로 세 칸씩 이동한다.
- 즉 오른쪽으로 한칸 이동왜 Shift rows를 수행할까
- 모든 문자에 대해서 여러 부분에 영향을 미치기 위해서
- 입력과 출력사이에 관계가 복잡하게 만들기 위해서
- 한 컬럼에 있는 4개의 byte들이 다른 4개의 컬럼에 영향을 주기 위해서
3. Mix Columns
- 4 x 4 행렬에서 하나의 열을 4 x 4 KEY와 스칼라 곱을 하여 하나의 열을 생성한다.
- 그 과정을 4번하여 4열을 만들어 암호화한다.
왜 Mix Columns를 수행할까
- shift rows와 이유 동일
- 더 확실히 전체에 영향을 주기 위함
4. Add Round Key
- 128 bit State를 128 bit Round Key와 XOR연산을 수행한다.
- word단위로 xor연산을 수행한다고 할 수 있다.
- 단순하다.
- 하지만 Round Expansion에서 매우 복잡함
AES Key Expansion
- Key는 첫 번째 4개의 word들로 copy된다.
- 이는 처음에 바로 사용한다.
- Round 0 Key
과정
- 처음 Key 128bit를 4x4행렬로 정렬한다.
- 열 단위로 (word) 끊어서 본다.
- 첫 word w0는 위에서 받아온 g함수의 결과값고 윗 단계에서의 w'0와 xor연산을 한다.
- g 함수는 윗 단계의 w'3을 통과시켜 나온 결과 값이다.
- g 함수의 과정은 다음에서 설명
- 두 번째 word w1는 1번에서의 w0와 윗 단계에서의 w'1과 xor연산을 수행한다.
- 세번째와 네번째또한 2번과정을 수행한다.
- 1~3과정을 Round 수 만큼 수행한다.
G functiton
32bit 를 받아오면 4개로 byte단위로 자른다.
- 각 단위를 왼쪽으로 1칸씩 shift 수행한다.
- 각각의 byte에 대해 S-Box를 통과시킨다.
- 그 후 마지막으로 정해져 있는 상수값과 XOR연산을 수행한다.
- 정해져 있는 상수값에서 첫 byte를 제외한 3 byte는 0으로 고정
- 첫 byte는 Round마다 다른 값을 가짐
- 1 ~ 8 Round는 최하위비트 1부터 시작해서 왼쪽으로 한 칸씩 shift수행
- 9 Round 이후부터는 GF(2^8)로 생각하여
- (x^8 + x^4 + x^3 + x + 1)을 MOD 수행한다.
- 즉 9 ROUND는 1000 0000에서 MOD (x^8 + x^4 + x^3 + x + 1)을 수행하여
- 0001 1011이 된다.
Key Expansion은 왜 복잡하게 했는가?
- expansion key algorithm이 알려진 암호학 공격에 대비해서 만들어짐
- Round에 의존하는 Round 상수를 사용함으로써 규칙성을 제거함
- 궁극적인 목표
- 암호키의 일부를 안다고 하더라도 다른 Round key를 알아내지 못하도록 함
- 일반적인 CPU에서 매우 빠른 연산이다.
- 암호키의 Diffusion이 round key에 적용이 된다.
- Diffusion: 한 비트의 변화가 여러 비트에 영향을 줌
- 충분히 비선형성을 띄게 함
구현에 있어 AES의 장점
- 8bit 프로세서에서 매우 효율적으로 동작이 가능함
- XOR, Shfit, SubByte, MixColumn 등 byte 단위 간단한 동작으로 구성됨
- 32bit 프로세서에서
- table lookup 4번과 XOR 4번으로 한 round가 끝나게 가능함
- 메모리만 충분하다면 4kb에서 한 번에 계산이 가능함Intel AES New Instruction
- AES만을 수행하는 명령어가 생김
- AES NI라고 함
암호 모듈 검증 제도
- 국가정보원 암호 모듈 검증 제도
- KCMVP (Korea Cryptographic Module Validation Program)
- 국가나 공공기관 정보통신망에서 비밀로 분류되지 않은 중요 정보 보호에 사용되는 암호 모듈의 안정성과 구현 적합성을 검증하는 제도
검증 대상 알고리즘
- 블럭암호: ARIA, SEED, LEA, HIGHT
- 운영모드
- 기밀성: ECB, CBC, CFB, OFB, CTR
- 기밀성/인증
- 운영모드
- 해시함수
- SHA-2 (224, 256, 384, 512), SHA-3, LSH
- 메시지인증
- 해시기반 HMAC, 블록암호기반 CMAC, GMAC
- 난수발생기
- 해시기반 Hash_DRBG, HMAC_DRBG, 블록암호기반 CTR_DRBG
- 공개키암호
- RSAES (2048, 3072)
- 전자서명
- RSA-PSS (2048, 3072), KCDSA, EC-KCDSA, ECDSA
- 키설정
- DH, ECDH
- 키유도
- KBKDF (HMAC, CMAC), PBKDF (HMAC)
한국 표준 블럭 암호
- SEED (1998)
- TTAS.KO-12.0004 / IETF RFC 4269
- DES와 유사한 구조 (Feistel Network)
- 128-bit block, 128-bit key, 16 rounds
- ARIA (2004)
- IETF RFC 5794
- AES와 유사한 구조 (Substitution-Permutation Network)
- 128 bit block, 12/14/16 rounds for 128/192/256 bit key
- SPN
- LEA (2014)
- TTAK.KO-12.0223
- 경량 블록 암호, 32-bit ARX 구조 (S-box 없음)
- Add, Rotate, XOR
- 128 bit block, 24/28/32 rounds for 128/192/256 bit key
'학교수업 > 보안' 카테고리의 다른 글
Cryptographic Hash Functions (0) | 2022.04.15 |
---|---|
Classical Encryption Techniques (0) | 2022.04.15 |
Block Cipher Operation (0) | 2022.04.15 |
Block Ciphers and the Data Encryption Standard (0) | 2022.04.15 |
Access Control and User Authentication (0) | 2022.04.15 |
최근댓글