KR101971001B1 - 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 - Google Patents

화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 Download PDF

Info

Publication number
KR101971001B1
KR101971001B1 KR1020170115050A KR20170115050A KR101971001B1 KR 101971001 B1 KR101971001 B1 KR 101971001B1 KR 1020170115050 A KR1020170115050 A KR 1020170115050A KR 20170115050 A KR20170115050 A KR 20170115050A KR 101971001 B1 KR101971001 B1 KR 101971001B1
Authority
KR
South Korea
Prior art keywords
operating state
random number
operation state
block cipher
state
Prior art date
Application number
KR1020170115050A
Other languages
English (en)
Other versions
KR20190028066A (ko
Inventor
유동창
염용진
강주성
김예원
박호중
Original Assignee
국민대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 국민대학교산학협력단 filed Critical 국민대학교산학협력단
Priority to KR1020170115050A priority Critical patent/KR101971001B1/ko
Priority to PCT/KR2018/010518 priority patent/WO2019050343A1/ko
Publication of KR20190028066A publication Critical patent/KR20190028066A/ko
Application granted granted Critical
Publication of KR101971001B1 publication Critical patent/KR101971001B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 블록 암호 기반의 난수 생성 기술에 관한 것으로, 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 블록 암호에서 평문으로 사용되는 변수를 외부 인코딩하여 부분적으로 인코딩된 작동상태(Internal State)를 생성하는 단계, 작동상태에 포함된 키를 기초로 생성된 룩업 테이블을 외부 인코딩된 변수에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신하는 단계 및 갱신된 작동상태와 입력데이터를 XOR 연산하는 내부갱신함수의 제2 과정을 통해 산출된 결과로서 다음 작동상태를 출력하는 단계를 포함한다.

Description

화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치{A METHOD OF GENERATING RANDOM NUMBER BASED ON BLOCK CIPHER WITH WHITEBOX ENCRYPTION AND APPARATUS THEREOF}
본 발명은 난수 생성 기술에 관한 것으로, 보다 상세하게는, 난수를 생성하기 위해 사용하는 입력을 외부 공격자로부터 보호할 수 있는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치에 관한 것이다.
암호 시스템 구축에 있어서 난수의 사용은 필수적인 요소에 해당한다. 난수발생기가 이상적인 난수를 생성할 수 있다면 암호 시스템은 완벽해질 수 있다. 난수발생기가 취약한 경우 보안 시스템은 위험에 노출될 가능성이 높다. 난수의 성질 중 무작위성, 예측 불가능성 및 재현 불가능성 등은 암호 시스템의 보안성에 직접적인 영향을 미칠 수 있다.
결정론적 난수발생기는 결정론적 알고리즘에 입력하여 난수를 생성하는 장치 또는 알고리즘을 의미한다. 여기에서, 결정론적 알고리즘은 동일한 입력에 대해서 항상 동일한 출력이 생성되는 특징을 가진 알고리즘을 의미한다. 결정론적 난수발생기에는 대표적으로 블록암호 기반 난수발생기, 해시함수 기반 난수발생기 및 HMAC 기반 난수발생기가 있다. 블록 암호 기반 난수발생기는 블록 암호의 카운터모드를 이용한 난수발생기 (CTR_DRBG)이다. 해시함수 기반 난수발생기는 해시함수를 이용하는 난수발생기(Hash_DRBG)이다. HMAC 기반 난수발생기는 HMAC 알고리즘을 이용한 난수발생기(HMAC_DRBG)이다.
도 1은 블록 암호 기반 난수발생기의 작동 과정을 설명하기 위한 도면이다.
도 1에서, 블록 암호 기반 난수발생기는 초기화함수, 출력생성함수, 외부갱신함수로 구성된다. 초기화함수는 엔트로피입력 등을 이용하여 작동상태의 초기값을 결정하며, 출력생성함수는 작동상태를 이용하여 난수를 출력하고 이용한 작동상태를 갱신한다. 외부갱신함수는 예측공격을 방지하기 위해 작동상태에 새로운 엔트로피(ENTROPY)를 더한다.
여기에서, 작동상태는 난수 생성에 사용되는 데이터들을 의미한다. 작동상태는 초기화함수에 의해 초기값이 결정되며 외부갱신함수와 출력생성함수에 의해 값이 갱신될 수 있다. 엔트로피(ENTROPY)는 데이터가 가지는 정보량을 수치적으로 나타낸 것으로 무질서도(disorder) 또는 난수성(randomness)을 의미하며 엔트로피가 높을수록 난수에 가깝다.
블록암호 기반 난수발생기의 작동상태는 키(Key), 변수(V), reseed_counter를 포함한다. 작동상태의 키(Key)와 변수(V)는 기반으로 하는 블록암호 알고리즘에 대해 각각 키와 평문으로 입력된다. 따라서 키(Key)의 길이는 기반 블록암호 알고리즘의 키길이와 같으며 변수(V)의 길이는 기반 블록암호 알고리즘의 블록길이와 같다. 작동상태의 reseed_counter는 작동상태의 갱신주기와의 비교를 위해 사용되는 정수로 출력생성함수의 호출횟수를 나타낸다.
난수발생기의 출력은 작동상태에 의해 결정되므로 작동상태는 반드시 비밀로 지켜져야 한다. 키길이와 블록길이 등은 기반 블록암호 알고리즘에 따라 다양한 값을 가질 수 있다.
화이트박스 암호화 기술은 내부의 동작이 노출되더라도 공격자가 암호 키를 쉽게 유추하지 못하도록 하는 화이트박스 암호화 매커니즘을 기반으로 하고 있다. 이러한 내용은 도 2를 참조하여 보다 상세히 설명하도록 한다.
도 2는 화이트박스 암호화의 기본 개념을 설명하기 위한 도면이다.
도 2에서, 화이트박스 암호화 기술은 알고리즘을 큰 룩업 테이블로 만들고 그 안에 암호 키를 소프트웨어로 구현된 암호 알고리즘과 섞여있는(obfuscation) 상태로 숨겨둠으로써 공격자가 내부의 동작을 분석하더라도 암호 키를 쉽게 유추하지 못하도록 한다. 보다 구체적으로, 화이트박스 암호화 기술은 내부에서 인코딩 과정(Mi)과 디코딩 과정(Mi)-1을 별도의 테이블을 통해 수행하여 중간값이 노출되지 않도록 하면서도 결과적으로는 인코딩과 디코딩의 상쇄를 통해 원래의 암호화 동작(Xi)만 수행한 결과와 동일하도록 하여 라운드 연산의 중간 데이터와 키를 공격자로부터 안전하게 숨길 수 있다.
종래의 화이트박스 암호화 기술은 높은 보안성을 구현하고자 하는 경우 테이블의 크기가 지나치게 커지기 때문에 많은 연산량을 필요로 하는 단점이 있다.
한국등록특허 제10-1240243(2013.02.28)호는 AES의 CTR 모드에 따른 암호화 장치 및 방법에 관한 것으로, 평문을 입력받아 128 비트의 크기를 갖는 대상 데이터 블록으로 분할하고, 각 라운드마다 128 비트의 데이터 블록을 입력받아 초기화 벡터로 설정하고, 초기화 벡터를 4 개의 4 바이트 스테이트로 분할하고, 분할된 대상 데이터 블록 중 제 1 블록과 초기화 벡터를 이용하여 암호화된 결과를 XOR하여 제 1 암호문을 생성하고, 분할된 4 개의 스테이트 중 각 라운드의 연산 과정에서 값이 변경되지 않는 스테이트들을 캐시에 저장하고, 제 1 블록에 연속하는 복수 개의 블록들에 대해 각각의 블록들과 캐시를 참조하여 획득한 연산 결과를 XOR함으로써 복수 개의 암호문을 생성하며, 생성된 제 1 암호문과 복수 개의 암호문을 암호화 결과로 출력한다.
한국공개특허 제10-2016-0012121(2016.02.02)호는 난수 생성기에 대한 피드백 제어의 동적 튜닝을 위한 시스템 및 방법에 관한 것으로, 랜덤 시퀀스의 값들을 생성하는 제 1 회로로서, 제 1 회로는 랜덤 시퀀스의 수들의 엔트로피를 변경하는 조정가능한 입력을 갖는, 그 제 1 회로; 제 1 회로로부터 랜덤 시퀀스의 값들을 수신하고 랜덤 시퀀스의 값들의 엔트로피의 정도를 나타내는 출력을 생성하는 제 2 회로; 및 제 2 회로의 출력에 응답하여 제 1 회로의 조정가능한 입력을 조정하는 제 3 회로를 포함한다.
한국등록특허 제10-1240243(2013.02.28)호 한국공개특허 제10-2016-0012121(2016.02.02)호
본 발명의 일 실시예는 난수를 생성하기 위해 사용하는 입력을 외부 공격자로부터 보호할 수 있는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치를 제공하고자 한다.
본 발명의 일 실시예는 작동상태의 일부만을 화이트박스 암호로 보호하여 효율성을 향상시킬 수 있는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치를 제공하고자 한다.
실시예들 중에서, 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법은 (a) 블록 암호에서 평문으로 사용되는 변수를 외부 인코딩하여 부분적으로 인코딩된 작동상태(Internal State)를 생성하는 단계, (b) 상기 작동상태에 포함된 키를 기초로 생성된 룩업 테이블을 상기 외부 인코딩된 변수에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신하는 단계 및 (c) 상기 갱신된 작동상태와 입력데이터를 XOR 연산하는 상기 내부갱신함수의 제2 과정을 통해 산출된 결과로서 다음 작동상태를 출력하는 단계를 포함한다.
상기 (a) 단계는 복수의 인코딩 타입이 정의된 인코딩 테이블을 기초로 상기 외부 인코딩을 수행하는 단계를 포함할 수 있다.
상기 (a) 단계는 상기 외부 인코딩된 변수을 n (상기 n은 자연수) 개의 m (상기 m은 자연수) 비트를 가지는 부분변수로 분할하는 단계를 더 포함할 수 있다.
상기 (b) 단계는 상기 키에 관해 ARX(Addition, Rotation, XOR) 연산을 수행하여 상기 룩업 테이블을 산출하는 단계를 포함할 수 있다.
상기 (b) 단계는 단일 라운드 당 상기 룩업 테이블을 n (상기 n은 부분변수의 개수) 개 만큼 생성하는 단계를 포함할 수 있다.
상기 (b) 단계는 상기 작동상태에 포함된 키를 이용하여 키 스케줄을 통해 상기 n개 만큼의 상기 룩업 테이블을 생성하는 단계를 포함할 수 있다.
상기 (b) 단계는 상기 n개의 룩업 테이블을 상기 n개의 부분변수에 대해 각각 병렬적으로 적용하여 상기 내부갱신함수의 제1 과정을 수행할 수 있다.
상기 (b) 단계는 상기 n개의 부분변수에 대해 각각 병렬적으로 수행된 n개의 결과를 하나로 결합하여 상기 내부갱신함수의 제1 과정을 수행할 수 있다.
실시예들 중에서, 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 장치는 블록 암호에서 평문으로 사용되는 변수를 외부 인코딩하여 부분적으로 인코딩된 작동상태(Internal State)를 생성하는 작동상태 생성부, 상기 작동상태에 포함된 키를 기초로 생성된 룩업 테이블을 상기 외부 인코딩된 변수에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신하는 작동상태 갱신부 및 상기 갱신된 작동상태와 입력데이터를 XOR 연산하는 상기 내부갱신함수의 제2 과정을 통해 산출된 다음 작동상태를 출력하는 작동상태 출력부를 포함한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치는 난수를 생성하기 위해 사용하는 입력을 외부 공격자로부터 보호할 수 있다.
본 발명의 일 실시예에 따른 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치는 작동상태의 일부만을 화이트박스 암호로 보호하여 효율성을 향상시킬 수 있다.
도 1은 블록 암호 기반 난수발생기의 작동 과정을 설명하기 위한 도면이다.
도 2는 화이트박스 암호화의 기본 개념을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 화이트박스 암호가 적용된 난수 생성 장치에 포함된 작동상태 갱신 장치의 구성을 나타내는 블록도이다.
도 4는 도 3에 있는 작동상태 갱신 장치가 화이트박스 암호를 적용하여 작동상태를 갱신하는 과정을 설명하는 순서도이다.
도 5는 표준화된 블록암호 알고리즘 기반 난수발생기의 내부갱신함수를 설명하는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 화이트 박스 암호가 적용된 난수 생성 장치에 포함된 작동상태 갱신 장치에서 수행되는 다음 작동상태 출력 과정의 일 실시예를 나타내는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 3는 본 발명의 일 실시예에 따른 화이트박스 암호가 적용된 난수 생성 장치에 포함된 작동상태 갱신 장치의 구성을 나타내는 블록도이다.
도 3를 참조하면, 화이트박스 암호가 적용된 작동상태 갱신 장치(이하, 작동상태 갱신 장치라 한다.)(300)는 작동상태 생성부(310), 작동상태 갱신부(330) 및 작동상태 출력부(350)를 포함할 수 있다.
화이트박스 암호가 적용된 난수 생성 장치는 난수를 생성할 수 있는 컴퓨팅 장치에 해당할 수 있고, 일 실시예에서, 데스크톱, 태블릿 PC, 노트북 또는 스마트폰 등으로 구현될 수 있다. 일 실시예에서, 화이트박스 암호가 적용된 난수 생성 장치는 작동상태 갱신 장치(300)를 포함하여 구현될 수 있다.
작동상태 갱신 장치(300)는 난수 생성을 위해 사용되는 입력 중 하나인 작동상태를 갱신할 수 있다. 작동상태 갱신 장치(300)는 화이트박스 암호를 적용하여 외부 공격자로부터 난수 발생에 사용되는 작동상태를 보호함으로써 보안 시스템의 안전성을 강화시키는 효과를 제공할 수 있다.
작동상태 생성부(310)는 부분적으로 인코딩된 작동상태를 생성할 수 있다. 보다 구체적으로, 작동상태 생성부(310)는 작동상태의 키(Key)와 변수(V) 중 변수(V)만을 외부 인코딩할 수 있다. 작동상태 생성부(310)는 작동상태의 일부만을 보호함으로써 화이트박스 암호를 적용하기 위해 필요한 연산량을 줄일 수 있다.
일 실시예에서, 작동상태 생성부(310)는 복수의 인코딩 타입이 정의된 인코딩 테이블을 기초로 외부 인코딩을 수행할 수 있다. 예를 들어, 작동상태 생성부(310)는 인코딩 테이블에 있는 복수의 인코딩 타입 중 특정 인코딩 타입을 선택적으로 적용하여 외부 인코딩을 수행할 수 있고, 이에 따라, 외부 인코딩의 수행 과정에서 다양한 인코딩 방식을 사용할 수 있어 안전성을 보다 강화시킬 수 있다.
작동상태 생성부(310)는 외부 인코딩된 변수(V)를 n (n은 자연수) 개의 m (m은 자연수) 비트를 가지는 부분변수로 분할할 수 있다. 일 실시예에서, 작동상태 생성부(310)는 외부 인코딩된 변수(V)를 상호 동일한 m 비트 크기를 가지도록 블록 분할하여 n 개의 부분변수들을 생성할 수 있다.
예를 들어, 외부 인코딩된 변수(V)의 블록 크기가 40 비트이면 해당 변수(V)를 분할하여 각각 8 비트인 5 개의 부분변수들을 생성할 수 있고, 생성된 부분변수들을 이용하여 블록 암호의 카운터모드를 운용할 수 있다.
작동상태 갱신부(330)는 작동상태에 포함된 키(Key)를 기초로 생성된 룩업 테이블을 외부 인코딩된 변수(V)에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신할 수 있다. 일 실시예에서, 작동상태 갱신부(330)는 작동상태에 포함된 키(Key)를 이용하여 키스케줄에 의해 생성된 라운드 키를 이용하여 룩업 테이블을 생성할 수 있다.
여기에서, 내부갱신함수는 작동상태와 입력데이터를 입력으로 하여 기존과는 다른 값을 가지는 작동상태를 출력으로 생성하는 함수이다. 내부갱신함수의 제1 과정은 작동상태에 포함된 키(Key)와 변수(V)를 이용하여 블록 암호의 카운터 모드를 운용한 결과로써 새로운 작동상태 값을 생성하는 과정이다. 내부갱신함수의 제1 과정을 통해 생성된 새로운 작동상태 값은 작동상태의 중간 값에 해당할 수 있다.
표준화된 CTR_DRBG의 경우와 달리, 제1 과정에서 사용되는 변수(V)는 화이트 박스 암호기술이 적용되어 보호될 수 있다. 내부갱신함수의 제2 과정은 제1 과정을 통해 생성된 작동상태를 입력데이터와 XOR 연산을 수행하여 최종적으로 작동상태를 갱신하는 과정이다.
일 실시예에서, 작동상태 갱신부(330)는 작동상태에 포함된 키(Key)에 관해 ARX(Addition, Rotation, XOR) 연산을 수행하여 룩업 테이블을 생성할 수 있다. 보다 구체적으로, 작동상태 갱신부(330)는 라운드 함수 F를 상대적으로 구현하기 쉬운 가산(Addition), 회전(Rotation) 및 배타적 논리합(XOR) 연산 중 적어도 하나로 구성할 수 있고, 이에 따라, 작동상태의 변수(V)를 분할하여 생성한 부분변수들의 크기가 8비트인 경우에도 4비트 단위로 분할 연산이 가능하도록 할 수 있다.
여기에서, 라운드(round)는 암호화 및 복호화를 위해 반복되는 과정을 의미하고, 라운드 함수는 암호화 및 복호화를 수행하는데 필요한 함수를 나타내고, 작동상태의 키(key)는 반복되는 라운드에서 암호화 및 복호화를 위한 인자로서 사용될 수 있다.
일 실시예에서, 작동상태 갱신부(330)는 단일 라운드 당 룩업 테이블을 n (n은 부분변수의 개수) 개만큼 생성할 수 있다. 보다 구체적으로, 작동상태 갱신부(330)는 블록 암호의 카운터 모드를 운용하므로 각각의 부분변수에 대해 병렬적으로 화이트박스 암호화를 수행할 수 있고, 각각의 부분변수에 대해 화이트박스 암호화를 수행할 경우 서로 다른 n개의 룩업 테이블을 사용함으로써 보안성을 강화할 수 있다.
일 실시예에서, 작동상태 갱신부(330)는 작동상태에 포함된 키(Key)를 이용하여 키 스케줄을 통해 n개 만큼의 룩업 테이블을 생성할 수 있다. 보다 구체적으로, 작동상태 갱신부(330)는 작동상태에 포함된 키(Key)를 기초로 키 스케줄에 의해 n개의 라운드 키를 생성할 수 있고, n개의 라운드 키를 기초로 n개의 룩업 테이블을 생성할 수 있다.
키 스케줄은 작동상태에 포함된 키(Key)를 이용하여 라운드 키를 생성하는 것을 의미한다. 작동상태 갱신부(330)는 키 스케줄을 통해 작동상태에 포함된 키(Key)를 블록 분할하여 복수의 라운드 키를 생성할 수 있고, 작동상태에 포함된 키(Key)를 기초로 확장된 복수의 라운드 키를 생성할 수 있다.
일 실시예에서, 작동상태 갱신부(330)는 n개의 룩업 테이블을 n개의 부분변수에 대해 각각 병렬적으로 적용하여 내부갱신함수의 제1 과정을 수행할 수 있다. 보다 구체적으로, 표준화된 CTR_DRBG는 블록 암호의 카운트 모드를 운용할 수 있으므로, 작동상태 갱신부(330)는 n개의 룩업 테이블을 생성한 후 n개의 부분변수에 대해 병렬적으로 적용하여 각 부분변수들의 값을 갱신할 수 있다.
일 실시예에서, 작동상태 갱신부(330)는 n개의 부분변수에 대해 각각 병렬적으로 수행된 n개의 결과를 하나로 결합하여 내부갱신함수의 제1 과정을 수행할 수 있다. 작동상태 갱신부(330)는 n개의 결과들을 차례대로 연결하여 하나의 변수(V)를 생성할 수 있다. 작동상태에 포함된 변수(V)의 길이는 내부갱신함수의 제1 과정을 전후로 동일하게 유지된다.
작동상태 출력부(350)는 작동상태 갱신부(330)에 의해 갱신된 작동상태와 입력데이터를 XOR 연산하는 내부갱신함수의 제2 과정을 통해 산출된 결과로서 다음 작동상태를 출력할 수 있다. 작동상태와 입력데이터를 기초로 XOR 연산을 수행하기 위한 조건은 작동상태와 입력데이터의 길이가 동일해야 한다는 것이다. 작동상태 갱신 장치(300)는 내부갱신함수의 제1 과정을 통해 작동상태 값을 변화시킬 수 있지만, 외부 공격자의 예측 가능성을 어렵게 하기 위해 작동상태와 입력데이터를 XOR 연산하여 작동상태 값에 엔트로피(Entropy)를 더할 수 있다.
작동상태 출력부(350)는 새로운 값을 가진 작동상태를 출력할 수 있고, 화이트박스 암호가 적용된 난수 생성 장치는 작동상태 갱신 장치(300)에 의해 갱신된 작동상태를 이용하여 난수를 생성할 수 있다. 화이트박스 암호가 적용된 난수 생성 장치는 출력생성함수를 이용하여 난수를 출력할 수 있다.
출력생성함수는 세 과정으로 이루어진 단계를 거쳐 난수를 출력할 수 있다. 첫 번째 과정은 내부갱신함수에 입력데이터를 입력하여 작동상태를 갱신하는 과정에 해당할 수 있다. 첫 번째 과정은 입력데이터를 이용하여 작동상태를 갱신하기 때문에 그 이전까지의 작동상태가 외부 공격자에게 알려졌더라도 입력데이터가 노출되지 않았다면 실제 난수를 생성하는데 사용한 작동상태를 알 수 없게 하는 효과를 제공한다.
일 실시예에서, 작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 입력데이터를 사용하지 않는 출력생성함수를 이용하여 난수를 생성할 수 있다. 출력생성함수가 입력데이터를 사용하지 않는 경우에는 별도로 입력된 데이터가 없으므로 출력생성함수는 첫 번째 과정을 생략할 수 있다.
두 번째 과정은 내부출력생성함수를 이용하여 실제 난수를 생성하는 과정에 해당할 수 있다. 내부출력생성함수는 블록암호의 카운터 모드를 사용하여 난수를 생성하므로 외부공격자가 난수생성에 사용된 작동상태를 알지 못한 경우 난수를 예측할 수 없도록 하는 효과를 제공한다.
마지막 과정은 내부갱신함수를 다시 한 번 사용하여 다음 출력생성함수에는 반드시 다른 작동상태가 사용되도록 하는 과정에 해당할 수 있다. 내부갱신함수는 일방향함수이기 때문에 작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 이 과정을 통해 역예측공격을 방지할 수 있다.
도 4는 도 3에 있는 작동상태 갱신 장치가 화이트박스 암호를 적용하여 작동상태를 갱신하는 과정을 설명하는 순서도이다.
도 4을 참조하면, 작동상태 갱신 장치(300)는 작동상태 생성부(310)를 통해 부분적으로 인코딩된 작동상태를 생성할 수 있다(단계 S410). 보다 구체적으로, 작동상태 생성부(310)는 블록 암호에서 평문으로 사용되는 작동상태의 변수(V)를 외부 인코딩하여 부분적으로 인코딩된 작동상태를 생성할 수 있다.
작동상태 갱신 장치(300)는 작동상태 갱신부(330)를 통해 내부갱신함수의 제1 과정을 수행하여 작동상태를 갱신할 수 있다(단계 S430). 보다 구체적으로 작동상태 갱신부(330)는 작동상태에 포함된 키(Key)를 기초로 생성된 룩업 테이블을 외부 인코딩된 변수(V)에 적용하여 작동상태를 갱신할 수 있다.
작동상태 갱신 장치(300)는 작동상태 출력부(350)를 통해 내부갱신함수의 제2 과정을 수행하여 다음 작동상태를 출력할 수 있다(단계 S450). 보다 구체적으로, 작동상태 출력부(350)는 작동상태 갱신부(330)에 의해 갱신된 작동상태와 입력데이터를 XOR 연산하여 산출된 결과를 다음 작동상태로서 출력할 수 있다.
작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 부분적으로 인코딩된 작동상태를 입력으로 하여 내부갱신함수에 의해 갱신된 작동상태를 이용하여 난수를 생성할 수 있다. 작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 난수를 생성하기 위해 작동상태를 입력으로 사용할 수 있고, 작동상태 중 변수(V)에 대해서만 화이트박스 암호를 적용함으로써 보안성을 향상시킬 수 있다. 작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 작동상태 전체를 화이트박스 암호화하는 것보다 요구 연산량을 줄이고, 효율성을 높이기 위해 작동상태 중 일부인 변수(V)에 대해서만 화이트박스 암호를 적용할 수 있다.
도 5는 표준화된 블록암호 알고리즘 기반 난수발생기의 내부갱신함수를 설명하는 예시도이다.
도 5를 참조하면, 내부갱신함수는 키(Key)와 변수(V)를 포함하는 작동상태와 입력데이터를 입력으로 하여 작동상태를 출력하는 함수에 해당할 수 있다. 보다 구체적으로, 내부갱신함수는 작동상태의 키(Key)와 변수(V)를 이용한 카운터 모드를 수행하고, 카운터 모드의 결과와 입력데이터를 XOR 하여 작동상태를 갱신할 수 있다. 내부갱신함수는 블록암호 알고리즘 기반 난수발생기에서 초기화함수, 출력생성함수, 외부갱신함수에서 사용될 수 있다.
일 실시예에서, 작동상태 갱신 장치(300)는 내부갱신함수와 동일한 기능을 수행하는 장치에 해당할 수 있다. 보다 구체적으로, 난수발생기는 초기화함수, 출력생성함수, 외부갱신함수를 이용하여 구현될 수 있고, 초기화함수, 출력생성함수, 외부갱신함수는 각각 동일한 기능을 수행하는 별도의 독립적인 장치로 구현될 수 있다. 초기화 함수, 출력생성함수, 외부갱신함수는 내부적으로 내부갱신함수를 포함하여 구현될 수 있고, 동일 기능을 수행하는 별도의 독립적인 장치들은 각각 내부적으로 작동상태 갱신 장치(300)를 포함하여 구현될 수 있다.
입력데이터는 작동상태와 XOR되므로, 그 길이는 반드시 작동상태의 길이와 같아야 한다. 작동상태의 길이는 키(Key) 길이와 변수(V) 길이의 합과 같다. 작동상태 갱신 장치(300)는 작동상태 중 변수(V)에 대해서만 화이트박스 암호를 적용하여 보호함으로써 난수 생성 장치의 보안성을 향상시키고 화이트박스 암호 적용으로 인한 연산량 증가를 조절하여 효율성을 향상시킬 수 있다.
도 6은 본 발명의 일 실시예에 따른 화이트 박스 암호가 적용된 난수 생성 장치에 포함된 작동상태 갱신 장치에서 수행되는 다음 작동상태 출력 과정의 일 실시예를 나타내는 도면이다.
도 6을 참조하면, 작동상태 갱신 장치(300)의 작동상태 생성부(310)는 내부갱신함수에서 입력으로 사용되는 작동상태의 키(Key)와 변수(V) 중 변수(V)에 대해서만 외부 인코딩하여 부분적으로 인코딩된 작동상태를 생성할 수 있다.
작동상태 중 변수(V)에 대해서만 화이트박스 암호를 적용하기 때문에 작동상태 갱신장치(300)를 포함하는 난수 생성 장치는 화이트박스 테이블의 일부만을 업데이트하여 효율성을 향상시킬 수 있다.
작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 작동상태 중 키(Key)를 이용하여 룩업 테이블을 생성할 수 있다. 작동상태 갱신 장치(300)를 포함하는 난수 생성 장치는 룩업 테이블에 포함된 인코딩을 난독화를 통해 보호할 수 있다.
작동상태 갱신 장치(300)는 룩업 테이블을 외부 인코딩된 변수(V)에 적용하여 작동상태의 중간 값을 생성할 수 있다. 작동상태 갱신 장치(300)는 작동상태의 중간 값을 입력데이터와 XOR 연산하여 작동상태를 갱신할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
300: 작동상태 갱신 장치

Claims (9)

  1. (a) 블록 암호에서 평문으로 사용되는 변수를 외부 인코딩하여 부분적으로 인코딩된 작동상태(Internal State)를 생성하는 단계;
    (b) 상기 작동상태에 포함된 키를 기초로 생성된 룩업 테이블을 상기 외부 인코딩된 변수에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신하는 단계; 및
    (c) 상기 갱신된 작동상태와 입력데이터를 XOR 연산하는 상기 내부갱신함수의 제2 과정을 통해 산출된 결과로서 다음 작동상태를 출력하는 단계를 포함하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  2. 제1항에 있어서, 상기 (a) 단계는
    복수의 인코딩 타입이 정의된 인코딩 테이블을 기초로 상기 외부 인코딩을 수행하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  3. 제2항에 있어서, 상기 (a) 단계는
    상기 외부 인코딩된 변수를 n (상기 n은 자연수) 개의 m (상기 m은 자연수) 비트를 가지는 부분변수로 분할하는 단계를 더 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  4. 제1항에 있어서, 상기 (b) 단계는
    상기 키에 관해 ARX(Addition, Rotation, XOR) 연산을 수행하여 상기 룩업 테이블을 산출하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  5. 제3항에 있어서, 상기 (b) 단계는
    단일 라운드 당 상기 룩업 테이블을 n (상기 n은 부분변수의 개수) 개 만큼 생성하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  6. 제5항에 있어서, 상기 (b) 단계는
    상기 작동상태에 포함된 키를 이용하여 키 스케줄을 통해 상기 n개 만큼의 상기 룩업 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  7. 제5항에 있어서, 상기 (b) 단계는
    상기 n개의 룩업 테이블을 상기 n개의 부분변수에 대해 각각 병렬적으로 적용하여 상기 내부갱신함수의 제1 과정을 수행하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  8. 제7항에 있어서, 상기 (b) 단계는
    상기 n개의 부분변수에 대해 각각 병렬적으로 수행된 n개의 결과를 하나로 결합하여 상기 내부갱신함수의 제1 과정을 수행하는 단계를 포함하는 것을 특징으로 하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법.
  9. 블록 암호에서 평문으로 사용되는 변수를 외부 인코딩하여 부분적으로 인코딩된 작동상태(Internal State)를 생성하는 작동상태 생성부;
    상기 작동상태에 포함된 키를 기초로 생성된 룩업 테이블을 상기 외부 인코딩된 변수에 적용하는 내부갱신함수의 제1 과정을 통해 작동상태를 갱신하는 작동상태 갱신부; 및
    상기 갱신된 작동상태와 입력데이터를 XOR 연산하는 상기 내부갱신함수의 제2 과정을 통해 산출된 다음 작동상태를 출력하는 작동상태 출력부를 포함하는 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 장치.

KR1020170115050A 2017-09-08 2017-09-08 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 KR101971001B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170115050A KR101971001B1 (ko) 2017-09-08 2017-09-08 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
PCT/KR2018/010518 WO2019050343A1 (ko) 2017-09-08 2018-09-07 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170115050A KR101971001B1 (ko) 2017-09-08 2017-09-08 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190028066A KR20190028066A (ko) 2019-03-18
KR101971001B1 true KR101971001B1 (ko) 2019-04-22

Family

ID=65635048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170115050A KR101971001B1 (ko) 2017-09-08 2017-09-08 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치

Country Status (2)

Country Link
KR (1) KR101971001B1 (ko)
WO (1) WO2019050343A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102319699B1 (ko) * 2019-08-02 2021-11-02 국민대학교산학협력단 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101004269B1 (ko) 2005-08-24 2011-01-03 퀄컴 인코포레이티드 암호 보안 의사 랜덤 넘버 생성기
KR101623503B1 (ko) 2015-02-04 2016-05-23 국민대학교산학협력단 Lea 블록암호의 화이트박스 암호 구현 장치 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101240243B1 (ko) 2011-05-26 2013-03-11 고려대학교 산학협력단 Aes의 ctr 모드에 따른 암호화 장치 및 방법
KR20140049448A (ko) * 2012-10-16 2014-04-25 삼성전자주식회사 랜덤화된 데이터를 저장하는 dram 및 이의 동작 방법
KR20140132535A (ko) * 2013-05-08 2014-11-18 주식회사 큐램 병렬 인코딩 방법 및 그 시스템
US9846568B2 (en) 2013-05-23 2017-12-19 Synopsys, Inc. System and method for dynamic tuning feedback control for random number generator

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101004269B1 (ko) 2005-08-24 2011-01-03 퀄컴 인코포레이티드 암호 보안 의사 랜덤 넘버 생성기
KR101623503B1 (ko) 2015-02-04 2016-05-23 국민대학교산학협력단 Lea 블록암호의 화이트박스 암호 구현 장치 및 방법

Also Published As

Publication number Publication date
WO2019050343A1 (ko) 2019-03-14
KR20190028066A (ko) 2019-03-18

Similar Documents

Publication Publication Date Title
US9515818B2 (en) Multi-block cryptographic operation
US11546135B2 (en) Key sequence generation for cryptographic operations
US10333702B2 (en) Updating key information
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP7031580B2 (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
US20060023875A1 (en) Enhanced stream cipher combining function
KR20080080175A (ko) 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템
US9432181B2 (en) Device, method, and program for format-preserving encryption, and device, method, and program for decryption
JP6415542B2 (ja) 難読化に適した電子ブロック暗号装置
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
KR20070057797A (ko) 보안성을 향상시키는 순열 데이터 변환
US8675866B2 (en) Multiplicative splits to protect cipher keys
JP6517436B2 (ja) 暗号化デバイス及び符号化デバイス
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2018154623A1 (ja) 暗号化装置及び復号装置
US20200160755A1 (en) Encryption device, encryption method, decryption device, and decryption method
CN105184115A (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
KR20170097509A (ko) 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말
JP5273141B2 (ja) 調整値付きブロック暗号装置、暗号生成方法および記録媒体
Yap et al. On the effective subkey space of some image encryption algorithms using external key
KR102033351B1 (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
CN105281893A (zh) 用于引入白箱实现对串集合的依赖性的方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant