검수요청.png검수요청.png

"경량암호"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
76번째 줄: 76번째 줄:
 
* [[HIGHT]]
 
* [[HIGHT]]
  
{{암호 알고리즘|토막글}}
+
{{암호 알고리즘|검토 필요}}

2020년 8월 26일 (수) 16:07 판

경량암호(Lightweight Cryptography)란 현재 연구 개발 및 표준화가 가장 활발한 암호기술 분야 중 하나로, 다양한 리소스에 제약이 있는 장치를 위한 암호화 하위 영역이다. 가용 자원이 제한된 다양한 환경에서 효율적으로 구현되고 동작할 수 있는 암호 알고리즘을 의미한다. HIGHT, LEA, CLEFIA, DESXL, KASUMI, PRESENT 등이 경량암호 알고리즘에 속한다.

개요

사회의 전반적인 생활 영역에 사물인터넷 기기가 많아지자 이를 안전하게 지킬 보안이 중요한 문제가 되었다. HP의 2015년 보고서에 의하면 10개의 사물인터넷 기기중 7개가 인터넷이나 LAN과 통신할 때 암호화를 하지 않았다는 결과가 나왔다. 이러한 스마트 기기의 보안을 따로 중점적으로 보는 이유는 사물인터넷의 특성에 따른 하드웨어의 제한된 면적과 전력 소비량, 메모리 크기 등의 제약을 받기 때문이다. 이런 제한된 환경에서 필요한 것이 바로 경량 암호 기술이다. 경량 암호 기술은 현재 연구 개발 및 표준화가 가장 활발한 암호기술 분야 중 하나로, 경량 암호기술 외에는 미국 국립표준기술연구소가 공모 사업을 진행하고 있는 양자컴퓨팅에 안전한 공개키 암호가 있고, 도청에 대해 물리적으로 완벽한 안전성을 제공하는 양자키분배 기술도 있다.

기존에는 AES와 DES와 같은 암호화 방식이 사용되고 있다. 스마트 기기 또한 높은 보안을 보장하는 AES를 적용해도 문제는 크게 없지만, 경량 알고리즘을 사용할 때와 비교하면 제한된 환경으로 인하여 속도가 감소하거나 기기에 과부하 현상이 일어날 수 있어 낮은 성능을 보여준다. 따라서 다양한 경량 암호 알고리즘의 종류나 특징을 분석하여 사물인터넷 환경에 보다 적합한 알고리즘을 적용해야만 한다.

경량 블록 암호 알고리즘을 형태에 따라 분류하면 크게 SPN 형태와 파이스텔(Feistel) 형태로 나뉜다. SPN 형태는 S-box와 P-box를 사용하며, 병렬 연산이 가능하고 암호화와 복호화 모듈이 동일하지 않다는 특징을 가지고 있다. SPN 형태의 대표적인 예시가 바로 가장 널리 사용되는 AES이다. 파이스텔 형태는 ARX-Based라고도 하며, 모듈러 연산, XOR 연산을 사용한다. 파이스텔 형태의 대표적인 예시가 DES인데, 보안에 취약해서 이 이상 많이 사용되지 않는 알고리즘이다.[1]

동향

경량 암호는 기존의 암호화 알고리즘 분야에서 최근 이슈가 되는 개념이다. 초연결 시대가 도래함에 따라 더 작은 기기에서, 더 많은 데이터를, 더 빠르게 암호화해야할 필요성이 대두되고 있으며, 이에 따라 ISO/IEC는 경량 암호를 하나의 분야로 보고 표준화를 진행하고 있다. 경량 암호 표준은 다양하게 나뉘는데, 가장 논의가 치열하면서 기술 집약적인 분야가 바로 블록암호이다. 일본의 프레젠트(PRESENT)와 일본의 소니에서 만든 클레피아(CLEFIA)를 예로 들 수 있는데, 실질적인 활용도는 높지 않은 편이다.

미국 국가 안보국은 2013년에 두 개의 경량 블록암호 SIMON/SPECK를 발표했다. 기존의 블록암호보다 우수한 경량성을 갖고 있고, 미국 국가 보안국이 처음으로 공개적으로 개발한 알고리즘이기도 하다. 미국 국가 안보국은 2016년에 ISO/IEC 암호기술 그룹에 제출했지만, 2013년 스노든의 폭로로 밝혀진 백도어의 여파가 강했다. 기존에는 미국이 제안한 암호들은 ISO/IEC의 표준으로 비교적 쉽게 채택됐다. 그러나 미국 국가 보안국이 제안한 난수발생기 표준에 백도어 삽입 의혹이 발표된 후로 상황은 반전됐다. 표준화 회의에 참석한 전문가들은 설계 부분의 투명성에 대하여 계속해서 문제를 제기했고, 미국은 이에 응하여 해명을 했다. 그러나 2018년 봄 중국 회의에서 표준화 추진 취소 절차가 진행되었으며, 결국 국가 단위 투표를 진행한 끝에 2018년 8월에 표준화 추진 취소가 최종적으로 확정되었다. 국내에서는 사물인터넷 환경에 적합한 암호화 기술을 확보하기 위하여 2014년에 개발한 고속경량 블록암호 LEA를 2016년에 경량 블록암호 표준으로 제안했다. LEA는 소프트웨어에서의 최적속도를 위하여 덧셈과 비트순환, XOR만으로 연산하는 매우 간단한 구조를 채택했다. 2015년에 룩셈부르크대학 개발경량암호 성능 측정 프레임워크를 활용한 구현경진대회에서 128비트 블록암호 부분의 1위를 차지하는 등 경량 소프트웨어 환경에서 우수한 성능이 검증되었으며, 현재 가장 널리 사용되는 국제표준 블록암호 AES와 비교하여 약 1.5배 이상의 속도를 제공한다. LEA와 SIMON/SPECK 모두 사물인터넷 환경에서 우수하고 유사한 구조를 갖고 있지만, LEA는 안전한 설계로 인해 안전성이 견고하며, AES 개발 기관이자 암호관련 연구 개발 선도하는 벨기에 루벤 대학 등 제삼자의 객관적인 안전성 평가를 갖고 있다. 한편, ISO/IEC 일반 블록암호 표준에는 우리나라의 블록암호인 SEED와 HIGHT도 있다. 그러나 SEED와 HIGHT는 국제표준 AES 대비 낮은 성능을 보여주고 있어서 암호제품의 국제 경쟁력 확보에는 한계가 있다.[2]

구조

SPN 구조

SPN 기반 블록 암호화는 치환(substitute)과 순열(permutate) 과정을 혼합하여 암호화를 수행하는 것을 의미한다. 치환은 입력으로 받은 값을 일대일로 매칭되는 다른 값으로 출력하는 연산을 의미한다. 그리고 순열은 입력으로 받은 값들의 배열을 변경해서 복잡도를 높이는 연산을 말한다. 해당 연산을 통해서 평문은 암호화된 형식으로 출력하게 된다.

  • PRESENT
PRESENT는 AES 기반의 경량 블록 암호 알고리즘이다. 블록 사이트는 64비트, 키 사이즈는 80바이트와 128비트 두 종류를 가지고 있어, 64비트의 평문과 80비트의 키를 사용한다. 전체 구조는 4비트의 S-BOX와 XOR 및 비트 시프트로 연산되며 32라운드로 구성되어 있다. 암호화 강도는 AES와 비교하면 암호화 등급이 조금 낮지만, 하드웨어 설계에서는 훨씬 좋은 성능을 갖고 있는 알고리즘이다. AES에 비해 2.5배 작은 하드웨어 설계가 가능하고, RFID, 스마트카드, USN 같은 시스템에 사용하기 위해서 면적과 소비전력을 개선하여 효율성을 높인 암호 알고리즘이다.
PRESENT는 차분 오류 공격이 제기된 바가 있다. 부채널 공격 기법에 해당하는 차분 오류 공격은 암호의 안정성 분석에서도 자주 사용되는 방식이다. 공격 방법은 다음과 같다. 공격자 이브는 총 31라운드 중에서 28라운드의 입력 레지스터에 2바이트 오류를 입력한다고 하자. 이를 통해 80비트 키의 경우에는 3개의 오류를 이용하여 평균 개의 후보 비밀키를 얻을 수 있다. 비밀키는 이러한 과정을 통해 복구될 수 있다.
하드웨어 구현할 때는 사용된 키의 비트수가 다른 알고리즘들에 비하여 적은 편이기 때문에 적은 수의 레지스터를 사용한다. 한 라운드동안 17개의 S-BOX를 병렬로 사용한 모듈과 17라운드동안 1개의 S-BOX를 순차적으로 사용한 모듈을 모두 구현한다. 파이스텔 구조가 아니므로 복호화를 하기위해서 각 함수의 역함수를 모두 구현한다.
  • CLEFIA
소니에서 개발한 AES와 유사항 형태의 블록암호 알고리즘이다. AES처럼 128, 192, 256비트의 세 가지 키를 사용할 수 있으며, 128비트의 평문을 암호화한다. 구조상으로는 파이스텔 형태를 취하고 있고, 키의 크기에 따라 라운드 수와 동장이 조금씩 변형되고, 18, 22, 26 라운드로 구성되어 있다. 기본적으로 128비트의 평문은 4개의 32비트 데이터블록으로 나뉘어 연산된다. 키 화이트닝 기법이 사용되었고, 데이터 처리와 키 스케줄링의 두 부분으로 나뉘었다. 내부 함수에는 두 종류의 S-Box가 사용되고, 데이터 처리부와 키 스케줄링에서 혼용된다. CLEFIA는 DRM 시스템에 적용하기 위해서 만들어진 알고리즘이기도 하다. 여기서 DRM 시스템이란 출판자, 작가와 같은 저작권 소유자가 배포한 하드웨어나 디지털자료가 이들이 허용하고 의도한 용도로만 제한적으로 사용될 수 있도록 만드는 모든 기술을 의미한다.
CLEFIA도 다중 불능 차분 공격이 제기되었다. 소니에서 공개했던 자체 평가에서는 선형 공격, 차분 공격, 불능 차분 공격, 연관키 공격 등이 있다. 차분 오류 공격을 이용하면 128비트 키의 경우 비밀키 전체를 복구하는데 평균적으로 18개의 오류 암호문으로 복구가 가능하다. 또한, 192비트 키와 256비트 키의 경우 평균 54개의 오류 암호문으로도 복구할 수 있다.
  • mCRYPTON
기존의 CRYTON 알고리즘을 기반으로 하여 개발했지만, 대부분의 모듈은 새롭게 구성했다. 64비트의 평문과 64, 96, 128비트의 키를 사용할 수 있다. mCRYPTON은 파이스텔 형태의 구조로 총 12라운드로 구성된다. 암호화 할 때는 비선형 대치, 비트 치환, 행열 변환, 키 덧셈의 단계를 거친다. 이는 복호화 과정에서도 연산을 약간만 변형하면 그대로 계속해서 사용할 수 있는 구조로, 별도로 모듈을 추가할 필요가 없다는 장점이 있다.
  • SEA
SEA는 평문과 키, 프로세서의 종류에 따라 데이터 블록의 크기도 변화시킬 수 있는 암호 알고리즘을 말한다. SEA의 S는 Scalable의 약자이다. 소프트웨어로 구현하기 좋도록 이에 맞추어 개발되었고, 데이터와 키의 비트수에 따라 라운드나 워드의 크기가 달라지는 유연함이 특징이다. 평문과 키 모두 파이스텔 구조로 암호와 복호를 따로 구현할 필요가 없고, 내부에 있는 작은 규모의 로테이션 함수의 역만 추가하면 된다.

ARX 구조

ARX 기반 암호화는 기존의 SPN 구조와는 달리 간단히 사칙연산을 가지고 블록 알고리즘을 구성한다. 대체적으로 이는 덧셈, 회전, 그리고 XOR 연산 조합을 갖고 있다. 해당 기법의 주된 관심사는 워드 크기이며, 따라서 이에 따라 해당 사칙연산에 대한 구현 접근 방식도 결정된다.

  • LEA
2013년 국가보안기술연구소에서 개발한 GFN 구조의 국내 경량 블록 암호 알고리즘이다. 32비트 플랫폼에 최적화되어 있으며, 블록 사이즈는 128비트이고, 128/192/256 비트 키가 있다. 소프트웨어 구현 및 활용을 목적으로 설계된 알고리즘이다. 국제 표준에 등록된 PRESENT나 CLEFIA는소프트웨어보다 하드웨어를 구현하는 데 더 효율적이다. 반면에 LEA는 소프트웨어에서의 구현과 활용을 목적으로 설계되었다. 사물인터넷의 발전으로 소프트웨어 구현이 더 필요해질 수도 있다는 가능성을 고려한다면 어떤 경우에서는 LEA가 적절한 선택일 수 있다. LEA는 현재까지 알려진 모든 블록 알고리즘에 대한 공격에 안전하다. 룩셈부르크 대학교의 암호연구그룹에서 제작한 FELICS의 두 가지 측정 시나리오에서 128비트 키 블록암호들 중에서 각각 3위와 4위를 차지하여 128비트 블록 암호 중에서는 가장 뛰어난 성능을 보이는 알고리즘이다.
  • HIGHT
HIGHT는 GFS 구조의 64비트 국내 경량 블록 암호 알고리즘이다. RFID, USN 등과 같이 저전력, 경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 개발되었다. 초경량 블록 암호 알고리즘인 HIGHT은 128비트 마스터키, 64비트 평문으로부터 64비트 암호문을 출력한다. 또, 제한적 자원을 갖고 있는 환경 구현될 수 있도록 8비트 단위의 기본적인 산술 연산만으로 구성되어 있다. 따라서 SEED, AES 등 기타 알고리즘보다 비교적 간단한 알고리즘 구조로 설계되어 있다. HIGHT의 구조는 전체적으로 일반화된 파이스텔 변형 구조로 이루어져 있으며, 64비트 평문과 128비트 마스터키에서 생성된 8개의 8비트 화이트닝 키와 128개의 8비트 서브키를 입력으로 사용하여 총 32라운드를 거쳐서 64비트 암호문을 출력한다. 즉, HIGHT의 모든 연산은 8비트 프로세서에 최적화되어 있고, 8비트 소프트웨어를 구현할 때 AES-128보다 HIGHT의 성능이 더 뛰어나다. HIGHT의 라운드 키는 화이트닝 키와 LFSR을 사용하여 생성된 서브키들로만 이루어져 있다. 화이트닝 키는 마스터키의 순서를 바꿔서 사용하여 서브 키들은 마스터 키에 LFSR 값을 더해서 생성한다. 각 라운드는 64비트 파이스텔 변형구조로 이루어져 있고, 각각의 연산은 법 덧셈과 xor, F함수로 이루어져 간단하다. F한수도 기존의 암호 알고리즘에서 사용되는 복잡한 상태가 아니라 Shift와 xor로 이루어진 비교적 간단한 연산이다. 한편, HIGHT는 차분 오류 주입 공격과 부채널 공격 중 가장 강력한 차분 전력 분석이 제기되기도 했다.
하드웨어 구현과 관련한 설명은 다음과 같다. HIGHT는 AES나 SEED에서 사용하는 SBOX를 사용하지 않고, 전체적인 구조가 XOR, shift, 덧셈으로 이루어져 있기 때문에 면적을 줄이는데 있어서 다소 한계가 존재한다. 레지스터를 최대한 적게 쓰는 방법으로 구현되었고, 한 라운드의 구조가 비슷한 연산 4개를 포함하는 형태를 취하기 때문에, 한 라운드를 4클럭, 2클럭, 1클럭으로 나누어서 구현한다.
  • SIMON/SPECK
SIMON은 파이스텔 형태의 경량 블록 암호화 알고리즘이다. 미국 국가 안보국에서 제안한 알고리즘으로, 32/48/64/128 비트의 블록 사이즈가 있으며, 블록 사이즈 각각에 대해 64/72, 96/96, 128/96, 144/128, 192, 256의 키 사이즈가 있다. 라운드는 블록 사이즈 각각에 대해 32/36/42, 44/52, 54/68, 69, 72가 있다. XOR, AND 연산 등을 사용하며, 블록 크기가 다양하여 길이가 긴 데이터 암호화의 경우 상황에 맞춰서 효율적으로 선택할 수 있다.
SPECK도 미국 국가 안보국에서 제안한 경량 블록 암호화 알고리즘이며, ARX 형태이다. 32/48/64/96/128 비트의 블록 사이즈가 있고 블록 사이즈 각각에 대하여 64/72, 96/96, 128/96, 144/128, 192, 256의 키 사이즈가 있다. SPECK도 XOR 연산을 사용하며, 라운드는 블록 사이즈 각각에 대하여 22/22, 23/26, 27/28, 29/32, 33, 34가 있다.
미국 국가 안보국은 SIMON은 하드웨어 플랫폼, SPECK는 소프트웨어 플랫폼에 최적화되도록 개발했지만, 양 쪽 모두 두 영역에서 좋은 성능을 낸다. 미국 국가 안보국의 보고서에서 다른 알고리즘과 비교하고 다양한 하드웨어 상에서 성능 비교 분석을 한 결과이기 때문에 어느 정도 검증이 되어있다. 그러나 미국 국가 안복구의 보고서에서는 보안 능력과 관련한 내용은 없다.
다양한 블록과 키 길이 지원으로 여러 환경에서의 구현을 지원한다는 것이 큰 장점이지만, 48비트 블록의 보안 취약성과 ARX 구조 발전 가능성, 미국 국가 안보국을 향한 불신으로 인해 ISO/IEC 국제회의에서 표준화를 반대했다.
  • XTEA
1994년에 개발된 TEA를 개선해서 만든 암호 알고리즘이다. 62비트의 평문과 128비트의 키를 사용한다. 저전력, 적은 에너지, 빠른 속도를 목적으로 개발되었기 때문에 XOR, SHIFT, 간단한 ADD 연산만으로 구성되어 있는 것이 특징이다. 파이스텔 구조의 32라운드를 진행하는 동안 키는 변형되지 않고 구간 별로 나눈 다음, 특정한 패턴에 의해서 사용된다.[3]

구현

소프트웨어

코드의 크기를 최소화하기 위해서는 for문으로 묶어서, 나타낼 수 있는 형태로 암호화 구조가 설계되면 for문이 반복한 횟수만큼 코드의 크기를 줄일 수 있다. 해당 for문 안에도 공유되는 연산이 존재한다면 이를 묶어서 연산 효율화를 이끌 수 있는 장점도 있다. 또한 S-box 혹은 T-table 같은 사전 연산값은 사용하지 않아서 저장공간의 낭비를 피한다. 시간 최소화를 위해 목표로 하는 프로세서의 워드와 목표로 하는 암호화 알고리즘의 워드의 크기가 동일해야만 한다. 만약 해당 워드 크기가 상이하다면 이를 변환하는 연산이 추가적으로 필요한 단점이 있다. 또한 사전값을 미리 계산해서 이에 대한 연산 복잡도를 최소화하는 것이 효과적으로 구현할 수 있는 방법이다.

하드웨어

면적을 최소화하기 위해 키 사이즈와 블록 크기를 작세설정해서 이를 저장하기 위한 레지스터나 ALU의 크기를 줄이는 것이 가장 중요하다. 또한 내부 상태를 유지하기 위해 저장 공간이 사용된다면, 이에 따른 추가적인 부하가 요구된다는 문제점이 있다. 또, 복잡하지 않은 연산 구조를 활용하면 보다 효율적으로 연산 할 수 있다. 적은 비트의 S-box를 사용하거나 키 스케쥴 과정을 생략하면 면적이 최소화되는 특징이 있다. 워드 단위로 동일한 연산을 할 경우에는 공유하는 연산이 많아져서 ALU를 적게 사용하고도 연산이 가능한 장점이 있다. 시간 성능을 향상시키기 위해서는 면적을 최소화했던 특성들을 반대로 수행하는 과정도 필요하다. 만약 공유하는 자원이 지나치게 많아진다면 이를 수행하기 위해서는 이전 연산이 해당 ALU를 수행하고 난 뒤에 해당 ALU를 사용해야하기 때문에 보다 많은 시간이 필요하다. 비트 단위의 연산이 수행되는 경우 해당 비트를 처리하기 위해 바이트 단위 연산과 비교해서 보다 많은 시간이 필요하다는 단점이 있다.[3]

각주

  1. 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》
  2. 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25
  3. 3.0 3.1 서화정, 김호원, 〈[사물인터넷을 위한 경량 암호 알고리즘 구현]〉, 《정보보호학회지》,

참고자료

  • NIST 공식홈페이지 Lightweight Cryptography - https://csrc.nist.gov/projects/lightweight-cryptography
  • 한국인터넷진흥원 공식 홈페이지 암오이용활성화 - https://seed.kisa.or.kr/kisa/index.do
  • 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25
  • 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》
  • 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11

같이 보기


  검수요청.png검수요청.png 이 경량암호 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.