HJW's IT Blog

5 장 본문

정보보호

5 장

kiki1875 2023. 9. 24. 12:42

**AES (Advanced Encryption Standard)

  • AES 는 DES 를 대체하는 블럭암호로 상업적 용도로 개발
  • 128 bit 블록 사이즈, 128 192, 256 bit key size
  • Feistel 구조를 사용하지는 않지만 각 라운드는 4가지 암호화 과정으로 이루어진다
    • 바이트 치환 변환
    • 행이동
    • 열혼합
    • 라운드 키 더하기
  • AES는 8bit 기본단위연산으로 동작하며 덧셈, 곱셈, 나눗셈 연산을 유한체를 바탕으로 연산
  • Rijndael 알고리즘 개발자들은 더이상 약분할 수 없는 8차 다항식 30개를 선택하여 사용

**유한체의 집합 S의 수학적 연산 정의

  • 다항식 연산에 쓰이는 차수가 modular 2 로 동작하며, XOR 연산과 같다
  • 곱셈의 결과가 n - 1 차수보다 클 경우, 다항식은 m(x) 의 차수 n 의 모듈러 연산을 통해 줄어들게 되며 나머지는 저장
  • 다항식 함수 f(x) 에 대해 나머지 r(x) = f(x) mod m(x) 로 나타냄
  • 다학식이 m(x) 보다 낮은 차수이면 irreducible

**일반구조

  • 암호화 복호화 과정에서 128bit 블록이 쓰인다 -> 4 x 4 행렬
  • 블록은 상태 배열로 복사되며 암호화 / 복호화 단계에서 수정되어 쓰인다
  • 키는 비트 행렬로 나타내어 지며 키 스케줄러 연산에 따라 확장
  • 다음 그림은 AES 의 데이터 구조

  • 128 bit 길이의 키를 사용할 때, 위와 같다

  • 위의 상태 행렬은 p0…p15 로 이루어져 있는데, 이때 바이트 pi 는 바이트 bj,k 로 상태 행렬에 채워진다.

    • 이때 j = i mod 4 이고 k = 1/4
  • 상태 행렬이 모두 채워진 뒤, AES 알고리즘에서 각 라운드 마다 사용하는 round key 를 생성

  • 라운드 키를 얻으면, 상태 행렬과 XOR 연산을 하여 새로운 상태 행렬을 생성

  • 각 라운드의 첫 연산은 SubBytes 라고 하며, S-box 에서 바이트를 가져와 대체한다.

  • S-box 는 GF(28) 상에 매핑되어 있다.

  • 상태 행렬의 각 xi,j 는 1byte 이기에 2개의 16진수로 표현할 수 있다.

  • 그렇게 구한 2개의 16진수 (h1, h2) 를 S-box 의 (h1,h2) 요소이다.

  • 라운드의 두번째 연산은 ShiftRows연산이며, 각 행의 위치가 증가되는 수 만큼 상태 행렬의 각 행을 왼쪽으로 이동

  • 라운드의 3번째 연산은 Mix Columns 이다.

    • 현재 상태 행렬에서 고정 행렬을 곱하여 새로운 행렬을 생성
    • 고정행렬은 다음과 같다
  • 더하기 라운드 키 변환

    • 라운드 키 추가 변환에서 상태 배열의 128 비트는 라운드 키의 128비트 와 비트 단위로 XOR 연산을 수행한다
    • 즉, 상태 배열의 한 열 4 바이트와 라운드 키의 1워드 사이의 열 연산
    • 라운드 키 추가 변환의 예는 다음과 같다
  • AES 의 전체 과정을 보면 다음과 같다

  • AES 키 확장

    • 4 word 의 입력을 받아 44워드의 선형 배열로 확장 선형 배열로 확장
    • 키는 확장된 키의 첫 4워드로 복사
    • 추가되는 워드 w[i] 는 직전 워드 w[i-1] 과 4개 이전 워드 w[i-4] 에 의해 결정
      • 이전 4워드 중 3개는 단순 XOR
      • 첫번째 워드에서 4번째 XOR 을 수행하기 전, 순환이동, S-box, 이전 라운드 상수와의 XOR 연산을 수행

**키 확장 원리

  • 암호화 키 또는 라운드 키의 일부분을 알아도 다른 라운드 키 비트 계산 불가능
  • 역 변환 가능
  • 빠른 연산
  • 암호화 키 확산을 통해 라운드 키 변환
    • 각 키 비트의 변화는 라운드 키 비트에 영향을 미친다
  • 암호화 키의 차이점만으로부터 라운드 키 차이점의 전체를 결정하는 것을 방지하기 위함

**AES Decryption

  • AES Decryption 은 암호화 과정을 역순으로 수행
  • 모든 단계를 역순으로, 키 스케줄링을 다르게 하여 수행
  • 결과괎이 변경되지 않는다면
    • 바이트 치환과 행 이동을 맞바꿈
    • 열 혼합과 라운드 키 추가를 맞바꿈

**AES 구현

  • 8bit CPU 에서 매우 효율적으로 구현 가능
    • 256 byte 의 테이블만 요구
    • 열 이동은 단순한 바이트 이동
    • 라운드 키 추가는 바이트 단위 XOR 연산
    • 열 혼합 연산은 모든 연산이 바이트로 실행되는 GF(28) 상의 행렬 곱셈을 필요로 한다
    • 32 bit 의 워드를 사용하기 위해 재정의
    • 256 word로 이루어진 4개의 테이블을 미리 연산 가능
    • 매 라운드의 각 열은 4번의 테이블 참조와 4번의 XOR 을 사용하여 계산 가능
      https://blog.naver.com/PostView.nhn?blogId=simhs93&logNo=221965569648
      -> Key 확장 참고 블로그

'정보보호' 카테고리의 다른 글

4장  (0) 2023.09.23
4장_2  (0) 2023.09.23
3장  (0) 2023.09.22
2장  (0) 2023.09.22
1장  (0) 2023.09.22