"경량암호"의 두 판 사이의 차이
잔글 (→참고자료) |
|||
(사용자 3명의 중간 판 17개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''경량암호'''<!--경량 암호-->( | + | '''경량암호'''<!--경량 암호-->(Lightweight Cryptography)란 현재 연구 개발 및 표준화가 가장 활발한 암호기술 분야 중 하나로, 사물인터넷 등을 스마트 기기에 탑재, 운용하기 위해 개발된 암호화 방식이다. 다양한 리소스에 제약이 있는 장치를 위한 암호화 하위 영역을 말하며, 경량암호 알고리즘은 가용 자원이 제한된 다양한 환경에서 효율적으로 구현되고 동작할 수 있는 암호 알고리즘을 의미한다. 경량암호 알고리즘에는 [[HIGHT]], [[LEA]], [[CLEFIA]], [[DESXL]], [[KASUMI]], [[PRESENT]] 등이 있다. |
== 개요 == | == 개요 == | ||
− | 사회의 전반적인 생활 영역에 사물인터넷 기기가 많아지자 이를 안전하게 지킬 보안이 중요한 문제가 되었다. HP의 2015년 보고서에 의하면 10개의 사물인터넷 | + | 사회의 전반적인 생활 영역에 사물인터넷 기기가 많아지자 이를 안전하게 지킬 보안이 중요한 문제가 되었다. HP의 2015년 보고서에 의하면 10개의 사물인터넷 기기 중 7개가 인터넷이나 LAN과 통신할 때 암호화를 하지 않았다는 결과가 나왔다. 이러한 스마트 기기의 보안을 따로 중점적으로 보는 이유는 사물인터넷의 특성에 따른 하드웨어의 제한된 면적과 전력 소비량, 메모리 크기 등의 제약을 받기 때문이다. 이런 제한된 환경에서 필요한 것이 바로 경량 암호 기술이다. 경량 암호 기술은 현재 연구 개발 및 표준화가 가장 활발한 암호기술 분야 중 하나로, 경량 암호기술 외에는 미국 [[국립표준기술연구소]]가 공모 사업을 진행하고 있는 양자컴퓨팅에 안전한 공개키 암호가 있고, 도청에 대해 물리적으로 완벽한 안전성을 제공하는 [[양자키분배]] 기술도 있다. |
− | 기존에는 | + | 기존에는 [[AES]]과 [[DES]]과 같은 암호화 방식이 사용되고 있다. 스마트 기기 또한 높은 보안을 보장하는 AES를 적용해도 문제는 크게 없지만, 경량 알고리즘을 사용할 때와 비교하면 제한된 환경으로 인하여 속도가 감소하거나 기기에 과부하 현상이 일어날 수 있어 낮은 성능을 보여준다. 따라서 다양한 경량 암호 알고리즘의 종류나 특징을 분석하여 사물인터넷 환경에 더욱 적합한 알고리즘을 적용해야만 한다. |
− | 경량 블록 암호 알고리즘을 형태에 따라 분류하면 크게 SPN 형태와 [[파이스텔]](Feistel) 형태로 나뉜다. SPN 형태는 S- | + | 경량 블록 암호 알고리즘을 형태에 따라 분류하면 크게 [[SPN]] 형태와 [[파이스텔]](Feistel) 형태로 나뉜다. SPN 형태는 [[S-box]]와 P-box를 사용하며, 병렬 연산이 가능하고 암호화와 복호화 모듈이 동일하지 않다는 특징을 가지고 있다. SPN 형태의 대표적인 예시가 바로 가장 널리 사용되는 AES이다. 파이스텔 형태는 ARX-Based라고도 하며, 모듈러 연산, [[배타적 논리합]] 연산을 사용한다. 파이스텔 형태의 대표적인 예시가 DES인데, 보안에 취약해서 이 이상 많이 사용되지 않는 알고리즘이다.<ref name='박채원 알고리즘 분석'> 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》 </ref> |
− | == | + | == 역사 == |
− | 경량 | + | === 과거 === |
+ | 경량 대칭키 암호 알고리즘은 2001년 AES 표준화 이후로 본격적으로 연구되기 시작했다. 서버나 PC 등 대부분의 환경의 암호화를 AES가 맡게 되었지만, 경량 환경은 AES의 설계에서 고려된 것이 아니었기 때문이다. 또, 컴퓨터 시스템과 네트워크 기술의 발전은 곧 모든 장비의 소형화와 지능화라는 결과로 이어지기 때문에, 하드웨어나 소프트웨어의 최적화는 제품의 성능이나 기능 향상, 개발 비용의 최소화 등에 매우 중요한 역할을 맡고 있다. 암호학자들은 경량 암호 알고리즘을 가용 자원이 제한된 다양한 환경에서 효율적으로 구현하고 동작할 수 있는 암호 알고리즘이라고 정의한다. 이러한 경량 블록 암호 알고리즘의 초기는 설계 초점을 하드웨어 구현 면적의 최소화에 두었다. 체스 2006에서 발표된 경량 블록 암호 HIGHT는 하드웨어 구현 면적을 최소화하기 위해서 8비트 산술연산으로 라운드 함수를 구성했다. 다른 말로는 사용된 연산자들의 앞글자를 따서 ARX 구조로 불리기도 한다. 체스 2007에서 경량 블록 암호 PRESENT가 발표되었다. 이 역시 하드웨어 구현 면적의 최소화를 위해 노력했는데, 4비트 S-box와 비트 치환으로 라운드 함수를 구성했다. 4비트 S-box는 AES의 8비트 S-box보다 복잡도가 매우 낮아서 하드웨어의 구현 면적이 좁고 비트 치환이 단순히 비트의 위치를 옮겨주는 연산이기 때문에 별도의 구현 비용 또한 발생하지 않는다. FSE 2007에서 발표된 경량 블록 암호 CLEFIA는 위의 두 블록 암호와 다른 경량성 정의에 기반한다. CLEFIA의 설계자들은 AES와 동일한 블록길이와 키 길이를 고수해서 언제나 동일한 안전성을 제공할 수 있도록 개발했다. 또, 더 강력한 확산 계층을 적용해서 라운드 수를 줄여서 결과적으로 암호화 속도가 향상되도록 개발했다. 즉, 동일한 안전성과 구현 면적에서 암호화 속도가 빠르다면 전력 소모가 감소한다는 관점에서 경량성을 강조했다. | ||
− | + | 경량암호 HIGHT와 PRESENT가 발표된 뒤의 경량 블록 암호 설계 관련 연구 경향은 1) 경량 블록 암호 구현 방법의 다양화, 2) 소프트웨어 경량의 개념 등장, 3) 하드웨어 및 소프트웨어 경량 구현에 적합한 연산들에 대한 연구, 4) 블록 암호의 가장 대표적인 안정성 분석 방법인 차분 공격과 선형 공격에 사용될 수 있는 특성들을 효율적으로 탐색하는 방법, 이렇게 네 가지로 정리되기도 한다. 하드웨어 경량 구현에서는 면적의 최소화 구현, 면적 대비 속도 최대화 구현과 관련한 연구가 진행되었고, ASIC 구현 프로세스에 따라 구현한 결과의 비교 분석 연구 또한 많다. 소프트웨어 경량 개념 등장은 저가형 중앙처리장치의 발전으로 소형화 영역이 더 이상 하드웨어만의 것이 아니게 되었기 때문에 연구가 증가했다. 경량 소프트웨어 구현에 적합한 암호 알고리즘의 필요성 증가에 따라, 코드 크기 최소화 구현, 코드 크기 대비 속도 최대화 구현, 속도 최대화 구현에 관한 연구가 진행되었다. <ref> 홍득조, 〈[경량 블록암호 알고리즘 설계 연구 동향]〉, 《정보보호학회지》, 2020-06 </ref> | |
− | == | + | === 동향 === |
− | + | 경량 암호의 동향을 분석하자면, 암호화 알고리즘 분야에서 최근 이슈가 되고 있는 주제 중 하나이다. 초연결 시대가 도래함에 따라 더 작은 기기에서, 더 많은 데이터를, 더 빠르게 암호화해야 할 필요성이 대두되고 있으며, 이에 따라 ISO/IEC는 경량 암호를 하나의 분야로 보고 표준화를 진행하고 있다. 경량 암호 표준은 다양하게 나뉘는데, 가장 논의가 치열하면서 기술 집약적인 분야가 바로 블록 암호이다. 일본의 PRESENT와 일본의 소니에서 만든 CLEFIA를 예로 들 수 있는데, 실질적인 활용도는 높지 않은 편이다. | |
− | |||
− | |||
− | + | 미국 국가 안보국은 2013년에 두 개의 경량 블록 암호 SIMON/SPECK를 발표했다. 기존의 블록 암호보다 우수한 경량성을 갖고 있고, 미국 국가 보안국이 처음으로 공개적으로 개발한 알고리즘이기도 하다. 미국 국가 안보국은 2016년에 ISO/IEC 암호기술 그룹에 제출했지만, 2013년 스노든의 폭로로 밝혀진 백도어의 여파가 강했다. 기존에는 미국이 제안한 암호들은 ISO/IEC의 표준으로 비교적 쉽게 채택됐다. 그러나 미국 국가 보안국이 제안한 난수 발생기 표준에 백도어 삽입 의혹이 발표된 후로 상황은 반전됐다. 표준화 회의에 참석한 전문가들은 설계 부분의 투명성에 대하여 계속해서 문제를 제기했고, 미국은 이에 응하여 해명했다. 그러나 2018년 봄 중국 회의에서 표준화 추진 취소 절차가 진행되었으며, 결국 국가 단위 투표를 진행한 끝에 2018년 8월에 표준화 추진 취소가 최종적으로 확정되었다. 국내에서는 사물인터넷 환경에 적합한 암호화 기술을 확보하기 위하여 2014년에 개발한 고속 경량 블록 암호 LEA를 2016년에 경량 블록 암호 표준으로 제안했다. LEA는 소프트웨어에서의 최적 속도를 위하여 덧셈과 비트 순환, 배타적 논리합만으로 연산하는 매우 간단한 구조를 채택했다. 2015년에 룩셈부르크대학 개발 경량암호 성능 측정 프레임워크를 활용한 구현경진대회에서 128비트 블록 암호 부분의 1위를 차지하는 등 경량 소프트웨어 환경에서 우수한 성능이 검증되었으며, 현재 가장 널리 사용되는 국제표준 블록 암호 AES과 비교하여 약 1.5배 이상의 속도를 제공한다. LEA와 SIMON/SPECK 모두 사물인터넷 환경에서 우수하고 유사한 구조로 되어 있지만, LEA는 안전한 설계로 인해 안전성이 견고하며, AES 개발 기관이자 암호 관련 연구 개발 선도하는 벨기에 루벤 대학 등 제삼자의 객관적인 안전성 평가가 있다. 한편, ISO/IEC 일반 블록 암호 표준에는 우리나라의 블록 암호인 [[SEED]]과 HIGHT도 있다. 그러나 SEED과 HIGHT는 국제표준 AES 대비 낮은 성능을 보여주고 있어서 암호제품의 국제 경쟁력 확보에는 한계가 있다.<ref> 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25 </ref> | |
− | |||
− | === | + | == 구조 == |
− | + | === SPN 구조 === | |
− | + | SPN 기반 블록 암호화는 치환(substitute)과 순열(permutate) 과정을 혼합하여 암호화를 수행하는 것을 의미한다. 치환은 입력으로 받은 값을 일대일로 매칭되는 다른 값으로 출력하는 연산을 의미한다. 그리고 순열은 입력으로 받은 값들의 배열을 변경해서 복잡도를 높이는 연산을 말한다. 해당 연산을 통해서 평문은 암호화된 형식으로 출력하게 된다. | |
− | |||
− | * ''' | + | * '''[[PRESENT]]''' |
− | : | + | :PRESENT는 AES 기반의 경량 블록 암호 알고리즘이다. 블록 사이즈는 64비트, 키 사이즈는 80바이트와 128비트 두 종류를 가지고 있어, 64비트의 평문과 80비트의 키를 사용한다. 전체 구조는 4비트의 S-box와 배타적 논리합 및 비트 시프트로 연산 되며 32라운드로 구성되어 있다. 암호화 강도는 AES와 비교하면 암호화 등급이 조금 낮지만, 하드웨어 설계에서는 훨씬 좋은 성능을 갖는 알고리즘이다. AES보다 2.5배 작은 하드웨어 설계가 가능하고, RFID, 스마트카드, USN 같은 시스템에 사용하기 위해서 면적과 소비전력을 개선하여 효율성을 높인 암호 알고리즘이다. |
− | :CLEFIA도 다중 불능 차분 공격이 제기되었다. 소니에서 | + | :PRESENT는 차분 오류 공격이 제기된 바가 있다. 부 채널 공격 기법에 해당하는 차분 오류 공격은 암호의 안정성 분석에서도 자주 사용되는 방식이다. 공격 방법은 다음과 같다. 공격자 이브는 총 31라운드 중에서 28라운드의 입력 레지스터에 2바이트 오류를 입력한다고 하자. 이를 통해 80비트 키의 경우에는 3개의 오류를 이용하여 평균 <math>2^{22.3}</math>개의 후보 비밀키를 얻을 수 있다. 비밀키는 이러한 과정을 통해 복구될 수 있다. |
+ | :하드웨어 구현할 때는 사용된 키의 비트수가 다른 알고리즘들에 비하여 적은 편이기 때문에 적은 수의 레지스터를 사용한다. 한 라운드동안 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의 약자이다. 소프트웨어로 구현하기 좋도록 이에 맞추어 개발되었고, 데이터와 키의 비트 수에 따라 라운드나 워드의 크기가 달라지는 유연함이 특징이다. 평문과 키 모두 파이스텔 구조로 암호와 복호를 따로 구현할 필요가 없고, 내부에 있는 작은 규모의 로테이션 함수의 역만 추가하면 된다. | ||
+ | |||
+ | * '''[[AES]]''' : 현재 표준으로 가장 널리 사용되는 블록 암호화 기술이다. 해당 기술은 128비트 블록 사이즈를 가지고 128, 192, 256비트와 같이 다양한 키를 통하여 암호화되는 특징이 있다. 과거의 컴퓨터는 성능이 그리 높지 않아서 8비트를 기준으로 설계되었고, 오늘날의 사물인터넷의 마이크로프로세서의 적합한 특징을 갖게 되었다. 32비트의 경우 T-table을 통해 성능을 향상할 수 있는데, 이는 곧 모든 프로세서에 높은 성능을 안겨줄 수 있다는 장점이다. AES는 라운드 함수를 반복해서 수행하는 구조를 갖고 있고, 총 4개의 단계를 반복한다. 첫 번째는 8비트의 입력을 받으면 이를 다시 8비트로 출력하는 일종의 치환 역할을 수행한다. 그 후 입력값의 배열을 섞어서 특정한 값을 곱한 값을 출력한다. 마지막으로 라운드 킷값을 현재 평문에 더해주는 방식으로 연산을 수행한다. | ||
+ | |||
+ | * '''PRINCE''' : Asiacrypt에서 제안된 알고리즘으로, Asiacrypt는 세계암호학회가 매해 주관하는 3대 암호학회 중 하나이다. PRINCE는 64비트 블록 크기를 가지며, 128비트의 키가 제공된다. 구조상으로는 SPN 구조에 12라운드이고, AED처럼 4-by-4 행렬로 내부의 구조를 정의한다. 하드웨어로 구현하면 AES-128에 비해 <math> \frac {1}{15} </math> 크기를 가진다는 특징이 있다. | ||
+ | |||
+ | * '''KLEIN''' : 64비트 블록 사이즈를 갖고 있고, 64, 80, 96비트의 키를 사용한다. 12, 16, 20라운드 연산이 파이스텔 구조를 통해서 수행되며, S-box를 통해 치환 연산이 수행된다. 16개의 4비트 값들이 묶여서 회전되는 구조를 가진다. 전체 8바이트를 두 개의 4바이트로 나누고 GF 연산을 수행한다. 그리고 해당 연산은 AES의 연산과 유사한 구조를 가진다. | ||
+ | |||
+ | * '''LED''' : [[체스]](CHES)에서 발표한 암호화 기법이다. 64비트 블록 단위 암호화가 가능하고, 64, 80, 96, 128비트의 키를 사용한다. 64비트의 경우에는 8회 그 외의 경우에는 12회의 라운드 연산을 반복한다. 개발할 때의 최소 면적과 이를 위한 구조를 염두하고 개발되었다. AES의 암호 구조를 사용하지만, 키 스캐쥴을 하지 않는 것이 큰 특징이며, 4비트를 이용한 4x4 배열을 가지고 4비트 단위로 연산을 수행한다. | ||
+ | |||
+ | * '''DESLX''' : 기존의 DES 알고리즘의 키 길이가 짧은 것을 개선하고, 그와 동시에 DES를 최소화해서 구현했다. 64비트 블록 암호화와 184비트의 키를 사용한다. 총 16라운드를 반복하고 8개의 S-box를 하나의 S-box로 축소한 장점이 있다. | ||
+ | |||
+ | * '''HummingBird-2''' : 2011년에 개발된 암호화 알고리즘으로, 16비트 블록 단위 암호화와 128비트의 키를 사용한다. 4비트 S-box, 16비트 덧셈, 배타적 논리합 등으로 구성된다. 16비트 블록을 사용함에도 128비트의 내부 상태를 사용한다는 특징이 있다. | ||
+ | |||
+ | === ARX 구조 === | ||
+ | [[ARX]] 기반 암호화는 기존의 SPN 구조와는 달리 간단히 사칙연산을 가지고 블록 알고리즘을 구성한다. 대체적으로 이는 덧셈, 회전, 그리고 배타적 논리합 연산 조합을 갖고 있다. 해당 기법의 주된 관심사는 워드 크기이며, 따라서 이에 따라 해당 사칙연산에 대한 구현 접근 방식도 결정된다. | ||
+ | |||
+ | * '''[[LEA]]''' | ||
+ | :2013년 국내에서 개발한 GFN 구조의 경량 블록 암호 알고리즘이다. 국가보안기술연구소가 과학기술정보통신부의 지원을 받으며 개발한 블록 암호로, 2019년 10월 24일에 ISO/IEC의 경량 블록 암호 표준으로 제정되었다. 기존의 국내 개발 알고리즘은 미국의 AES보다 대체로 성능이 낮아서 세계시장 진출에 어느 정도 한계가 있었으나, 새로운 설계기법을 도입해서 경량 환경에서 높은 성능을 보이도록 개발했다. LEA는 32비트 플랫폼에 최적화되어 있으며, 블록 사이즈는 128비트이고, 128/192/256비트 키가 있다. 소프트웨어 구현 및 활용을 목적으로 설계되었다. 국제 표준에 등록된 PRESENT나 CLEFIA는 소프트웨어보다 하드웨어를 구현하는 데 더 효율적이다. 반면에, LEA는 소프트웨어에서의 구현과 활용을 목적으로 설계된 알고리즘이다. 사물인터넷의 발전으로 소프트웨어 구현이 더 필요해질 수도 있다는 가능성을 고려한다면 어떤 경우에서는 LEA가 적절한 선택일 수 있다. LEA는 현재까지 알려진 모든 블록 알고리즘에 대한 공격에 안전하다. 룩셈부르크 대학교의 암호연구그룹에서 제작한 국제 경량암호 성능평가(FELICS)의 두 가지 측정 시나리오에서 128비트 키 블록 암호 중에서 각각 3위와 4위를 차지하며 128비트 블록 암호 중에서는 가장 뛰어난 성능을 보이는 알고리즘이 되었다. 벨기에의 COSIC 연구소에서 안전성을 검증받았고, 2015년에는 국가 공공 분야 암호제품 평가제도인 암호 모듈 검증제도의 검증대상에 포함되었으며, 2016년에는 KS 표준으로 제정되어 스마트그리드, 인증 시스템, 압축 암호화 등 복수 분야에서 다양하게 사용되고 있다.<ref> 홍하나 기자, 〈[http://www.ddaily.co.kr/news/article/?no=187853 국보연의 경량 블록암호 'LEA', ISO/IEC 국제 표준으로 제정]〉, 《디지털데일리》, 2019-11-04 </ref> | ||
+ | |||
+ | * '''[[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비트 파이스텔 변형구조로 이루어져 있고, 각각의 연산은 법 <math>2^8</math> 덧셈과 배타적 논리합, F 함수로 이루어져 간단하다. F 함수도 기존의 암호 알고리즘에서 사용되는 복잡한 상태가 아니라 Shift와 배타적 논리합로 이루어진 비교적 간단한 연산이다. 한편, HIGHT는 차분 오류 주입 공격과 부 채널 공격 중 가장 강력한 차분 전력 분석이 제기되기도 했다. | ||
+ | :하드웨어 구현과 관련한 설명은 다음과 같다. HIGHT는 AES나 SEED에서 사용하는 SBOX를 사용하지 않고, 전체적인 구조가 배타적 논리합, shift, 덧셈으로 이루어져 있기 때문에 면적을 줄이는 데 있어서 다소 한계가 존재한다. 레지스터를 최대한 적게 쓰는 방법으로 구현되었고, 한 라운드의 구조가 비슷한 연산 4개를 포함하는 형태를 취하기 때문에, 한 라운드를 4클럭, 2클럭, 1클럭으로 나누어서 구현한다. | ||
* '''SIMON/SPECK''' | * '''SIMON/SPECK''' | ||
− | :SIMON은 파이스텔 형태의 경량 블록 암호화 알고리즘이다. 미국 국가 안보국에서 제안한 알고리즘으로, 32/48/64/ | + | :SIMON은 파이스텔 형태의 경량 블록 암호화 알고리즘이다. 미국 국가 안보국에서 제안한 알고리즘으로, 32/48/64/128비트의 블록 사이즈가 있으며, 블록 사이즈 각각에 대해 64/72, 96/96, 128/96, 144/128, 192, 256의 키 사이즈가 있다. 라운드는 블록 사이즈 각각에 대해 32/36/42, 44/52, 54/68, 69, 72가 있다. 배타적 논리합, 논리곱 연산 등을 사용하며, 블록 크기가 다양하여 길이가 긴 데이터 암호화의 경우 상황에 맞춰서 효율적으로 선택할 수 있다. |
− | :SPECK도 미국 국가 안보국에서 제안한 경량 블록 암호화 알고리즘이며, ARX 형태이다. 32/48/64/96/ | + | :SPECK도 미국 국가 안보국에서 제안한 경량 블록 암호화 알고리즘이며, ARX 형태이다. 32/48/64/96/128비트의 블록 사이즈가 있고 블록 사이즈 각각에 대하여 64/72, 96/96, 128/96, 144/128, 192, 256의 키 사이즈가 있다. SPECK도 배타적 논리합 연산을 사용하며, 라운드는 블록 사이즈 각각에 대하여 22/22, 23/26, 27/28, 29/32, 33, 34가 있다. |
− | :미국 국가 안보국은 SIMON은 하드웨어 플랫폼, SPECK는 소프트웨어 플랫폼에 최적화되도록 개발했지만, | + | :미국 국가 안보국은 SIMON은 하드웨어 플랫폼, SPECK는 소프트웨어 플랫폼에 최적화되도록 개발했지만, 양쪽 모두 두 영역에서 좋은 성능을 낸다. 미국 국가 안보국의 보고서에서 다른 알고리즘과 비교하고 다양한 하드웨어 상에서 성능 비교 분석을 한 결과이기 때문에 어느 정도 검증이 되어있다. 그러나 미국 국가 안보국의 보고서에서는 보안 능력과 관련한 내용은 없다. |
− | :다양한 블록과 키 길이 지원으로 여러 환경에서의 구현을 지원한다는 것이 큰 장점이지만, 48비트 블록의 보안 취약성과 ARX 구조 발전 가능성, 미국 국가 안보국을 향한 불신으로 인해 ISO/IEC 국제회의에서 표준화를 반대했다.<ref name='박채원 알고리즘 분석'></ref><ref> 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11 </ref> | + | :다양한 블록과 키 길이 지원으로 여러 환경에서의 구현을 지원한다는 것이 큰 장점이지만, 48비트 블록의 보안 취약성과 ARX 구조 발전 가능성, 미국 국가 안보국을 향한 불신으로 인해 ISO/IEC 국제회의에서 표준화를 반대했다. |
+ | |||
+ | * '''XTEA''' | ||
+ | :1994년에 개발된 TEA를 개선해서 만든 암호 알고리즘이다. 62비트의 평문과 128비트의 키를 사용한다. 저전력, 적은 에너지, 빠른 속도를 목적으로 개발되었기 때문에 배타적 논리합, SHIFT, 간단한 논리곱 연산만으로 구성된 것이 특징이다. 파이스텔 구조의 32라운드를 진행하는 동안 키는 변형되지 않고 구간별로 나눈 다음, 특정한 패턴에 의해서 사용된다. | ||
+ | |||
+ | * '''KATAN''' : 체스에서 제안한 알고리즘이다. 32, 48, 64비트 블록 사이트를 가지며, 80비트의 키를 사용한다. 254번의 라운드 함수가 수행된다. 라운드마다 ga, gb 연산이 수행되고, 결괏값은 shift 되어서 저장된다. | ||
+ | |||
+ | * '''IDEA''' : 1991년에 제안된 알고리즘으로, 블록 크기는 64비트를 가지고 키 크기는 128비트를 가진다. 구조상 8.5라운드이고, IDEA에 대한 특허는 2012년에 소멸하였다. 배타적 비트OR연산과 <math>2^{16}</math> 상에서의 덧셈과 <math> 2^{16}+1 </math> 상에서의 곱셈이 수행된다. 8번의 라운드 연산 수행 후에는 0.5 라운드 연산을 통하여 암호문을 생성한다. | ||
+ | |||
+ | * '''Salsa''' : [[다니엘 번스타인]]에 의해 제안된 알고리즘이다. eStream 프로젝트에서 선택됐다. 키 크기는 256비트이고, 블록의 크기는 512비트이다. ARX 연산으로 구성되며 스트림 암호를 위한 암호화 기법이다.<ref name='박채원 알고리즘 분석'></ref><ref name='구조와 구현 관점'> 서화정, 김호원, 〈[사물인터넷을 위한 경량 암호 알고리즘 구현]〉, 《정보보호학회지》, 2015-04 </ref><ref> 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11 </ref> | ||
+ | |||
+ | == 구현 == | ||
+ | === 소프트웨어 === | ||
+ | 코드의 크기를 최소화하기 위해서는 for 문으로 묶어서, 나타낼 수 있는 형태로 암호화 구조가 설계되면 for 문이 반복한 횟수만큼 코드의 크기를 줄일 수 있다. 해당 for 문 안에도 공유되는 연산이 존재한다면 이를 묶어서 연산 효율화를 이끌 수 있는 장점도 있다. 또한 S-box 혹은 T-table 같은 사전 연산 값은 사용하지 않아서 저장공간의 낭비를 피한다. 시간 최소화를 위해 목표로 하는 프로세서의 워드와 목표로 하는 암호화 알고리즘의 워드의 크기가 동일해야만 한다. 만약 해당 워드 크기가 상이하다면 이를 변환하는 연산이 추가로 필요한 단점이 있다. 또한 사전값을 미리 계산해서 이에 대한 연산 복잡도를 최소화하는 것이 효과적으로 구현할 수 있다. | ||
+ | |||
+ | === 하드웨어 === | ||
+ | 면적을 최소화하기 위해 키 사이즈와 블록 크기를 작게 설정하여 이를 저장하기 위한 레지스터나 산술 논리 장치의 크기를 줄이는 것이 가장 중요하다. 또한 내부 상태를 유지하기 위해 저장 공간이 사용된다면, 이에 따른 추가적인 부하가 요구된다는 문제점이 있다. 또, 복잡하지 않은 연산 구조를 활용하면 보다 효율적으로 연산 할 수 있다. 적은 비트의 S-box를 사용하거나 키 스케줄 과정을 생략하면 면적이 최소화되는 특징이 있다. 워드 단위로 동일한 연산을 할 경우에는 공유하는 연산이 많아져서 산술 논리 장치를 적게 사용하고도 연산이 가능한 장점이 있다. 시간 성능을 향상하기 위해서는 면적을 최소화했던 특성들을 반대로 수행하는 과정도 필요하다. 만약 공유하는 자원이 지나치게 많아진다면 이를 수행하기 위해서는 이전 연산이 해당 산술 논리 장치를 수행하고 난 뒤에 해당 산술 논리 장치를 사용해야 하므로 보다 많은 시간이 필요하다. 비트 단위의 연산이 수행되는 경우 해당 비트를 처리하기 위해 바이트 단위 연산과 비교해서 보다 많은 시간이 필요하다는 단점이 있다.<ref name='구조와 구현 관점'></ref> | ||
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
− | * | + | * NIST 공식홈페이지 Lightweight Cryptography - https://csrc.nist.gov/projects/lightweight-cryptography |
+ | * 한국인터넷진흥원 공식 홈페이지 암호이용 활성화 - https://seed.kisa.or.kr/kisa/index.do | ||
+ | |||
* 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》 | * 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》 | ||
* 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11 | * 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11 | ||
+ | * 서화정, 김호원, 〈[사물인터넷을 위한 경량 암호 알고리즘 구현]〉, 《정보보호학회지》, 2015-04 | ||
+ | * 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25 | ||
+ | * 홍하나 기자, 〈[http://www.ddaily.co.kr/news/article/?no=187853 국보연의 경량 블록암호 'LEA', ISO/IEC 국제 표준으로 제정]〉, 《디지털데일리》, 2019-11-04 | ||
+ | * 홍득조, 〈[경량 블록암호 알고리즘 설계 연구 동향]〉, 《정보보호학회지》, 2020-06 | ||
== 같이 보기 == | == 같이 보기 == | ||
52번째 줄: | 104번째 줄: | ||
* [[HIGHT]] | * [[HIGHT]] | ||
− | {{암호 알고리즘| | + | {{암호 알고리즘|검토 필요}} |
2021년 5월 6일 (목) 20:14 기준 최신판
경량암호(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라고도 하며, 모듈러 연산, 배타적 논리합 연산을 사용한다. 파이스텔 형태의 대표적인 예시가 DES인데, 보안에 취약해서 이 이상 많이 사용되지 않는 알고리즘이다.[1]
역사[편집]
과거[편집]
경량 대칭키 암호 알고리즘은 2001년 AES 표준화 이후로 본격적으로 연구되기 시작했다. 서버나 PC 등 대부분의 환경의 암호화를 AES가 맡게 되었지만, 경량 환경은 AES의 설계에서 고려된 것이 아니었기 때문이다. 또, 컴퓨터 시스템과 네트워크 기술의 발전은 곧 모든 장비의 소형화와 지능화라는 결과로 이어지기 때문에, 하드웨어나 소프트웨어의 최적화는 제품의 성능이나 기능 향상, 개발 비용의 최소화 등에 매우 중요한 역할을 맡고 있다. 암호학자들은 경량 암호 알고리즘을 가용 자원이 제한된 다양한 환경에서 효율적으로 구현하고 동작할 수 있는 암호 알고리즘이라고 정의한다. 이러한 경량 블록 암호 알고리즘의 초기는 설계 초점을 하드웨어 구현 면적의 최소화에 두었다. 체스 2006에서 발표된 경량 블록 암호 HIGHT는 하드웨어 구현 면적을 최소화하기 위해서 8비트 산술연산으로 라운드 함수를 구성했다. 다른 말로는 사용된 연산자들의 앞글자를 따서 ARX 구조로 불리기도 한다. 체스 2007에서 경량 블록 암호 PRESENT가 발표되었다. 이 역시 하드웨어 구현 면적의 최소화를 위해 노력했는데, 4비트 S-box와 비트 치환으로 라운드 함수를 구성했다. 4비트 S-box는 AES의 8비트 S-box보다 복잡도가 매우 낮아서 하드웨어의 구현 면적이 좁고 비트 치환이 단순히 비트의 위치를 옮겨주는 연산이기 때문에 별도의 구현 비용 또한 발생하지 않는다. FSE 2007에서 발표된 경량 블록 암호 CLEFIA는 위의 두 블록 암호와 다른 경량성 정의에 기반한다. CLEFIA의 설계자들은 AES와 동일한 블록길이와 키 길이를 고수해서 언제나 동일한 안전성을 제공할 수 있도록 개발했다. 또, 더 강력한 확산 계층을 적용해서 라운드 수를 줄여서 결과적으로 암호화 속도가 향상되도록 개발했다. 즉, 동일한 안전성과 구현 면적에서 암호화 속도가 빠르다면 전력 소모가 감소한다는 관점에서 경량성을 강조했다.
경량암호 HIGHT와 PRESENT가 발표된 뒤의 경량 블록 암호 설계 관련 연구 경향은 1) 경량 블록 암호 구현 방법의 다양화, 2) 소프트웨어 경량의 개념 등장, 3) 하드웨어 및 소프트웨어 경량 구현에 적합한 연산들에 대한 연구, 4) 블록 암호의 가장 대표적인 안정성 분석 방법인 차분 공격과 선형 공격에 사용될 수 있는 특성들을 효율적으로 탐색하는 방법, 이렇게 네 가지로 정리되기도 한다. 하드웨어 경량 구현에서는 면적의 최소화 구현, 면적 대비 속도 최대화 구현과 관련한 연구가 진행되었고, ASIC 구현 프로세스에 따라 구현한 결과의 비교 분석 연구 또한 많다. 소프트웨어 경량 개념 등장은 저가형 중앙처리장치의 발전으로 소형화 영역이 더 이상 하드웨어만의 것이 아니게 되었기 때문에 연구가 증가했다. 경량 소프트웨어 구현에 적합한 암호 알고리즘의 필요성 증가에 따라, 코드 크기 최소화 구현, 코드 크기 대비 속도 최대화 구현, 속도 최대화 구현에 관한 연구가 진행되었다. [2]
동향[편집]
경량 암호의 동향을 분석하자면, 암호화 알고리즘 분야에서 최근 이슈가 되고 있는 주제 중 하나이다. 초연결 시대가 도래함에 따라 더 작은 기기에서, 더 많은 데이터를, 더 빠르게 암호화해야 할 필요성이 대두되고 있으며, 이에 따라 ISO/IEC는 경량 암호를 하나의 분야로 보고 표준화를 진행하고 있다. 경량 암호 표준은 다양하게 나뉘는데, 가장 논의가 치열하면서 기술 집약적인 분야가 바로 블록 암호이다. 일본의 PRESENT와 일본의 소니에서 만든 CLEFIA를 예로 들 수 있는데, 실질적인 활용도는 높지 않은 편이다.
미국 국가 안보국은 2013년에 두 개의 경량 블록 암호 SIMON/SPECK를 발표했다. 기존의 블록 암호보다 우수한 경량성을 갖고 있고, 미국 국가 보안국이 처음으로 공개적으로 개발한 알고리즘이기도 하다. 미국 국가 안보국은 2016년에 ISO/IEC 암호기술 그룹에 제출했지만, 2013년 스노든의 폭로로 밝혀진 백도어의 여파가 강했다. 기존에는 미국이 제안한 암호들은 ISO/IEC의 표준으로 비교적 쉽게 채택됐다. 그러나 미국 국가 보안국이 제안한 난수 발생기 표준에 백도어 삽입 의혹이 발표된 후로 상황은 반전됐다. 표준화 회의에 참석한 전문가들은 설계 부분의 투명성에 대하여 계속해서 문제를 제기했고, 미국은 이에 응하여 해명했다. 그러나 2018년 봄 중국 회의에서 표준화 추진 취소 절차가 진행되었으며, 결국 국가 단위 투표를 진행한 끝에 2018년 8월에 표준화 추진 취소가 최종적으로 확정되었다. 국내에서는 사물인터넷 환경에 적합한 암호화 기술을 확보하기 위하여 2014년에 개발한 고속 경량 블록 암호 LEA를 2016년에 경량 블록 암호 표준으로 제안했다. LEA는 소프트웨어에서의 최적 속도를 위하여 덧셈과 비트 순환, 배타적 논리합만으로 연산하는 매우 간단한 구조를 채택했다. 2015년에 룩셈부르크대학 개발 경량암호 성능 측정 프레임워크를 활용한 구현경진대회에서 128비트 블록 암호 부분의 1위를 차지하는 등 경량 소프트웨어 환경에서 우수한 성능이 검증되었으며, 현재 가장 널리 사용되는 국제표준 블록 암호 AES과 비교하여 약 1.5배 이상의 속도를 제공한다. LEA와 SIMON/SPECK 모두 사물인터넷 환경에서 우수하고 유사한 구조로 되어 있지만, LEA는 안전한 설계로 인해 안전성이 견고하며, AES 개발 기관이자 암호 관련 연구 개발 선도하는 벨기에 루벤 대학 등 제삼자의 객관적인 안전성 평가가 있다. 한편, ISO/IEC 일반 블록 암호 표준에는 우리나라의 블록 암호인 SEED과 HIGHT도 있다. 그러나 SEED과 HIGHT는 국제표준 AES 대비 낮은 성능을 보여주고 있어서 암호제품의 국제 경쟁력 확보에는 한계가 있다.[3]
구조[편집]
SPN 구조[편집]
SPN 기반 블록 암호화는 치환(substitute)과 순열(permutate) 과정을 혼합하여 암호화를 수행하는 것을 의미한다. 치환은 입력으로 받은 값을 일대일로 매칭되는 다른 값으로 출력하는 연산을 의미한다. 그리고 순열은 입력으로 받은 값들의 배열을 변경해서 복잡도를 높이는 연산을 말한다. 해당 연산을 통해서 평문은 암호화된 형식으로 출력하게 된다.
- PRESENT는 AES 기반의 경량 블록 암호 알고리즘이다. 블록 사이즈는 64비트, 키 사이즈는 80바이트와 128비트 두 종류를 가지고 있어, 64비트의 평문과 80비트의 키를 사용한다. 전체 구조는 4비트의 S-box와 배타적 논리합 및 비트 시프트로 연산 되며 32라운드로 구성되어 있다. 암호화 강도는 AES와 비교하면 암호화 등급이 조금 낮지만, 하드웨어 설계에서는 훨씬 좋은 성능을 갖는 알고리즘이다. AES보다 2.5배 작은 하드웨어 설계가 가능하고, RFID, 스마트카드, USN 같은 시스템에 사용하기 위해서 면적과 소비전력을 개선하여 효율성을 높인 암호 알고리즘이다.
- PRESENT는 차분 오류 공격이 제기된 바가 있다. 부 채널 공격 기법에 해당하는 차분 오류 공격은 암호의 안정성 분석에서도 자주 사용되는 방식이다. 공격 방법은 다음과 같다. 공격자 이브는 총 31라운드 중에서 28라운드의 입력 레지스터에 2바이트 오류를 입력한다고 하자. 이를 통해 80비트 키의 경우에는 3개의 오류를 이용하여 평균 개의 후보 비밀키를 얻을 수 있다. 비밀키는 이러한 과정을 통해 복구될 수 있다.
- 하드웨어 구현할 때는 사용된 키의 비트수가 다른 알고리즘들에 비하여 적은 편이기 때문에 적은 수의 레지스터를 사용한다. 한 라운드동안 17개의 S-box를 병렬로 사용한 모듈과 17라운드 동안 1개의 S-box를 순차적으로 사용한 모듈을 모두 구현한다. 파이스텔 구조가 아니므로 복호화를 하기 위해서 각 함수의 역함수를 모두 구현한다.
- 소니에서 개발한 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의 약자이다. 소프트웨어로 구현하기 좋도록 이에 맞추어 개발되었고, 데이터와 키의 비트 수에 따라 라운드나 워드의 크기가 달라지는 유연함이 특징이다. 평문과 키 모두 파이스텔 구조로 암호와 복호를 따로 구현할 필요가 없고, 내부에 있는 작은 규모의 로테이션 함수의 역만 추가하면 된다.
- AES : 현재 표준으로 가장 널리 사용되는 블록 암호화 기술이다. 해당 기술은 128비트 블록 사이즈를 가지고 128, 192, 256비트와 같이 다양한 키를 통하여 암호화되는 특징이 있다. 과거의 컴퓨터는 성능이 그리 높지 않아서 8비트를 기준으로 설계되었고, 오늘날의 사물인터넷의 마이크로프로세서의 적합한 특징을 갖게 되었다. 32비트의 경우 T-table을 통해 성능을 향상할 수 있는데, 이는 곧 모든 프로세서에 높은 성능을 안겨줄 수 있다는 장점이다. AES는 라운드 함수를 반복해서 수행하는 구조를 갖고 있고, 총 4개의 단계를 반복한다. 첫 번째는 8비트의 입력을 받으면 이를 다시 8비트로 출력하는 일종의 치환 역할을 수행한다. 그 후 입력값의 배열을 섞어서 특정한 값을 곱한 값을 출력한다. 마지막으로 라운드 킷값을 현재 평문에 더해주는 방식으로 연산을 수행한다.
- PRINCE : Asiacrypt에서 제안된 알고리즘으로, Asiacrypt는 세계암호학회가 매해 주관하는 3대 암호학회 중 하나이다. PRINCE는 64비트 블록 크기를 가지며, 128비트의 키가 제공된다. 구조상으로는 SPN 구조에 12라운드이고, AED처럼 4-by-4 행렬로 내부의 구조를 정의한다. 하드웨어로 구현하면 AES-128에 비해 크기를 가진다는 특징이 있다.
- KLEIN : 64비트 블록 사이즈를 갖고 있고, 64, 80, 96비트의 키를 사용한다. 12, 16, 20라운드 연산이 파이스텔 구조를 통해서 수행되며, S-box를 통해 치환 연산이 수행된다. 16개의 4비트 값들이 묶여서 회전되는 구조를 가진다. 전체 8바이트를 두 개의 4바이트로 나누고 GF 연산을 수행한다. 그리고 해당 연산은 AES의 연산과 유사한 구조를 가진다.
- LED : 체스(CHES)에서 발표한 암호화 기법이다. 64비트 블록 단위 암호화가 가능하고, 64, 80, 96, 128비트의 키를 사용한다. 64비트의 경우에는 8회 그 외의 경우에는 12회의 라운드 연산을 반복한다. 개발할 때의 최소 면적과 이를 위한 구조를 염두하고 개발되었다. AES의 암호 구조를 사용하지만, 키 스캐쥴을 하지 않는 것이 큰 특징이며, 4비트를 이용한 4x4 배열을 가지고 4비트 단위로 연산을 수행한다.
- DESLX : 기존의 DES 알고리즘의 키 길이가 짧은 것을 개선하고, 그와 동시에 DES를 최소화해서 구현했다. 64비트 블록 암호화와 184비트의 키를 사용한다. 총 16라운드를 반복하고 8개의 S-box를 하나의 S-box로 축소한 장점이 있다.
- HummingBird-2 : 2011년에 개발된 암호화 알고리즘으로, 16비트 블록 단위 암호화와 128비트의 키를 사용한다. 4비트 S-box, 16비트 덧셈, 배타적 논리합 등으로 구성된다. 16비트 블록을 사용함에도 128비트의 내부 상태를 사용한다는 특징이 있다.
ARX 구조[편집]
ARX 기반 암호화는 기존의 SPN 구조와는 달리 간단히 사칙연산을 가지고 블록 알고리즘을 구성한다. 대체적으로 이는 덧셈, 회전, 그리고 배타적 논리합 연산 조합을 갖고 있다. 해당 기법의 주된 관심사는 워드 크기이며, 따라서 이에 따라 해당 사칙연산에 대한 구현 접근 방식도 결정된다.
- 2013년 국내에서 개발한 GFN 구조의 경량 블록 암호 알고리즘이다. 국가보안기술연구소가 과학기술정보통신부의 지원을 받으며 개발한 블록 암호로, 2019년 10월 24일에 ISO/IEC의 경량 블록 암호 표준으로 제정되었다. 기존의 국내 개발 알고리즘은 미국의 AES보다 대체로 성능이 낮아서 세계시장 진출에 어느 정도 한계가 있었으나, 새로운 설계기법을 도입해서 경량 환경에서 높은 성능을 보이도록 개발했다. LEA는 32비트 플랫폼에 최적화되어 있으며, 블록 사이즈는 128비트이고, 128/192/256비트 키가 있다. 소프트웨어 구현 및 활용을 목적으로 설계되었다. 국제 표준에 등록된 PRESENT나 CLEFIA는 소프트웨어보다 하드웨어를 구현하는 데 더 효율적이다. 반면에, LEA는 소프트웨어에서의 구현과 활용을 목적으로 설계된 알고리즘이다. 사물인터넷의 발전으로 소프트웨어 구현이 더 필요해질 수도 있다는 가능성을 고려한다면 어떤 경우에서는 LEA가 적절한 선택일 수 있다. LEA는 현재까지 알려진 모든 블록 알고리즘에 대한 공격에 안전하다. 룩셈부르크 대학교의 암호연구그룹에서 제작한 국제 경량암호 성능평가(FELICS)의 두 가지 측정 시나리오에서 128비트 키 블록 암호 중에서 각각 3위와 4위를 차지하며 128비트 블록 암호 중에서는 가장 뛰어난 성능을 보이는 알고리즘이 되었다. 벨기에의 COSIC 연구소에서 안전성을 검증받았고, 2015년에는 국가 공공 분야 암호제품 평가제도인 암호 모듈 검증제도의 검증대상에 포함되었으며, 2016년에는 KS 표준으로 제정되어 스마트그리드, 인증 시스템, 압축 암호화 등 복수 분야에서 다양하게 사용되고 있다.[4]
- 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비트 파이스텔 변형구조로 이루어져 있고, 각각의 연산은 법 덧셈과 배타적 논리합, F 함수로 이루어져 간단하다. F 함수도 기존의 암호 알고리즘에서 사용되는 복잡한 상태가 아니라 Shift와 배타적 논리합로 이루어진 비교적 간단한 연산이다. 한편, HIGHT는 차분 오류 주입 공격과 부 채널 공격 중 가장 강력한 차분 전력 분석이 제기되기도 했다.
- 하드웨어 구현과 관련한 설명은 다음과 같다. HIGHT는 AES나 SEED에서 사용하는 SBOX를 사용하지 않고, 전체적인 구조가 배타적 논리합, 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가 있다. 배타적 논리합, 논리곱 연산 등을 사용하며, 블록 크기가 다양하여 길이가 긴 데이터 암호화의 경우 상황에 맞춰서 효율적으로 선택할 수 있다.
- SPECK도 미국 국가 안보국에서 제안한 경량 블록 암호화 알고리즘이며, ARX 형태이다. 32/48/64/96/128비트의 블록 사이즈가 있고 블록 사이즈 각각에 대하여 64/72, 96/96, 128/96, 144/128, 192, 256의 키 사이즈가 있다. SPECK도 배타적 논리합 연산을 사용하며, 라운드는 블록 사이즈 각각에 대하여 22/22, 23/26, 27/28, 29/32, 33, 34가 있다.
- 미국 국가 안보국은 SIMON은 하드웨어 플랫폼, SPECK는 소프트웨어 플랫폼에 최적화되도록 개발했지만, 양쪽 모두 두 영역에서 좋은 성능을 낸다. 미국 국가 안보국의 보고서에서 다른 알고리즘과 비교하고 다양한 하드웨어 상에서 성능 비교 분석을 한 결과이기 때문에 어느 정도 검증이 되어있다. 그러나 미국 국가 안보국의 보고서에서는 보안 능력과 관련한 내용은 없다.
- 다양한 블록과 키 길이 지원으로 여러 환경에서의 구현을 지원한다는 것이 큰 장점이지만, 48비트 블록의 보안 취약성과 ARX 구조 발전 가능성, 미국 국가 안보국을 향한 불신으로 인해 ISO/IEC 국제회의에서 표준화를 반대했다.
- XTEA
- 1994년에 개발된 TEA를 개선해서 만든 암호 알고리즘이다. 62비트의 평문과 128비트의 키를 사용한다. 저전력, 적은 에너지, 빠른 속도를 목적으로 개발되었기 때문에 배타적 논리합, SHIFT, 간단한 논리곱 연산만으로 구성된 것이 특징이다. 파이스텔 구조의 32라운드를 진행하는 동안 키는 변형되지 않고 구간별로 나눈 다음, 특정한 패턴에 의해서 사용된다.
- KATAN : 체스에서 제안한 알고리즘이다. 32, 48, 64비트 블록 사이트를 가지며, 80비트의 키를 사용한다. 254번의 라운드 함수가 수행된다. 라운드마다 ga, gb 연산이 수행되고, 결괏값은 shift 되어서 저장된다.
- IDEA : 1991년에 제안된 알고리즘으로, 블록 크기는 64비트를 가지고 키 크기는 128비트를 가진다. 구조상 8.5라운드이고, IDEA에 대한 특허는 2012년에 소멸하였다. 배타적 비트OR연산과 상에서의 덧셈과 상에서의 곱셈이 수행된다. 8번의 라운드 연산 수행 후에는 0.5 라운드 연산을 통하여 암호문을 생성한다.
- Salsa : 다니엘 번스타인에 의해 제안된 알고리즘이다. eStream 프로젝트에서 선택됐다. 키 크기는 256비트이고, 블록의 크기는 512비트이다. ARX 연산으로 구성되며 스트림 암호를 위한 암호화 기법이다.[1][5][6]
구현[편집]
소프트웨어[편집]
코드의 크기를 최소화하기 위해서는 for 문으로 묶어서, 나타낼 수 있는 형태로 암호화 구조가 설계되면 for 문이 반복한 횟수만큼 코드의 크기를 줄일 수 있다. 해당 for 문 안에도 공유되는 연산이 존재한다면 이를 묶어서 연산 효율화를 이끌 수 있는 장점도 있다. 또한 S-box 혹은 T-table 같은 사전 연산 값은 사용하지 않아서 저장공간의 낭비를 피한다. 시간 최소화를 위해 목표로 하는 프로세서의 워드와 목표로 하는 암호화 알고리즘의 워드의 크기가 동일해야만 한다. 만약 해당 워드 크기가 상이하다면 이를 변환하는 연산이 추가로 필요한 단점이 있다. 또한 사전값을 미리 계산해서 이에 대한 연산 복잡도를 최소화하는 것이 효과적으로 구현할 수 있다.
하드웨어[편집]
면적을 최소화하기 위해 키 사이즈와 블록 크기를 작게 설정하여 이를 저장하기 위한 레지스터나 산술 논리 장치의 크기를 줄이는 것이 가장 중요하다. 또한 내부 상태를 유지하기 위해 저장 공간이 사용된다면, 이에 따른 추가적인 부하가 요구된다는 문제점이 있다. 또, 복잡하지 않은 연산 구조를 활용하면 보다 효율적으로 연산 할 수 있다. 적은 비트의 S-box를 사용하거나 키 스케줄 과정을 생략하면 면적이 최소화되는 특징이 있다. 워드 단위로 동일한 연산을 할 경우에는 공유하는 연산이 많아져서 산술 논리 장치를 적게 사용하고도 연산이 가능한 장점이 있다. 시간 성능을 향상하기 위해서는 면적을 최소화했던 특성들을 반대로 수행하는 과정도 필요하다. 만약 공유하는 자원이 지나치게 많아진다면 이를 수행하기 위해서는 이전 연산이 해당 산술 논리 장치를 수행하고 난 뒤에 해당 산술 논리 장치를 사용해야 하므로 보다 많은 시간이 필요하다. 비트 단위의 연산이 수행되는 경우 해당 비트를 처리하기 위해 바이트 단위 연산과 비교해서 보다 많은 시간이 필요하다는 단점이 있다.[5]
각주[편집]
- ↑ 1.0 1.1 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》
- ↑ 홍득조, 〈[경량 블록암호 알고리즘 설계 연구 동향]〉, 《정보보호학회지》, 2020-06
- ↑ 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25
- ↑ 홍하나 기자, 〈국보연의 경량 블록암호 'LEA', ISO/IEC 국제 표준으로 제정〉, 《디지털데일리》, 2019-11-04
- ↑ 5.0 5.1 서화정, 김호원, 〈[사물인터넷을 위한 경량 암호 알고리즘 구현]〉, 《정보보호학회지》, 2015-04
- ↑ 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11
참고자료[편집]
- NIST 공식홈페이지 Lightweight Cryptography - https://csrc.nist.gov/projects/lightweight-cryptography
- 한국인터넷진흥원 공식 홈페이지 암호이용 활성화 - https://seed.kisa.or.kr/kisa/index.do
- 박채원, 〈[표준 경량 블록 암호 알고리즘들의 분석과 사물인터넷에 적용에 관한 조사]〉, 《시맨틱스칼라》
- 한양대학교 산학협력단, 〈[경량 암호 알고리즘(HIGHT)의 하드웨어적 구현 방안 연구]〉, 《한국인터넷진흥원》, 2011-11
- 서화정, 김호원, 〈[사물인터넷을 위한 경량 암호 알고리즘 구현]〉, 《정보보호학회지》, 2015-04
- 노동영, 권대성, 〈[차세대 표준암호기술 동향]〉, 《정보통신기획평가원》, 2019-09-25
- 홍하나 기자, 〈국보연의 경량 블록암호 'LEA', ISO/IEC 국제 표준으로 제정〉, 《디지털데일리》, 2019-11-04
- 홍득조, 〈[경량 블록암호 알고리즘 설계 연구 동향]〉, 《정보보호학회지》, 2020-06
같이 보기[편집]