CS 지식/보안

AES 암호화

윤씅 2024. 8. 11. 00:15

∎ 탄생 배경

DES를 보완하기 위해 NIST에서 공모하였다.
안정성, 비용, 구현의 효율성을 기준으로 AES 알고리즘을 선정하였다.

 

 

 용어

  라운드 : 암호화를 위해 반복되는 것

⦁  마스터키 : 암호화, 복호화에 사용되는 비밀키

⦁  라운드 키 : 라운드마다 사용되는 키

 

 

특징

⦁  128비트 평문 ➜  128비트 암호문

 

⦁  라운드는 10, 12, 14가 있으며 각각의 마스터 키의 크기는 128, 192, 256이다.

 

⦁  하지만 모두 라운드 키는 128비트를 사용한다.

 

⦁  각각의 라운드 키의 수는 "라운드+1" 이다.



단위

⦁  비트, 바이트, 워드(4바이트)

 

⦁  블록 : 128비트를 16바이트의 블록으로 표현

 

⦁  스테이트 : 각 연산 사이의 데이터 블록, (4X4 행렬) 16바이트로 구성된다. 열 단위로 적용된다.

 

⦁  블록을 스테이트로 변환하는 과정?



 

∎ 암호화 과정 (대치, ShiftRows, MixColumns, 키 덧셈)

(non-Feistel 알고리즘으로 역함수가 존재한다.)

 

✔  대치

    ⦁  각 스테이트마다 대치변환을 하는데, 한 바이트를 4비트씩 2개로 나누어 2개의 16진수를 만들고 SubBytes 변환 테이블의 행열에서 찾아 대치한다.

    ⦁  역함수는 InvSubBytes

    ⦁  각 라운드마다 한번씩 실행

 

 

✔  ShiftRows 치환

    ⦁   스테이트에서 각 행을 기준으로 바이트마다 shifting (비트 X)

 

 

   ⦁  각 행 번호(수)만큼 왼쪽으로 이동한다.

   ⦁  역함수는 InvShiftRows (오른쪽으로 이동한다.)

    ⦁   각 라운드마다 한번씩 실행

 

 

 

  MixColumns

   ⦁   바이트 안의 비트를 바꾸기 위한 연산이다.

     한 열(4바이트)씩 정방행렬과 곱해 새로운 열을 만든다.

  ⦁   사용되는 정방행렬

 

 

  ⦁   역함수는 InvMixColumns이다.

     마지막 라운드를 제외하고 각 라운드에서 한번씩 실행

 

 

 

✔  AddRoundKey

  • 한 열에 라운드 키 워드를 더해 새로운 열을 만든다.
  • 라운드 키는 128비트인데, 워드(32비트)로 4개의 행을가진 1해의 열로 표현한다.
  • 역함수는 자기 자신이다.
  • 각 라운드에서 한번씩 실행하고 pre-round에서 한번 더 실행

 

 

✔  라운드 키는 워드 단위를 갖는다.  128비트를 워드 단위로 바꾸면 44워드가 필요하다.