KR20230095750A - 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치 - Google Patents

일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치 Download PDF

Info

Publication number
KR20230095750A
KR20230095750A KR1020220009241A KR20220009241A KR20230095750A KR 20230095750 A KR20230095750 A KR 20230095750A KR 1020220009241 A KR1020220009241 A KR 1020220009241A KR 20220009241 A KR20220009241 A KR 20220009241A KR 20230095750 A KR20230095750 A KR 20230095750A
Authority
KR
South Korea
Prior art keywords
encryption
encoded
plaintext
ciphertext
message
Prior art date
Application number
KR1020220009241A
Other languages
English (en)
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 국민대학교산학협력단
Publication of KR20230095750A publication Critical patent/KR20230095750A/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
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

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

Abstract

본 발명은 암호키를 보호하고 필요한 기능만을 제공하여 안전성을 강화하기 위해 화이트박스 암호화 기술에 확률론적 일방향성을 갖는 출력 인코딩을 추가한 블록암호 운영모드에 관한 것으로, 블록 암호의 출력을 인코딩 과정에 공개키만을 사용하기 때문에 대응되는 비밀키 없이는 복호화 기능을 수행할 수 없도록 할 수 있다. 이를 통해, 호환성을 고려하여 취약한 표준 암호화이트박스 기술로 불가피하게 암호화하는 경우에도 일방향성(즉, 암호화만 가능하고 복호화는 할 수 없음)을 유지할 수 있다.

Description

일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치{WHITEBOX CRYPTOGRAPHIC METHOD AND DEVICE BASED ON BLOCK CIPHER MODE OF OPERATION USING ONE-WAY FUNCTION}
본 발명은 화이트박스 암호화 기술에 관한 것으로, 보다 상세하게는 데이터 보호를 위해 블록암호를 사용하면서도 암호키의 노출을 방지하고 암호화 모듈을 통해 복호화가 불가능한 일방향 특성을 제공하는 기술에 관한 것이다.
데이터의 암호화에는 주로 표준 블록암호 알고리즘이 사용될 수 있다. 블록암호는 평문 데이터와 암호키를 입력으로 하여 암호문을 생성하며, 암호문을 평문으로 복호화하기 위해서 동일한 암호키가 사용될 수 있다. 암호화 또는 복호화 과정을 소프트웨어로 수행하는 경우 역공학을 이용한 공격을 수행한다면 불가피하게 암호키가 노출될 수 있다. 또한, 암호화 기능만 제공하는 소프트웨어 암호모듈의 경우 실행코드의 분석을 통해 복호화 기능까지 추가로 만들 수 있다.
역공학 공격자가 실행과정의 모니터링, 메모리 덤프 등을 자유롭게 수행할 수 있는 조건에서도 암호키를 안전하게 보호하기 위해 화이트박스 암호기술이 꾸준히 제안되고 있으나 표준 블록암호에 대하여 암호키를 보호하고 일방향 기능(암호화 또는 복호화 단독)만을 제공하는 것은 불완전하여, 상용제품에서는 난독화 기법과 결합하여 다계층 소프트웨어 프로텍션 방식으로 보안성을 높이고 있다.
한국공개특허 제10-2010-0122107(2010.11.19)호
본 발명의 일 실시예는 데이터 보호를 위해 블록암호를 사용하면서도 암호키의 노출을 방지하고 암호화 모듈을 통해 복호화가 불가능한 일방향 특성을 제공하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치를 제공하고자 한다.
실시예들 중에서, 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법은 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성하는 입력 인코딩 단계; 상기 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성하는 화이트박스 암호화 단계; 및 상기 인코딩된 암호문을 디코딩하여 상기 평문 메시지에 대응되는 암호문 메시지를 생성하는 출력 디코딩 단계를 포함한다.
상기 입력 인코딩 단계는 상기 평문 메시지를 복수의 평문 메시지 블록들로 분할하는 단계; 및 상기 복수의 평문 메시지 블록들 각각을 인코딩하여 복수의 인코딩된 평문 블록들을 생성하는 단계를 포함할 수 있다.
상기 입력 인코딩 단계는 상기 복수의 평문 메시지 블록들 각각을 병렬적으로 인코딩하는 단계를 포함할 수 있다.
상기 화이트박스 암호화 단계는 암호키가 적용된 화이트박스 블록 암호 알고리즘을 이용하여 상기 복수의 인코딩된 평문 블록들에 대응되는 복수의 인코딩된 암호문 블록들을 반복적으로 생성하는 단계를 포함할 수 있다.
상기 화이트박스 암호화 단계는 인코딩된 평문 블록에 상기 화이트박스 블록 암호 알고리즘을 적용하여 제1 중간 블록을 생성하는 단계; 상기 제1 중간 블록에 비트 선택 함수를 적용하여 상기 제1 중간 블록의 일부에 해당하는 제2 중간 블록과 나머지에 해당하는 제3 중간 블록을 각각 생성하는 단계; 상기 제2 중간 블록에 상기 일방향 함수를 적용하여 제4 중간 블록을 생성하는 단계; 및 상기 제3 중간 블록과 상기 제4 중간 블록을 연결하여 인코딩된 암호문 블록을 생성하는 단계를 포함할 수 있다.
상기 화이트박스 암호화 단계는 상기 인코딩된 암호문 블록에 압축(compress) 함수를 적용하여 상기 초기 벡터를 갱신하는 단계를 포함할 수 있다.
상기 일방향 함수는 상기 제2 중간 블록과 난수를 입력으로 수신하여 확률론적(probabilistic) 인코딩 방식에 따라 상기 제4 중간 블록을 생성하도록 구현될 수 있다.
상기 방법은 상기 암호문 메시지를 기초로 상기 평문 메시지를 복원하는 메시지 복원 단계를 더 포함할 수 있다.
상기 메시지 복원 단계는 상기 초기 벡터와 함께 입력된 상기 암호문 메시지를 인코딩하여 상기 인코딩된 암호문을 생성하는 출력 인코딩 단계; 상기 인코딩된 암호문을 입력으로 수신하여 상기 화이트박스 암호화의 역방향 과정을 통해 상기 인코딩된 평문을 출력으로 생성하는 화이트박스 암호화 단계; 및 상기 인코딩된 평문을 인코딩하여 상기 암호문 메시지에 대응되는 평문 메시지를 생성하는 입력 인코딩 단계를 포함할 수 있다.
일 실시예에서, 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치는 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성하는 입력 인코딩부;
상기 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성하는 화이트박스 암호화부; 및
상기 인코딩된 암호문을 디코딩하여 상기 평문 메시지에 대응되는 암호문 메시지를 생성하는 출력 디코딩부를 포함한다.
상기 화이트박스 암호화부는 암호키가 적용된 화이트박스 블록 암호 알고리즘을 이용하여 상기 복수의 인코딩된 평문 블록들에 대응되는 복수의 인코딩된 암호문 블록들을 반복적으로 생성할 수 있다.
상기 화이트박스 암호화부는 인코딩된 평문 블록에 상기 화이트박스 블록 암호 알고리즘을 적용하여 제1 중간 블록을 생성하고, 상기 제1 중간 블록에 비트 선택 함수를 적용하여 상기 제1 중간 블록의 일부에 해당하는 제2 중간 블록과 나머지에 해당하는 제3 중간 블록을 각각 생성하며, 상기 제2 중간 블록에 상기 일방향 함수를 적용하여 제4 중간 블록을 생성하고, 상기 제3 중간 블록과 상기 제4 중간 블록을 연결하여 인코딩된 암호문 블록을 생성할 수 있다.
상기 일방향 함수는 상기 제2 중간 블록과 난수를 입력으로 수신하여 확률론적(probabilistic) 인코딩 방식에 따라 상기 제4 중간 블록을 생성하도록 구현될 수 있다.
상기 장치는 상기 암호문 메시지를 기초로 상기 평문 메시지를 복원하는 메시지 복원부를 더 포함할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치는 데이터 보호를 위해 블록암호를 사용하면서도 암호키의 노출을 방지하고 암호화 모듈을 통해 복호화가 불가능한 일방향 특성을 제공할 수 있다.
본 발명의 일 실시예에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치는 금융 앱 등 모바일 환경에서도 현재 화이트박스 암호가 가지는 한계를 보완하고, 표준 블록암호를 안전하게 사용할 수 있도록 하는 기술을 구현할 수 있으며, 암호 운영모드에 부가적인 실행 옵션을 추가하여 안전성을 더 높일 수 있다.
도 1은 본 발명에 따른 화이트박스 암호화 시스템을 설명하는 도면이다.
도 2는 도 1의 암호화 장치의 시스템 구성을 설명하는 도면이다.
도 3은 도 1의 암호화 장치의 기능적 구성을 설명하는 도면이다.
도 4는 본 발명에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법을 설명하는 순서도이다.
도 5a 및 5b는 본 발명에 따른 화이트박스 암호와 일방향 함수를 이용한 암호 운영모드를 설명하는 도면이다.
도 6은 본 발명에 따른 암호화 과정의 일 실시예를 설명하는 도면이다.
도 7은 본 발명에 따른 복호화 과정의 일 실시예를 설명하는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명에 따른 화이트박스 암호화 시스템을 설명하는 도면이다.
도 1을 참조하면, 화이트박스 암호화 시스템(100)은 사용자 단말(110), 암호화 장치(130) 및 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 암호화 장치(130)에게 평문(plaintext)을 제공하고 평문에 대한 암호문(ciphertext)을 수신하는 컴퓨팅 장치로서 사용자에 의해 운용되는 장치에 해당할 수 있고, 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 다양한 디바이스로도 구현될 수 있다. 사용자 단말(110)은 암호화 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들은 암호화 장치(130)와 동시에 연결될 수 있다.
한편, 본 발명의 실시예에서 사용자는 하나 이상의 사용자로 이해될 수 있으며, 복수의 사용자들은 하나 이상의 사용자 그룹으로 구분될 수 있다. 하나 이상의 사용자들 각각은 하나 이상의 사용자 단말(110)에 대응될 수 있다. 즉, 제1 사용자는 제1 사용자 단말, 제2 사용자는 제2 사용자 단말, ..., 제n(상기 n은 자연수) 사용자는 제n 사용자 단말에 대응될 수 있다.
또한, 사용자 단말(110)은 암호화 장치(130)에서 제공하는 안전한 암호화 기능을 사용할 수 있으며, 필요에 따라 암호화 장치(130)를 독립적인 모듈로서 포함하여 구현될 수도 있다.
암호화 장치(130)는 평문을 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 암호문을 생성하는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 화이트박스 암호는 데이터 암호화에 사용되는 암호키를 외부로부터 보호하는 기술에 해당할 수 있고, 메모리 덤프(dump)나 리버싱(reversing) 등 강력한 공격자 환경에서도 안전한 구현 방법에 해당할 수 있다. 특히, 암호화 장치(130)는 기존의 화이트박스 암호 기술을 기반으로 확률론적 일방향성을 갖는 출력 인코딩을 추가한 블록암호 운영모드를 구현하여 암호화 과정의 일방향성을 제공할 수 있다.
또한, 암호화 장치(130)는 사용자 단말(110)과 블루투스, WiFi, 통신망 등을 통해 무선으로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 주고받을 수 있다.
일 실시예에서, 암호화 장치(130)는 데이터베이스(150)와 연동하여 평문의 암호화 과정에서 필요한 정보를 저장할 수 있다. 한편, 암호화 장치(130)는 도 1과 달리, 데이터베이스(150)를 내부에 포함하여 구현될 수 있고, 사용자 단말(110)의 내부에 포함되어 동작하는 형태로 구현될 수 있다. 또한, 암호화 장치(130)는 프로세서, 메모리, 사용자 입출력부 및 네트워크 입출력부를 포함하여 구현될 수 있으며, 이에 대해서는 도 2에서 보다 자세히 설명한다.
데이터베이스(150)는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 데이터베이스(150)는 복수의 사용자 단말(110)들로부터 수집한 평문에 관한 정보를 저장할 수 있고, 화이트박스 연산에 사용되는 테이블 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, 암호화 장치(130)가 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 과정에서 다양한 형태로 수집 또는 가공한 정보들을 저장할 수 있다.
도 2는 도 1의 암호화 장치의 시스템 구성을 설명하는 도면이다.
도 2를 참조하면, 암호화 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함할 수 있다.
프로세서(210)는 본 발명의 실시예에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 프로시저를 실행할 수 있고, 이러한 과정에서 읽혀지거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄 할 수 있다. 프로세서(210)는 암호화 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 암호화 장치(130)의 CPU(Central Processing Unit)로 구현될 수 있다.
메모리(230)는 SSD(Solid State Disk) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 암호화 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다. 또한, 메모리(230)는 전기적으로 연결된 프로세서(210)에 의해 실행됨으로써 본 발명에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법을 실행하는 명령들의 집합을 저장할 수 있다.
사용자 입출력부(250)은 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함하고, 예를 들어, 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치 스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)은 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, 암호화 장치(130)는 독립적인 서버로서 수행될 수 있다.
네트워크 입출력부(270)은 네트워크를 통해 사용자 단말(110)과 연결되기 위한 통신 환경을 제공하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다. 또한, 네트워크 입출력부(270)는 데이터의 무선 전송을 위해 WiFi, 블루투스 등의 근거리 통신 기능이나 4G 이상의 무선 통신 기능을 제공하도록 구현될 수 있다.
다만, 본 발명의 실시예에 따른 암호화 장치(130)가 위의 시스템 구성들을 동시에 모두 포함해야 하는 것은 아니며, 각각의 실시예에 따라 위의 시스템 구성들 중 일부는 생략될 수 있고, 상기의 시스템 구성들 중 일부 또는 전부를 선택적으로 포함하여 구현될 수도 있다.
도 3은 도 1의 암호화 장치의 기능적 구성을 설명하는 도면이다.
도 3을 참조하면, 암호화 장치(130)는 입력 인코딩부(310), 화이트박스 암호화부(330), 출력 디코딩부(350), 메시지 복원부(370) 및 제어부(390)를 포함할 수 있다.
다만, 본 발명의 실시예에 따른 암호화 장치(130)가 상기의 기능적 구성들을 동시에 모두 포함해야 하는 것은 아니며, 각각의 실시예에 따라 상기의 구성들 중 일부를 생략하거나, 상기의 구성들 중 일부 또는 전부를 선택적으로 포함하여 구현될 수도 있다. 또한, 암호화 장치(130)는 필요에 따라 상기의 구성들 중 일부를 선택적으로 포함하는 독립된 장치들로 구현될 수 있으며, 각 장치들 간의 연동을 통해 본 발명에 따른 암호화 방법을 수행할 수 있다. 이하, 각 구성들의 동작을 구체적으로 설명한다.
입력 인코딩부(310)는 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성할 수 있다. 이를 위해, 입력 인코딩부(310)는 인코딩 함수(encoding function)를 사용할 수 있으며, 평문 메시지를 인코딩 함수의 입력으로 제공할 수 있다. 이때, 인코딩 함수는 비선형 일대일 변환 함수로 구현될 수 있다. 입력 인코딩부(310)에 의해 인코딩된 평문은 화이트박스 암호화 과정에 대한 입력으로 사용될 수 있다. 또한, 입력 인코딩부(310)는 외부로부터 인코딩된 평문을 직접 수신할 수 있으며, 이 경우 평문에 대한 인코딩 동작은 생략될 수 있다.
일 실시예에서, 입력 인코딩부(310)는 평문 메시지를 복수의 평문 메시지 블록들로 분할하고, 복수의 평문 메시지 블록들 각각을 인코딩하여 복수의 인코딩된 평문 블록들을 생성할 수 있다. 복수의 인코딩된 평문 블록들 각각은 화이트박스 암호화 과정에서 입력으로 사용될 수 있으며, 각 인코딩된 평문 블록들에 대한 암호화 연산은 순차적으로 수행될 수 있다. 다른 실시예에서, 입력 인코딩부(310)는 복수의 평문 메시지 블록들 각각을 병렬적으로 인코딩할 수 있다. 즉, 입력 인코딩부(310)는 화이트박스 암호의 운영모드에 따라 각 인코딩된 평문 블록들에 대한 암호화 연산을 병렬적으로 처리할 수 있다. 예를 들어, 화이트박스 암호의 ECB(Electronic Code Block) 모드 또는 카운터(CTR) 모드의 경우 각 블록이 독립적으로 처리되는 구조인 점에서 병렬적인 인코딩이 가능할 수 있다.
화이트박스 암호화부(330)는 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성할 수 있다. 여기에서, 화이트박스 암호화 과정은 블록 암호 알고리즘의 경우 알고리즘을 테이블(table) 형태로 구현하고 암호화 과정에서 사용되는 암호키를 테이블 내에 숨겨두는 방식으로 외부 공격자가 암호키를 쉽게 유지하지 못하도록 하는 방법에 해당할 수 있다. 예를 들어, 화이트박스 암호화 과정은 복수의 반복 연산(예를 들어, 라운드 함수)들을 포함할 수 있으며, 각 반복 연산은 테이블을 참조하는 방식으로 구현될 수 있다.
일 실시예에서, 화이트박스 암호화부(330)는 암호키가 적용된 화이트박스 블록 암호 알고리즘을 이용하여 복수의 인코딩된 평문 블록들에 대응되는 복수의 인코딩된 암호문 블록들을 반복적으로 생성할 수 있다. 화이트박스 암호화부(330)는 각 인코딩된 평문 블록마다 인코딩된 암호문 블록을 생성하는 화이트박스 연산이 반복될 수 있으며, 화이트박스 암호의 운영모드에 따라 반복되는 연산이 병렬적으로 수행될 수도 있다.
일 실시예에서, 화이트박스 암호화부(330)는 인코딩된 평문 블록에 화이트박스 블록 암호 알고리즘을 적용하여 제1 중간 블록을 생성하고, 제1 중간 블록에 비트 선택 함수를 적용하여 제1 중간 블록의 일부에 해당하는 제2 중간 블록과 나머지에 해당하는 제3 중간 블록을 각각 생성하며, 제2 중간 블록에 일방향 함수를 적용하여 제4 중간 블록을 생성하고, 제3 중간 블록과 제4 중간 블록을 연결하여 인코딩된 암호문 블록을 생성할 수 있다. 화이트박스 암호화 과정에서 각 인코딩된 평문 블록에 대해 반복적으로 수행되는 화이트박스 연산은 복수의 단계들로 구성될 수 있다.
즉, 인코딩된 평문 블록을 기초로 디코딩 과정과 화이트박스 블록 암호 과정을 통해 제1 중간 블록이 생성될 수 있으며, 제1 중간 블록은 비트 선택 함수에 입력되어 일방향 함수의 입력으로 사용되는 제2 중간 블록과 제3 중간 블록으로 분할될 수 있다. 제2 중간 블록에 일방향 함수가 적용된 결과 제4 중간 블록이 생성될 수 있으며, 인코딩된 암호문 블록은 제3 중간 블록과 제4 중간 블록을 연결하여 생성될 수 있다.
일 실시예에서, 일방향 함수는 제2 중간 블록과 난수를 입력으로 수신하여 확률론적(probabilistic) 인코딩 방식에 따라 제4 중간 블록을 생성하도록 구현될 수 있다. 예를 들어, 일방향 함수는 ElGamal 암호, RSA-OAEP, 조합론의 PDF 기반 암호 등의 일방향 암호를 포함할 수 있다. 일방향 함수는 사용되는 암호에 따라 제2 중간 블록, 난수 및 공개키를 입력으로 수신할 수 있다.
일 실시예에서, 화이트박스 암호화부(330)는 인코딩된 암호문 블록에 압축(compress) 함수를 적용하여 초기 벡터를 갱신할 수 있다. 여기에서, 초기 벡터(IV, Initialization Vector)는 화이트박스 암호화 과정의 첫번째 반복에서 사용되는 값에 해당할 수 있으며, 화이트박스 암호의 운영모드에 따라 초기 벡터의 사용 방법이나 초기 벡터의 특성 등이 달라질 수 있다. 화이트박스 암호화부(330)는 화이트박스 암호화의 각 반복마다 초기 벡터를 갱신하여 동일한 초기 벡터가 연속적으로 사용되는 것을 방지할 수 있다.
특히, 화이트박스 암호화부(330)는 화이트박스 암호화 과정을 통해 생성된 인코딩된 암호문 블록을 압축 함수의 입력으로 사용할 수 있다. 여기에서, 압축 함수는 인코딩된 암호문 블록을 다음 반복에서 초기 벡터로 사용하기 위하여 정해진 크기로 압축하는 동작을 수행할 수 있다. 예를 들어, 압축 함수는 인코딩된 암호문 블록에서 일부 비트를 선택하는 함수 또는 해시 함수 등으로 구현될 수 있다.
출력 디코딩부(350)는 인코딩된 암호문을 디코딩하여 평문 메시지에 대응되는 암호문 메시지를 생성할 수 있다. 출력 디코딩부(350)는 화이트박스 암호화 과정의 각 반복마다 생성된 인코딩된 암호문 블록에 대해 디코딩 함수(decoding function)를 적용하여 암호문 메시지 블록을 생성할 수 있으며, 암호문 메시지 블록들을 연결하여 하나의 암호문 메시지를 생성할 수 있다. 이때, 디코딩 함수는 비선형 일대일 변환 함수로 구현될 수 있다.
메시지 복원부(370)는 암호문 메시지를 기초로 평문 메시지를 복원할 수 있다. 즉, 메시지 복원부(370)는 암호화 과정과 반대로 수행되는 3개의 단계들을 통해 암호문에서 평문을 복원할 수 있다. 구체적으로, 메시지 복원부(370)는 출력 인코딩 단계, 화이트박스 암호화 단계 및 입력 인코딩 단계를 순차적으로 수행할 수 있다.
먼저 출력 인코딩 단계는 초기 벡터(IV)와 함께 입력된 암호문 메시지를 인코딩하여 인코딩된 암호문을 생성하는 단계에 해당할 수 있다. 화이트박스 암호화 단계는 인코딩된 암호문을 입력으로 수신하여 화이트박스 암호화의 역방향 과정을 통해 인코딩된 평문을 출력으로 생성하는 단계에 해당할 수 있다. 또한, 입력 인코딩 단계는 인코딩된 평문을 인코딩하여 암호문 메시지에 대응되는 평문 메시지를 생성하는 단계에 해당할 수 있다.
제어부(390)는 암호화 장치(130)의 전체적인 동작을 제어하고, 입력 인코딩부(310), 화이트박스 암호화부(330), 출력 디코딩부(350) 및 메시지 복원부(370) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.
도 4는 본 발명에 따른 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법을 설명하는 순서도이다.
도 4를 참조하면, 먼저 암호화 장치(130)는 외부로부터 평문 메시지를 수신할 수 있다(단계 S410). 또한, 암호화 장치(130)는 다양한 데이터들을 기초로 평문 메시지를 생성할 수 있다. 예를 들어, 암호화 장치(130)는 사용자 단말(110)로부터 수신된 문자, 텍스트, 이미지, 영상 등을 이용하여 암호화 대상이 되는 평문 메시지를 생성할 수 있다.
이후, 암호화 장치(130)는 입력 인코딩부(310)를 통해 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성할 수 있다(단계 S430). 인코딩된 평문은 필요에 따라 복수의 블록들로 분할될 수 있으며, 암호화 과정으로 전달되어 암호화될 수 있다.
즉, 암호화 장치(130)는 화이트박스 암호화부(330)를 통해 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성할 수 있다(단계 S450). 특히, 본 발명에 따른 일방향 함수는 화이트박스 암호화 과정에 확률론적 일방향성을 제공할 수 있으며, 이에 따라 공개키에 대응되는 비밀키(또는 암호키) 없이는 복호화 기능을 수행할 수 없어 권한이 없는 제3자는 암호문을 획득하더라도 평문에 접근할 수 없다.
이후, 암호화 장치(130)는 출력 디코딩부(350)를 통해 인코딩된 암호문을 디코딩하여 평문 메시지에 대응되는 암호문 메시지를 생성할 수 있다(단계 S470). 암호화 장치(130)는 출력 디코딩부(350)의 동작이 안전한 영역에서 수행되도록 구현될 수 있으며, 인코딩된 암호문을 디코딩하는 과정이나 안전한 영역에서 암호문 메시지를 저장하는 과정에 대해 난독화를 적용함으로써 안전성을 향상시킬 수 있다.
도 5a 및 5b는 본 발명에 따른 화이트박스 암호와 일방향 함수를 이용한 암호 운영모드를 설명하는 도면이다.
도 5a 및 5b를 참조하면, 암호화 장치(130)는 평문 메시지와 시드(seed)를 입력으로 수신하여 인코딩된 출력 암호문 블록을 생성하도록 구현될 수 있다. 암호화 장치(130)에서 실행되는 암호화 방법은 1)입력 인코딩, 2)화이트박스 암호화 및 3)출력 디코딩의 3단계로 수행될 수 있다.
이때, 1) 및 3) 단계는 안전한 영역에서 이루어 질 수 있다. 해당 영역에서 PT(평문)와 CT(암호문)를 보관할 때, 1) 단계에서 PT를 인코딩할 때, 3) 단계에서 2) 단계를 통해 인코딩된 EncCT(인코딩된 암호문)를 받아 CT를 얻을 때, 난독화를 적용하면 더욱 안전성을 높일 수 있다.
보다 구체적으로, 1) 단계는 평문 N블록을 인코딩된 평문 N블록으로 변환하는 단계에 해당할 수 있으며, 다음과 같이 표현될 수 있다.
PT = (PT_1, PT_2, ..., PT_N) → EncPT = (EncPT_1, ... EncPT_N)
2) 단계는 인코딩된 평문 N블록을 인코딩된 암호문 N블록으로 변환하는 단계에 해당할 수 있으며, 다음과 같이 표현될 수 있다.
EncPT = (EncPT_1, ... EncPT_N) → EncCT = (EncCT_1, ... EncCT_N)
3) 단계는 인코딩된 암호문 N블록을 암호문 N블록으로 변환하는 단계에 해당할 수 있으며, 다음과 같이 표현될 수 있다.
EncCT = (EncCT_1, ... EncCT_N) → CT = (CT_1, ... CT_N)
또한, 2) 단계의 내부에서는 기존 블록 암호의 화이트박스 구현을 적용할 수 있다. 즉, 2) 단계는 인코딩된 평문을 입력으로 하여 인코딩된 암호문을 생성하는 단계에 해당할 수 있으며, 다중 블록의 메시지를 암호화하기 위해 해당 과정이 반복될 수 있다. 이때, 출력 암호문의 일부 정보는 다음 블록과 결합되어 사용될 수 있다.
도 5a에서, 본 발명에 따른 화이트박스 암호화 과정의 일 실시예는 평문 메시지 PT를 입력으로 수신하여 암호문 메시지 CT를 생성하는 과정에 해당할 수 있으며, 다음과 같이 표현될 수 있다.
CT = OutDecoding
Figure pat00001
OWF-WBC
Figure pat00002
InEncoding(PT;IV)
여기에서, InEncoding()은 입력 인코딩 단계(S510)에 대응되고, OWF-WBC()는 화이트박스 암호화 단계(S530)에 대응되며, OutDecoding()은 출력 디코딩 단계(S550)에 대응될 수 있다.
입력 인코딩 단계(S510)에서는 평문 메시지 PT에 비선형 1:1 변환이 적용되어 인코딩된 평문(EncPT)이 생성될 수 있다. 즉, EncPT = InEncoding(PT)이다. 한편, 입력 디코딩 함수는 입력 인코딩 함수의 역함수이며, PT = InDecoding(EncPT)이다.
화이트박스 암호화 단계(S530)에서는 인코딩된 평문 EncPT를 입력으로 하여 인코딩된 암호문 EncCT를 출력하는 화이트박스 블록암호 알고리즘이 수행될 수 있다. 즉, EncCT = OWF-WBC(EncPT) = P-OWF
Figure pat00003
WBC-BlockCipher(EncPT)이다.
이때, P-OWF() 함수의 입력으로 블록암호 BlockCipher()의 화이트박스 구현인 WBC-BlockCipher()가 사용될 수 있다. 또한, WBC-BlockCipher()는 암호키 K를 숨기도록 설계된 기존의 화이트박스 암호를 사용할 수 있으며, 고정된 K에 대하여 다음과 같은 성질을 가질 수 있다.
WBC-BlockCipher(EncPT) = WBC-OutEnc
Figure pat00004
BlockCipher
Figure pat00005
InDecoding(EncPT)
출력 디코딩 단계(S550)에서는 인코딩된 암호문 EncCT에 비선형 1:1 변환이 적용되어 암호문 메시지(CT)가 생성될 수 있다. 즉, CT = OutDecoding(EncCT)이다.
도 5b에서, 본 발명에 따른 화이트박스 암호화 과정의 일 실시예는 N개의 128비트 블록으로 이뤄진 평문 메시지 PT와 128비트의 초기 벡터 IV를 입력으로 수신하여 N개의 128비트 블록으로 이뤄진 암호문 메시지 CT를 생성하는 과정에 해당할 수 있다. 즉, 평문 메시지 PT는 복수의 평문 메시지 블록들로 분할될 수 있으며, 이에 따라 복수의 암호문 메시지 블록들이 생성될 수 있다. 예를 들어, PT = (PT_1, PT_2, ..., PT_N)이고, CT = (CT_1, CT_2, ..., CT_N)이다.
보다 구체적으로, 입력 인코딩 단계(S510)과 출력 디코딩 단계(S550)는 각각 도 5a의 InEncoding()과 OutDecoding()에 대응될 수 있다. 즉, EncPT = InEncoding(PT)이고, CT = OutDecoding(EncCT)이다.
또한, 화이트박스 암호화 단계(S530)는 I = 1, 2, ..., N에 대해 다음의 과정들이 반복적으로 수행될 수 있다.
① EncPT_i = IV_i
Figure pat00006
InEncoding(PT_i)
② B_i = WBC-BlockCipher(EncPT_i)
③ x_i = BitSelector(B_i)
④ EncCT_i = bitRemaining(x_i) || P-OWF(x_i, R_i)
⑤ IV_(i+1) = Compress(EncCT_i)
여기에서, WBC-BlockCipher(EncPT_i)는 WBC-OutEnc
Figure pat00007
BlockCipher
Figure pat00008
InDecoding(EncPT_i)이고, 암호키 K를 이용하여 인코딩된 평문 EncPT_i를 암호문 B_i로 만드는 블록 암호이다. 이때, K는 입출력 파라미터에 포함되지 않고, WBC-BlockCipher가 사용하는 테이블을 통해 숨겨질 수 있다. 또한, 블록 암호는 호환성을 위해 AES가 주로 사용될 수 있으나, LEA와 같은 다른 블록 암호가 사용될 수도 있다. 화이트박스 암호화 단계(S530)의 출력은 사용한 화이트박스 기술에 따라 WBC-인코딩된 암호문이 될 수 있다.
또한, 비트 선택자 BitSelector(B_i)는 128비트 B_i 중 파라미터 S를 이용하여 약속된 BS개의 일부 비트 x_i를 추출하는 함수이다. 비트 선택자는 상위 BS비트를 반환하는 제1 함수, 128개 비트 중 1이 BS개인 내부 파라미터 S의 비트가 1인 위치에 해당하는 x의 비트를 반환하는 제2 함수 등이 사용될 수 있다. 예를 들어, 제2 함수를 8비트에 적용하는 경우 다음과 같이 선택된(즉, 1로 표시) 위치의 비트만 추출될 수 있다.
AES_1(1, 0, 0, 1, 1, 1, 0, 1), S(1, 1, 0, 0, 0, 0, 1, 0) → x(1, 0, 0)
또한, 일방향 함수 P-OWF(x_i, R_i)는 입력 x_i와 난수 R_i를 이용하여 출력을 생성하는 일방향 함수이며, ElGamal 암호나 RSA-OAEP, 조합론의 PDF 기반 암호 등이 사용될 수 있다. 일방향 함수는 사용되는 암호에 따라 입력 x_i와 난수 R_i 외에 공개키 pk를 추가로 이용하여 출력을 생성할 수 있다. 이때, 역함수 계산에는 난수가 필요하지 않을 수 있다. 즉, y = P-OWF(x, pk, r)인 경우, x = P-OWF-1(y, sk)이다. 예를 들어, 128비트 EncPT_1을 화이트박스에 입력하여 얻는 y로부터 입력값 EncPT_1을 얻는 것은 공개키만으로 불가능할 수 있으며, 공개키 pk에 대응되는 비밀키 sk가 필요할 수 있다. 이러한 일방향성으로 인해 암호화 모듈만으로 복호화가 불가능할 수 있다. 한편, 난수 R_i는 128비트 난수 r을 생성하는 난수 생성 함수 rand()를 통해 생성될 수 있다.
또한, bitRemaining(x_i)는 128비트 B_i 중 비트 선택자에 의해 선택된 x_i를 제외한 나머지를 출력하는 함수에 해당할 수 있으며, B_i = x_i + bitRemaining(x_i)이다.
또한, Compress()는 암호문 EncCT_i를 다음 블록의 초기 벡터 IV_(i+1)로 사용하기 위해 128비트로 줄이는 압축 함수이다. 압축 함수는 일부 비트를 선택하는 함수 및 MD5 같은 해시 함수 등을 포함할 수 있다.
도 6은 본 발명에 따른 암호화 과정의 일 실시예를 설명하는 도면이다.
도 6을 참조하면, 암호화 장치(130)는 입력 인코딩 단계, 화이트박스 암호화 단계 및 출력 디코딩 단계를 통해 N개의 128비트 블록으로 이뤄진 평문 메시지 PT와 128비트 초기 벡터 IV를 입력으로 수신하여 N개의 128비트 블록으로 이뤄진 암호문 메시지 CT를 출력으로 생성할 수 있다.
보다 구체적으로, 암호화 장치(130)는 입력 인코딩 단계에서 128비트 평문 블록 PT_k를 각각 비선형 1:1 변환 InEncoding()을 통해 인코딩하여 각 128비트의 EncPT_1, EncPT_2, ..., EncPT_N을 생성할 수 있다. 이후, 암호화 장치(130)는 화이트박스 암호화 단계를 수행할 수 있으며, 화이트박스 암호화 단계는 WBC-BlockCipher 단계(S610)와 P-OWF 단계(S630)를 포함할 수 있다.
먼저, WBC-BlockCipher 단계(S610)에서는 다음의 (1) 내지 (3) 과정이 수행될 수 있다.
(1) 128비트 EncPT_1과 128비트 IV를 XOR하고 InEncoding()과 짝을 이루는 비선형 변환 InDecoding()을 통해 디코딩하여 128비트 DecPT_1을 생성
(2) 128비트 DecPT_1을 화이트박스 내부 테이블에 숨겨진 키를 사용하는 블록암호 AES에 입력하여 128비트 AES_1을 출력
(3) 입력한 x에 대하여 128개 비트 중 1이 64개인 파라미터 S의 비트 중 1인 위치에 해당하는 x의 비트를 상위 비트부터 순서대로 반환하는 함수 BitSelector(x)에 128비트 암호문 AES_1을 입력하여 AES_1의 64개 비트 x를 출력
또한, P-OWF 단계(S630)에서는 다음의 (4) 내지 (9) 과정이 수행될 수 있다.
(4) 64비트 x와 rand()함수를 이용하며 만든 128비트 난수 R_1을 연접하여 일방향함수 ElGamal 암호에 입력
(5) rand()함수를 이용하여 256비트 난수 r을 생성하고 ElGamal 암호의 도메인 파라미터 g와 q를 이용해 1024비트 C1=g^r(mod q)와 1024비트 공개키 K_e를 사용하여 1024비트 C2=x*{(K_e)^r}(mod q)를 계산하고 2048비트 순서쌍 (C1, C2)로 출력
(6) (3)의 AES_1에서 남은 64비트 y와 2048비트 순서쌍 (C1, C2)를 연접하여 2112비트 EncCT_1을 생성
(7) 하위 128비트를 출력하는 Comp 함수를 통해 EncCT_1의 하위 128비트를 IV_2로 출력
(8) EncPT_2와 IV_2를 이용하여 (1)~(7) 수행
(9) EncPT_2에서 EncPT_N까지 반복
마지막으로, 암호화 장치(130)는 출력 디코딩 단계에서 2112비트 EncCT_1, EncCT_2, ..., EncCT_N을 비선형 1:1 변환 함수 OutDecoding()로 디코딩하여 128비트 CT_1, CT_2, ..., CT_N을 생성할 수 있다.
도 7은 본 발명에 따른 복호화 과정의 일 실시예를 설명하는 도면이다.
도 7을 참조하면, 암호화 장치(130)는 출력 인코딩 단계, 화이트박스 암호화 단계 및 입력 인코딩 단계를 통해 N개의 128비트 블록으로 이뤄진 암호문 메시지 CT와 128비트 초기 벡터 IV를 입력으로 수신하여 N개의 128비트 블록으로 이뤄진 평문 메시지 PT를 출력으로 생성할 수 있다.
보다 구체적으로, 암호화 장치(130)는 출력 인코딩 단계에서 128비트 CT_1, CT_2, ..., CT_N을 비선형 1:1 함수 OutIncoding()을 통해 Incoding하여 2112비트 EncCT1, EncCT_2, ..., EncCT_N을 생성할 수 있다. 이후, 암호화 장치(130)는 화이트박스 암호화 단계를 수행할 수 있으며, 화이트박스 암호화 단계는 P-OWF 단계(S710)와 WBC-BlockCipher 단계(S730)를 포함할 수 있다.
먼저, P-OWF 단계(S710)에서는 다음의 (1) 내지 (5) 과정이 수행될 수 있다.
(1) 2112비트 EncCT_1 입력에 관하여 하위 128비트를 출력하는 Comp 함수를 통해 EncCT_1의 하위 128비트를 IV_2로 출력
(2) 2112비트 EncCT_1을 64비트, 1024비트, 1024비트씩 나눠 y, C1, C2로 분리
(3) C1, C2를 ElGamal 함수에 입력하고 ElGamal 함수의 도메인 파라미터 q와 256비트 개인키 K_d를 사용하여 K=C1^(K_d)(mod q)를 계산한 뒤, retrun=C2*{K^(-1)}(mod q)를 계산
(4) return에서 상위 64비트를 분리하여 x로 출력
(5) x와 (2)의 y를 입력하여 파라미터 S에 따른 BitSelector의 규칙에 따라 AES_1을 생성
또한, WBC-BlockCipher 단계(S730)에서는 다음의 (6) 내지 (9) 과정이 수행될 수 있다.
(6) 128비트 AES_1을 AES 복호화 알고리즘에 입력하여 출력한 128비트 값을 InDecoding 함수로 decoding하여 DecPT_1을 생성
(7) 128비트 DecPT_1과 128비트 IV를 XOR하여 EncPT_1을 생성
(8) EncCT_2와 (1)의 IV_2를 이용하여 (1)~(7) 수행
(9) EncCT_2에서 EncCT_N까지 반복
마지막으로, 암호화 장치(130)는 입력 인코딩 단계에서 128비트 EncPT_1, EncPT_2, ..., EncPT_N를 InEncoding()을 통해 인코딩하여 128비트의 평문 블록 PT_1, PT_2, ..., PT_N을 생성할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 화이트박스 암호화 시스템
110: 사용자 단말 130: 암호화 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 입력 인코딩부 330: 화이트박스 암호화부
350: 출력 디코딩부 370: 메시지 복원부

Claims (14)

  1. 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성하는 입력 인코딩 단계;
    상기 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성하는 화이트박스 암호화 단계; 및
    상기 인코딩된 암호문을 디코딩하여 상기 평문 메시지에 대응되는 암호문 메시지를 생성하는 출력 디코딩 단계를 포함하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  2. 제1항에 있어서, 상기 입력 인코딩 단계는
    상기 평문 메시지를 복수의 평문 메시지 블록들로 분할하는 단계; 및
    상기 복수의 평문 메시지 블록들 각각을 인코딩하여 복수의 인코딩된 평문 블록들을 생성하는 단계를 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  3. 제2항에 있어서, 상기 입력 인코딩 단계는
    상기 복수의 평문 메시지 블록들 각각을 병렬적으로 인코딩하는 단계를 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  4. 제2항에 있어서, 상기 화이트박스 암호화 단계는
    암호키가 적용된 화이트박스 블록 암호 알고리즘을 이용하여 상기 복수의 인코딩된 평문 블록들에 대응되는 복수의 인코딩된 암호문 블록들을 반복적으로 생성하는 단계를 포함하는 것을 특징으로 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  5. 제4항에 있어서, 상기 화이트박스 암호화 단계는
    인코딩된 평문 블록에 상기 화이트박스 블록 암호 알고리즘을 적용하여 제1 중간 블록을 생성하는 단계;
    상기 제1 중간 블록에 비트 선택 함수를 적용하여 상기 제1 중간 블록의 일부에 해당하는 제2 중간 블록과 나머지에 해당하는 제3 중간 블록을 각각 생성하는 단계;
    상기 제2 중간 블록에 상기 일방향 함수를 적용하여 제4 중간 블록을 생성하는 단계; 및
    상기 제3 중간 블록과 상기 제4 중간 블록을 연결하여 인코딩된 암호문 블록을 생성하는 단계를 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  6. 제5항에 있어서, 상기 화이트박스 암호화 단계는
    상기 인코딩된 암호문 블록에 압축(compress) 함수를 적용하여 상기 초기 벡터를 갱신하는 단계를 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  7. 제5항에 있어서, 상기 일방향 함수는
    상기 제2 중간 블록과 난수를 입력으로 수신하여 확률론적(probabilistic) 인코딩 방식에 따라 상기 제4 중간 블록을 생성하도록 구현되는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  8. 제1항에 있어서,
    상기 암호문 메시지를 기초로 상기 평문 메시지를 복원하는 메시지 복원 단계를 더 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  9. 제8항에 있어서, 상기 메시지 복원 단계는
    상기 초기 벡터와 함께 입력된 상기 암호문 메시지를 인코딩하여 상기 인코딩된 암호문을 생성하는 출력 인코딩 단계;
    상기 인코딩된 암호문을 입력으로 수신하여 상기 화이트박스 암호화의 역방향 과정을 통해 상기 인코딩된 평문을 출력으로 생성하는 화이트박스 암호화 단계; 및
    상기 인코딩된 평문을 인코딩하여 상기 암호문 메시지에 대응되는 평문 메시지를 생성하는 입력 인코딩 단계를 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법.
  10. 초기 벡터와 함께 입력된 평문 메시지를 인코딩하여 인코딩된 평문을 생성하는 입력 인코딩부;
    상기 인코딩된 평문을 입력으로 수신하여 일방향 함수가 적용된 화이트박스 암호화 과정을 통해 인코딩된 암호문을 출력으로 생성하는 화이트박스 암호화부; 및
    상기 인코딩된 암호문을 디코딩하여 상기 평문 메시지에 대응되는 암호문 메시지를 생성하는 출력 디코딩부를 포함하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치.
  11. 제10항에 있어서, 상기 화이트박스 암호화부는
    암호키가 적용된 화이트박스 블록 암호 알고리즘을 이용하여 상기 복수의 인코딩된 평문 블록들에 대응되는 복수의 인코딩된 암호문 블록들을 반복적으로 생성하는 것을 특징으로 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치.
  12. 제11항에 있어서, 상기 화이트박스 암호화부는
    인코딩된 평문 블록에 상기 화이트박스 블록 암호 알고리즘을 적용하여 제1 중간 블록을 생성하고, 상기 제1 중간 블록에 비트 선택 함수를 적용하여 상기 제1 중간 블록의 일부에 해당하는 제2 중간 블록과 나머지에 해당하는 제3 중간 블록을 각각 생성하며, 상기 제2 중간 블록에 상기 일방향 함수를 적용하여 제4 중간 블록을 생성하고, 상기 제3 중간 블록과 상기 제4 중간 블록을 연결하여 인코딩된 암호문 블록을 생성하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치.
  13. 제12항에 있어서, 상기 일방향 함수는
    상기 제2 중간 블록과 난수를 입력으로 수신하여 확률론적(probabilistic) 인코딩 방식에 따라 상기 제4 중간 블록을 생성하도록 구현되는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치.
  14. 제10항에 있어서,
    상기 암호문 메시지를 기초로 상기 평문 메시지를 복원하는 메시지 복원부를 더 포함하는 것을 특징으로 하는 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 장치.
KR1020220009241A 2021-12-22 2022-01-21 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치 KR20230095750A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210184505 2021-12-22
KR20210184505 2021-12-22

Publications (1)

Publication Number Publication Date
KR20230095750A true KR20230095750A (ko) 2023-06-29

Family

ID=86946379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220009241A KR20230095750A (ko) 2021-12-22 2022-01-21 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20230095750A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626974B1 (ko) * 2023-08-24 2024-01-19 쿤텍 주식회사 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122107A (ko) 2008-03-05 2010-11-19 이르데토 비.브이. 화이트―박스 구현

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122107A (ko) 2008-03-05 2010-11-19 이르데토 비.브이. 화이트―박스 구현

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626974B1 (ko) * 2023-08-24 2024-01-19 쿤텍 주식회사 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Similar Documents

Publication Publication Date Title
Lee et al. Data security in cloud computing using AES under HEROKU cloud
KR20150073753A (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
US11436946B2 (en) Encryption device, encryption method, decryption device, and decryption method
KR20170097509A (ko) 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말
KR20180110550A (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
JP2017187724A (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
Achuthshankar et al. A novel symmetric cryptography algorithm for fast and secure encryption
CA3061776A1 (en) Key information processing method and apparatus, electronic device and computer readable medium
CN110493265A (zh) 加密数据的方法及存储介质
KR20230095750A (ko) 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
Ajmal et al. Cloud computing platform: Performance analysis of prominent cryptographic algorithms
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
KR102319699B1 (ko) 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
Erondu et al. An encryption and decryption model for data security using vigenere with advanced encryption standard
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
Al-Smadi et al. Files cryptography based on one-time pad algorithm
CN111953480B (zh) 密钥生成装置以及方法、运算密钥生成装置以及方法
Kenekayoro Patrick The data encryption standard thirty four years later: An overview
JP6091394B2 (ja) 情報処理装置、暗号化方法
KR102130513B1 (ko) 비트치환 연산기, 확장 비트치환 연산기 및 이를 이용한 암호 장치
Ahuja et al. Dual layer secured password manager using Blowfish and LSB
Sangwan Combining Huffman text compression with new double encryption algorithm
KR102626974B1 (ko) 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템
JP2015082077A (ja) 暗号化装置、制御方法、及びプログラム