DOI QR코드

DOI QR Code

Implementation of LEA Lightwegiht Block Cipher GCM Operation Mode on 32-Bit RISC-V

32-Bit RISC-V상에서의 LEA 경량 블록 암호 GCM 운용 모드 구현

  • Received : 2022.01.26
  • Accepted : 2022.03.03
  • Published : 2022.04.30

Abstract

LEA is a lightweight block cipher developed in Korea in 2013. In this paper, among block cipher operation methods, CTR operation mode and GCM operation mode that provides confidentiality and integrity are implemented. In the LEA-CTR operation mode, we propose an optimization implementation that omits the operation between states through the state fixation and omits the operation through the pre-operation by utilizing the characteristics of the fixed nonce value of the CTR operation mode. It also shows that the proposed method is applicable to the GCM operation mode, and implements the GCM through the implementation of the GHASH function using the Galois Field(2128) multiplication operation. As a result, in the case of LEA-CTR to which the proposed technique is applied on 32-bit RISC-V, it was confirmed that the performance was improved by 2% compared to the previous study. In addition, the performance of the GCM operation mode is presented so that it can be used as a performance indicator in other studies in the future.

LEA는 2013년 국내에서 개발된 경량 블록암호이다. 본 논문에서는 블록 암호 운용 방식 중 CTR 운용 모드와 CTR 운용 모드를 활용하며 기밀성과 무결성을 제공하는 GCM 운용 모드의 구현을 진행한다. LEA-CTR의 최적화 구현은 CTR 운용 모드의 고정된 Nonce 값의 특성을 활용하여 사전 연산을 통한 연산 생략과 State 고정을 통해 State 간의 이동을 생략한 최적화 구현을 제안한다. 또한 제안 기법을 GCM 운용 모드에 적용 가능함을 보여주며, Galois Field(2128) 곱셈 연산을 사용하는 GHASH 함수 구현을 통해 GCM 구현을 진행한다. 결과적으로 32-bit RISC-V상에서 제안하는 기법을 적용한 LEA-CTR의 경우 기존 연구 대비 2%의 성능 향상을 확인하였으며, 추후 다른 연구에서 성능 지표로 사용될 수 있도록 GCM 운용 모드의 성능을 제시한다.

Keywords

I.서론

사물인터넷의 발전으로 다양한 기기에서 암호가 사용되고 있다. 다양한 기기들은 각각의 컴퓨팅 환경을 가지며, 이중제한된 컴퓨팅 환경에서 사용하기 위한 암호가 개발되고 있다. 2015년부터 NIST(National Institute of Standards and Technology)에서도 이러한 제한된 컴퓨팅 환경에서 사용할 경량 암호 공모전을 개최하였으며 여러경량 암호 알고리즘이 발표되고 있다[1]. 국내에서도 LEA, HIGHT, PIPO등과 같은 경량 블록 암호가 개발되어있으며, 최적화 연구 또한 활발하게 진행되고 있다.

본 논문에서는 국내 경량 블록암호인 LEA의 CTR 운용 모드 최적 구현을 제안한다. 현재까지 LEA-CTR 최적 구현 연구는 8-bit AVR 마이크로컨트롤러와 ARMv8 마이크로컨트롤러 상에서의 최적화 구현 연구가 제안되었다[2][3]. 본 논문에서는 기존 연구의 최적화기법을 참고하여 32-bitRISC-V플랫폼상에서의 최적화구현을 진행한다. 또한 LEA-CTR최적화구현을 활용하여 CTR운용모드를 활용하는GCM운영모드에 적용하는 확장을 포함한다.

본 논문의 구성은 다음과 같다. 2장에서는 경량블록암호 LEA, 블록암호 운영 모드 그리고 RISC-V에 관하여 설명한다. 3장에서는 구현 기법을 설명한다. 4장에서는 구현 기법의 성능을 평가한다. 마지막으로 5장에서는 본 논문의 결론을 내린다.

II.관련연구

2.1 LEA 경량 블록암호

LEA는 빅데이터, 클라우드등 고속 환경뿐만 아니라 IoT기기, 모바일기기 등 경량환경에서도 기밀성을 제공하기 위해 2013년 국내에서 개발된 경량블록 암호이다. 블록 길이는 128-bit, 키 길이는 128, 192, 256-bit 세 종류를 지원한다[4]. 자세한 매개변수는 Table1.과 같다. 가장 널리 사용되는 AES 대비 약 1.5배 빠른 암호화가 가능하며, 2019년 경량 블록 암호 분야 표준(ISO/IEC 29192-2:2019)으로 제정되었다[5].

Table 1. Parameters of LEA; n:block size, k:Key size, rk:round key size, r:number of rounds

알고리즘은 ARX(Addition, Rotation, eXclusive-or)구조로 이루어져 있으며, 입력 받은 블록은 32-bit State로 나뉘어져 암호화가 진행된다. 전체적인 알고리즘 구조는 Fig.1.과같다.

Fig. 1. Algorithm Structure of LEA

2.2 CTR(Counter) 운용 모드

블록 암호 운용 방식에는 ECB, CBC, CTR 등 여러 운용 방식이 존재한다. 그중 CTR 운용 모드는 고정된 상수를 사용하는 Nonce 값과 변수인 Counter 값이 결합한 값을 입력값으로 사용하여 암호화를 진행하고 마지막에 평민과 XOR 하는 방식으로 암호화가 진행된다[6]. 이때 Counter 값을 통해 현재 블록이 몇 번째 블록인지 알 수 있으며, 각 블록이 이전 블록에 의존하지 않기 때문에 병렬적으로 동작하는 것도 가능하다.

Fig. 2. Counter Operation mode of block cipher

2.3 GCM(GaloisCounterMode) 운용 모드

GCM 운용 모드는 데이터의 기밀성과 무결성을제공하는운영모드이다.기밀성은CTR운용모드를 통해 암호화되어 제공되며, 무결성은 암호화된 데이터와 AAD 데이터를활용하여GHASH 함수연산을 통해서 제공된다. GHASH 함수에서는 Galois Field(GF) 곱셈연산을통해인증Tag 생성한다. 이때 GF 곱셈 연산은  P(x) = x128 + x7 + x2 + x + 1 를 적용한 GF(2128)상에서 연산된다[7].

Fig.3. 은 편의를 위해 2개의 블록을 암호화하고 인증 Tag 값을 연산하는 과정을 도식화한 그림이다. H는 0으로 이루어진 값을 암호화 한 값을 의미한다. Y는 CTR 운용 모드에서 Counter 값이 0일 때의 암호화 값을 의미한다. 이전에 연산된 H와 추가 인증 데이터(Additional Authentication Data:AAD)가 AAD의 블록의 수만큼 GF 곱셈 연산을 진행한다. 이후 CTR 운 용 모드에서 연산된 암호화 값들과 GF 곱셈 연산 진행하며 인증 Tag 값이 출력된다.

Fig. 3. GCM Operation mode of block ciphe

2.4 RISC-V Processor

캘리포니아 대학교 버클리에서 2010년부터 개발 중인 RISC(Reduced Instruction Set Computer) 기반의 컴퓨터 아키텍처이다[8]. RISC-V는 RV32I, RV64I의 두 가지 모델이 있으며, 각각 32-bit, 64-bit 레지 스터를 사용한다. 본 논문에서 사용한 32-bit 구조의 RV32I는 32-bit 레지스터 32개를 제공하며, 각각의 레지스터 용도는 Table 2. 와 같다[9]

Table 2. Purpose of RISC-V Register

Table 3.은 RV32I에서 사용하는 기본적인 명령어와 본 논문에서 활용한 명령어를 확인할 수 있다. 명령어 사용은 opcode destination, oprand1, oprand2 순으로 사용된다. 예를 들어 ADD a0, a1, a2 는 a1 register와 a2 register의 덧셈 연산이 a0 register에 저장된다.

Table 3. Instruction of RISC-V

III.구현기법

본 논문에서는 LEA-CTR 운용모드 최적화 구현을 진행하며, 이를 활용한 LEA-GCM 운용 모드의 구현을 진행한다. 본 장의 구성은 LEA-CTR 운용 모드 구현을 설명하고, GCM 운용 모드 적용에 대해 설명한다.

3.1 LEA-CTR 구현

LEA-CTR 최적화 구현을 위해 CTR 운용 모드의 특성을 활용한 사전 연산 최적화기법과 레지스터 간의 이동을 생략하고 고정된 레지스터로 연산을 진행하는 고정 레지스터 사용 기법을 설명한다.

3.1.1 사전 연산 최적화

CTR 운용 모드는 고정된 Nonce 값과 변수인 Counter 값을 결합하여 입력값으로 사용한다. 이때 고정된 Nonce 값으로 인하여 Counter 값이 바뀌어 도 특정 라운드까지 암호화가 진행될 때, 각 라운드에서 고정된 값이 존재하게 된다. 따라서 사전 연산을 통해 고정된 값을 얻고 암호화를 진행하게 되면 고정된 값을 얻을 때를 제외하고 다음 블록의 암호화가 진행될 때는 일정 부분의 연산을 생략할 수 있다.

라운드가 진행됨에 따라 확산이 이루어지는 과정과 고정되는 값은 Fig.4.와 같다.

Fig. 4. Counter value diffusion process

Fig.4.에 색이 채워진 부분은 Counter 값이 변하였을 때, 영향을 받는 부분이다. Counter 값이 변하였을 때 각 라운드가 진행됨에 따라서 영향을 받는 부분이 고정되어 있는 것을 확인할 수 있으며, 3 라운드에서 전체 확산이 이루어지는 것을 확인할 수 있다. 1라운드에서는 X₁[1], X₁[2], 2라운드에서는 X₂[1]의 값이 Counter 값이 증가하여도 고정된 Nonce 값으로 인해 값이 고정된다. 따라서 해당 값을 매번 연산할 필요 없이 사전 연산을 통해 값을 얻고, 다음 블록을 연산할 때는 해당 값을 얻기 위한 연산을 생략할 수 있다.

또한 암호화 입력 값으로 사용되는 Nonce 값 96-bit 전부를 불러올 필요 없이 X₁[0]을 얻기 위해 사용되는 32-bitNonce 값만 필요하다. X₁[3] 값의 경우 Counter 값이 그대로 옮겨지기 때문에, 1라운드에서 의연 산은 X₁[0]의 값만 연산하게 된다.

결과적으로 평문 블록 한 개의 암호화 과정에서 6 번의 라운드 키 XOR 연산, 3번의 Addition 연산, 3번의 Rotation 연산이 생략 가능하다.

3.1.2 고정 레지스터 사용

LEA의 암호화 과정에서 각 State들은 다음 라운드로 넘어가면서 옆 State와 자리를 바꿔가며 암호화가 진행된다. 또한 Xi[0] 값은 연산과정 없이 Xi+1[3]으로 값이 이동하게 된다. 이러한 이동하는 과정을 생략하고 고정된 자리에서 연산을 진행하게 되면 값이 이동하는 연산을 생략할 수 있다. 즉 Xi[0]의 값이 다음 라운드에서도 Xi+1[0]으로 그대로 고정 되게 된다.

각 State의 이동이 생략됨에 따라서 연산의 각 라운드에 맞춰 연산의 수정이 필요하게 된다. 4개의 State가 라운드당 한 칸씩 이동하며 암호화가 진행돼 기 때문에 4라운드가 진행되게 되면 처음의 위치로 다시 돌아오게 된다. 따라서 4라운드 단위로 반복된 연산을 진행하게 된다.

이로 인해 전체 암호화 과정에서 128-bit 치 길이 기준으로 보았을 때, 24라운드가 진행되기 때문에 Xi[0]의 값이 Xi+1[3]으로 이동하는 연산을 24 번 생략 가능하다.

3.2 LEA-GCM 구현

본 장에서는 최적화된 LEA-CTR 구현을 활용하는 LEA-GCM 구현에 관하여 설명한다. GCM 운용 모드는 CTR 운용 모드로 암호화가 진행되고, 암호화된 암호문을 GHASH 함수 연산을 통해 인증 Tag 값을 생성한다.

구현은 Fig.3.에서 볼 수 있듯이, CTR을 통해 암호화하는 부분과 GHASH함수 연산을 통해 인증Tag를 생성하는 부분으로 나뉜다.

GCM에서는 CTR 암호화 과정에서 Counter=0일 때 암호화 한 값을 Y 값으로써 사용한다. 따라서 기존 구현에서 약간의 수정을 통해 Counter=1부터 암호화 하나 값을 평민과 XOR 하여 암호문을 생성한다. 결과적으로 GHASH 함수에서 마지막 연산에 필요한 Y 값을 CTR 암호화 과정에서 같이 연산한다. 예를 들어 3개 의 블록(즉, 입력 길이가 384-bit)을 CTR 암호화를 진행할 때, 기존 LEA-CTR에서는 Counter가 0, 1, 2 으로 암호화되지만, GCM 운용 모드에서는 Counter 가 하나 더 추가되어 0, 1, 2, 3으로 암호화가 된다.

GHASH함수에서는 GaloisField(GF)곱셈연산을 진행한다. 따라서GF(2128) 곱셈 연산의 구현이 필요하다. GF 곱셈 연산의 수도 코드는 Table 4. 와같다.

Table 4. Pseudocode of GF(2128) multiplication

수도 코드를 어셈블리로 변환한 코드는 Table5. 와 같다. GF 곱셈 연산의 구현은 64-bit 단위로 진 해 되며, 32-bit 레지스터를 사용하기 때문에 64-bit 에 맞춰 두 개의 레지스터에 64-bit의 상위 32-bit 와 하위 32-bit를 나누어 저장하여 연산을 진행한다.

Table 5.는 GF 곱셈 연산 128-bit 중에서 상위 64-bit의 연산을 의미한다. 하위 64-bit 연산도 위와 동일한 코드이며 레지스터의 차이만 존재한다.

Table 5. Assembly code of GF(2128) multiplication( register pupose; t0, t1, t2, t3 : input X; s3, s2 : High 64-bit of input Y; a5 : 0xe1; a6 : count; a7 : 0x80000000; t4, t5 : temp register

loop1:은 Table4.의 5번 6번 줄에 해당하는 코드이다. beq 명령어로 xi의 값이 0이면 Branch1:로 넘어가며 1일 경우 6번 줄의 연산을 진행하고 Branch1:로 넘어간다.

Branch1:은 Vi ≫1의 연산을 진행한다. 128-bit 단위의 Shift Right를 해야 하기 때문에 4개의 레지스터 간에 비트 이동이 필요하다. data-checked="false">20번째 줄에서 Vi의 최하위비트가 0일 경우 Branch2:로 넘어가며 1일 경우 R(0xe1)의 값과 XOR 연산된다. 이때 0xe1은 하위 bit는 0이기 때문에 상위 32-bit 레지스터에만 연산한다.

Branch2:는 반복 횟수를 줄이고 xi의 값을 다음 xi+1 값으로 바꾸는 연산을 진행한다. xi+1값은 xi 값을 Shift Right를 통하여 최하위 bit를 다음 비트의 값으로 바꾸는 연산을 진행한다.

IV.성능평가

본 논문에서는 Si Five 사의 HiFiveRevB보드를 사용하여 측정을 진행하였으며, SiFive 사의 FreedomStudio를 사용한다.

32-bitRISC-V 상에서의 LEA-CTR 최적화 구현에 관한 기존 연구가 없다. 따라서 같은 32-bit RISC-V 플랫폼 상에서 LEA 최적화 구현 연구인 Kwaketal.[10]과 성능 비교를 진행하였다. 해당 결과는 Table6. 과 같다.

본 논문에서 제안한 기법을 활용하여 128-bit 하나의 블록을 암호화할 때의 LEA-CTR의 Cycle을 나타낸다. 기존 LEA 최적화 구현을 진행한 연구 대 비 2%의 성능 향상을 확인하였다.

마찬가지로 32-bitRISC-V 상에서의 LEA-GCM 구현 또한 기존 연구가 없기 때문에 성능 비교 없이 성능 측정 결과만 나타낸다. 성능 측정 결과는 Table 7. 과 같으며 한 번의 GF 곱셈 연산(GF_Mult), GCM 운용모드에서의 CTR 암호화(CTREncrytion), 인증 Tag를 생성하는 GHASH 함수(GHASH)를 나누어 성 늘 측정을 진행하였다. 입력 데이터 길이는 16-byte, 64-Byte, 128-Byte로 나누어 측정하였으며, AAD 길이는 128-bit를 사용하였다.

Table 6. Performance Result of LEA-CTRon32-bit RISC-V(unit:cycle)

Table 7. Performance Result of LEA-GCM on 32-bit RISC-V

LEA-GCM의 CTR 암호화에서 16-byte를 암호화하는데 1489cycle이 발생한다. 데이터 길이는 16-byte이지만 실제로 암호화는 2개의 블록 (32-byte)을 암호화하기 때문에 이전 LEA-CTR 성능과 2배 정도의 차이를 보여준다. 이는 GHASH 에서 사용될 Y(count=0일 때의 암호화 값)를 연 산하기 위해 한 개의 블록을 더 암호화하기 때문이다. 결과적으로 CTR 암호화와 GHASH 함수 모두 데이터 길이가 길어질수록 좀 더 나은 성능을 보여준다.

V.결 론

본 논문에서는 LEA 블록 암호의 CTR 운용 모드와 CTR 운용 모드를 활용하는 GCM 운용 모드의 구현을 진행하였다. 최적화 구현을 위해 CTR 운용 모드에서의 고정된 Nonce 값의 특성을 활용하여 사전 연산을 통한 연산 생략과 State고 정을 통해 State 권 값의 이 동을 생략한 최적화 구현을 제안한다. 제한 기법을 통 해 암호화 과정에서 6번의 라운드 키 XOR 연산, 3번의 Addition 연산, 3번의 Rotation 연산이 생략 가능하다. 또한 값의 이동을 생략하여 Xi[0]의 값이 Xi+1[3]으로 이동하는 연산을 24번 생략 가능하다. 이를 활용하여 GCM 운용 모드에서의 CTR 암 호화에 제안 기법을 적용하여 암호화를 진행하며, GaloisField(GF) 곱셈 연산을 사용하는 GHASH 함수 구현을 통해, 기밀성과 무결성을 동시에 제공하는 GCM 운용 모드 구현을 진행하였다. 결과적으로 기존의 연구 대비LEA-CTR 에서는 2%의 성능 향상을 보여준다. 또한 GCM 운용 모드의 경우 LEA-CTR 최적화 구현을 적용 가능함을 보여주며, 추후 다른 연구에서 성능 지표로 사용될 수 있도록 성능을 제시하였다.

References

  1. NIST, Lightweight Cryptography: Project Overview, https://csrc.nist.gov/projects/lightweight-cryptography, 2021.
  2. Young-Beom Kim, Hyeok-Dong Kwon, Sang-Woo An, Hwa-Jeonng Seo and Seong-Chung Seo, "Efficient Implementation of ARX-Based Block Ciphers on 8-bit AVR Microcontrollers," Mathematics 2020. vol. 8, no. 10, 1837., Oct 2020
  3. Jin-Gyo Song and Seog-Chung Seo, "Efficient Parallel Implementation of CTR Mode of ARX-Based Block Ciphers on ARMv8 Microcontrollers," Applied Sciences 2021. vol. 11, no. 6, 2548., Mar. 2021.
  4. D.J Hong, et al. "LEA: A128-Bit Block Cipher for Fast Encryption on Common Processors," WISA 2013: Revised Selected Papers of the 14th International Workshop on Information Security Applications, Volume 8267, pp 3-27, Aug. 2013.
  5. ISO. "ISO/IEC 29192-2:2019 Information Security-Lightweight Cryptography-Part 2: Block Ciphers," International Organization for Standardization, pp 56, Nov. 2019.
  6. H. Lipmaa, P. Rogaway and D. Wagner, "CTR-mode encryption," First NIST Workshop on Modes of Operation, Vol. 39, Sep. 2000.
  7. D. McGrew and J. Viega, "The Galois/counter mode of operation(GCM)," submission to NIST Modes of Operation Process, 20, 0278-0070, May. 2005.
  8. A.Waterman and K.Asanovic, "The RISC-V Instruction Set Manual Volume I: User-Level ISA Document Version 2.2," UCBerkeley Tech., May. 2017.
  9. A.Waterman, Y.Lee, D.Patterson, and K. Asanovic, "The risc-v instruction set manual, volume i: Baseuser-level isa," UCB/EECS-2011-62 116, UCBerkeley Tech., May. 2011.
  10. Y.J. Kwak, Y.B. Kim, S.C. Seo. "Benchmarking Korean Block Ciphers on 32-Bit RISC-V Processor," Journal of the Korea Institute of Information Security & Cryptology, 31(3), pp. 331-340, Jun. 2021. https://doi.org/10.13089/JKIISC.2021.31.3.331