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

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

Info

Publication number
KR20180007459A
KR20180007459A KR1020160088498A KR20160088498A KR20180007459A KR 20180007459 A KR20180007459 A KR 20180007459A KR 1020160088498 A KR1020160088498 A KR 1020160088498A KR 20160088498 A KR20160088498 A KR 20160088498A KR 20180007459 A KR20180007459 A KR 20180007459A
Authority
KR
South Korea
Prior art keywords
white
box
computing device
data
cryptographic module
Prior art date
Application number
KR1020160088498A
Other languages
English (en)
Other versions
KR102543267B1 (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 KR1020160088498A priority Critical patent/KR102543267B1/ko
Publication of KR20180007459A publication Critical patent/KR20180007459A/ko
Application granted granted Critical
Publication of KR102543267B1 publication Critical patent/KR102543267B1/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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

화이트박스 암호를 이용한 암/복호화 방법이 제공된다. 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은, 컴퓨팅 장치가, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 컴퓨팅 장치가, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하는 단계와, 상기 컴퓨팅 장치가, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함한다.

Description

화이트박스 암호를 이용한 암/복호화 방법 및 그 장치{Method and apparatus for white box cryptography}
본 발명은 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 하드웨어로 구성된 보안 요소(secure element)를 이용하지 않고, 범용 프로세서 및 범용 저장 공간을 이용한 암/복호화를 수행 할 때 보안성이 약화되는 문제를 보완하는 방법 및 그 장치에 관한 것이다.
암호화 기술은 평문(Plain text)을 암호문(Cipher text)으로 바꾸는 기술이다. 이러한 암호화 기술은 소프트웨어 코드로 구현될 수도 있고, 하드웨어 장치로 구현될 수도 있다. 암호화 기술은 화이트박스 암호 방법 및 블랙박스 암호 방법을 포함한다.
도 1을 참조하여, 화이트박스 암호 방법을 블랙박스 암호 방법과 비교하여 설명한다.
블랙박스 암호 방법(30)의 암호 키(36)는 블랙박스로 가정한 암호화 장치 내부(38)에 들어 있다. 블랙박스라고 하는 것은 '그 안이 들여다 보이지 않는다.'는 의미이다. 즉, 블랙박스 암호 방법(30)의 설계는 크래커(cracker)가 이 암호화 장치 내부를 들여다 볼 수 없다는 가정에서 출발한다. 그러나 크래커는 블랙박스 기반의 암호화 장치에 입력되는 평문(32)과 출력되는 암호문(34)을 계속 관찰하여 어떤 패턴을 알아낼 수 있고, 이 암호화 장치 자체가 뚫려 버리면 암호화 키가 그대로 누출될 수 있다.
블랙박스 암호 방법(30)보다 더 보안성이 강화된 방식이 화이트박스 암호 방법(40)이다. 화이트박스(42)는 안을 들여다 볼 수 있는 투명한 상자를 의미한다. 화이트박스 암호 방법(40)은 크래커가 화이트박스(42) 내부를 들여다 볼 수 있으므로, 암/복호화와 관련된 소프트웨어의 실행 과정을 모두 볼 수 있다는 가정에서 출발한다.
암호화 장치를 화이트박스로 가정하면 암호 키(36)를 손쉽게 장치 내에 저장할 수 없을 것이다. 따라서 화이트박스 암호 방법(40)에서는 알고리즘을 룩업 테이블(look-up table)로 만들고, 암호 키를 소프트웨어로 구현된 암호 알고리즘과 뒤섞인 상태로 상기 룩업 테이블 내부에 숨겨둠으로써, 소프트웨어의 동작을 분석하더라도 암호 키를 쉽게 유추하지 못하도록 한다.
화이트박스 암호 기술은 기존의 보안 하드웨어를 이용한 기술과 달리 소프트웨어만으로 구현되는 보안 기술이라는 점에서 많은 장점을 갖는다. 소프트웨어 만으로 암호 알고리즘의 암호화 키 및 중간 연산 값을 보호할 수 있어. 키 및 키를 보호하기 위한 모듈의 분배 및 설치가 쉽고, 비용 면에서도 효율적이다. 또한 오류 발생시에도 소프트웨어 업데이트 혹은 패치 전송을 통해서 원격으로 수정이 가능하다는 장점도 있다.
이러한 암호화 기술에는 모바일 디바이스를 이용한 전자 상거래 관련 결제에 적용된다. 모바일 결제에 이용되는 기존의 하드웨어 기반의 보안 방법을 설명하기 위하여, 도 2 및 도 3을 참조한다.
도 2는 하드웨어로 구성된 보안 요소를 이용한 결제 기술을 설명하기 위한 도면이다. 모바일 디바이스에 보안 영역을 제공하는 하드웨어 보안 요소(15)로, 크게 통신사가 발급하는 USIM과 디바이스에 내장된 eSE(embedded SE)가 이용된다. USIM의 보안 영역은 소형 CPU와 메모리로 구성되는데, CPU는 암/복호화 기능으로 사용자를 식별하고, 메모리는 부가서비스를 위한 저장공간으로 이용된다. 즉 상기 보안 영역은 보안 토큰(Hardware Security Module, HSM)으로서 역할 할 수 있다. 제조 단말기에 내장된 eSE 또한 같은 역할을 수행할 수 있다.
모바일 디바이스를 통한 결제는 상술한 USIM, eSE를 포함한 하드웨어 보안 요소(15)에 암호화 키, 전자 인증서 등의 보완 관련 데이터를 보관하고, 모바일 결제 관련 애플릿 등의 프로그램을 저장, 설치하여 암, 복호화를 수행함으로써 중요 데이터의 노출을 방지하고 보안 강도를 높이고 있다.
하드웨어 보안 요소(15)에 기반한 암호화 모듈은 보안 강도가 높은 장점이 있지만, 하드웨어의 특성상, 그에 기반한 보안 모듈을 개발하는 데에 어려움이 따른다. USIM의 경우, 통신사에게 제어권이 있으므로 각각의 통신사에게 사용권 허가를 받아야 하고, eSE의 경우, 모바일 기기 제조사에 제어권이 있고, 제조사 별로 eSE 형태가 상이하다. 따라서 개별적 SE 형태에 맞는 애플릿의 개발이 필요하며, 통신사와 하드웨어 제조사와의 협업이 필수적이다. 또한 사용중인 하드웨어 SE의 취약점이 발견된 경우 대응이 용이하지 않아 유지보수에 어려움이 있다. 해당 취약점을 보완한 새로운 제품으로 교체하는 방법 외에는 다른 방법이 없다. 또한 하드웨어 SE 외부에서 일어나는 동작에 대한 보호도 불가능하다. 예를 들어 PIN의 입력 등, SE 외부에서 일어나는 동작을 보호하지 못하므로, 사용자의 중요한 입력 값이나 모바일 앱(mobile APP) 내부의 중요한 데이터는 공격자에게 노출될 수 있다.
도 3은 결제 서버(20)에서 결제와 관련된 암/복호화 기능을 수행하는 경우를 설명하기 위한 도면이다. 도 3과 같이 결제 서버(20)에서 암/복호화 기능을 수행하는 경우에는 서버(20)와 모바일 디바이스(100)간의 네트워크 통신이 필수적이어서, 모바일 디바이스(100)가 네트워크 접속이 불가능한 위치에 있는 경우에는 결제 시스템의 사용이 불가능해진다. 예를 들어, 통신 음영 지역에서의 버스 요금 결제 등이 불가능하다.
따라서 하드웨어 보안 요소(15)또는 외부의 결제 서버(20)에 의한 보안 로직을 수행하는 것 대신, 범용 프로세서 및 범용 메모리를 이용하되 보안성을 증대시키는 소프트웨어 보안 요소를 이용하여 보안 로직을 수행하는 방법 및 그 방법을 이용한 암/복호화 방법 또는 결제 인증 방법의 제공이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 하드웨어 보안 요소의 도움 없이도 보안성이 강화된 보안 환경을 제공하는 소프트웨어 보안 요소를 통하여 암/복호화를 수행하는 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 제1 장치에서 화이트박스 암호 모듈 전체를 추출하여 제2 장치에서 상기 화이트박스 암호 모듈을 수행함으로써, 암호화 키의 획득 없이도 암호화 또는 복호화를 무단으로 수행하는 공격에 대해 대비할 수 있는 암/복호화 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 기존의 보안 방법이 갖던 하드웨어 의존성 및 제약 조건을 극복하고, 모든 컴퓨팅 장치에 적용되는 범용성을 가지는 암/복호화 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 하드웨어 보안 요소가 구비되지 않은 컴퓨팅 장치를 이용하여 안전한 결제를 지원하기 위한 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하는 단계와, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함한다.
일 실시예에서, 상기 런타임에 얻어진 데이터는, 상기 런타임에 조회되는 기 지정된 정보 및 상기 런타임에 사용자 인터페이스를 통하여 입력 받는 정보를 포함할 수 있다.
일 실시예에서, 상기 런타임에 얻어진 데이터는, 상기 컴퓨팅 장치에 종속된 정보 및 상기 컴퓨팅 장치의 사용자에 종속된 정보를 포함할 수 있다. 상기 디바이스에 종속된 정보는 상기 컴퓨팅 장치의 고유 식별자이고, 상기 사용자에 종속된 정보는 상기 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나일 수 있다.
일 실시예에서, 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계는, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 초기화 벡터(initialization vector, IV)를 유도하는 단계와, 상기 초기화 벡터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함할 수 있다.
일 실시예에서, 상기 메모리에 로드 하는 단계는 상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치에 구비된 범용 프로세서(general-purpose processor)에서 실행될 수 있다. 이 때, 상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것이다.
일 실시예에서, 상기 화이트박스 암호 모듈은 상기 런타임에 얻어진 데이터가 다른 데이터로 교체되는 것을 방지하기 위한 안티-디버깅(anti-debugging) 오퍼레이션을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따르면 컴퓨팅 장치의 범용 프로세서에 의하여 수행되는 결제 인증 방법이 제공된다. 본 실시예에 따른 결제 인증 방법은, 결제 금액 정보를 포함하는 결제 요청 정보를 외부 장치로부터 수신하는 단계와, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여, 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 단계와, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 상기 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하고, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 단계와, 상기 결제 인증 데이터를 상기 외부 장치에 송신하는 단계를 포함한다.
일 실시예에서, 상기 결제 인증 데이터를 생성하는 단계는, 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터가 올바른 데이터인 경우, 상기 외부 장치에 의하여 결제 성공 처리되는 제1 결제 인증 데이터를 생성하는 단계와, 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터 중 적어도 하나가 잘못된 데이터인 경우, 상기 외부 장치에 의하여 결제 거부 처리되는 제2 결제 인증 데이터를 생성하는 단계를 포함할 수 있다. 이 때, 상기 제1 결제 인증 데이터와 상기 제2 결제 인증 데이터는 하나의 비트 이상 서로 다른 디지털 데이터이다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치는, 화이트박스 암호 모듈이 로드 되는 비-보안 주소 영역을 가지는 메모리와, 상기 화이트박스 암호 모듈을 위한 보안 요소를 구비하지 않은 범용 프로세서와, 결제 단말기와 통신할 수 있는 근거리 통신 인터페이스를 포함하되, 상기 화이트박스 암호 모듈은, 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 오퍼레이션과, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하는 오퍼레이션과, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 오퍼레이션을 포함하고, 상기 근거리 통신 인터페이스는 상기 결제 단말기로부터 상기 결제 요청 정보를 수신하고, 상기 결제 단말기에 상기 결제 인증 데이터를 송신한다.
일 실시예에서, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치의 식별자가 올바른 것이 아니거나, 상기 사용자 입력 데이터가 올바른 것이 아닌 경우 올바르지 않은 결제 인증 데이터를 생성할 수 있다. 이 때, 상기 근거리 통신 인터페이스는 상기 결제 단말기로부터 승인 거절 신호를 수신할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치는, 화이트박스 암호 모듈이 로드 되는 비-보안 주소 영역을 가지는 메모리와, 상기 화이트박스 암호 모듈을 위한 보안 요소를 구비하지 않은 범용 프로세서와, 네트워크 연결을 위한 네트워크 인터페이스를 포함하되, 상기 화이트박스 암호 모듈은, 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 오퍼레이션과, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하는 오퍼레이션과, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 오퍼레이션을 포함하고, 상기 근거리 통신 인터페이스는 상기 네트워크를 통하여 연결된 결제 서버로부터 상기 결제 요청 정보를 수신하고, 상기 결제 서버에 상기 결제 인증 데이터를 송신한다.
일 실시예에서, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치의 식별자가 올바른 것이 아니거나, 상기 사용자 입력 데이터가 올바른 것이 아닌 경우 올바르지 않은 결제 인증 데이터를 생성할 수 있다. 이 때, 상기 네트워크 인터페이스는 상기 결제 서버로부터 승인 거절 신호를 수신할 수 있다.
본 발명의 몇몇 실시예들에 따르면, 다양한 디바이스에서 수행할 수 있는 암호화 방법 및 장치를 제공할 수 있는 효과를 달성할 수 있다.
본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 기술이 가지는 취약점을 보완하여, 보안 강도를 높일 수 있는 효과를 달성할 수 있다.
본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 기술을 이용하여 범용적이고 유지보수가 용이한 결제 인증 솔루션을 제공할 수 있는 효과를 달성할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1은 화이트박스 암호화 기술을 블랙박스 암호화 기술과 비교하여 설명하기 위한 도면이다.
도 2는 하드웨어 보안 요소를 통해 이루어지는 모바일 결제 방법을 설명하기 위한 도면이다.
도 3은 결제 서버 측에서 보안 로직이 수행 되는 모바일 결제 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법의 순서도이다.
도 5는 도 4의 일부 동작을 보다 자세히 설명하기 위한 상세 순서도이다.
도 6은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제1 블록 구성도이다.
도 7은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제2 블록 구성도이다.
도 8은 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암호화 방법의 제1 신호 흐름도를 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제3 블록 구성도이다.
도 10은 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암호화 방법의 제2 신호 흐름도를 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
도면을 통한 발명의 설명에 앞서, 본 발명의 몇몇 실시예들에서 보완하고자 하는 화이트박스 암호 기술의 단점을 설명한다. 화이트박스 암호 기술은 소프트웨어만으로 암호 키를 안전하게 보관할 수 있고, 신뢰할 수 없는 단말에서 암호화 알고리즘이 실행되더라도 암호 키가 드러나지 않도록 한다. 따라서 암호 키를 추출하고자 하는 공격에 대해서는 안전하게 구현되어 있다고 평가된다. 그러나 화이트박스 암호 모듈은 그 모듈 전체를 추출하여 전체를 가져다 쓰는 공격에 대해서는 취약하다. 화이트박스 암호를 활용하는 암, 복호화 코드 전체가 추출될 수 있고, 크래커가 상기 암, 복호화 코드 실행을 위한 인터페이스를 알 수 있다면 굳이 암호 키를 추출하지 않아도 화이트박스 암호의 로직(logic)에 포함된 암호 키를 활용하는 것이 가능하다.
본 발명의 몇몇 실시예들에 따르면, 크래커의 공격에 의해 화이트박스 암호 모듈 전체가 추출된 경우에도, 다른 장치에서 상기 추출된 화이트박스 암호 모듈이 정상적으로 동작되지 않도록 함으로써, 상술한 단점을 보완한다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은 컴퓨팅 장치에 의하여 실행될 수 있다. 이하, 본 명세서에서 '암/복호화'는 암호화 또는 복호화를 의미한다. 상기 컴퓨팅 장치는 메모리에 로드 된 프로세서, 상기 프로세서에 의하여 수행되는 오퍼레이션(operation)이 로드(load) 되는 메모리 및 전원의 공급과 무관하게 상기 오퍼레이션을 저장하기 위한 스토리지를 포함한다. 다만, 상기 컴퓨팅 장치의 구성은 하나의 예시에 불과하며, 상기 컴퓨팅 장치는 연산 기능을 가지는 다양한 형태의 장치를 포함한다.
도 4는 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법의 순서도이다. 이하, 화이트박스 암호를 이용한 암/복호화 방법에 대해 개략적으로 설명한다. 이하, 이해의 편의를 위하여, 각각의 동작에 대한 주체가 컴퓨팅 장치인 경우, 그 기재는 생략될 수도 있음을 유의한다.
컴퓨팅 장치는 암호화 또는 복호화 할 정보를 얻는다(S100). 상기 정보는 상기 컴퓨팅 장치의 스토리지 장치에 저장된 것이거나, 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 수신된 것이거나, 상기 컴퓨팅 장치에 구비된 터치 스크린 등의 사용자 인터페이스를 통하여 입력 된 것일 수 있다.
상기 컴퓨팅 장치는 상기 정보에 대한 암/복호화를 수행하는 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 한다(S105). 도 4에는 암호화 또는 복호화 할 정보를 얻은 후 상기 화이트박스 암호 모듈의 메모리 로드가 수행되는 것으로 도시되어 있으나, 그와 반대로 상기 화이트박스 암호 모듈의 메모리 로드가 먼저 이뤄진 후, 암호화 또는 복호화 할 정보를 얻는 동작이 수행 될 수도 있다. 즉, 상기 화이트박스 암호 모듈은 필요 시에만 메모리에 일시적으로 로드 되는 일시 적재 모듈일 수도 있고, 메모리에 상시 로드 되어 있는 상태를 유지하는 상시 적재 모듈일 수도 있다. 상기 화이트박스 암호 모듈이 상시 적재 모듈이더라도, 상기 컴퓨팅 장치의 부팅(booting) 과정에서는 메모리에 로드 되는 과정을 거칠 것이다.
상기 화이트박스 암호 모듈을 상시 적재 모듈의 형태로 운영하는 경우, 일 실시예에 따르면 메모리의 커널(kernel) 영역에 상기 화이트박스 암호 모듈을 로드 할 수 있다. 커널 영역은 운영 체제가 사용하는 메모리 영역으로서, 운영 체제가 아닌 사용자 어플리케이션은 상기 커널 영역에 침범할 수 없다. 따라서, 메모리의 커널 영역에 로드 된 화이트박스 암호 모듈은 그 코드가 유출 되는 것이 방지될 수 있다. 또한, 부팅 과정에서 상기 화이트박스 암호 모듈을 로드 함으로써, 부팅이 마무리 된 후에야 동작할 수 있는 크래킹 목적의 사용자 어플리케이션이 화이트박스 암호 모듈의 바이너리 데이터를 얻는 것을 방지할 수 있다.
화이트박스 암호 모듈의 바이너리는 룩업 테이블의 사이즈 등으로 인하여 상당한 메모리 공간을 차지하는 점을 감안하여, 본 발명의 몇몇 실시예들에 따르면 상기 화이트박스 암호 모듈의 바이너리 사이즈에 따라, 상기 화이트박스 암호 모듈을 상시 적재 모듈로서 운영하거나, 일시 적재 모듈로서 운영할 수 있다. 예를 들어, 컴퓨팅 장치는 운영 체제 부팅 과정에서 화이트박스 암호 모듈 바이너리의 데이터 사이즈를 체크하고, 상기 데이터 사이즈가 기준치 이하인 경우 상기 화이트박스 암호 모듈을 부팅 과정에서 메모리의 커널 영역에 로드 하고 부팅이 유지 되는 한 로드 상태를 유지하며(상시 적재 모듈), 상기 데이터 사이즈가 기준치 이상인 경우 부팅 과정에서는 화이트박스 암호 모듈을 로드 하지 않는다(일시 적재 모듈).
상기 화이트박스 암호 모듈이 일시 적재 모듈의 형태로 운영되는 경우, 화이트박스 암호 모듈의 바이너리 데이터 사이즈만큼 메모리 용량을 아낄 수 있는 효과가 있다. 다만, 화이트박스 암호 모듈이 메모리에 로드 되는 과정에서 상기 화이트박스 암호 모듈의 바이너리가 크래킹 어플리케이션에 의하여 복제 되는 위험이 존재한다.
상기 크래킹 어플리케이션은 상기 화이트박스 암호 모듈이 필요한 상황을 만든 후(예를 들어, 화이트박스 암호 모듈이 사용되는 결재 APP의 실행), 메모리 로드를 위한 시스템 함수를 후킹(hooking) 하여 메모리 어드레스를 얻는 등의 방식으로, 화이트박스 암호 모듈의 바이너리를 얻을 수 있을 것이다(메모리 덤프 기술 사용). 이러한 행위를 방지하기 위하여, 다양한 안티-디버깅, 코드 난독화, 안티 메모리 덤프 기술 등이 활용되어 상기 화이트박스 암호 모듈의 바이너리가 생성될 수 있다. 하지만, 상기 보안 기술에도 불구하고 상기 화이트박스 암호 모듈의 바이너리가 유출되더라도, 본 발명의 몇몇 실시예들은 유출된 화이트박스 암호 모듈을 이용한 암/복호화가 무단으로 수행되는 것을 방지할 수 있다. 그 이유에 대하여 이하 설명한다.
다시 도 4를 참조하여 설명한다. 컴퓨팅 장치에 구비된 프로세서가 메모리에 로드 된 화이트박스 암호 모듈을 실행한다(S110). 상기 프로세서의 상기 화이트박스 암호 모듈 실행 시점은 상기 컴퓨팅 장치에 설치된 운영 체제의 스케줄러에 의하여 결정되는데, 예를 들어 상기 화이트박스 암호 모듈이 사용자 어플리케이션에 의하여 호출 될 수 있는 함수들의 집합인 라이브러리(library)인 경우, 상기 프로세서의 상기 화이트박스 암호 모듈 실행 시점은 결제 APP 등의 사용자 어플리케이션이 상기 라이브러리에 포함된 함수를 호출하는 시점이 될 것이다.
컴퓨팅 장치는, 상기 화이트박스 암호 모듈의 런타임에, 시작 데이터를 결정한다(S120). '런타임(run-time)'은 소프트웨어가 프로세서를 통하여 실행되는 시점을 가리키는 점에서, 컴파일 타임, 로드 타임과는 구별 되는 시점을 가리킨다. 따라서, 화이트박스 암호 모듈의 런타임에 시작 데이터를 결정한다는 것은, 화이트박스 암호 모듈이 프로세서를 통하여 실행되는 도중에 상기 시작 데이터를 결정하는 오퍼레이션도 상기 프로세서를 통하여 실행되는 것을 가리킨다.
컴퓨팅 장치는, 상기 시작 데이터를 상기 화이트박스 암호 모듈의 런타임에 얻어진 데이터를 이용하여 결정한다. 예를 들어, 컴퓨팅 장치는 상기 시작 데이터를 상기 런타임에 입력되거나 조회된 데이터를 이용하여 결정한다.
상기 화이트박스 암호 모듈 외부의 오퍼레이션에 의하여 결정된 시작 데이터가 상기 화이트박스 암호 모듈의 실행 환경을 왜곡하거나 속이는 것을 방지하기 위해, 상기 시작 데이터를 결정하는 오퍼레이션은 상기 화이트박스 암호 모듈에 포함될 수 있다.
상기 시작 데이터는 상기 화이트박스 암호 모듈이 암/복호화를 수행할 때 필요한 데이터이다. 보다 자세하게는, 상기 시작 데이터는 상기 화이트박스 암호 모듈이 암/복호화를 개시할 때 필요한 데이터이다. 예를 들어, 상기 시작 데이터는 초기화 벡터(initialization vector) 또는 넌스(nonce)이다.
컴퓨팅 장치는, 상기 시작 데이터를 이용하여 화이트박스 암호 모듈의 암/복호화 동작을 수행한다(S125).
도 4를 참조하여 설명된 실시예에 따르면, 화이트박스 암호 모듈이 암/복호화를 수행할 때 필요한 데이터인 시작 데이터가 상기 화이트박스 암호 모듈의 런타임에 결정되고, 런타임에 얻어진 데이터를 이용하여 결정된다. 따라서, 상기 화이트박스 암호 모듈의 바이너리가 통째로 외부로 유출되면 상기 시작 데이터가 유출 되기 전과 달라지도록 시작 데이터를 결정하는 오퍼레이션을 구현할 수 있다. 이 경우, 화이트박스 암호 모듈의 바이너리가 통째로 외부로 유출되더라도 암/복호화 동작이 제대로 수행되지 않을 것이다. 따라서, 본 실시예에 따르면 하드웨어 보안 요소(SE)를 사용하지 않고도 화이트 박스 암호 기술의 약점이 보완 된다.
일 실시예에서, 상기 시작 데이터는 상기 화이트박스 암호 모듈의 런타임에 상기 컴퓨팅 장치에 사용자 입력된 데이터를 이용하여 생성될 수 있다.
일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 컴퓨터로 읽을 수 있는 기록 매체에서 상기 화이트박스 암호 모듈의 런타임에 조회된 데이터를 이용하여 생성될 수 있다. 상기 기록 매체는, 예를 들어 ROM(Read Only Memory) 일 수 있다. ROM은 데이터가 기록된 후에는 수정이 불가능하므로, 화이트박스 암호 모듈의 런타임에 컴퓨팅 장치의 ROM에서 조회된 데이터를 이용하여 상기 시작 데이터를 생성함으로써, 상기 시작 데이터가 화이트박스 암호 모듈의 실행 환경을 정확하게 가리키도록 할 수 있다. 상기 조회된 데이터는 상기 컴퓨팅 장치의 고유 식별자일 수 있다. 상기 고유 식별자는, 예를 들어 MAC(Medium Access Control) 주소, IMEI(International Mobile Equipment Identity)일 수 있다.
일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 근거리 통신 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터를 이용하여 생성될 수 있다. 상기 근거리 통신 인터페이스는, 예를 들어 RFID(Radio Frequency Identification)를 위한 것이거나, NFC(Near Field Communication)를 위한 것이거나, ZIGBEE를 위한 것이거나, 블루투스(Bluetooth)를 위한 것이거나, 그 외의 근거리 통신 인터페이스를 위한 것일 수 있다.
일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터를 이용하여 생성될 수 있다.
일 실시예에서, 상기 시작 데이터는 상기 화이트박스 암호 모듈의 런타임에 상기 컴퓨팅 장치에 사용자 입력된 데이터, 상기 컴퓨팅 장치에 구비된 컴퓨터로 읽을 수 있는 기록 매체에서 상기 화이트박스 암호 모듈의 런타임에 조회된 데이터, 상기 컴퓨팅 장치에 구비된 근거리 통신 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터, 및 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터 중 둘 이상을 이용하여 생성될 수 있다.
상기 화이트박스 암호 모듈의 런타임에 얻어진 다양한 데이터를 이용하여 상기 시작 데이터를 상기 런타임에 결정함으로써, 상기 화이트박스 암호 모듈이 유출 되지 않은 것처럼 속이는 것이 더 어려워지는 효과가 있다. 이러한 효과에 의하여 화이트박스 암호 기술의 취약점(화이트박스 암호 모듈의 바이너리가 통째로 유출 되는 경우 암/복호화 키 없더라도 암/복호화는 가능해 지는 점)이 보완 된다.
시작 데이터의 결정과 관련하여 도 5를 참조하여 보다 자세히 설명한다.
도 5에 도시된 바와 같이, 상기 시작 데이터는 디바이스에 종속된 정보와 사용자에 종속된 정보 모두를 이용하여 결정될 수 있다(S122, S124). 상기 디바이스는 상기 화이트박스 암호 모듈이 수행되는 컴퓨팅 장치를 가리킨다. 상기 디바이스에 종속된 정보는, 상기 컴퓨팅 장치의 고유 식별자, 예를 들어 MAC 주소나, IMEI 값 또는 기기 제조사에 의하여 부여된 시리얼 넘버일 수 있다. 상기 사용자에 종속된 정보는, 예를 들어 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나를 포함할 수 있다. 상기 생체 정보는 얼굴 인식 정보, 지문 정보, 홍채 인식 정보 등을 포함한다.
상기 디바이스에 종속된 정보를 이용하여 상기 시작 데이터를 결정하는 이유는, 화이트박스 암호 모듈이 수행되는 컴퓨팅 장치가 허용 또는 등록 되지 않은 장치 등 올바르지 않은(incorrect) 장치인지 여부를 반영하기 위함이다. 또한, 상기 사용자에 종속된 정보를 이용하여 상기 시작 데이터를 결정하는 이유는, 컴퓨팅 장치를 도난 당하거나 잃어버린 경우에도 허용되지 않은 사람이 화이트박스 암호 모듈에 의한 암/복호화 동작을 수행하는 것을 방지하기 위함이다.
컴퓨팅 장치는 디바이스에 종속된 정보와 사용자에 종속된 정보를 모두 이용하여 초기화 벡터(IV)를 유도한다(S126). 초기화 벡터란 비트 라인이며, 스트림 암호 또는 블록 암호를 임의의 암호화 사용 모드에서 실행할 때 사용되는 값이다. 특히 블록 암호에서 첫 블록을 암호화할 때 사용된다. CBC, CFB, OFB에서 각각 사용될 수 있다. 블록 암호(block cipher)란 암호문을 만들기 위해 암호 키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방법이다. 평문의 동일 블록들이 하나의 메시지에서 동일한 암호문으로 되지 않도록 하기 위해 이전 암호 블록의 암호문을 다음 블록에 순서대로 적용하는 것이다. 같은 시간에 암호화된 동일 메시지들이 같은 암호문을 만들지 않도록 난수 발생기에 의한 초기화 벡터를 평문의 첫 블록에 조합함으로써 다음 블록들이 이전 암호 블록과 다른 암호문을 생성하는 것이 일반적이다.
일 실시예에서, 상기 디바이스에 종속된 정보 및 사용자에 종속된 정보가 상기 초기화 벡터를 통하여 유출되는 것을 방지하기 위해, 상기 디바이스에 종속된 정보의 해쉬(hash) 값과 상기 사용자에 종속된 정보의 해쉬 값을 이용하여 상기 초기화 벡터를 유도하거나, 디바이스에 종속된 정보와 사용자에 종속된 정보의 연결(concatenation)에 대한 해쉬 값을 이용하여 상기 초기화 벡터를 유도할 수 있다.
컴퓨팅 장치는 초기화 벡터를 이용하여 화이트박스 암호 모듈의 암/복호화를 개시한다(S128). 초기화 벡터가 만들어지지 않으면 화이트박스 암호 모듈의 암/복호화가 수행될 수 없으므로, 사용자에 종속된 정보가 입력되기 전에는 화이트박스 암호 모듈의 동작을 일시 정지 시킬 수 있다.
지금까지 본 발명의 몇몇 실시예들에 따른 화이트박스 암호를 이용한 암/복호화 방법에 대해 살펴보았다. 상기 화이트박스 암호를 이용한 암/복호화 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터 프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 데스크탑 PC와 같은 고정식 컴퓨팅 장치, 노트북, 스마트폰, 태블릿 PC와 같은 모바일 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터 프로그램은, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하고, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하고, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 오퍼레이션을 실행시키기 위한 것일 수 있다. 상기 컴퓨터 프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있으나, 네트워크를 통하여 배포되는 것일 수도 있다.
상기 컴퓨터 프로그램은, 안드로이드, iOS와 같은 모바일 장치 운영 체제 내의 한 모듈 형태로 구현 될 수도 있다.
이하, 본 발명의 다른 실시예에 따른 화이트박스 암호 장치(200)의 구성 및 동작을 도 6을 참조하여 설명한다. 도 6을 참조하면, 본 실시예에 따른 화이트박스 암호 장치(200)는 통신 인터페이스(205), 데이터 입출력부(210), 화이트박스 암호부(215), 하드닝부(220) 및 사용자정보 인터페이스(225)를 포함할 수 있다.
통신 인터페이스(205)는 외부 장치로부터 암호화 또는 복호화할 데이터를 수신하여, 데이터 입출력부(210)에 제공한다. 또한, 통신 인터페이스(205)는 암호화 또는 복호화된 데이터를 데이터 입출력부(210)로부터 제공받아 외부 장치로 송신한다.
데이터 입출력부(210)는 통신 인터페이스(205), 사용자 인터페이스(225), 화이트박스 암호부(215) 및 하드닝 부(220) 사이의 데이터 송수신을 연결한다.
화이트박스 암호부(215)는 데이터 입출력부(210)로부터 제공된 데이터를 화이트박스 암호 방법으로 암호화 또는 복호화 할 수 있다. 화이트박스 암호부(215)는, 화이트박스 암호부가 실행되는 런타임에, 화이트박스 암호부를 통한 암/복호화의 시작을 위해 필요한 초기화 벡터를 생성하되, 상기 런타임에 얻은 데이터를 이용하여 상기 초기화 벡터를 생성할 수 있다. 상기 초기화 벡터의 생성에는 사용자 인터페이스(225)를 통하여 상기 런타임에 입력된 사용자 종속적인 데이터가 이용될 수 있다. 상기 초기화 벡터의 생성에 대하여는 이미 자세히 설명한 바 있으므로, 중복 설명은 생락한다.
하드닝 부(220)는 화이트박스 암호 방법을 보완하기 위한 모듈을 포함한다. 하드닝 부(220)는 안티-디버깅 모듈(222), 난독화 모듈(224), 무결성 검증 모듈(225)을 포함할 수 있다. 하드닝 부(220)는 화이트박스 암호 기술의 취약점을 보완하여 보안 강화의 효과를 가져올 수 있다.
안티-디버깅 모듈(222)은 크래커 애플리케이션이 화이트박스 암호부(215)의 동작에 대해 디버깅을 시도할 때, 디버깅을 방해하고 분석을 방해하는 기능을 수행할 수 있다. 화이트박스 암호부(215)의 바이너리가 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법 등 다양한 방법을 사용하여 분석을 방해할 수 있다.
디버거는 주로 원하는 코드에 중단점을 지정하여 프로그램 실행을 정지하고, 메모리에 저장된 값을 살펴보며, 실행을 재개하거나, 코드를 단계적으로 실행하는 등의 동작을 한다. 크래커가 화이트박스 암호 모듈을 디버깅 하는 경우, 암, 복호화의 수행을 정지하고 메모리에 로드 된 값들을 볼 수 있다. 이 경우 런타임에 입력 받는 시작 데이터가 유출 될 수 있다. 시작 데이터가 유출 되면, 크래커는 화이트박스 암호 모듈을 통째로 다른 컴퓨팅 장치의 메모리에 로드하고, 상기 화이트박스 암호 모듈 디버깅 모드로 실행하면서 상기 유출된 시작 데이터를 입력할 수 있게 될 것이다. 안티-디버깅 모듈(222)은 이러한 디버거의 동작을 감지하여 즉시 화이트박스 암호 모듈의 실행을 중지하는 등의 동작을 수행한다.
난독화 모듈(224)은 화이트박스 암호 모듈의 바이너리를 난독화하는 바이너리 난독화 기능을 수행한다. 화이트박스 암호 모듈의 바이너리는 난독화 모듈(224)에 의하여 난독화 된 후 메모리에 로드 될 수 있다. 이 때, 안티-디버깅 모듈(222)의 동작이 무력화 되어 디버깅 모드로 화이트박스 암호 모듈이 동작하더라도, 난독화 된 바이너리는 그 해독이 어렵다. 따라서, 난독화 모듈(224)은 크래커가 화이트박스 암호 모듈의 바이너리를 리버스 엔지니어링 기술 등을 통해 해독하여 상기 시작 데이터까지 유출 되는 것을 방지한다.
무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리가 원본 그대로인지 여부를 검증한다. 즉, 무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리가 크래커에 의하여 조작된 것인지 여부를 검증한다.
무결성 검증 모듈(225)은 화이트박스 암호 모듈의 런타임 도중에 적어도 1회 이상 무결성을 검증할 수 있다. 예를 들어, 상기 시작 데이터의 결정 전후에 무결성을 검증하거나, 초기화 벡터의 유도 전후에 무결성을 검증하거나, 암/복호화 수행 전후에 무결성을 검증할 수 있다. 무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리의 원본에 대한 평가 정보, 예를 들어 해시 값 등을 저장하고, 저장 된 상기 평가 정보를 이용하여 메모리에 로드 된 화이트박스 암호 모듈의 바이너리의 무결성을 검증할 수 있다.
지금까지, 화이트박스 암호 기술의 취약점을 보완하기 위한 본 발명의 몇몇 실시예들에 추가로 적용될 수 있는 보안 강화 실시예들을 살펴보았다. 상술한 하드닝부(220)의 각 모듈은 소프트웨어 업데이트에 대응하여 갱신되거나, 새로운 모듈로 대체될 수도 있다. 종래 기술에 따른 하드웨어 보안 요소에 의존하여 암/복호화 등의 보안 로직을 실행하는 경우 상기 하드웨어 보안 요소에 취약점이 발견되더라도 보완이 쉽지 않다. 반면에, 본 발명의 몇몇 실시예들에 따르면, 하드웨어 보안 요소를 전혀 사용하지 않고 범용 프로세서 및 범용 메모리를 통하여 구현된 소프트웨어 보안 요소를 통하여 보안 로직이 수행되므로, 소프트웨어로 구현된 보안 요소의 취약점에 대한 보완은 소프트웨어의 배포 및 설치로서 가능하여 유지보수가 용이한 장점이 있다.
이하, 도 7을 참조하여 본 발명의 몇몇 실시예들에 따른 방법이 구현되는 소프트웨어 아키텍처를 설명한다.
도 4 내지 도 6을 참조하여 설명한 본 발명의 몇몇 실시예들에 따른 방법은 하나의 어플리케이션에 모든 모듈이 포함된 것으로, 어플리케이션-종속적인 방식으로 구현될 수 있다.
다만, 본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 모듈이 어플리케이션-독립적인 라이브러리 형태로 제공되고, 각각의 어플리케이션(또는, 본 명세서에서는 모바일 디바이스에서 수행되는 어플리케이션을 가리키는 앱(APP)이라는 용어도 사용한다)이 상기 라이브러리에서 제공되는 API(Application Programming Interface)를 호출하여 보안 로직을 수행하는 형태로 구현될 수도 있다. 도 7은 상기 라이브러리의 일례로 화이트박스 암호 라이브러리(240)가 도시 되어 있다.
도 7에 도시된 소프트웨어 아키텍처에서, 보안 로직은 화이트박스 암호 라이브러리(240)에서 수행되고, 그 외의 동작, 예를 들어 사용자 인터페이스, 네트워크 인터페이스(250)를 통한 외부 장치와의 커뮤니케이션 등은 각각의 앱(230a, 230b, 230c)에서 담당한다.
앱(230a, 230b, 230c)의 요청에 따라 화이트박스 암호 라이브러리(240)는 시작 데이터를 결정하고, 상기 시작 데이터를 이용하여 암/복호화 수행을 개시하는 동작을 수행하고, 그 결과를 앱(230a, 230b, 230c)에 리턴(return) 한다.
화이트박스 암호 라이브러리(240)는 암호화 함수를 포함할 수 있다. 앱(230a, 230b, 230c)이 상기 암호화 함수를 호출하는 경우, 상기 암호화 함수는 화이트박스 암호 장치(200)의 식별자를 조회하고, 앱(230a, 230b, 230c)을 통하여 사용자 종속적인 정보를 얻고, 상기 식별자 및 상기 사용자 종속적인 정보 중 적어도 하나를 이용하여 초기화 벡터를 유도하고, 상기 초기화 벡터를 이용하여 원문의 암호화를 개시하며, 원문의 암호화가 마무리되는 경우 리턴 하는 동작을 수행할 것이다.
화이트박스 암호 라이브러리(240)는 복호화 함수를 더 포함할 수 있다. 앱(230a, 230b, 230c)이 상기 복호화 함수를 호출하는 경우, 상기 복호화 함수는 화이트박스 암호 장치(200)의 식별자를 조회하고, 앱(230a, 230b, 230c)을 통하여 사용자 종속적인 정보를 얻고, 상기 식별자 및 상기 사용자 종속적인 정보 중 적어도 하나를 이용하여 초기화 벡터를 유도하고, 상기 초기화 벡터를 이용하여 암호문의 복호화를 개시하며, 암호문의 복호화가 마무리되는 경우 리턴 하는 동작을 수행할 것이다.
상기 암호화 함수 및 상기 복호화 함수는 초기화 벡터의 유도에 사용되는 시작 데이터의 종류에 따라 다양한 타입으로 제공될 수 있다. 이미 상술한 바와 같이 본 발명의 몇몇 실시예들에 따르면 다양한 데이터가 화이트박스 암호 라이브러리(240)의 런타임에 얻어지고, 얻어진 데이터를 이용하여 상기 시작 데이터가 화이트박스 암호 라이브러리(240)의 런타임에 결정된다. 상기 런타임에 얻어지는 데이터를 더 많이 사용할수록 보안성은 강화할 수 있을 것이나, 이러한 보안성의 요구 레벨은 앱(230a, 230b, 230c)에 따라 다를 것이다. 따라서, 다양한 보안성의 요구 레벨을 만족시키기 위하여 다양한 타입의 암/복호화 함수가 제공될 수 있다.
예를 들어, 교통 카드 결제 기능을 가지는 APP의 경우, 신속하게 요금 지불을 마무리 하는 것이 중요하고 결제 되는 금액도 비교적 소액인 점에서, 크래킹에 의하여 다수의 모바일 디바이스에 의하여 무단 사용되는 것만 방지하면 될 것이다. 즉, 비밀번호와 같은 사용자 종속적인 정보 없이 화이트박스 암호 장치(200)의 식별자 만을 이용하여 상기 시작 데이터를 결정하면 될 것이다. 따라서, 교통 카드 결제 기능을 가지는 APP의 경우 장치의 식별자 만을 이용하여 상기 시작 데이터를 결정하는 타입의 암/복호화 함수를 이용하면 될 것이다.
고도의 보안을 요구하는 상황을 예시한다. 예를 들어, 모바일 뱅킹 APP에서 고액을 이체하는 상황을 생각해보면, 다소 사용자의 불편함이 있더라도 부정한 이체가 아니라는 점을 확인하기 위하여 다수의 정보를 확인하는 것이 바람직하다. 예를 들어, 사용자의 모바일 디바이스의 식별자, 사용자에 의하여 사전 지정된 비밀번호 및 사용자의 생체 정보를 모두 반영하여 암/복호화를 수행하기를 원할 수 있다. 이러한 경우에도 상기 모바일 뱅킹 APP에서 사용자의 모바일 디바이스의 식별자, 사용자에 의하여 사전 지정된 비밀번호 및 사용자의 생체 정보를 모두 반영하여 시작 데이터를 결정하는 타입의 암/복호화 함수를 이용함으로써, 높은 보안 레벨을 만족 시킬 수 있다.
상기 동작은 앱(230a, 230b, 230c)의 관여 없이 화이트박스 암호 라이브러리(240)에서 자체적으로 수행된다. 또한, 이미 설명된 바와 같이 화이트박스 암호 라이브러리(240)는 안티-디버깅, 난독화, 무결성 검증 등 다양한 크래킹 방지 기능을 가지고 있다. 따라서, 앱(230a, 230b, 230c)이 상기 초기화 벡터를 조작하기는 매우 어렵다.
화이트박스 암호 라이브러리(240)는, 암/복호화 기능을 필요로 하는 컨텐츠 암/복호화 어플리케이션 또는 데이터 암/복호화 어플리케이션과, 암/복호화 기능을 기반으로 하는 인증(authentication) 절차를 수행하는 전자 상거래 결제 어플리케이션 또는 사용자 인증 기능을 구비한 어플리케이션에 사용될 수 있다.
화이트박스 암호 라이브러리(240)는 상기 어플리케이션들에 임베드(embed) 되어 함께 설치되거나, 이미 상기 어플리케이션들과 별개로 화이트박스 암호 장치(200)에 설치된 상태에서 상기 어플리케이션들에 의하여 동적으로 호출 되어 사용될 수 있다.
또한, 몇몇 실시예들에서 화이트박스 암호 라이브러리(240)는 화이트박스 암호 장치(200)에 설치된 운영 체제(Operating System)의 특화 모듈 중 하나의 형태로 구성될 수도 있다.
이하, 결제 프로세스에 화이트박스 암/복호화가 적용되는 본 발명의 몇몇 실시예들에 대하여 설명한다. 도 7에 도시된 바와 같이 화이트박스 암호 장치(200)는 네트워크를 통하여 결제 서버(20)에 연결되어 결제 프로세스를 수행할 수 있다. 이하, 도 8을 참조하여 설명한다. 도 8에 도시된 것은, 화이트박스 암호 장치(200)의 사용자가 모바일 결제 앱(230a, 230b, 230c)을 이용하여 결제 서버(20)와 결제 프로세스를 수행하는 경우, 화이트박스 암호 장치(200)의 각 구성요소가 상기 결제 프로세스를 위해 각각 어떤 동작을 수행하는지 가리키는 신호 흐름도이다.
먼저, 네트워크 인터페이스(250)가 결제 서버(20)로부터 결제 요청 및 결제 정보를 수신한다(S300). 상기 결제 정보는 결제 금액에 대한 정보를 포함한다. 상기 결제 정보는 가맹점 명, 상품명 등에 대한 부가 정보를 추가로 포함할 수 있다. 네트워크 인터페이스(250)는 상기 결제 요청 및 결제 정보를 모바일 결제 앱(230a, 230b, 230c)에 전달한다(S305). 모바일 결제 앱(230a, 230b, 230c)은 상기 결제 정보에 대한 확인(confirm)을 요하는 사용자 메시지를 디스플레이 하면서, 결제 프로세스의 진행에 대한 사용자의 확인을 구할 수 있다(S310). 이 때, 사용자는 상기 확인 요청에 응답하여 상품명 정보, 가격 정보를 포함한 결제 정보를 확인하고, 지불 카드 종류 등을 포함한 결제 수단 정보를 입력할 수 있다.
모바일 결제 앱(230a, 230b, 230c)은 상품 정보, 결제 금액, 할부 개월 수 또는 결제 가맹점 정보 등을 포함하는 결제 정보와 사용자의 신원 정보, 카드사 정보, 카드 번호, 유효기간, CVV(Card Verification Value)등을 포함하는 결제 수단 정보 및 사용자의 신원 정보 중 적어도 하나를 포함하는 결제 요청 정보를 생성하고, 상기 결제 요청 정보를 이용하여 결제 인증 데이터를 생성해 주도록 화이트박스 암호 라이브러리(240)에 요청한다. 즉, 모바일 결제 앱(230a, 230b, 230c)은 상기 결제 요청 정보를 화이트박스 암호 라이브러리(240)에 제공한다(S315).
화이트박스 암호 라이브러리(240)는 화이트박스 암호 라이브러리 바이너리의 무결성 검증하거나, 운영 체제 등 소프트웨어 플랫폼이 허가 된 것과 동일한 것인지의 확인하는 등의 보안 환경 확인을 수행한다(S320). 상기 보안 환경 확인 과정에서 문제가 있는 경우, 모바일 결제 앱(230a, 230b, 230c)에 실패를 가리키는 데이터를 제공 할 수 있다.
화이트박스 암호 라이브러리(240)는 화이트박스 암호화를 수행하기 위해 시작 데이터를 결정해야 한다. 이미 상술한 바와 같이, 상기 시작 데이터는 사용자 종속적인 정보 및 화이트박스 암호 장치의 식별자 정보 중 적어도 하나를 이용하여 결정될 수 있다. 상기 사용자 종속적인 정보는 결제 서버(20)에 기 등록해 둔 패스워드, 또는 생체 정보 일 수 있다. 화이트박스 암호 라이브러리(240)는 모바일 결제 앱(230a, 230b, 230c)을 통하여 상기 사용자 종속적인 정보를 얻거나(S325, S330, S335), 화이트박스 암호 라이브러리(240) 자체적으로 상기 사용자 종속적인 정보의 입력을 위한 사용자 인터페이스를 생성하여 상기 사용자 종속적인 정보를 얻을 수 있다(미도시).
화이트박스 암호 라이브러리(240)는 상기 시작 데이터를 결정하기 위한 디바이스 종속적인 데이터를 추가적으로 조회한다. 예를 들어, 화이트박스 암호 라이브러리(240)는 MAC 주소, IMEI 정보 등 화이트박스 암호 장치(200)의 식별자 정보를 조회한다.
여기서 중요한 것은, 상기 사용자 종속적인 정보는 얻는 것과, 상기 디바이스 종속적인 데이터를 얻는 것이, 화이트박스 암호 라이브러리(240)의 런타임에 이뤄져야 한다는 것이다.
다음으로, 화이트박스 암호 라이브러리(240)는 상기 시작 데이터를 이용하여 초기화 벡터를 생성한다(S345). 초기화 벡터의 기능에 대하여는 이미 설명한 바 있으므로, 중복된 설명은 생략한다. 여기서 중요한 것은, 상기 초기화 벡터를 생성하는 것 역시, 화이트박스 암호 라이브러리(240)의 런타임에 이뤄져야 한다는 것이다. 일 실시예에서, 화이트박스 암호 라이브러리(240)는 상기 시작 데이터의 적어도 일부 데이터에 대하여 해시 함수를 적용하여, 그 해시 값을 이용하여 상기 초기화 벡터를 생성할 수 있다.
화이트박스 암호 라이브러리(240)는 상기 초기화 벡터를 이용한 화이트박스 암호화를 수행하여 결제 인증 데이터를 생성한다(S350). 예를 들어, 상기 결제 인증 데이터는 상기 결제 요청 정보의 암호문이거나, 상기 암호문이 추가로 결제 서버(20)와 공유된 규칙에 따라 인코딩 된 데이터일 수 있다.
화이트박스 암호 라이브러리(240)는 상기 결제 인증 데이터를 모바일 결제 앱(230a, 230b, 230c)에 제공하기 전에, 추가로 보안 환경 확인 절차를 수행하고(S355), 보안 환경 확인 절차에 문제가 있는 것으로 판단되면, 상기 결제 인증 데이터를 제공하지 않고 실패를 가리키는 신호를 출력할 수 있다. 상기 추가로 수행되는 보안 환경 확인 절차는, 화이트박스 암호 라이브러리 바이너리의 무결성 검증하거나, 운영 체제 등 소프트웨어 플랫폼이 허가 된 것과 동일한 것인지의 확인하는 등의 절차 중 적어도 하나를 포함할 수 있다.
시작 데이터가 결정된 경우, 모바일 디바이스는 화이트박스 암호화를 실행하고 결제 요청 정보를 암호화할 수 있다. 이에 따라 암호화된 결제 인증 데이터를 생성할 수 있다(S335). 모바일 디바이스는 암호화된 결제 인증 데이터를 생성하면, 상기 결제 인증 데이터를 외부로 전송할 수 있다(S340).
상기 결제 인증 데이터는 결제 서버(20)에 전달된다(S360, S365, S370). 도 8에는 도시되어 있지 않지만, 모바일 결제 앱(230a, 230b, 230c)은 결제 서버(20)에 상기 결제 요청 정보를 추가로 제공할 수 있다. 결제 서버(20)는 상기 결제 인증 데이터를 검증하고, 그 결과에 따라 결제를 승인하거나 거절한다(S375). 예를 들어, 상기 시작 데이터가 올바르게(correct)입력 되는 경우와, 상기 시작 데이터 중 적어도 하나라도 잘못된 값(incorrect)이 입력 되는 경우, 상기 결제 인증 데이터는 1bit 이상 다른 값이 생성되고, 결제 서버(20)는 이를 검증할 수 있을 것이다. 결제 서버(20)는 사용자 별로 디바이스 종속적인 정보 및 사용자 종속적인 정보를 미리 등록 받았을 것이기 때문이다.
이하, 오프라인(off-line) 결제가 수행되는 프로세스를 도 9 내지 도 10을 참조하여 설명한다. 도 7 내지 도 8을 참조하여 설명된 결제 프로세스는, 온라인 상황을 전제로 한다. 하지만, 예를 들어 버스 요금을 결제하고자 하는 경우, 버스가 통신 음영 지역에 있더라도 요금 결제가 가능해야 한다. 도 9 내지 도 10을 참조하여 설명되는 본 발명의 몇몇 실시예들은 이를 가능하게 한다.
오프라인 결제를 위하여 필요한 것은 근거리 통신 인터페이스(260)와, 근거리 통신 인터페이스(260)를 이용하여 오프라인 결제를 수행할 수 있도록 구현 된 오프라인 결제 앱(230a, 230b, 230c)들이다. 화이트박스 암호 라이브러리(240)의 동작은 기 설명된 것과 다르지 않다.
오프라인의 결제 단말기를 통해, 모바일 디바이스로 결제하는 과정을 예를 들어 설명한다. 결제 단말기(150)와 화이트박스 암호 장치(200)는 NFC, 블루투스, RFID, BLE 등의 통신 수단을 통해 통신할 수 있다. 예를 들어 NFC 통신을 통한 카드 결제의 경우, 결제 단말기(150)는 ISO/IEC 7816-4에 정의된 APDU(Application Protocol Data Unit) 통신을 수행하여 근거리 통신 인터페이스(260)와의 통신 채널을 형성하여 화이트박스 암호 장치(200)에 결제 요청 및 결제 정보를 송신할 수 있다.
도 10에는 도 8과 유사한 신호 흐름도가 도시 되어 있다. 도 8의 결제 서버(20)가 결제 단말기(150)로 교체 되었을 뿐, 다른 신호 흐름은 동일한 것을 알 수 있다. 다만, 사용자에 종속된 정보를 입력 받는 동작(S325, S330, S335)과 관련하여, 모바일 결제 앱(230a, 230b, 230c)에서 요구하는 보안 레벨에 따라, 사용자에 종속된 정보를 입력 받는 것이 반복 되는 것이 완화 될 수 있다. 매 트랜잭션마다 사용자의 입력을 요구하는 것은 사용자에게 불편할 수 있고, 결제 지연을 초래할 수 있으므로, 타겟 환경을 고려하여 사용자 입력 후 일정 시간 동안 또는 일정 횟수의 거래 동안에는 상기 사용자에 종속된 정보가 기 저장 되었던 정보가 재사용 될 수 있다.
이하, 본 발명의 일 실시예에 따른 화이트박스 암호 장치(200)의 하드웨어 구성 및 그 동작을 설명한다. 화이트박스 암호 장치(200)는, 예를 들어 모바일 디바이스, PC 등의 컴퓨팅 장치일 수 있다. 이하, 화이트박스 암호 장치(200)가 스마트 폰, 스마트 와치, 웨어러블 디바이스 등의 모바일 디바이스 인 경우를 예를 들어 설명한다.
화이트박스 암호 장치(200)는 범용 AP와 같은 프로세서(290), 예를 들어 인터넷, 무선 이동통신망으로의 접속을 담당하는 네트워크 인터페이스(250), NFC와 같은 근거리 통신을 담당하는 근거리 통신 인터페이스(260), 본 발명의 몇몇 실시예들에 따른 소프트웨어의 바이너리 및 상기 바이너리의 실행 과정에서 참조되거나 기록되는 데이터를 저장하는 스토리지(270) 및 RAM(295)을 포함할 수 있다.
RAM(295)에는 화이트박스 암호 라이브러리의 바이너리(297) 및 화이트박스 암호 라이브러리의 바이너리(297)를 이용하여 데이터 암/복호화가 필요한 동작을 수행하는 하나 이상의 모바일 앱(230a, 230b, 230c)의 바이너리가 로드 될 수 있다. RAM(295)에 로드 되는 상기 바이너리는 범용 AP(290)에 페치(fetch) 되어 실행된다.
RAM(295)의 비-보안 주소 영역에 화이트박스 암호 라이브러리(297)가 로드 되고, 화이트박스 암호 라이브러리(297)는 화이트박스 암호 라이브러리(297)를 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 범용 AP(290)에서 실행된다.
이미 설명한 바와 같이, 화이트 박스 암호 라이브러리(297)는 화이트박스 암/복호화 동작을 수행하기 위해 필요한 초기화 벡터를 화이트 박스 암호 라이브러리(297)의 런타임에 생성하는데, 상기 초기화 벡터는 상기 런타임에 얻어진 데이터를 이용하여 유도한다.
몇몇 실시예들에서, 화이트 박스 암호 라이브러리(297)가 화이트박스 암호 장치(200)에 설치된 운영 체제(미도시)의 일부 모듈 형태로 구성 될 수도 있는 점은 이미 설명된 바 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (11)

  1. 컴퓨팅 장치가, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계;
    상기 컴퓨팅 장치가, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하는 단계; 및
    상기 컴퓨팅 장치가, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함하는,
    화이트박스 암호를 이용한 암/복호화 방법.
  2. 제1 항에 있어서,
    상기 런타임에 얻어진 데이터는,
    상기 런타임에 조회되는 기 지정된 정보 및 상기 런타임에 사용자 인터페이스를 통하여 입력 받는 정보를 포함하는,
    화이트박스 암호를 이용한 암/복호화 방법.
  3. 제1 항에 있어서,
    상기 런타임에 얻어진 데이터는,
    상기 컴퓨팅 장치에 종속된 정보 및 상기 컴퓨팅 장치의 사용자에 종속된 정보를 포함하는,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  4. 제3 항에 있어서,
    상기 컴퓨팅 장치에 종속된 정보는,
    상기 컴퓨팅 장치의 고유 식별자인,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  5. 제3 항에 있어서,
    상기 컴퓨팅 장치의 사용자에 종속된 정보는,
    상기 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나를 포함하는,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  6. 제1 항에 있어서,
    상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계는,
    상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 초기화 벡터(initialization vector, IV)를 유도하는 단계; 및
    상기 초기화 벡터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함하는,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  7. 제1 항에 있어서,
    상기 메모리에 로드 하는 단계는,
    상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고,
    상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치에 구비된 범용 프로세서(general-purpose processor)에서 실행되되,
    상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것인,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  8. 제1 항에 있어서,
    상기 화이트박스 암호 모듈은 상기 런타임에 얻어진 데이터가 다른 데이터로 교체되는 것을 방지하기 위한 안티-디버깅(anti-debugging) 오퍼레이션을 포함하는,
    화이트박스 암호를 이용한 암호화 및 복호화 방법.
  9. 컴퓨팅 장치의 범용 프로세서에 의하여 수행되는 결제 인증 방법에 있어서,
    상기 컴퓨팅 장치가, 결제 금액 정보를 포함하는 결제 요청 정보를 외부 장치로부터 수신하는 단계;
    상기 컴퓨팅 장치가, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계;
    상기 컴퓨팅 장치가, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여, 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 단계;
    상기 컴퓨팅 장치가, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 상기 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하고, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 단계; 및
    상기 컴퓨팅 장치가, 상기 결제 인증 데이터를 상기 외부 장치에 송신하는 단계를 포함하는,
    결제 인증 방법.
  10. 제9 항에 있어서,
    상기 결제 인증 데이터를 생성하는 단계는,
    상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터가 올바른 데이터인 경우, 상기 외부 장치에 의하여 결제 성공 처리되는 제1 결제 인증 데이터를 생성하는 단계; 및
    상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터 중 적어도 하나가 잘못된 데이터인 경우, 상기 외부 장치에 의하여 결제 거부 처리되는 제2 결제 인증 데이터를 생성하는 단계를 포함하되,
    상기 제1 결제 인증 데이터와 상기 제2 결제 인증 데이터는 하나의 비트 이상 서로 다른 디지털 데이터인,
    결제 인증 방법.
  11. 제9 항에 있어서,
    상기 메모리에 로드 하는 단계는,
    상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고,
    상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치에 구비된 범용 프로세서(general-purpose processor)에서 실행되되,
    상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것인,
    결제 인증 방법.
KR1020160088498A 2016-07-13 2016-07-13 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치 KR102543267B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160088498A KR102543267B1 (ko) 2016-07-13 2016-07-13 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160088498A KR102543267B1 (ko) 2016-07-13 2016-07-13 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20180007459A true KR20180007459A (ko) 2018-01-23
KR102543267B1 KR102543267B1 (ko) 2023-06-13

Family

ID=61071164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160088498A KR102543267B1 (ko) 2016-07-13 2016-07-13 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102543267B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210015264A (ko) * 2019-08-01 2021-02-10 한국전자통신연구원 화이트박스 암호화를 이용한 puf 기반 사물인터넷 디바이스 인증 장치 및 방법
WO2021025185A1 (ko) * 2019-08-02 2021-02-11 국민대학교산학협력단 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
US20210266175A1 (en) * 2018-06-18 2021-08-26 Koninklijke Philips N.V. Device for data encryption and integrity
US11922404B2 (en) 2020-09-25 2024-03-05 LINE Plus Corporation Method and system for payment for central bank digital currency

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100075497A (ko) * 2007-09-12 2010-07-02 디바이스피델리티, 인크. 금융 트랜잭션들의 무선 실행
KR20110134339A (ko) * 2009-03-04 2011-12-14 애플 인크. 비휘발성 메모리에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 데이터 화이트닝
KR20120042469A (ko) * 2010-10-25 2012-05-03 한국전자통신연구원 부가 정보와 암호키 결합을 이용한 콘텐츠 보호 장치 및 그 방법
KR20120131738A (ko) * 2011-05-26 2012-12-05 고려대학교 산학협력단 Aes의 ctr 모드에 따른 암호화 장치 및 방법
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100075497A (ko) * 2007-09-12 2010-07-02 디바이스피델리티, 인크. 금융 트랜잭션들의 무선 실행
KR20110134339A (ko) * 2009-03-04 2011-12-14 애플 인크. 비휘발성 메모리에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 데이터 화이트닝
KR20120042469A (ko) * 2010-10-25 2012-05-03 한국전자통신연구원 부가 정보와 암호키 결합을 이용한 콘텐츠 보호 장치 및 그 방법
KR20120131738A (ko) * 2011-05-26 2012-12-05 고려대학교 산학협력단 Aes의 ctr 모드에 따른 암호화 장치 및 방법
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210266175A1 (en) * 2018-06-18 2021-08-26 Koninklijke Philips N.V. Device for data encryption and integrity
KR20210015264A (ko) * 2019-08-01 2021-02-10 한국전자통신연구원 화이트박스 암호화를 이용한 puf 기반 사물인터넷 디바이스 인증 장치 및 방법
US11329835B2 (en) 2019-08-01 2022-05-10 Electronics And Telecommunications Research Institute Apparatus and method for authenticating IoT device based on PUF using white-box cryptography
WO2021025185A1 (ko) * 2019-08-02 2021-02-11 국민대학교산학협력단 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
US11922404B2 (en) 2020-09-25 2024-03-05 LINE Plus Corporation Method and system for payment for central bank digital currency

Also Published As

Publication number Publication date
KR102543267B1 (ko) 2023-06-13

Similar Documents

Publication Publication Date Title
EP3387813B1 (en) Mobile device having trusted execution environment
CN111654367B (zh) 密码运算、创建工作密钥的方法、密码服务平台及设备
CN1581118B (zh) 安全设备、信息处理终端、集成电路、应用装置及方法
CN108055133B (zh) 一种基于区块链技术的密钥安全签名方法
US20150310427A1 (en) Method, apparatus, and system for generating transaction-signing one-time password
US7457960B2 (en) Programmable processor supporting secure mode
CN109412812B (zh) 数据安全处理系统、方法、装置和存储介质
EP3394788B1 (en) Method and system for enhancing the security of a transaction
KR102218572B1 (ko) 복제 공격을 방지하기 위한 처리 방법, 및 서버 및 클라이언트
CN108200078B (zh) 签名认证工具的下载安装方法及终端设备
KR102543267B1 (ko) 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치
TW201331780A (zh) 透過線上伺服器與在安全作業系統中執行程式碼的內容保護
JPWO2004053664A1 (ja) プログラム実行制御装置、os、クライアント端末、サーバ、プログラム実行制御システム、プログラム実行制御方法、プログラム実行制御プログラム
KR101872104B1 (ko) Apk 파일 동적로딩 기법을 이용한 뱅킹 어플리케이션 무결성 검증 시스템 및 무결성 검증방법
US7721100B2 (en) Granting an access to a computer-based object
KR20160065261A (ko) 앱 위변조 방지시스템 및 그 방법
CN110602051B (zh) 基于共识协议的信息处理方法及相关装置
CN115270159A (zh) 一种区块链的智能合约调用方法、装置设备及存储介质
US20240113898A1 (en) Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity
JP6517435B2 (ja) アプリケーションを管理する方法
CN115357948A (zh) 一种基于tee及加密芯片的硬件防抄板加密方法及其装置
CN110457959B (zh) 一种基于Trust应用的信息传输方法及装置
KR101906484B1 (ko) 어플리케이션 보안 방법 및 이를 수행하기 위한 시스템
DONG et al. Sesoa: Security enhancement system with online authentication for android apk
WO2023073124A1 (en) Method for securely executing an application

Legal Events

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