KR102301243B1 - 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치 - Google Patents

화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치 Download PDF

Info

Publication number
KR102301243B1
KR102301243B1 KR1020200072474A KR20200072474A KR102301243B1 KR 102301243 B1 KR102301243 B1 KR 102301243B1 KR 1020200072474 A KR1020200072474 A KR 1020200072474A KR 20200072474 A KR20200072474 A KR 20200072474A KR 102301243 B1 KR102301243 B1 KR 102301243B1
Authority
KR
South Korea
Prior art keywords
encryption
data
library
white
decryption
Prior art date
Application number
KR1020200072474A
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 주식회사 스틸리언
Priority to KR1020200072474A priority Critical patent/KR102301243B1/ko
Priority to JP2021098240A priority patent/JP7046424B2/ja
Application granted granted Critical
Publication of KR102301243B1 publication Critical patent/KR102301243B1/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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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

Abstract

일 실시예에 따른 화이트박스 암호를 이용한 데이터 암호화 장치는, 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 암호화 키 테이블을 생성하는 키 테이블 생성부 및 상기 암호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 암호화하는 화이트박스 암호 라이브러리를 포함하고, 상기 화이트박스 암호 라이브러리는, 상기 데이터에 대해 암호화 및 복호화를 수행한 후, 상기 화이트박스 암호 방식을 이용하여 암호화하는 것을 특징으로 한다.

Description

화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치{Method and device for data encryption/decryption using white box encryption}
본 발명은 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치에 관한 발명이다.
암호화 기술은 평문(Plain text)을 암호문(Cipher text)으로 바꾸는 기술이다. 이러한 암호화 기술은 소프트웨어 코드로 구현될 수도 있고, 하드웨어 장치로 구현될 수도 있다. 암호화 기술은 크게 블랙박스 암호 방법과 화이트박스 암호 방법으로 나뉘어질 수 있다.
블랙 박스에 기반한 암호 기술의 경우 입력된 평문을 암호화하는 과정에서 암호화 키(Key)가 필요하다. 이 암호화 키는 블랙 박스로 가정한 암호화 장치 내부에 존재한다. 블랙 박스는 그 안이 들여다 보이지 않음을 의미이다.
즉, 블랙박스에 기반한 암호화 장치의 설계는 크래커가 이 암호화 장치 내부를 들여다 볼 수 없다는 가정에서 출발한다. 따라서 크래커는 블랙 박스 기반의 암호화 장치에 입력되는 평문과 출력되는 암호화문만을 볼 수 있다. 따라서, 크래커는 두 개의 입력 값과 출력 값을 계속해서 관찰하여 어떤 패턴을 알아내고자 한다.
블랙 박스의 경우 단순히 암호화 장치의 설계자가 이 암호화 장치 자체는 완벽히 안전하다고 가정하는 것이므로, 만약에 이 암호화 장치 자체가 크래커에게 뚫려 버리면 암호화 키가 누출될 수 있다. 암호화 키가 누출되면 모든 암호화 과정은 크래커에게 완전히 공개되는 문제점이 발생한다.
이러한 블랙박스 암호 방법보다 보안성이 강화된 암호 방법이 화이트박스 암호 방법으로서, 도 1과 도 2는 화이트박스 암호를 설명하기 위한 도면이다. 도 1은 화이트박스 암호의 전반적인 구성을, 도 2는 화이트박스의 작동 원리를 설명하긴 위한 수식이다.
화이트박스(10)는 안을 들여다 볼 수 있는 투명한 상자를 의미한다. 따라서, 화이트박스 암호 방법은 크래커(40)가 화이트박스(10) 내부를 들여다 볼 수 있으므로, 암호화 및 복호화와 관련된 소프트웨어의 실행 과정을 모두 볼 수 있다는 가정에서 출발한다. 크래커가 암호화 장치 내부를 볼 수 있다면, 암호화 키(Key)를 획득할 수 있기 때문에, 크래커(40)가 암호문(20)을 쉽게 평문(30)으로 변환할 수 있으므로 설계자는 더 많은 사항을 고려하여 암호화 장치를 설계해야 한다.
암호화 장치를 화이트박스로 가정하면 암호화 키(Key)를 손쉽게 장치 내에 저장할 수 없다. 따라서 일반적인 화이트 박스에서는 암호화 키가 그대로 존재하지 않고 복잡한 암호화 연산 알고리즘과 뒤섞여 존재하므로 암호화 키를 따로 얻을 수가 없다. 또한 이 알고리즘은 되돌리기(invert)가 어려운 알고리즘이므로, 결과값을 가지고 원본값이나 암호화 키를 추측하기 어렵다.
즉, 화이트박스 암호는 알고리즘을 큰 룩업 테이블(look-up table)로 만들고 그 안에 암호 키를 소프트웨어로 구현된 암호 알고리즘과 뒤섞인 상태로 숨겨둠으로써, 내부의 동작을 분석하더라도 암호 키를 쉽게 유추하지 못하도록 하는 기법이다.
암호 알고리즘을 하나의 큰 룩업 테이블로 만들면 암호 키를 숨기는 것이 용이하지만 테이블 크기가 커질 수 있으므로, 테이블을 암호학적인 기법으로 적절히 분리하되 암호화 연산의 중간값이 노출되지 않도록 디코딩과 인코딩 과정을 수행하도록 하면 된다.
도 2에 도시된 바와 같이, 기본적인 화이트 박스 암호의 기본 원리는 인코딩 과정(Mi)과 디코딩 과정(Mi-1)이 별도의 테이블에서 계산된다. 따라서, 중간값이 노출되지 않고, 순차적인 인코딩과 디코딩으로 각각의 인코딩과 디코딩은 상쇄되면서 원래의 암호화 동작(Xi)만 수행하는 결과와 동일한 결과를 얻을 수 있다.
이와 같이, 현재의 화이트박스 암호는 암호 키를 사용하지 않기 때문에, 암호 키가 누출되지 않는 장점을 가지며, 표준 암호 기술과 호환되는 장점이 있다. 그러나, 암호 키가 숨겨진 화이트 박스 암호 알고리즘 자체가 누출되면 그를 통해 암호문을 복호화할 수 있는 문제점이 존재한다.
따라서, 일 실시예에 따른 화이트박스 암호를 이용한 암호화/복호화 방법 및 장치는 종래 기술이 가지고 있는 문제점을 해결하기 위한 고안된 발명으로서, 알고리즘의 일부가 누출되어도 복호화를 할 수 없도록 하여 보다 보안성이 향상된 암호화/복호화 방법 및 장치를 제공하기 위함이다.
구체적으로, 화이트박스 암호 라이브러리 안에 포함되어 있는 so 라이브러리만 독립적으로 유출된 경우, 복호화할 데이터와 키 테이블만 획득하면 원본 키를 알고 있지 못하더라도 복호화된 데이터가 누출될 수 있는 문제점을 해결하기 위해 고안된 발명이다.
일 실시예에 따른 화이트박스 암호를 이용한 데이터 암호화 장치는, 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 암호화 키 테이블을 생성하는 키 테이블 생성부 및 상기 암호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 암호화하는 화이트박스 암호 라이브러리를 포함하고, 상기 화이트박스 암호 라이브러리는, 상기 데이터에 대해 암호화 및 복호화를 수행한 후, 상기 화이트박스 암호 방식을 이용하여 암호화 할 수 있다.
상기 화이트박스 암호 라이브러리는, 안드로이드 기반의 jar 라이브러리와 so 라이브러리를 포함하며, 상기 jar 라이브러리는 상기 데이터에 대해 암호화를 하고, 상기 so 라이브러리는 상기 jar 라이브러리에 의해 암호화된 데이터를 복호화하여 복호화 데이터를 생성할 수 있다.
상기 so 라이브러리는, 화이트박스 암호 기반의 알고리즘을 이용하여 상기 복호화 데이터를 다시 암호화 할 수 있다.
일 실시예에 따른 화이트박스 암호를 이용한 데이터 복호화 장치는, 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 복호화 키 테이블을 생성하는 키 테이블 생성부 및 상기 복호화 키 테이블을 이용하여 상기 암호화된 데이터를 화이트박스 암호 기반의 방식으로 복호화를 하는 화이트박스 암호 라이브러리를 포함하고, 상기 화이트박스 암호 라이브러리는, 상기 암호화된 데이터에 대해 암호화 및 복호화를 수행한 후 상기 화이트박스 암호 방식을 이용하여 복호화할 수 있다.
상기 화이트박스 암호 라이브러리는, 안드로이드 기반의 jar 라이브러리와 so 라이브러리를 포함하며, 상기 jar 라이브러리는 상기 암호화된 데이터에 대해 암호화를 수행하고, 상기 so 라이브러리는 상기 jar 라이브러리에 의해 암호화된 데이터를 복호화한 후, 복호화된 데이터를 화이트박스 암호 기반의 알고리즘을 이용하여 다시 복호화할 수 있다.
일 실시예에 따른 화이트박스 암호를 이용한 데이터 암호화 방법은, 데이터 및 암호 키를 수신 받는 단계, 상기 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 암호화 키 테이블을 생성하는 단계 및 상기 암호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 암호화는 단계를 포함하고 상기 화이트박스 암호 기반의 방식으로 암호화하는 단계는, 안드로이드 기반의 jar 라이브러리 및 so라이브러리를 이용하여 상기 데이터에 대해 암호화 및 복호화 과정을 거친 후 상기 화이트박스 암호 방식을 이용하여 암호화 할 수 있다.
일 실시예에 따른 화이트박스 암호를 이용한 데이터 복호화 방법은, 암호화된 데이터 및 암호 키를 수신 받는 단계, 상기 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 복호화 키 테이블을 생성하는 단계 및 상기 복호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 복호화하는 단계를 포함하고 상기 화이트박스 암호 기반의 방식으로 복호화하는 단계는, 안드로이드 기반의 jar 라이브러리 및 so라이브러리를 이용하여 상기 암호화된 데이터에 대해 암호화 및 복호화 과정을 거친 후 상기 화이트박스 암호 방식을 이용하여 복호화할 수 있다.
일 실시예에 따른 화이트박스 암호를 이용한 암호화/복호화 방법 및 장치의 경우 데이터를 암호화 및 복호화함에 있어서, 데이터를jar 라이브러리 및 so 라이브러리를 통해 데이터를 암호화 및 복호화를 거친 후 화이트박스 방식의 암호화/복호화를 수행하므로, so 라이브러리만 분리 추출되어도 종래 기술과 다르게 최종 암호 데이터를 얻을 수 없어 보다 보안성이 향상된 암호화/복호화 장치를 제공할 수 있다.
도 1은 본 발명에 적용되는 화이트박스 암호의 전반적인 개념을 설명하기 위한 도면이다.
도 2는 본 발명에 적용되는 화이트박스의 작동 원리를 설명하긴 위한 수식이다.
도 3은 종래 기술에 따른 화이트박스 암호의 취약점을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 데이터 암호화 장치의 구성 요소를 도시한 블럭도이다.
도 5는 일 실시예에 따라 키 테이블 생성부에서 출력하는 두 종류의 키 테이블을 도시한 도면이다.
도 6은 일 실시예에 따라 데이터를 암호화는 방법을 설명하기 위한 도면이다.
도 7은 다른 실시예에 따른 데이터 복호화 장치의 구성 요소를 도시한 블럭도이다.
도 8은 다른 실시예에 따른 데이터를 복호화하는 방법을 설명하기 위한 도면이다
도 9는 일 실시예에 따른 데이터 암호화/복호화 장치의 구성을 설명하기 위한 도면이다.
도 10은 다른 실시예에 따른 데이터 암호화/복호화 장치의 구성을 설명하기 위한 도면이다.
도 11은 또 다른 실시예에 따른 데이터 암호화/복호화 장치의 구성을 설명하기 위한 도면이다.
이하, 본 발명에 따른 실시 예들은 첨부된 도면들을 참조하여 설명한다. 각 도면의 구성요소들에 참조 부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시 예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다. 또한, 이하에서 본 발명의 실시 예들을 설명할 것이나, 본 발명의 기술적 사상은 이에 한정되거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있다.
또한, 본 명세서에서 사용한 용어는 실시 예를 설명하기 위해 사용된 것으로, 개시된 발명을 제한 및/또는 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 명세서에서, "포함하다", "구비하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는다.
또한, 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함하며, 본 명세서에서 사용한 "제 1", "제 2" 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되지는 않는다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략한다.
본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암호화/복호화 방법은 컴퓨터 장치에 의하여 실행될 수 있다. 상기 컴퓨터 장치는 메모리에 로드 된 프로세서, 상기 프로세서에 의하여 수행되는 오퍼레이션(operation)이 로드(load) 되는 메모리 및 전원의 공급과 무관하게 상기 오퍼레이션을 저장하기 위한 스토리지를 포함한다. 다만, 상기 컴퓨터 장치의 구성은 하나의 예시에 불과하며, 상기 컴퓨터 장치는 연산 기능을 가지는 다양한 형태의 장치를 포함한다.
컴퓨터 장치는 암호화 또는 복호화 할 정보를 얻은 후 암호화/복호화 작업을 수행할 수 있다. 상기 정보는 컴퓨터 장치의 스토리지 장치에 저장된 것이거나, 컴퓨터 장치에 구비된 네트워크 인터페이스를 통하여 수신된 것이거나, 상기 컴퓨터 장치에 구비된 터치 스크린 등의 사용자 인터페이스를 통하여 입력 된 정보일 수 있다.
컴퓨터 장치는 입력 받은 정보에 대한 암호화/복호화를 수행하는 화이트박스 암호 모듈을 컴퓨터 장치에 구비된 메모리에 로드 한다. 일반적으로 암호화 또는 복호화 할 정보를 얻은 후 화이트박스 암호 모듈의 메모리 로드가 수행되나, 이와 반대로 화이트박스 암호 모듈의 메모리 로드가 먼저 이뤄진 후, 암호화 또는 복호화 할 정보를 얻는 동작이 수행 될 수도 있다.
즉, 화이트박스 암호 모듈은 필요 시에만 메모리에 일시적으로 로드 되는 일시 적재 모듈일 수도 있고, 메모리에 상시 로드 되어 있는 상태를 유지하는 상시 적재 모듈일 수도 있다. 화이트박스 암호 모듈이 상시 적재 모듈이더라도, 컴퓨터 장치의 부팅(booting) 과정에서는 메모리에 로드 되는 과정을 거칠 것이다.
화이트박스 암호 모듈을 상시 적재 모듈의 형태로 운영하는 경우, 일 실시예에 따르면 메모리의 커널(kernel) 영역에 상기 화이트박스 암호 모듈을 로드 할 수 있다. 커널 영역은 운영 체제가 사용하는 메모리 영역으로서, 운영 체제가 아닌 사용자 어플리케이션은 상기 커널 영역에 침범할 수 없다.
따라서, 메모리의 커널 영역에 로드 된 화이트박스 암호 모듈은 그 코드가 유출 되는 것이 방지될 수 있다. 또한, 부팅 과정에서 상기 화이트박스 암호 모듈을 로드 함으로써, 부팅이 마무리 된 후에야 동작할 수 있는 크래킹 목적의 사용자 어플리케이션이 화이트박스 암호 모듈의 바이너리 데이터를 얻는 것을 방지할 수 있다.
화이트박스 암호 모듈이 일시 적재 모듈의 형태로 운영되는 경우, 화이트박스 암호 모듈의 바이너리 데이터 사이즈만큼 메모리 용량을 아낄 수 있는 효과가 있다. 다만, 화이트박스 암호 모듈이 메모리에 로드 되는 과정에서 상기 화이트박스 암호 모듈의 바이너리가 크래킹 어플리케이션에 의하여 복제 되는 위험이 존재한다.
크래킹 어플리케이션은 상기 화이트박스 암호 모듈이 필요한 상황을 만든 후(예를 들어, 화이트박스 암호 모듈이 사용되는 결재 APP의 실행), 메모리 로드를 위한 시스템 함수를 후킹(hooking) 하여 메모리 어드레스를 얻는 등의 방식으로, 화이트박스 암호 모듈의 바이너리를 얻을 수 있으며(메모리 덤프 기술 사용), 이러한 경우 보안상의 문제가 발생할 수 있다.
이를 자세히 살펴보면, 도 3에 도시된 바와 같이 화이트박스 암호 라이브러리(70)는 암호화할 데이터(10)를 암호화 키 테이블(20)을 이용하여 암호화를 하여 암호 데이터(30)를 출력한다. 화이트박스 암호 라이브러리(70)는 일반적으로 aar 파일로 구성되어 있으며, aar 파일안에는 도 3에 도시된 바와 같이 안드로이드 기반의 jar 라이브러리(71) 파일과 so 라이브러리(73) 파일이 포함되어 있다. 그리고 so 라이브러리(73)는 입력된 데이터를 화이트박스 암호 함수(75)를 이용하여 암호화를 한다.
하지만, 화이트박스 암호 라이브러리(70)에 포함되어 있는 so 라이브러리(73)는 jar 라이브러리(71)와 독립적으로 화이트박스 암호 라이브러리(70)에서 추출될 수 있어서, 복호화할 데이터와 키 테이블만 획득하면 원본 키를 알고 있지 못하더라도 복호화된 데이터가 누출될 수 있는 문제점이 존재하였다.
따라서, 일 실시예에 따른 화이트박스 암호를 이용한 데이터 암호화/복호화 장치(300)는 이러한 문제점을 방지하기 위해 고안된 발명으로서, 종래 기술에 따라 화이트박스 암호 라이브러리(70)에서 so 라이브러리(73)만 독립적으로 추출된다 하더라도, 암호 데이터를 얻을 수 없도록 하여 보다 보안성이 향상된 암호화/복호화 방법을 제공하기 위함이다. 이하 도면을 통해 본 발명의 구성 요소 및 작동 순서에 대해 알아본다.
도 4는 일 실시예에 따른 데이터 암호화 장치(100)의 구성 요소를 도시한 블럭도이고, 도 5는 일 실시예에 따라 키 테이블 생성부(120)에서 출력하는 두 종류의 키 테이블을 도시한 도면이며, 도 6은 일 실시예에 따른 데이터 암호화 장치(100)가 데이터를 암호화하는 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예에 따른 데이터 암호화 장치(100)는 암호화 및 복호화에 사용할 키(Key)를 결정하는 키 결정부(110), 키 결정부(110)에서 결정된 암호화 키(50)를 기초로 암호화에 사용할 암호화 키 테이블(20)을 생성하는 키 테이블 생성부(120) 및 암호화 키 테이블(20)을 이용하여 데이터를 암호화하는 화이트박스 암호 라이브러리(130)를 포함할 수 있다.
키 테이블 생성부(120)는 도 5에 도시된 바와 같이 입력되는 암호화 키(50)를 키 테이블 생성 함수를 이용하여 데이터(20)를 암호화하는데 필요한 암호화 키 테이블(20)과 암호 데이터(30)를 복호화 하는데 필요한 복호화 키 테이블(40)을 각각 생성할 수 있다.
종래 AES(Advanced Encryption Standard) 알고리즘 방식의 암호화 방법의 경우 암호화 하는데 필요한 키랑 복호화 하는데 사용되는 키가 동일하였지만, 화이트박스 암호 방식의 경우 키 테이블을 이용하여 암호화를 수행하며, 암호화 할 때 사용되는 키 테이블과 복호화 하는데 사용되는 키 테이블이 서로 동일하다는 점에서 기존의 AES 알고리즘 방식의 암호화와 차이점이 존재한다.
화이트박스 암호 라이브러리(70)는 일반적으로 aar 파일로 구성되어 있으며, aar 파일안에는 도 6에 도시된 바와 같이 jar 라이브러리(140) 파일과 so 라이브러리(150) 파일이 포함되어 있다. 그리고 jar 라이브러리(140)에는 입력되는 암호 데이터(30)를 중간 암호 데이터(15)로 암호화하는 데이터 암호화부(141)를 포함하고 있으며, so 라이브러리(150)에는 데이터 암호화부(141)에서 암호화한 중간 암호 데이터(15)를 복호화하는 데이터 복호화부(151)와 복호화된 데이터를 화이트박스 암호 함수 알고리즘을 이용하여 에 다시 암호화를 수행하는 화이트박스 암호화부(153)가 포함되어 있다.
jar 라이브러리(140)는 외부로부터 암호화할 데이터(10)와 암호화 키 테이블(20)를 수신한 후, 사용자의 선택에 따라 수신 받은 암호화할 데이터(10)에 패딩(padding)을 부착할 수 있다. 만약, 암호화할 데이터(10)에 패딩을 붙인다면 pkcs5padding 방식으로 패딩을 붙일 수 있다.
구체적으로, jar 라이브러리(140)는 JAVA에서 Substitution Table 을 통한 치환 암호와 XOR 연산을 수행할 수 있으며, JNI(Java Native Interface)으로 연결된 C에서 XOR 및 Substitution Table을 통한 암호화 과정을 수행할 수 있다. jar 라이브러리(140)에서 사용되는 Substitution Table은 종래의 AES 알고리즘에서 사용하는 Substitution Box와는 다른 구조 및 내용을 포함하고 있다.
jar 라이브러리(140)에서 입력되는 데이터(10)가 암호화가 되어 중간 암호 데이터(15)로 변환 되면, so 라이브러리(150)는 중간 암호 데이터(15)를 수신 한 후 다시 복호화 및 암호화 과정을 수행한다.
구체적으로, so 라이브러리(140)에 포함되어 있는 데이터 복호화부(151)는 복호화할 중간 암호 데이터(15)를 수신한 후, 중간 암호 데이터(15)에 대해 복호화를 수행한다. 그 후, 화이트박스 암호화부(153)는 복호화된 데이터(10)를 다시 화이트박스 암호 알고리즘을 이용하여 암호화를 수행하여 최종 암호 데이터(30)를 출력한다.
즉, 일 실시예에 따른 화이트박스 암호 라이브러리(130)의 의해 데이터를 암호화하는 경우, 입력되는 데이터와 출력되는 데이터는 종래 기술과 동일하나, 암호화를 하는 과정에서 입력되는 데이터에 대해 암호화 및 복호화를 수행한 후에 다시 화이트박스 알고리즘에 기반한 암호화를 수행하는 것에 특징이 있다.
따라서, so 라이브러리(150)만 화이트박스 암호 라이브러리(130)에서 분리 추출되어도, so 라이브러리(150)에 입력되어야 하는 데이터는 중간 암호 데이터이어야 하므로, 암호화 할 데이터(10)와 암호화 키 테이블(20)을 알고 있어도 최종 암호 데이터(30)를 얻을 수 없다. 따라서, 종래 기술과 다르게so 라이브러리(150)만 화이트박스 암호 라이브러리(130)에서 분리 추출되어도, 최종 암호 데이터(30)가 누출되는 문제점을 해결할 수 있는 장점이 존재한다.
도 7은 다른 실시예에 따른 데이터 복호화 장치(200)의 구성 요소를 도시한 블럭도이고, 도 8은 다른 실시예에 따른 데이터 복호화 장치(200)에 따라 데이터를 복호화하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 일 실시예에 따른 데이터 복호화 장치(200)는 복호화에 사용할 키(Key)를 결정하는 키 결정부(210), 키 결정부(210)에서 결정된 암호화 키(50)를 기초로 복호화에 사용할 복호화 키 테이블(40)을 생성하는 키 테이블 생성부(220) 및 복호화 키 테이블(40)를 이용하여 암호화된 데이터를 복호화하는 화이트박스 암호 라이브러리(230)를 포함할 수 있다.
데이터 복호화 장치(200)의 키 결정부(210), 키 테이블 생성부(220) 및 화이트박스 암호 라이브러리(230)는 도 5에서 설명한 키 결정부(110), 키 테이블(120) 및 화이트박스 암호 라이브러리(130)와 유사한 역할을 하는바 이에 대한 설명은 생략하고, 도 8을 통해 복호화하는 과정에 대해 자세히 설명한다.
도8을 참고하면, jar 라이브러리(240)는 외부로부터 복호화할 암호 데이터(30)와 복호화 키 테이블(40)를 수신한 후, JAVA에서 Substitution Table 을 통한 치환 암호와 XOR 연산을 수행할 수 있으며, JNI(Java Native Interface)로 연결된 C에서 XOR 및 Substitution Table을 통한 암호화 과정을 수행할 수 있다.
jar 라이브러리(240)에서 사용되는 Substitution Table은 종래의 AES 알고리즘에서 사용하는 Substitution Box와는 다른 구조 및 내용을 포함하고 있다.
jar 라이브러리(240)에서 암호 데이터(30)가 암호화가 되어 중간 암호 데이터(25)로 변환이 되면, so 라이브러리(250)는 중간 암호 데이터(25)를 수신 한 후 다시 복호화 및 암호화 과정을 수행한다.
구체적으로, so 라이브러리(250)에 포함되어 있는 데이터 복호화부(251)가 복호화할 중간 암호 데이터(25)를 수신 한 후, 중간 암호 데이터(25)에 대해 복호화를 수행한다. 그 후, 화이트박스 복호화부(153)는 복호화된 암호 데이터(30)를 다시 화이트박스 암호 알고리즘 기반의 복호화를 수행하여 최종 데이터(10)를 출력한다.
즉, 일 실시예에 따른 화이트박스 암호 라이브러리(230)의 의해 데이터를 복호화하는 경우, 입력되는 데이터와 출력되는 데이터는 종래 기술과 동일하나, 복호화를 하는 과정에서 입력되는 암호 데이터에 대해 암호화 및 복호화를 수행한 후에 다시 복호화를 수행하는 것에 특징이 있다.
따라서, so 라이브러리(150)만 화이트박스 암호 라이브러리(130)에서 분리 추출되어도, so 라이브러리(150)에 입력되어야 하는 데이터는 중간 암호 데이터이어야 하므로, 암호화 된 데이터(10)와 복호화 키 테이블(40)을 알고 있어도 원 데이터(10)를 얻을 수 없다. 따라서, 종래 기술과 다르게so 라이브러리(150)만 화이트박스 암호 라이브러리(130)에서 분리 추출되어도, 원 데이터(10)가 누출되는 문제점을 해결할 수 있는 장점이 존재한다.
도 9 내지 도 11은 다양한 실시예에 따라 데이터 암호화/복호화 장치의 구성을 설명하기 위한 도면이다.
앞선 도면에서는 데이터 암호화 장치(100)와 데이터 복호화 장치(200)를 구분하여 설명하였지만, 본 발명의 실시 예는 이에 한정되는 아니고 도 9에 도시된 바와 같이 화이트박스 암호 기반의 데이터 암호화 장치(100)와 데이터 복호화 장치(200)를 포함하고 있는 데이터 암호화/복호화 장치(300)로 구현될 수 있다.
또한, 화이트박스 기반의 암호화 알고리즘과 AES 기반의 복호화 알고리즘은 서로 호환될 수 있으므로 일 실시예에 따른 데이터 암호화/복호화 장치(300)는 도 10에서 도시된 바와 같이 화이트박스 암호 기반의 데이터 암호화 장치(100)와 ASE 알고리즘 기반의 복호화 장치(200)를 포함하는 형태로 구현될 수 있다.
도 10과 같은 형태로 구현되는 경우, 데이터(10)를 암호화하는 경우에는 암호화 키 테이블(20)이 사용되며, 암호 데이터(30)를 복호화 하는 경우에는 복호화 키(60)이 사용된다.
또한, 도 11에 도시된 바와 같이 데이터 암호화/복호화 장치(300)는 도 10과 다르게ASE 알고리즘 기반의 암호화 장치(100)와 화이트박스 암호 기반의 데이터 복호화 장치(200)를 포함하고 있는 형태로 구현될 수 있다.
도 11과 같은 형태로 구현되는 경우, 데이터(10)를 암호화하는 경우에는 암호화 키(50)가 사용되며, 암호 데이터를 복호화 하는 경우에는 복호화 키 테이블(40)이 사용된다.
일 실시예에 따른 화이트박스 암호를 이용한 암호화/복호화 방법 및 장치의 경우 jar 라이브러리 및 so 라이브러리를 통한 암호화 및 복호화를 거친 후 화이트박스 방식의 암호화/복호화를 수행하므로, so 라이브러리만 분리 추출되어도 종래 기술과 다르게 최종 암호 데이터를 얻을 수 없어 보다 보안성이 향상된 암호화/복호화 장치를 제공할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
한편, 본 명세서에 기재된 다양한 실시예들은 하드웨어, 미들웨어, 마이크로코드, 소프트웨어 및/또는 이들의 조합에 의해 구현될 수 있다. 예를 들어, 다양한 실시예들은 하나 이상의 주문형 반도체(ASIC)들, 디지털 신호 프로세서(DSP)들, 디지털 신호 프로세싱 디바이스(DSPD)들, 프로그램어블 논리 디바이스(PLD)들, 필드 프로그램어블 게이트 어레이(FPGA)들, 프로세서들, 컨트롤러들, 마이크로 컨트롤러들, 마이크로 프로세서들, 여기서 제시되는 기능들을 수행하도록 설계되는 다른 전자 유닛들 또는 이들의 조합을 통해 구현될 수 있다.
또한, 예를 들어, 다양한 실시예들은 명령들을 포함하는 판독가능한 매체에 수록되거나 인코딩될 수 있다. 판독가능한 매체에 수록 또는 인코딩된 명령들은 프로그램 가능한 프로세서 또는 다른 프로세서로 하여금 예컨대, 명령들이 실행될 때 방법을 수행하게끔 할 수 있다. 판독가능한 매체는 저장 매체를 포함하며, 저장 매체는 에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 예를 들어, 이러한 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광학 디스크 저장 매체, 자기 디스크 저장 매체 또는 기타 자기 저장 디바이스를 포함할 수 있다.
또한, 명세서에서는 특정한 순서로 동작들이 도면에 도시되어 있지만, 이러한 동작들이 원하는 결과를 달성하기 위해 도시된 특정한 순서, 또는 순차적인 순서로 수행되거나, 또는 모든 도시된 동작이 수행되어야 할 필요가 있는 것으로 이해되지 말아야 한다. 임의의 환경에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 상술한 실시예에서 다양한 구성요소들의 구분은 모든 실시예에서 이러한 구분을 필요로 하는 것으로 이해되어서는 안되며, 기술된 구성요소들이 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키징될 수 있다는 것이 이해되어야 한다.
10: 데이터
20: 암호화 키 테이블
30: 암호 데이터
40: 복호화 키 테이블
50: 암호화 키
100: 데이터 암호화 장치
120: 키 테이블 생성부
130: 화이트박스 암호 라이브러리
140: jar 라이브러리
150: so 라이브러리
200: 데이터 복호화 장치

Claims (7)

  1. 데이터를 암호화하기 위한 장치로서,
    암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 암호화 키 테이블을 생성하는 키 테이블 생성부; 및
    상기 암호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 암호화하는 화이트박스 암호 라이브러리;를 포함하고
    상기 화이트박스 암호 라이브러리는,
    안드로이드 기반의 jar 라이브러리와 so 라이브러리를 포함하며,
    상기 jar 라이브러리는,
    상기 암호화 키 테이블을 이용하여 상기 데이터에 대해 암호화를 하여 중간 암호 데이터를 생성하는 데이터 암호화부를 포함하고
    상기 so 라이브러리는,
    상기 중간 암호 데이터에 대해 복호화를 하여 상기 데이터를 생성하는 데이터 복호화부 및 생성된 상기 데이터에 대해 상기 화이트박스 암호 방식을 이용하여 암호화를 하여 최종 암호 데이터를 생성하는 화이트박스 암호화부를 포함하는 것을 특징으로 하는, 화이트박스 암호를 이용한 데이터 암호화 장치.
  2. 삭제
  3. 삭제
  4. 암호 데이터를 복호화하기 위한 장치로서,
    암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 복호화 키 테이블을 생성하는 키 테이블 생성부; 및
    상기 복호화 키 테이블을 이용하여 상기 암호 데이터를 화이트박스 암호 기반의 방식으로 복호화를 하는 화이트박스 암호 라이브러리;를 포함하고
    상기 화이트박스 암호 라이브러리는,
    안드로이드 기반의 jar 라이브러리와 so 라이브러리를 포함하며,
    상기 jar 라이브러리는,
    상기 복호화 키 테이블을 이용하여 상기 암호 데이터에 대해 암호화를 하여 중간 암호 데이터를 생성하는 데이터 암호화부를 포함하고
    상기 so 라이브러리는,
    상기 중간 암호 데이터에 대해 복호화를 하여 상기 암호 데이터를 생성하는 데이터 복호화부 및 생성된 상기 암호 데이터에 대해 상기 화이트박스 암호 방식을 이용하여 복호화를 하여 데이터를 생성하는 화이트박스 복호화부를 포함하는 것을 특징으로 하는, 화이트박스 암호를 이용한 데이터 복호화 장치.
  5. 삭제
  6. 데이터 및 암호 키를 수신 받는 단계;
    상기 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 암호화 키 테이블을 생성하는 단계; 및
    상기 암호화 키 테이블을 이용하여 상기 데이터를 상기 화이트박스 암호 기반의 방식으로 암호화는 단계;를 포함하고
    상기 화이트박스 암호 기반의 방식으로 암호화하는 단계는,
    안드로이드 기반의 jar 라이브러리를 이용하여 상기 암호화 키 테이블을 기초로 상기 데이터에 대해 암호화를 하여 중간 암호 데이터를 생성하는 단계; 및
    안드로이드 기반의 so 라이브러리를 이용하여 상기 중간 암호 데이터에 대해 복호화를 하여 상기 데이터를 생성하고 생성된 상기 데이터에 대해 상기 화이트박스 암호 방식을 이용하여 암호화를 하여 최종 암호 데이터를 생성하는 단계;를 포함하는 것을 특징으로 하는 화이트박스 암호를 이용한 데이터 암호화 방법.
  7. 암호 데이터 및 암호 키를 수신 받는 단계;
    상기 암호 키를 기초로 화이트박스 암호(White-Box Cryptography, WBC) 기반의 복호화 키 테이블을 생성하는 단계; 및
    상기 복호화 키 테이블을 이용하여 상기 암호 데이터를 상기 화이트박스 암호 기반의 방식으로 복호화하는 단계;를 포함하고
    상기 화이트박스 암호 기반의 방식으로 복호화하는 단계는,
    안드로이드 기반의 jar 라이브러리를 이용하여 상기 복호화 키 테이블을 기초로 상기 암호 데이터에 대해 암호화를 하여 중간 암호 데이터를 생성하는 단계; 및
    안드로이드 기반의 so 라이브러리를 이용하여 상기 중간 암호 데이터에 대해 복호화를 하여 상기 암호 데이터를 생성하는 데이터 복호화부 및 생성된 상기 암호 데이터에 대해 상기 화이트박스 암호 방식을 이용하여 복호화를 하여 데이터를 생성하는 단계;를 포함하는 것을 특징으로 하는, 화이트박스 암호를 이용한 데이터 복호화 방법.
KR1020200072474A 2020-06-15 2020-06-15 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치 KR102301243B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200072474A KR102301243B1 (ko) 2020-06-15 2020-06-15 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치
JP2021098240A JP7046424B2 (ja) 2020-06-15 2021-06-11 ホワイトボックス暗号を利用したデータの暗号化/復号化方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200072474A KR102301243B1 (ko) 2020-06-15 2020-06-15 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102301243B1 true KR102301243B1 (ko) 2021-09-13

Family

ID=77796552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200072474A KR102301243B1 (ko) 2020-06-15 2020-06-15 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치

Country Status (2)

Country Link
JP (1) JP7046424B2 (ko)
KR (1) KR102301243B1 (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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150040576A (ko) * 2013-10-07 2015-04-15 한국전자통신연구원 오픈 환경에서의 데이터 보호 방법 및 장치
KR20150090438A (ko) * 2014-01-29 2015-08-06 한국전자통신연구원 화이트박스 암호 장치 및 그 방법
KR20170097509A (ko) * 2016-02-18 2017-08-28 한국전자통신연구원 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710623B2 (en) 2008-03-05 2017-07-18 Irdeto B.V. Cryptographic system
US8510726B2 (en) 2008-05-23 2013-08-13 Irdeto Canada Corporation System and method for generating white-box implementations of software applications
FR2943178B1 (fr) 2009-03-13 2011-08-26 New Imaging Technologies Sas Capteur matriciel a faible consommation
EP2553571B1 (en) 2010-03-31 2020-12-23 Irdeto B.V. A system and method for encapsulating and enabling protection through diverse variations in software libraries

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150040576A (ko) * 2013-10-07 2015-04-15 한국전자통신연구원 오픈 환경에서의 데이터 보호 방법 및 장치
KR20150090438A (ko) * 2014-01-29 2015-08-06 한국전자통신연구원 화이트박스 암호 장치 및 그 방법
KR20170097509A (ko) * 2016-02-18 2017-08-28 한국전자통신연구원 화이트 박스 암호화 기반의 연산 방법 및 그 방법을 수행하는 보안 단말

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 쿤텍 주식회사 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Also Published As

Publication number Publication date
JP2021196611A (ja) 2021-12-27
JP7046424B2 (ja) 2022-04-04

Similar Documents

Publication Publication Date Title
US8634549B2 (en) Ciphertext key chaining
US8767959B2 (en) Block encryption
JP2016189626A (ja) ワイヤレスデータ保護のためのシステム及び方法
US8681975B2 (en) Encryption method and apparatus using composition of ciphers
KR101527329B1 (ko) 데이터 암호화 장치 및 방법
CN111010266B (zh) 消息的加解密、读写方法、装置、计算机设备和存储介质
US8804953B2 (en) Extensive ciphertext feedback
US8041033B2 (en) Cipher feedback with variable block chaining
KR102301243B1 (ko) 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치
CN115967485A (zh) 基于量子密钥的加解密系统
JP2023063430A5 (ko)
JP2008035305A (ja) 暗号化方法及びデータ秘匿方法
KR20210017396A (ko) 신뢰 서버의 준동형 암호 기반 확장 가능한 그룹 키 생성 방법 및 시스템
CN109361506A (zh) 信息处理方法
CN114726511A (zh) 数据处理方法和装置
WO2022054130A1 (ja) 暗号システム、方法及びプログラム
Shah et al. Language support for efficient computation over encrypted data
Awang et al. Multi-agent integrated password management (MIPM) application secured with encryption
US20190012469A1 (en) Data processing method and data processing system
US20210240863A1 (en) Integrated circuit configured to perform symmetric encryption operatoins with secret key protection
JP7215245B2 (ja) 情報処理装置、情報処理方法及びプログラム
Lukusa et al. Performance Analysis of a Hybrid Security Algorithm for Secure Cloud Environment
Tan et al. A High-security Configuration Circuit Design for SoPC
Khan et al. In-Depth Analysis of Cryptographic Algorithms for Cloud-Database Security
CN117411681A (zh) 一种基于tee的密码软键盘输入方法

Legal Events

Date Code Title Description
AMND Amendment
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant