본문 바로가기
cryptology

ARIA 암호란?? ARIA 에 대해 알아보자

by jinhyuk._.c 2022. 8. 16.

ARIA 란?

 ARIA는 대한민국의 국가보안기술연구소에서 개발한 블록 암호 시스템입니다. ARIA라는 이름은 학계(Academy), 연구소(Research Institute), 정부 기관(Agency)이 공동으로 개발한 특징을 표현한 단어입니다. 2004년 산업자원부의 KS 인증을 획득하여 현재까지 대한민국의 국가 표준 암호 알고리즘으로 기능하고 있으며, 2010년 웹 표준 중 하나가 되었습니다. 

 

ARIA의 알고리즘은 암호화와 복호화를 수행하는 라운드 함수와 키 확장으로 구성되어 있습니다. ARIA 라운드 함수의 기본구조는 Involutional SPN 구조이고 평문 128비트를 암호화하는 블록 암호 알고리즘으로, 키크기는 128, 192, 256비트이며, 이때의 각각의 라운드 함수 수는 12, 14, 16라운드입니다.

 복호화 / 암호화에 동일 알고리즘을 사용하며 평문 암호화 알고리즘은 SBOX와 Permutation, 라운드 키 연산으로 구성되어 있습니다. 평문 암호화 과정에서 사용되는 라운드 키 생성 알고리즘은 Feistel 구조를 바탕으로 키를 생성합니다.

 

 AES에서 사용하는 SPN 구조와 Involutional SPN 구조는 조금 다른데요. ARIA에서 사용하는 Involutional SPN 구조에 대해 알아보겠습니다.

 

Involutional SPN 란?

 SPN 구조의 암호 알고리즘의 암호화 순서는 
1. 평문

2. 치환계층

3. 확산계층

4. 암호문

과 같은 구조가 됩니다.

 

반대로 복호화는
1. 암호문

2. Inverse 확산계층

3. Inverse 치환계층

4. 평문

순으로 될것입니다.


ARIA의 각 라운드 함수를 보게면 짝수 라운드와 홀수 라운드에서 치환계층이 서로 틀립니다.
게다가 짝수 라운드의 치환계층의 Inverse가 홀수라운드의 치환계층이 되는 구조로 되어있습니다.
또한 확산계층의 Matrix의 inverse가 자기 자신이 되는 구조입니다.

즉 SPN 구조와는 다르게 이런 구조적 특징을 사용하여 별도의 복호화기를 사용하지 않고도 복호화를 할 수 있는게 Involutional SPN 구조 입니다.

 

다음은 ARIA 알고리즘에 대해 알아보겠습니다.

다음으로 보이는 그림은 암호화 및 복호화 과정에 대한 다이어그램입니다.

 ARIA 암호화는 난이도에 따라서 128, 192, 256 비트 길이의 암호키를 선택할 수 있으며, 키의 길이에 따라서 라운드 함수가 12, 14, 16 회수를 반복 실행합니다. 라운드 함수에 필요한 라운드 키는 암호키로부터 키 확장을 통해서 생성합게됩니다. 그리고 생성된 암호키의 길이에 따라서 ARIA-128, ARIA-192, ARIA-256으로 구분하여 표기를 하게 됩니다.

 

조금더 자세하게 알아보기 위해 이제는 라운드 함수에 대해 알아보겠습니다.

 

라운드 함수는 라운드 키 덧셈, 치환계층, 확산 계층으로 3계층으로 구성이 되어 있습니다. 라운드 함수는 홀수 라운드, 짝수 라운드에 따라 다른 유형의 치환계층이  사용되며, 마지막 라운드에서 확산계층을 라운드 키 덧셈으로 대체를 합니다.

치환계층에는 두 유형의 치환 계층이 있으며, 각각은 2종의 8비트 입출력 S-box와 그들의 역변환(reverse)로 구성됩니다.

S-box에 요구되는 성질
1. 최대 차분 / 선형 확률 : 2
2. 대수적 차수 : 7
3. 고정점, 반고정점이 없을 것.
일반적으로 이 같은 성질을 만족시키기 위하여 유한체 GF(28)상의 함수 x-1에 아핀변환(affine Transformation)을 사용하고 있습니다. S-box S1,S2는 아래의 식이 성립합니다.

S1 = Bx-1 XOR b // S2 = Cx247 XOR c
B,C는 8x8 정칙행렬이고, b,c는 8x1 행렬이다. S-box에서는 S1,S2와 함께 S1-1,S2-1을 사용하여 총 4개의 S-box를 사용한다. S1과 S1-1, S2와 S2-1은 서로 역의 관계이다. S-box는 32비트 단위를 사용합니다.

확산 계층은 간단한 16 x 16 involution 이진 행렬을 사용한 바이트 간의 확산 함수로 구성되어 있습니다.

ARIA의 확산함수
1. A : GF(28)16 GF(28)16
2. 입력 : (x0,x1,….,x15)
3. 출력 : (y0,y1,….,y15)

16 x 16 이진행렬의 곱으로 표현합니다.

A는 A-1 = A로써 Involution 구조. 입력(y0,y1,y2,…..,y15) 출력(x0,x1,….,x15)가능.
가지수 β(A) = 8 = min{wt(x) + wt(Ax) | x∈ GF(28)16, x≠0} (단, wt(x) = x의 Hamming weight(‘x’에 포함된 ‘0’이 아닌 바이트 수))

 

다음으로는 키 확장의 초기화 과정 대하여 알아보겠습니다.

ARIA의 키 확장은 초기화 과정에서는 3라운드 256비트 Feistel 알고리즘을 이용하여, 마스터 키로 부터 네개의 128비트 값 W0, W1, W2, W3를 생성합니다.

MK의 길이는 128, 192, 256가 가능하므로 Feistel 암호의 입력에 필요한 256비트(KL,KR)을 다음과 같이 구성합니다. 128비트 KL은 MK의 상위 128비트를 취합니다.

 

MK의 남은 비트를 이용하여 KR의 상위 비트를 채우고 나머지는 0으로 채웁니다.
KL || KR = MK || 0….0 >> MK가 128비트인 경우
KL || KR = MK(128) || (129~192),0….0 >> MK가 192비트인 경우

 

Fo와 Fe를 각각 홀수(LT)와 짝수(LT-1)라운드 함수라고 할 때, W0, W1, W2, W3 은 다음의 공식으로 생성합니다.

W0 = KL
W1 = FO(W0,CK1) XOR KR
W2 = Fe(W1,CK2) XOR W0
W3 = FO(W2,CK3) XOR W1

 

다음은 라운드 키 생성과정에 대해 알아보겠습니다.


위에서 나온 값들을 이용하여 암호화와 복호화 라운드 키(eki, dki)를 생성합니다.
라운드 수는 x비트일 경우 (x+256)/32 라운드 수. (각각 12,14,16 라운드)
마지막 라운드에 키 덧셈 계층이 두 번 있으므로 13,15,17 개의 라운드 키 생성합니다.
라운드 암호화 키 생성 공식은 다음과 같습니다.
ek1 = (W0) XOR (W1>>>19), ek2 = (W1) XOR (W2>>>19)
ek3 = (W2) XOR (W3>>>19), ek4 = (W3) XOR (W0>>>19)
ek5 = (W0) XOR (W1>>>31), ek6 = (W1) XOR (W2>>>31)
ek7 = (W2) XOR (W3>>>31), ek8 = (W3) XOR (W0>>>31)
ek9 = (W0) XOR (W1>>>61), ek10 = (W1) XOR (W2>>>61)
ek11 = (W2) XOR (W3>>>61), ek12 = (W3) XOR (W0>>>61)
ek13 = (W0) XOR (W1>>>31), ek14 = (W1) XOR (W2>>>31)
ek15 = (W2) XOR (W3>>>31), ek16 = (W3) XOR (W0>>>31)
ek17 = (W2) XOR (W3>>>19)

 

마지막으로 복호화 라운드 키 생성 공식입니다.

dk1 = ekn+1, dk2 = A(ekn), dk3 = A(ekn-1), …. , dkn = A(ek2), dkn+1 = ek

 

 

 

 

이상으로  ARIA 알고리즘에 대한 설명을 마치겠습니다.

이 게시글의 자료는 국가정보원 (https://www.nis.go.kr:4016/main.do) 에서 찾아보실수 있습니다.

반응형

'cryptology' 카테고리의 다른 글

SEED 암호화란?  (0) 2022.08.31
Twofish 암호화란?  (0) 2022.08.17
AES 란? AES 암호란?  (0) 2022.08.12
대칭키 암호 시스템과 DES 에 대해 알아보자  (0) 2022.08.12
암호학에 대해 알아보자  (0) 2022.08.12

댓글