카테고리 없음

ARIA White box 암호 설계 하기

controlpro 2022. 11. 7. 17:54
728x90

참고문서 [ARIA 블록 암호의 화이트 박스 암호 장치] 

 

ARIA 블록 암호의 라운드 함수를 키 확장(AddRoundkey) , 치환계층(SubstLayer) 및 확산계층 (DiffLayer)로 이루어져있다. AES Chow 알고리즘과 마찬 가지로 기존의 암호의 구조를 바꿔야한다. 

 

원래의 경우 치환계층 , 확산 계층 , 키 확장 순으로 진행됐다고 하면, White box 설계를 위해서 키확장 치환 계층 및 확산 계층 순으로 순서를 바꿔야한다. 

 기존의 설계를 했던 ARIA의 cipher가 다음과 같다면 , Whitebox 암호 알고리즘을 적용하기 위해서는 처음에 있는 AddRoundkey 부분을 for문 안으로 넣어줘야한다. 

 위의 그림처럼 함수를 수정해야한다. 그러면 기존의 AES와 같이 AddRoundkey와 SubstLayer를 한 묶음으로 모아서 테이블을 구성가능하다. 

 

AES와 동일하게 4bytes의 연산단위로 이루어지게 테이블을 구성해야할 듯 싶다. 

 

첫번째로 구성해야할 점은 AddRoundkey와 SubstLayer를 먼저 섞은 T-Table을 먼저 작성한다. 

T-Table을 다음과 같이 정의 된다. 

이렇게 T-table을 만들고, DiffLayer와 섞기 위해서 TD-Table을 다시 정의해야한다. 여기서 DiffLayer의 동작원리를 확인해보자면, 

 

다음과 같다. 16bit입력으로 들어와서 X0 ~ X15처럼 행렬 연산되는 게 특징이다. AES의 Mix columns을 구성하는 것 처럼 비트를 세로 줄로 연산을 하게 진행을 해야한다. 즉 다시 말하면 기존의 행렬 연산은  

[ 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 ] 과 [X0 ~ X15]의 내적으로 계속해서 줄을 바꿔서 계산을 하는데, 

[ 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 ] 과 [X0 ~ X15]의 성분끼리 곱한 후, 나머지 연산을 진행한 다음 XOR 연산을 진행하겠다는 것이다. 즉 XOR 연산은 15번 필요하다(XOR 연산은 table 4에서 정의가 될 것이니 나중에 확인합시다.. )

 

그림으로 다시 그리면 ...

 

 

이렇게 TD 테이블을 구현하면 된다. 

 

여기서 가장 고민이 많은 점이, AES는 Mixcolumns 연산이 32비트 단위로 딱 묶여서 테이블 안에 있는 값이 하나로 딱 떨어지게 되어있는 반면, 이건 128bit 짜리 블록이 총 16개 필요하다. (AES는 mixcolumns 연산이 4 by 4 행렬에 32bit로 구성되어 있다.) 

 

그래서 후의 연산을 고려하기 위해서 테이블 구성을 어떻게 할까. 128bit를 한번에 담기에는 변수가 없기때문에 나눠 담아야하는 데, 어캐 나눠 담지 ?? 라는 생각을 많이 했던 거 같다. 사실 type 2 table만 구성하면 기본적으로 암호화연산이 가능하기 때문에 이부분이 젤 중요하다... 어려웡

 

일단 기본적으로 TD 테이블을 확산 계층에서 사용하는 행렬 Q는 16개의 8비트 입력, 128비트 출력인 행렬을 연접한 것으로 간주해야한다. 수식은 아래와 같다.  아쉽게도 C/C++언어에서 가장 큰 변수는 long long 단위는 8bytes로 64bit이다. 

 

 

 

 

 

 

 

Table 구성

1. Type 2  table

  • 전반적인 Aria의 연산을 하는 부분으로, 8bit 입력 128bit 출력이다.
  • 8비트 선형인코딩 , 128비트 선형 인코딩 , 4비트 비선형 인코딩 및 TD테이블로 구성됨 

2. Type 3 table 

  • 인코딩 및 디코딩을 하는 부분으로 , 8bit 입력 128bit출력이다. 
  • 8비트 선형 인코딩, 128선형인코딩, 4비트 비선형 인코딩 

3. Type 1a  & 1b 

  • 초기 인코딩 및 후기 디코딩 테이블로 , 8bit입력 , 128bit 출력이다. 

4. Type 4 

  • 기본적으로  XOR연산이 이루어져 있고 입력 크기는 8bit 출력 크기는 4비트 이다.

 

 

 

 

 

 

 

 

728x90
반응형