[정보보안]AES(Rijndael)와 DES

2019. 12. 27. 15:05Programming/CS

AES

linear 암호분석에 내성을 갖도록 설계하고싶었다. 그리고 키의 길이가 DES는 너무 짧은 탓에 좀 더 긴 키의 길이를 가지며, 빠르고 효율적인 하드웨어 및 소프트웨어 구현을 위해 고안한 방식이다.

 

특징

  • 암호화 Key로 128, 192, 256bit를 가질 수 있다. (AES-128, AES-192, AES-256)
  • 암호화 Key의 길이에 따라 실행하는 Round수가 다르다.

 

 

 

Rijndael Cipher

워드(2바이트 → 16비트를 블록화 →) 그래서 4*4행렬 암호화 하는 방식이다.

substitute byttes: S box,

shift, mix : P box

각 라운드는 3개의 Function을 갖는다. (x값이 다 달라도 y가 일정한 상수함수) 변환
• P - Liniear mixng later – 여러 라운드에서 높은 확산
• S - 비선형 층 – 최악의 경우 비선형 특성을 갖는 S-Box를 사용한 높은 혼란
• X - 키 추가 계층 – 원형 키 XOR

→ 일련의 과정으로 쭉쭉간다

→ 마지막 라운드 mixcolumn을 하지 않는다

 

 

용어

byte sub : 블록 당 파일바이트

→ shift row → mix column → key와 조합

AES 프로세스

  • 위에서 각 State 는 128bit, 16byte(16*8bit)를 사용하여 암호화를 진행한다
  • 전체 bit를 암호화하고
  • 치환, 순열을 번갈아하는 구조이다

 

1. subtypes(1단계)

: 블록 변환하기(4*4) → confussion(subbyte: 표에따라 컨퓨전)

row 0, 1, 2, 3... ——————————> -1, -2, -3 ...

 

2. ShiftRows(2단계)

: confusion한 1단계를 거치면 → 1행은 그대로, 2행은 옮기고, 3행은 2행.. n-1 행 옮겨서

어떻게?
• 암호화
• 각 상태 행을 각각 0,1,2,3바이트씩 왼쪽으로 회전
• 암호 해독 • 반대

왜?
• 개별 바이트를 한 열에서 다른 열로 이동하고 바이트를 열에 분산(분할)
• 열이 선형적으로 종속되지 않도록 한다(그렇지 않으면 AES는 4개의 독립적인 블록 암호로 변질됨)

 

 3. MixColumns 3단계

Matrix [4*1]

컨퓨전인데, 위에는 비트별 컨퓨전이어으면 이거는 열별로 컨퓨전. (특정 함수에 돌려서)

c: 변환행렬

왜?
• 열에서 바이트의 혼합이 이루어지게 하기위해!

→ 왜 섞나요!? → 1차원배열이면 그냥 각각 돌아가면 되는데, 2차원 배열이어서 교차되어 돌아가야하기때문 ㅎㅎ

 

4. AddRoundKey

각 State행렬에 Round Key word를 XOR 해서 서로 다른 행렬을 만든다

 

 

AES(Rijndael)가 DES보다 강한 이유는?

AES의 더 긴 암호화 키 및 블록 크기 때문이다.

 

DES는 균형 잡힌 Feistel 구조를 사용하고, AES는 substitution-permutation단계를 사용한다.

DES는 현재 취약한 것으로 알려져있다. 기술의 발전에 의해 56 bits 의 키 길이는 너무 짧은 것이 되었고, Brute-Force에 의해 해독이 가능하다. 

그래서 현재는 DES를 세 번 반복해서 사용하는 Triple-DES나 AES(Advanced Encryption Standard)를 사용하고 있다.

 

보안적인 측면에서 바라보면, AES에서의 substitution은 table 로인한 역함수 가 암호화/복호화 과정에서 한번씩 무조건 이루어진다!!

곧, 모든 bit 가 종속적이지 않고, 개별암호화!! 한다는 점에서 구조적 차이가 있다.

페이스털에서의 보안적 취약점이 substitution 에서 특히나 이득인 것!