KR102543267B1 - Method and apparatus for white box cryptography - Google Patents

Method and apparatus for white box cryptography Download PDF

Info

Publication number
KR102543267B1
KR102543267B1 KR1020160088498A KR20160088498A KR102543267B1 KR 102543267 B1 KR102543267 B1 KR 102543267B1 KR 1020160088498 A KR1020160088498 A KR 1020160088498A KR 20160088498 A KR20160088498 A KR 20160088498A KR 102543267 B1 KR102543267 B1 KR 102543267B1
Authority
KR
South Korea
Prior art keywords
encryption
data
whitebox
computing device
cryptographic module
Prior art date
Application number
KR1020160088498A
Other languages
Korean (ko)
Other versions
KR20180007459A (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 KR1020160088498A priority Critical patent/KR102543267B1/en
Publication of KR20180007459A publication Critical patent/KR20180007459A/en
Application granted granted Critical
Publication of KR102543267B1 publication Critical patent/KR102543267B1/en

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

Landscapes

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

Abstract

화이트박스 암호를 이용한 암/복호화 방법이 제공된다. 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은, 컴퓨팅 장치가, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 컴퓨팅 장치가, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하는 단계와, 상기 컴퓨팅 장치가, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함한다.An encryption/decryption method using white box encryption is provided. An encryption/decryption method using a white box cryptography according to an embodiment of the present invention includes: loading, by a computing device, a white box cryptographic module into a memory provided in the computing device; determining start data for starting encryption/decryption of the whitebox cryptographic module at run-time of a module, using data obtained at run-time; and, by the computing device, using the start data and starting an encryption/decryption operation of the white box cryptographic module.

Description

화이트박스 암호를 이용한 암/복호화 방법 및 그 장치{Method and apparatus for white box cryptography}Encryption/decryption method and apparatus using white box cryptography {Method and apparatus for white box cryptography}

본 발명은 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 하드웨어로 구성된 보안 요소(secure element)를 이용하지 않고, 범용 프로세서 및 범용 저장 공간을 이용한 암/복호화를 수행 할 때 보안성이 약화되는 문제를 보완하는 방법 및 그 장치에 관한 것이다.The present invention relates to an encryption/decryption method and apparatus using white box encryption. More specifically, it relates to a method and device for compensating for a problem in which security is weakened when encryption/decryption is performed using a general-purpose processor and a general-purpose storage space without using a secure element composed of hardware.

암호화 기술은 평문(Plain text)을 암호문(Cipher text)으로 바꾸는 기술이다. 이러한 암호화 기술은 소프트웨어 코드로 구현될 수도 있고, 하드웨어 장치로 구현될 수도 있다. 암호화 기술은 화이트박스 암호 방법 및 블랙박스 암호 방법을 포함한다.Encryption technology is a technology that converts plain text into cipher text. Such encryption technology may be implemented as software code or as a hardware device. Encryption techniques include white box encryption methods and black box encryption methods.

도 1을 참조하여, 화이트박스 암호 방법을 블랙박스 암호 방법과 비교하여 설명한다.Referring to FIG. 1 , the white box encryption method will be described in comparison with the black box encryption method.

블랙박스 암호 방법(30)의 암호 키(36)는 블랙박스로 가정한 암호화 장치 내부(38)에 들어 있다. 블랙박스라고 하는 것은 '그 안이 들여다 보이지 않는다.'는 의미이다. 즉, 블랙박스 암호 방법(30)의 설계는 크래커(cracker)가 이 암호화 장치 내부를 들여다 볼 수 없다는 가정에서 출발한다. 그러나 크래커는 블랙박스 기반의 암호화 장치에 입력되는 평문(32)과 출력되는 암호문(34)을 계속 관찰하여 어떤 패턴을 알아낼 수 있고, 이 암호화 장치 자체가 뚫려 버리면 암호화 키가 그대로 누출될 수 있다.The encryption key 36 of the black box encryption method 30 is contained inside the encryption device 38 assumed to be a black box. A black box means that 'the inside cannot be seen.' That is, the design of the black box encryption method 30 starts from the assumption that a cracker cannot look inside the encryption device. However, a cracker can find out a certain pattern by continuously observing the plain text 32 input to the black box-based encryption device and the cipher text 34 output, and if the encryption device itself is breached, the encryption key may be leaked as it is.

블랙박스 암호 방법(30)보다 더 보안성이 강화된 방식이 화이트박스 암호 방법(40)이다. 화이트박스(42)는 안을 들여다 볼 수 있는 투명한 상자를 의미한다. 화이트박스 암호 방법(40)은 크래커가 화이트박스(42) 내부를 들여다 볼 수 있으므로, 암/복호화와 관련된 소프트웨어의 실행 과정을 모두 볼 수 있다는 가정에서 출발한다.The white box encryption method (40) is more secure than the black box encryption method (30). The white box 42 means a transparent box through which one can look inside. The white box encryption method 40 starts from the assumption that since the cracker can look into the inside of the white box 42, it can see all the software execution processes related to encryption/decryption.

암호화 장치를 화이트박스로 가정하면 암호 키(36)를 손쉽게 장치 내에 저장할 수 없을 것이다. 따라서 화이트박스 암호 방법(40)에서는 알고리즘을 룩업 테이블(look-up table)로 만들고, 암호 키를 소프트웨어로 구현된 암호 알고리즘과 뒤섞인 상태로 상기 룩업 테이블 내부에 숨겨둠으로써, 소프트웨어의 동작을 분석하더라도 암호 키를 쉽게 유추하지 못하도록 한다.Assuming that the encryption device is a white box, the encryption key 36 cannot be easily stored in the device. Therefore, in the white box encryption method 40, the algorithm is made into a look-up table, and the encryption key is hidden inside the look-up table in a state mixed with the encryption algorithm implemented in software, even if the operation of the software is analyzed. It prevents the encryption key from being easily guessed.

화이트박스 암호 기술은 기존의 보안 하드웨어를 이용한 기술과 달리 소프트웨어만으로 구현되는 보안 기술이라는 점에서 많은 장점을 갖는다. 소프트웨어 만으로 암호 알고리즘의 암호화 키 및 중간 연산 값을 보호할 수 있어. 키 및 키를 보호하기 위한 모듈의 분배 및 설치가 쉽고, 비용 면에서도 효율적이다. 또한 오류 발생시에도 소프트웨어 업데이트 혹은 패치 전송을 통해서 원격으로 수정이 가능하다는 장점도 있다.The white box encryption technology has many advantages in that it is a security technology implemented only with software, unlike a technology using existing security hardware. Only software can protect encryption keys and intermediate operation values of cryptographic algorithms. The distribution and installation of the key and the module to protect it are easy and cost effective. Also, when an error occurs, it has the advantage that it can be corrected remotely through software update or patch transmission.

이러한 암호화 기술에는 모바일 디바이스를 이용한 전자 상거래 관련 결제에 적용된다. 모바일 결제에 이용되는 기존의 하드웨어 기반의 보안 방법을 설명하기 위하여, 도 2 및 도 3을 참조한다.This encryption technology is applied to e-commerce related payments using mobile devices. In order to explain the existing hardware-based security method used for mobile payment, refer to FIGS. 2 and 3 .

도 2는 하드웨어로 구성된 보안 요소를 이용한 결제 기술을 설명하기 위한 도면이다. 모바일 디바이스에 보안 영역을 제공하는 하드웨어 보안 요소(15)로, 크게 통신사가 발급하는 USIM과 디바이스에 내장된 eSE(embedded SE)가 이용된다. USIM의 보안 영역은 소형 CPU와 메모리로 구성되는데, CPU는 암/복호화 기능으로 사용자를 식별하고, 메모리는 부가서비스를 위한 저장공간으로 이용된다. 즉 상기 보안 영역은 보안 토큰(Hardware Security Module, HSM)으로서 역할 할 수 있다. 제조 단말기에 내장된 eSE 또한 같은 역할을 수행할 수 있다.2 is a diagram for explaining a payment technology using a secure element composed of hardware. As the hardware security element 15 that provides a security area to the mobile device, a USIM issued by a carrier and an embedded SE (eSE) embedded in the device are largely used. The security area of the USIM is composed of a small CPU and memory. The CPU identifies the user with encryption/decryption functions, and the memory is used as a storage space for additional services. That is, the security area may serve as a security token (Hardware Security Module, HSM). An eSE built into a manufacturing terminal can also perform the same role.

모바일 디바이스를 통한 결제는 상술한 USIM, eSE를 포함한 하드웨어 보안 요소(15)에 암호화 키, 전자 인증서 등의 보완 관련 데이터를 보관하고, 모바일 결제 관련 애플릿 등의 프로그램을 저장, 설치하여 암, 복호화를 수행함으로써 중요 데이터의 노출을 방지하고 보안 강도를 높이고 있다.Payment through a mobile device stores supplement-related data such as encryption keys and electronic certificates in the hardware security element 15 including the USIM and eSE described above, and stores and installs programs such as mobile payment-related applets to perform encryption and decryption. By doing so, exposure of important data is prevented and security strength is increased.

하드웨어 보안 요소(15)에 기반한 암호화 모듈은 보안 강도가 높은 장점이 있지만, 하드웨어의 특성상, 그에 기반한 보안 모듈을 개발하는 데에 어려움이 따른다. USIM의 경우, 통신사에게 제어권이 있으므로 각각의 통신사에게 사용권 허가를 받아야 하고, eSE의 경우, 모바일 기기 제조사에 제어권이 있고, 제조사 별로 eSE 형태가 상이하다. 따라서 개별적 SE 형태에 맞는 애플릿의 개발이 필요하며, 통신사와 하드웨어 제조사와의 협업이 필수적이다. 또한 사용중인 하드웨어 SE의 취약점이 발견된 경우 대응이 용이하지 않아 유지보수에 어려움이 있다. 해당 취약점을 보완한 새로운 제품으로 교체하는 방법 외에는 다른 방법이 없다. 또한 하드웨어 SE 외부에서 일어나는 동작에 대한 보호도 불가능하다. 예를 들어 PIN의 입력 등, SE 외부에서 일어나는 동작을 보호하지 못하므로, 사용자의 중요한 입력 값이나 모바일 앱(mobile APP) 내부의 중요한 데이터는 공격자에게 노출될 수 있다.The encryption module based on the hardware security element 15 has an advantage of high security strength, but due to the nature of the hardware, it is difficult to develop a security module based thereon. In the case of USIM, since the communication company has the right to control, each communication company must obtain permission to use it. In the case of eSE, the mobile device manufacturer has the right to control, and the eSE type is different for each manufacturer. Therefore, it is necessary to develop an applet suitable for each SE type, and collaboration with carriers and hardware manufacturers is essential. In addition, when a vulnerability of the hardware SE in use is discovered, it is not easy to respond, making maintenance difficult. There is no other way than to replace it with a new product that compensates for the vulnerability. Also, protection against actions that occur outside the hardware SE is not possible. For example, since it cannot protect operations that occur outside the SE, such as PIN input, important user input values or important data inside the mobile APP may be exposed to attackers.

도 3은 결제 서버(20)에서 결제와 관련된 암/복호화 기능을 수행하는 경우를 설명하기 위한 도면이다. 도 3과 같이 결제 서버(20)에서 암/복호화 기능을 수행하는 경우에는 서버(20)와 모바일 디바이스(100)간의 네트워크 통신이 필수적이어서, 모바일 디바이스(100)가 네트워크 접속이 불가능한 위치에 있는 경우에는 결제 시스템의 사용이 불가능해진다. 예를 들어, 통신 음영 지역에서의 버스 요금 결제 등이 불가능하다.3 is a diagram for explaining a case in which the payment server 20 performs encryption/decryption functions related to payment. When the payment server 20 performs the encryption/decryption function as shown in FIG. 3, network communication between the server 20 and the mobile device 100 is essential, so when the mobile device 100 is in a location where network access is impossible. In this case, the use of the payment system becomes unavailable. For example, it is impossible to pay a bus fare in a communication shaded area.

따라서 하드웨어 보안 요소(15)또는 외부의 결제 서버(20)에 의한 보안 로직을 수행하는 것 대신, 범용 프로세서 및 범용 메모리를 이용하되 보안성을 증대시키는 소프트웨어 보안 요소를 이용하여 보안 로직을 수행하는 방법 및 그 방법을 이용한 암/복호화 방법 또는 결제 인증 방법의 제공이 요구된다.Therefore, instead of performing the security logic by the hardware security element 15 or the external payment server 20, a method of performing security logic using a software security element that increases security while using a general-purpose processor and a general-purpose memory And it is required to provide an encryption/decryption method or a payment authentication method using the method.

본 발명이 해결하고자 하는 기술적 과제는, 하드웨어 보안 요소의 도움 없이도 보안성이 강화된 보안 환경을 제공하는 소프트웨어 보안 요소를 통하여 암/복호화를 수행하는 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.A technical problem to be solved by the present invention is to provide a method for performing encryption/decryption through a software security element that provides a security environment with enhanced security without the help of a hardware security element, and an apparatus for performing the method.

본 발명이 해결하고자 하는 다른 기술적 과제는, 제1 장치에서 화이트박스 암호 모듈 전체를 추출하여 제2 장치에서 상기 화이트박스 암호 모듈을 수행함으로써, 암호화 키의 획득 없이도 암호화 또는 복호화를 무단으로 수행하는 공격에 대해 대비할 수 있는 암/복호화 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.Another technical problem to be solved by the present invention is an attack in which encryption or decryption is unauthorized without obtaining an encryption key by extracting the entire whitebox encryption module in a first device and performing the whitebox encryption module in a second device. It is to provide an encryption/decryption method capable of preparing for and an apparatus for performing the method.

본 발명이 해결하고자 하는 또 다른 기술적 과제는, 기존의 보안 방법이 갖던 하드웨어 의존성 및 제약 조건을 극복하고, 모든 컴퓨팅 장치에 적용되는 범용성을 가지는 암/복호화 방법 및 그 방법을 수행하는 장치를 제공하는 것이다.Another technical problem to be solved by the present invention is to overcome the hardware dependence and constraints of existing security methods and to provide an encryption/decryption method with versatility applicable to all computing devices and a device for performing the method. will be.

본 발명이 해결하고자 하는 또 다른 기술적 과제는, 하드웨어 보안 요소가 구비되지 않은 컴퓨팅 장치를 이용하여 안전한 결제를 지원하기 위한 방법 및 그 장치를 제공하는 것이다.Another technical problem to be solved by the present invention is to provide a method and apparatus for supporting secure payment using a computing device not equipped with a hardware security element.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the description below.

상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하는 단계와, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함한다.An encryption/decryption method using a white box cryptography according to an embodiment of the present invention for solving the above technical problem includes loading a white box cryptographic module into a memory provided in the computing device, and Determining, at run-time, starting data for starting encryption/decryption of the white-box cryptographic module using data obtained at run-time; Initiating an encryption/decryption operation.

일 실시예에서, 상기 런타임에 얻어진 데이터는, 상기 런타임에 조회되는 기 지정된 정보 및 상기 런타임에 사용자 인터페이스를 통하여 입력 받는 정보를 포함할 수 있다.In one embodiment, the data obtained at the runtime may include pre-designated information to be inquired at the runtime and information input through a user interface at the runtime.

일 실시예에서, 상기 런타임에 얻어진 데이터는, 상기 컴퓨팅 장치에 종속된 정보 및 상기 컴퓨팅 장치의 사용자에 종속된 정보를 포함할 수 있다. 상기 디바이스에 종속된 정보는 상기 컴퓨팅 장치의 고유 식별자이고, 상기 사용자에 종속된 정보는 상기 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나일 수 있다.In one embodiment, the data obtained at runtime may include information dependent on the computing device and information dependent on a user of the computing device. The information subordinate to the device may be a unique identifier of the computing device, and the information subordinate to the user may be at least one of security information pre-registered by the user and biometric information of the user.

일 실시예에서, 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계는, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 초기화 벡터(initialization vector, IV)를 유도하는 단계와, 상기 초기화 벡터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함할 수 있다.In one embodiment, initiating the encryption/decryption operation of the whitebox cryptographic module may include deriving an initialization vector (IV) of the whitebox cryptographic module using the start data, and deriving an initialization vector (IV) of the whitebox cryptographic module; Initiating an encryption/decryption operation of the whitebox cryptographic module using

일 실시예에서, 상기 메모리에 로드 하는 단계는 상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치에 구비된 범용 프로세서(general-purpose processor)에서 실행될 수 있다. 이 때, 상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것이다.In one embodiment, the step of loading into the memory includes loading the whitebox cryptographic module into a non-secure address area of the memory, and the whitebox cryptographic module is a general-purpose processor provided in the computing device. -purpose processor). At this time, the general purpose processor does not have a hardware secure element for the white box cryptographic module.

일 실시예에서, 상기 화이트박스 암호 모듈은 상기 런타임에 얻어진 데이터가 다른 데이터로 교체되는 것을 방지하기 위한 안티-디버깅(anti-debugging) 오퍼레이션을 포함할 수 있다.In one embodiment, the whitebox cryptographic module may include an anti-debugging operation for preventing data obtained at runtime from being replaced with other data.

상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따르면 컴퓨팅 장치의 범용 프로세서에 의하여 수행되는 결제 인증 방법이 제공된다. 본 실시예에 따른 결제 인증 방법은, 결제 금액 정보를 포함하는 결제 요청 정보를 외부 장치로부터 수신하는 단계와, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계와, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여, 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 단계와, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 상기 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하고, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 단계와, 상기 결제 인증 데이터를 상기 외부 장치에 송신하는 단계를 포함한다.According to another embodiment of the present invention for solving the above technical problem, a payment authentication method performed by a general-purpose processor of a computing device is provided. The payment authentication method according to the present embodiment includes the steps of receiving payment request information including payment amount information from an external device, loading a white box cryptographic module into a memory provided in the computing device, and the white box cryptographic module. deriving, at run-time of a module, an initialization vector for starting encryption of the whitebox cryptographic module using an identifier of the computing device obtained at run-time and user input data for the computing device; and performing encryption on at least some of the payment request information of the white box encryption module using the initialization vector and generating payment authentication data using the encrypted data; and transmitting to an external device.

일 실시예에서, 상기 결제 인증 데이터를 생성하는 단계는, 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터가 올바른 데이터인 경우, 상기 외부 장치에 의하여 결제 성공 처리되는 제1 결제 인증 데이터를 생성하는 단계와, 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터 중 적어도 하나가 잘못된 데이터인 경우, 상기 외부 장치에 의하여 결제 거부 처리되는 제2 결제 인증 데이터를 생성하는 단계를 포함할 수 있다. 이 때, 상기 제1 결제 인증 데이터와 상기 제2 결제 인증 데이터는 하나의 비트 이상 서로 다른 디지털 데이터이다.In one embodiment, the generating of the payment authentication data may include, when the identifier of the computing device and the user input data for the computing device are correct data, the first payment authentication data successfully processed by the external device. generating, and when at least one of an identifier of the computing device and user input data for the computing device is incorrect data, generating second payment authentication data for which payment is rejected by the external device. there is. At this time, the first payment authentication data and the second payment authentication data are digital data different from each other by at least one bit.

상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치는, 화이트박스 암호 모듈이 로드 되는 비-보안 주소 영역을 가지는 메모리와, 상기 화이트박스 암호 모듈을 위한 보안 요소를 구비하지 않은 범용 프로세서와, 결제 단말기와 통신할 수 있는 근거리 통신 인터페이스를 포함하되, 상기 화이트박스 암호 모듈은, 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 오퍼레이션과, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하는 오퍼레이션과, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 오퍼레이션을 포함하고, 상기 근거리 통신 인터페이스는 상기 결제 단말기로부터 상기 결제 요청 정보를 수신하고, 상기 결제 단말기에 상기 결제 인증 데이터를 송신한다.A computing device according to another embodiment of the present invention for solving the above technical problem is provided with a memory having a non-secure address area into which a white box cryptographic module is loaded and a security element for the white box cryptographic module. A general-purpose processor and a short-range communication interface capable of communicating with a payment terminal, wherein the white-box cryptographic module includes, at run-time, an identifier of the computing device obtained at run-time and a user input to the computing device. An operation of deriving an initialization vector for starting encryption of the white box cryptographic module using data, and an operation of performing encryption of at least some data among payment request information of the white box cryptographic module by using the initialization vector and generating payment authentication data using encrypted data, wherein the short-distance communication interface receives the payment request information from the payment terminal and transmits the payment authentication data to the payment terminal.

일 실시예에서, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치의 식별자가 올바른 것이 아니거나, 상기 사용자 입력 데이터가 올바른 것이 아닌 경우 올바르지 않은 결제 인증 데이터를 생성할 수 있다. 이 때, 상기 근거리 통신 인터페이스는 상기 결제 단말기로부터 승인 거절 신호를 수신할 수 있다.In one embodiment, the whitebox cryptographic module may generate incorrect payment authentication data when the identifier of the computing device is not correct or the user input data is not correct. At this time, the short-distance communication interface may receive an approval rejection signal from the payment terminal.

상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치는, 화이트박스 암호 모듈이 로드 되는 비-보안 주소 영역을 가지는 메모리와, 상기 화이트박스 암호 모듈을 위한 보안 요소를 구비하지 않은 범용 프로세서와, 네트워크 연결을 위한 네트워크 인터페이스를 포함하되, 상기 화이트박스 암호 모듈은, 런타임(run-time)에, 상기 런타임에 얻어진 상기 컴퓨팅 장치의 식별자 및 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 이용하여 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 오퍼레이션과, 상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 결제 요청 정보 중 적어도 일부 데이터에 대한 암호화를 수행하는 오퍼레이션과, 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 오퍼레이션을 포함하고, 상기 근거리 통신 인터페이스는 상기 네트워크를 통하여 연결된 결제 서버로부터 상기 결제 요청 정보를 수신하고, 상기 결제 서버에 상기 결제 인증 데이터를 송신한다.A computing device according to another embodiment of the present invention for solving the above technical problem is provided with a memory having a non-secure address area into which a white box cryptographic module is loaded and a security element for the white box cryptographic module. A general-purpose processor and a network interface for network connection, wherein the white-box cryptographic module uses, at run-time, an identifier of the computing device obtained at run-time and user input data for the computing device, an operation of deriving an initialization vector for starting encryption of the whitebox encryption module, an operation of performing encryption of at least some data among payment request information of the whitebox encryption module using the initialization vector, and and generating payment authentication data using data, wherein the short-distance communication interface receives the payment request information from a payment server connected through the network, and transmits the payment authentication data to the payment server.

일 실시예에서, 상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치의 식별자가 올바른 것이 아니거나, 상기 사용자 입력 데이터가 올바른 것이 아닌 경우 올바르지 않은 결제 인증 데이터를 생성할 수 있다. 이 때, 상기 네트워크 인터페이스는 상기 결제 서버로부터 승인 거절 신호를 수신할 수 있다.In one embodiment, the whitebox cryptographic module may generate incorrect payment authentication data when the identifier of the computing device is not correct or the user input data is not correct. At this time, the network interface may receive an approval rejection signal from the payment server.

본 발명의 몇몇 실시예들에 따르면, 다양한 디바이스에서 수행할 수 있는 암호화 방법 및 장치를 제공할 수 있는 효과를 달성할 수 있다.According to some embodiments of the present invention, an effect capable of providing an encryption method and apparatus that can be performed in various devices can be achieved.

본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 기술이 가지는 취약점을 보완하여, 보안 강도를 높일 수 있는 효과를 달성할 수 있다.According to some embodiments of the present invention, it is possible to achieve the effect of increasing the security strength by supplementing the weakness of the white box encryption technology.

본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 기술을 이용하여 범용적이고 유지보수가 용이한 결제 인증 솔루션을 제공할 수 있는 효과를 달성할 수 있다.According to some embodiments of the present invention, it is possible to achieve an effect of providing a general-purpose and easy-to-maintain payment authentication solution using white-box encryption technology.

본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.The effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 화이트박스 암호화 기술을 블랙박스 암호화 기술과 비교하여 설명하기 위한 도면이다.
도 2는 하드웨어 보안 요소를 통해 이루어지는 모바일 결제 방법을 설명하기 위한 도면이다.
도 3은 결제 서버 측에서 보안 로직이 수행 되는 모바일 결제 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법의 순서도이다.
도 5는 도 4의 일부 동작을 보다 자세히 설명하기 위한 상세 순서도이다.
도 6은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제1 블록 구성도이다.
도 7은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제2 블록 구성도이다.
도 8은 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암호화 방법의 제1 신호 흐름도를 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 제3 블록 구성도이다.
도 10은 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암호화 방법의 제2 신호 흐름도를 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 화이트박스 암호 장치의 하드웨어 구성도이다.
1 is a diagram for explaining a white box encryption technology compared to a black box encryption technology.
2 is a diagram for explaining a mobile payment method performed through a hardware security element.
3 is a diagram for explaining a mobile payment method in which security logic is performed on the payment server side.
4 is a flowchart of an encryption/decryption method using white box encryption according to an embodiment of the present invention.
5 is a detailed flowchart for explaining some operations of FIG. 4 in more detail.
6 is a first block configuration diagram of a white box encryption apparatus according to an embodiment of the present invention.
7 is a second block diagram of a white box encryption device according to an embodiment of the present invention.
8 is a diagram illustrating a first signal flow of an encryption method using a white box password according to an embodiment of the present invention.
9 is a third block diagram of a white box encryption device according to an embodiment of the present invention.
10 is a diagram illustrating a second signal flow of an encryption method using a white box password according to an embodiment of the present invention.
11 is a hardware configuration diagram of a white box encryption device according to an embodiment of the present invention.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. Advantages and features of the present invention, and methods for achieving them, will become clear with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only the present embodiments make the disclosure of the present invention complete, and common knowledge in the art to which the present invention belongs. It is provided to fully inform the holder of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numbers designate like elements throughout the specification.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.Unless otherwise defined, all terms (including technical and scientific terms) used in this specification may be used in a meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in commonly used dictionaries are not interpreted ideally or excessively unless explicitly specifically defined. Terminology used herein is for describing the embodiments and is not intended to limit the present invention. In this specification, singular forms also include plural forms unless specifically stated otherwise in a phrase.

명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.As used herein, "comprises" and/or "comprising" means that a stated component, step, operation, and/or element is the presence of one or more other components, steps, operations, and/or elements. or do not rule out additions.

도면을 통한 발명의 설명에 앞서, 본 발명의 몇몇 실시예들에서 보완하고자 하는 화이트박스 암호 기술의 단점을 설명한다. 화이트박스 암호 기술은 소프트웨어만으로 암호 키를 안전하게 보관할 수 있고, 신뢰할 수 없는 단말에서 암호화 알고리즘이 실행되더라도 암호 키가 드러나지 않도록 한다. 따라서 암호 키를 추출하고자 하는 공격에 대해서는 안전하게 구현되어 있다고 평가된다. 그러나 화이트박스 암호 모듈은 그 모듈 전체를 추출하여 전체를 가져다 쓰는 공격에 대해서는 취약하다. 화이트박스 암호를 활용하는 암, 복호화 코드 전체가 추출될 수 있고, 크래커가 상기 암, 복호화 코드 실행을 위한 인터페이스를 알 수 있다면 굳이 암호 키를 추출하지 않아도 화이트박스 암호의 로직(logic)에 포함된 암호 키를 활용하는 것이 가능하다.Prior to the description of the invention through the drawings, the disadvantages of the white box encryption technique to be supplemented in some embodiments of the present invention will be described. The white box encryption technology can safely store the encryption key with only software, and prevents the encryption key from being revealed even if the encryption algorithm is executed on an untrusted terminal. Therefore, it is evaluated that it is implemented safely against an attack to extract an encryption key. However, the white box cryptographic module is vulnerable to an attack that extracts the entire module and uses it as a whole. If the entire encryption/decryption code using the whitebox encryption can be extracted, and the cracker can know the interface for executing the encryption/decryption code, it is not necessary to extract the encryption key, but it is included in the logic of the whitebox encryption. It is possible to utilize a cryptographic key.

본 발명의 몇몇 실시예들에 따르면, 크래커의 공격에 의해 화이트박스 암호 모듈 전체가 추출된 경우에도, 다른 장치에서 상기 추출된 화이트박스 암호 모듈이 정상적으로 동작되지 않도록 함으로써, 상술한 단점을 보완한다.According to some embodiments of the present invention, even when the entire whitebox cryptographic module is extracted by a cracker's attack, the extracted whitebox cryptographic module is prevented from operating normally in another device, thereby compensating for the above-described disadvantage.

이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.Hereinafter, the present invention will be described in more detail with reference to the accompanying drawings.

본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법은 컴퓨팅 장치에 의하여 실행될 수 있다. 이하, 본 명세서에서 '암/복호화'는 암호화 또는 복호화를 의미한다. 상기 컴퓨팅 장치는 메모리에 로드 된 프로세서, 상기 프로세서에 의하여 수행되는 오퍼레이션(operation)이 로드(load) 되는 메모리 및 전원의 공급과 무관하게 상기 오퍼레이션을 저장하기 위한 스토리지를 포함한다. 다만, 상기 컴퓨팅 장치의 구성은 하나의 예시에 불과하며, 상기 컴퓨팅 장치는 연산 기능을 가지는 다양한 형태의 장치를 포함한다.An encryption/decryption method using a white box password according to an embodiment of the present invention may be executed by a computing device. Hereinafter, 'encryption/decryption' in this specification means encryption or decryption. The computing device includes a processor loaded into a memory, a memory into which an operation performed by the processor is loaded, and a storage for storing the operation regardless of power supply. However, the configuration of the computing device is only an example, and the computing device includes various types of devices having an arithmetic function.

도 4는 본 발명의 일 실시예에 따른 화이트박스 암호를 이용한 암/복호화 방법의 순서도이다. 이하, 화이트박스 암호를 이용한 암/복호화 방법에 대해 개략적으로 설명한다. 이하, 이해의 편의를 위하여, 각각의 동작에 대한 주체가 컴퓨팅 장치인 경우, 그 기재는 생략될 수도 있음을 유의한다.4 is a flowchart of an encryption/decryption method using white box encryption according to an embodiment of the present invention. Hereinafter, an encryption/decryption method using white box encryption will be briefly described. Hereinafter, for convenience of understanding, when the subject of each operation is a computing device, it should be noted that description thereof may be omitted.

컴퓨팅 장치는 암호화 또는 복호화 할 정보를 얻는다(S100). 상기 정보는 상기 컴퓨팅 장치의 스토리지 장치에 저장된 것이거나, 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 수신된 것이거나, 상기 컴퓨팅 장치에 구비된 터치 스크린 등의 사용자 인터페이스를 통하여 입력 된 것일 수 있다.The computing device obtains information to be encrypted or decrypted (S100). The information may be stored in a storage device of the computing device, received through a network interface provided in the computing device, or input through a user interface such as a touch screen provided in the computing device.

상기 컴퓨팅 장치는 상기 정보에 대한 암/복호화를 수행하는 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 한다(S105). 도 4에는 암호화 또는 복호화 할 정보를 얻은 후 상기 화이트박스 암호 모듈의 메모리 로드가 수행되는 것으로 도시되어 있으나, 그와 반대로 상기 화이트박스 암호 모듈의 메모리 로드가 먼저 이뤄진 후, 암호화 또는 복호화 할 정보를 얻는 동작이 수행 될 수도 있다. 즉, 상기 화이트박스 암호 모듈은 필요 시에만 메모리에 일시적으로 로드 되는 일시 적재 모듈일 수도 있고, 메모리에 상시 로드 되어 있는 상태를 유지하는 상시 적재 모듈일 수도 있다. 상기 화이트박스 암호 모듈이 상시 적재 모듈이더라도, 상기 컴퓨팅 장치의 부팅(booting) 과정에서는 메모리에 로드 되는 과정을 거칠 것이다.The computing device loads a white box cryptographic module for encrypting/decrypting the information into a memory provided in the computing device (S105). 4 shows that the memory load of the white box cryptographic module is performed after obtaining information to be encrypted or decrypted. action may be performed. That is, the white box cryptographic module may be a temporarily loaded module that is temporarily loaded into the memory only when necessary, or a constantly loaded module that maintains a state of being always loaded into the memory. Even if the white box cryptographic module is a always-loaded module, it will go through a process of being loaded into a memory during a booting process of the computing device.

상기 화이트박스 암호 모듈을 상시 적재 모듈의 형태로 운영하는 경우, 일 실시예에 따르면 메모리의 커널(kernel) 영역에 상기 화이트박스 암호 모듈을 로드 할 수 있다. 커널 영역은 운영 체제가 사용하는 메모리 영역으로서, 운영 체제가 아닌 사용자 어플리케이션은 상기 커널 영역에 침범할 수 없다. 따라서, 메모리의 커널 영역에 로드 된 화이트박스 암호 모듈은 그 코드가 유출 되는 것이 방지될 수 있다. 또한, 부팅 과정에서 상기 화이트박스 암호 모듈을 로드 함으로써, 부팅이 마무리 된 후에야 동작할 수 있는 크래킹 목적의 사용자 어플리케이션이 화이트박스 암호 모듈의 바이너리 데이터를 얻는 것을 방지할 수 있다.When the white box cryptographic module is operated in the form of an always-loading module, according to an embodiment, the whitebox cryptographic module may be loaded in a kernel area of a memory. The kernel area is a memory area used by the operating system, and user applications other than the operating system cannot invade the kernel area. Therefore, the code of the white box cryptographic module loaded in the kernel area of memory can be prevented from being leaked. In addition, by loading the whitebox cryptographic module in the booting process, it is possible to prevent a user application for cracking, which can operate only after booting is completed, from obtaining binary data of the whitebox cryptographic module.

화이트박스 암호 모듈의 바이너리는 룩업 테이블의 사이즈 등으로 인하여 상당한 메모리 공간을 차지하는 점을 감안하여, 본 발명의 몇몇 실시예들에 따르면 상기 화이트박스 암호 모듈의 바이너리 사이즈에 따라, 상기 화이트박스 암호 모듈을 상시 적재 모듈로서 운영하거나, 일시 적재 모듈로서 운영할 수 있다. 예를 들어, 컴퓨팅 장치는 운영 체제 부팅 과정에서 화이트박스 암호 모듈 바이너리의 데이터 사이즈를 체크하고, 상기 데이터 사이즈가 기준치 이하인 경우 상기 화이트박스 암호 모듈을 부팅 과정에서 메모리의 커널 영역에 로드 하고 부팅이 유지 되는 한 로드 상태를 유지하며(상시 적재 모듈), 상기 데이터 사이즈가 기준치 이상인 경우 부팅 과정에서는 화이트박스 암호 모듈을 로드 하지 않는다(일시 적재 모듈).Considering that the binary of the whitebox cryptographic module occupies a considerable memory space due to the size of the lookup table, etc., according to some embodiments of the present invention, the whitebox cryptographic module is configured according to the binary size of the whitebox cryptographic module. It can be operated as a constant load module or as a temporary load module. For example, the computing device checks the data size of the white box cryptographic module binary during the operating system booting process, and if the data size is less than a reference value, loads the white box cryptographic module into the kernel area of memory during the booting process and maintains booting. It maintains the loaded state as long as possible (constant loading module), and does not load the whitebox cryptographic module during booting if the data size is greater than the reference value (temporary loading module).

상기 화이트박스 암호 모듈이 일시 적재 모듈의 형태로 운영되는 경우, 화이트박스 암호 모듈의 바이너리 데이터 사이즈만큼 메모리 용량을 아낄 수 있는 효과가 있다. 다만, 화이트박스 암호 모듈이 메모리에 로드 되는 과정에서 상기 화이트박스 암호 모듈의 바이너리가 크래킹 어플리케이션에 의하여 복제 되는 위험이 존재한다.When the white box cryptographic module is operated in the form of a temporary load module, memory capacity can be saved by the size of binary data of the white box cryptographic module. However, in the process of loading the white box cryptographic module into the memory, there is a risk that the binary of the white box cryptographic module is copied by a cracking application.

상기 크래킹 어플리케이션은 상기 화이트박스 암호 모듈이 필요한 상황을 만든 후(예를 들어, 화이트박스 암호 모듈이 사용되는 결재 APP의 실행), 메모리 로드를 위한 시스템 함수를 후킹(hooking) 하여 메모리 어드레스를 얻는 등의 방식으로, 화이트박스 암호 모듈의 바이너리를 얻을 수 있을 것이다(메모리 덤프 기술 사용). 이러한 행위를 방지하기 위하여, 다양한 안티-디버깅, 코드 난독화, 안티 메모리 덤프 기술 등이 활용되어 상기 화이트박스 암호 모듈의 바이너리가 생성될 수 있다. 하지만, 상기 보안 기술에도 불구하고 상기 화이트박스 암호 모듈의 바이너리가 유출되더라도, 본 발명의 몇몇 실시예들은 유출된 화이트박스 암호 모듈을 이용한 암/복호화가 무단으로 수행되는 것을 방지할 수 있다. 그 이유에 대하여 이하 설명한다.The cracking application creates a situation in which the white box cryptographic module is required (eg, execution of a payment APP in which the whitebox cryptographic module is used), hooks a system function for memory load, obtains a memory address, and the like , you will be able to get the binary of the whitebox cryptographic module (using a memory dump technique). In order to prevent this behavior, a binary of the white box cryptographic module may be generated using various anti-debugging, code obfuscation, and anti-memory dump technologies. However, even if the binary of the white box cryptographic module is leaked despite the security technology, some embodiments of the present invention can prevent unauthorized execution of encryption/decryption using the leaked white box cryptographic module. The reason for this is explained below.

다시 도 4를 참조하여 설명한다. 컴퓨팅 장치에 구비된 프로세서가 메모리에 로드 된 화이트박스 암호 모듈을 실행한다(S110). 상기 프로세서의 상기 화이트박스 암호 모듈 실행 시점은 상기 컴퓨팅 장치에 설치된 운영 체제의 스케줄러에 의하여 결정되는데, 예를 들어 상기 화이트박스 암호 모듈이 사용자 어플리케이션에 의하여 호출 될 수 있는 함수들의 집합인 라이브러리(library)인 경우, 상기 프로세서의 상기 화이트박스 암호 모듈 실행 시점은 결제 APP 등의 사용자 어플리케이션이 상기 라이브러리에 포함된 함수를 호출하는 시점이 될 것이다.It will be described with reference to FIG. 4 again. A processor provided in the computing device executes the white box cryptographic module loaded into the memory (S110). The execution time of the white box cryptographic module of the processor is determined by the scheduler of the operating system installed in the computing device. For example, the white box cryptographic module is a library that is a set of functions that can be called by a user application. In this case, the processor executes the whitebox cryptographic module at a time when a user application such as a payment APP calls a function included in the library.

컴퓨팅 장치는, 상기 화이트박스 암호 모듈의 런타임에, 시작 데이터를 결정한다(S120). '런타임(run-time)'은 소프트웨어가 프로세서를 통하여 실행되는 시점을 가리키는 점에서, 컴파일 타임, 로드 타임과는 구별 되는 시점을 가리킨다. 따라서, 화이트박스 암호 모듈의 런타임에 시작 데이터를 결정한다는 것은, 화이트박스 암호 모듈이 프로세서를 통하여 실행되는 도중에 상기 시작 데이터를 결정하는 오퍼레이션도 상기 프로세서를 통하여 실행되는 것을 가리킨다.The computing device determines start data at runtime of the whitebox cryptographic module (S120). 'Run-time' refers to the point at which software is executed through a processor, which is distinct from compile time and load time. Accordingly, determining start data at run time of the white box cryptographic module indicates that the operation of determining the start data is also executed through the processor while the white box cryptographic module is being executed through the processor.

컴퓨팅 장치는, 상기 시작 데이터를 상기 화이트박스 암호 모듈의 런타임에 얻어진 데이터를 이용하여 결정한다. 예를 들어, 컴퓨팅 장치는 상기 시작 데이터를 상기 런타임에 입력되거나 조회된 데이터를 이용하여 결정한다.The computing device determines the starting data using data obtained at runtime of the whitebox cryptographic module. For example, the computing device determines the start data using data input or retrieved at the runtime.

상기 화이트박스 암호 모듈 외부의 오퍼레이션에 의하여 결정된 시작 데이터가 상기 화이트박스 암호 모듈의 실행 환경을 왜곡하거나 속이는 것을 방지하기 위해, 상기 시작 데이터를 결정하는 오퍼레이션은 상기 화이트박스 암호 모듈에 포함될 수 있다.In order to prevent starting data determined by an operation outside the whitebox cryptographic module from distorting or deceiving an execution environment of the whitebox cryptographic module, an operation for determining the starting data may be included in the whitebox cryptographic module.

상기 시작 데이터는 상기 화이트박스 암호 모듈이 암/복호화를 수행할 때 필요한 데이터이다. 보다 자세하게는, 상기 시작 데이터는 상기 화이트박스 암호 모듈이 암/복호화를 개시할 때 필요한 데이터이다. 예를 들어, 상기 시작 데이터는 초기화 벡터(initialization vector) 또는 넌스(nonce)이다.The starting data is data required when the white box cryptographic module performs encryption/decryption. More specifically, the start data is data required when the whitebox encryption module starts encryption/decryption. For example, the start data is an initialization vector or a nonce.

컴퓨팅 장치는, 상기 시작 데이터를 이용하여 화이트박스 암호 모듈의 암/복호화 동작을 수행한다(S125).The computing device performs an encryption/decryption operation of the white box encryption module using the start data (S125).

도 4를 참조하여 설명된 실시예에 따르면, 화이트박스 암호 모듈이 암/복호화를 수행할 때 필요한 데이터인 시작 데이터가 상기 화이트박스 암호 모듈의 런타임에 결정되고, 런타임에 얻어진 데이터를 이용하여 결정된다. 따라서, 상기 화이트박스 암호 모듈의 바이너리가 통째로 외부로 유출되면 상기 시작 데이터가 유출 되기 전과 달라지도록 시작 데이터를 결정하는 오퍼레이션을 구현할 수 있다. 이 경우, 화이트박스 암호 모듈의 바이너리가 통째로 외부로 유출되더라도 암/복호화 동작이 제대로 수행되지 않을 것이다. 따라서, 본 실시예에 따르면 하드웨어 보안 요소(SE)를 사용하지 않고도 화이트 박스 암호 기술의 약점이 보완 된다.According to the embodiment described with reference to FIG. 4, start data, which is data necessary when the whitebox cryptographic module performs encryption/decryption, is determined at runtime of the whitebox cryptographic module and determined using data obtained at runtime. . Accordingly, when the entire binary of the whitebox cryptographic module is leaked to the outside, an operation for determining start data to be different from before the leak may be implemented. In this case, even if the entire binary of the whitebox cryptographic module is leaked to the outside, the encryption/decryption operation will not be performed properly. Therefore, according to the present embodiment, the weakness of the white box encryption technique is supplemented without using a hardware security element (SE).

일 실시예에서, 상기 시작 데이터는 상기 화이트박스 암호 모듈의 런타임에 상기 컴퓨팅 장치에 사용자 입력된 데이터를 이용하여 생성될 수 있다.In one embodiment, the starting data may be generated using data input by a user to the computing device at runtime of the whitebox cryptographic module.

일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 컴퓨터로 읽을 수 있는 기록 매체에서 상기 화이트박스 암호 모듈의 런타임에 조회된 데이터를 이용하여 생성될 수 있다. 상기 기록 매체는, 예를 들어 ROM(Read Only Memory) 일 수 있다. ROM은 데이터가 기록된 후에는 수정이 불가능하므로, 화이트박스 암호 모듈의 런타임에 컴퓨팅 장치의 ROM에서 조회된 데이터를 이용하여 상기 시작 데이터를 생성함으로써, 상기 시작 데이터가 화이트박스 암호 모듈의 실행 환경을 정확하게 가리키도록 할 수 있다. 상기 조회된 데이터는 상기 컴퓨팅 장치의 고유 식별자일 수 있다. 상기 고유 식별자는, 예를 들어 MAC(Medium Access Control) 주소, IMEI(International Mobile Equipment Identity)일 수 있다.In one embodiment, the start data may be generated using data retrieved at run time of the white box cryptographic module in a computer readable recording medium included in the computing device. The recording medium may be, for example, ROM (Read Only Memory). Since the ROM cannot be modified after data is recorded, the starting data is generated using the data retrieved from the ROM of the computing device at runtime of the whitebox cryptographic module, so that the starting data sets the execution environment of the whitebox cryptographic module. You can point to it accurately. The inquired data may be a unique identifier of the computing device. The unique identifier may be, for example, a medium access control (MAC) address or an international mobile equipment identity (IMEI).

일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 근거리 통신 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터를 이용하여 생성될 수 있다. 상기 근거리 통신 인터페이스는, 예를 들어 RFID(Radio Frequency Identification)를 위한 것이거나, NFC(Near Field Communication)를 위한 것이거나, ZIGBEE를 위한 것이거나, 블루투스(Bluetooth)를 위한 것이거나, 그 외의 근거리 통신 인터페이스를 위한 것일 수 있다.In one embodiment, the start data may be generated using data received at runtime of the white box cryptographic module through a short-range communication interface provided in the computing device. The short-range communication interface is, for example, for RFID (Radio Frequency Identification), NFC (Near Field Communication), ZIGBEE, Bluetooth, or other short-range communication. It could be for an interface.

일 실시예에서, 상기 시작 데이터는 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터를 이용하여 생성될 수 있다.In one embodiment, the starting data may be generated using data received at runtime of the whitebox cryptographic module through a network interface included in the computing device.

일 실시예에서, 상기 시작 데이터는 상기 화이트박스 암호 모듈의 런타임에 상기 컴퓨팅 장치에 사용자 입력된 데이터, 상기 컴퓨팅 장치에 구비된 컴퓨터로 읽을 수 있는 기록 매체에서 상기 화이트박스 암호 모듈의 런타임에 조회된 데이터, 상기 컴퓨팅 장치에 구비된 근거리 통신 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터, 및 상기 컴퓨팅 장치에 구비된 네트워크 인터페이스를 통하여 상기 화이트박스 암호 모듈의 런타임에 수신된 데이터 중 둘 이상을 이용하여 생성될 수 있다.In one embodiment, the starting data is data input by a user to the computing device at runtime of the whitebox cryptographic module, and data retrieved from a computer-readable recording medium included in the computing device at runtime of the whitebox cryptographic module. At least two of data, data received at runtime of the white-box cryptographic module through a short-range communication interface provided in the computing device, and data received at runtime of the white-box cryptographic module through a network interface provided in the computing device. can be created using

상기 화이트박스 암호 모듈의 런타임에 얻어진 다양한 데이터를 이용하여 상기 시작 데이터를 상기 런타임에 결정함으로써, 상기 화이트박스 암호 모듈이 유출 되지 않은 것처럼 속이는 것이 더 어려워지는 효과가 있다. 이러한 효과에 의하여 화이트박스 암호 기술의 취약점(화이트박스 암호 모듈의 바이너리가 통째로 유출 되는 경우 암/복호화 키 없더라도 암/복호화는 가능해 지는 점)이 보완 된다.By determining the start data at run time using various data obtained at run time of the white box cryptographic module, it is more difficult to deceive as if the white box cryptographic module has not been leaked. This effect complements the weakness of the white box encryption technology (encryption/decryption is possible even without the encryption/decryption key if the binary of the white box encryption module is leaked in its entirety).

시작 데이터의 결정과 관련하여 도 5를 참조하여 보다 자세히 설명한다.The determination of start data will be described in more detail with reference to FIG. 5 .

도 5에 도시된 바와 같이, 상기 시작 데이터는 디바이스에 종속된 정보와 사용자에 종속된 정보 모두를 이용하여 결정될 수 있다(S122, S124). 상기 디바이스는 상기 화이트박스 암호 모듈이 수행되는 컴퓨팅 장치를 가리킨다. 상기 디바이스에 종속된 정보는, 상기 컴퓨팅 장치의 고유 식별자, 예를 들어 MAC 주소나, IMEI 값 또는 기기 제조사에 의하여 부여된 시리얼 넘버일 수 있다. 상기 사용자에 종속된 정보는, 예를 들어 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나를 포함할 수 있다. 상기 생체 정보는 얼굴 인식 정보, 지문 정보, 홍채 인식 정보 등을 포함한다.As shown in FIG. 5, the start data may be determined using both device-dependent information and user-dependent information (S122 and S124). The device refers to a computing device on which the whitebox cryptographic module is performed. The information dependent on the device may be a unique identifier of the computing device, for example, a MAC address, an IMEI value, or a serial number assigned by a device manufacturer. The information subordinate to the user may include, for example, at least one of security information pre-registered by the user and biometric information of the user. The biometric information includes face recognition information, fingerprint information, iris recognition information, and the like.

상기 디바이스에 종속된 정보를 이용하여 상기 시작 데이터를 결정하는 이유는, 화이트박스 암호 모듈이 수행되는 컴퓨팅 장치가 허용 또는 등록 되지 않은 장치 등 올바르지 않은(incorrect) 장치인지 여부를 반영하기 위함이다. 또한, 상기 사용자에 종속된 정보를 이용하여 상기 시작 데이터를 결정하는 이유는, 컴퓨팅 장치를 도난 당하거나 잃어버린 경우에도 허용되지 않은 사람이 화이트박스 암호 모듈에 의한 암/복호화 동작을 수행하는 것을 방지하기 위함이다.The reason why the start data is determined using the information dependent on the device is to reflect whether the computing device on which the whitebox cryptographic module is executed is an incorrect device such as a device that is not allowed or registered. In addition, the reason for determining the start data using the information dependent on the user is to prevent an unauthorized person from performing an encryption/decryption operation by the white box cryptographic module even when the computing device is stolen or lost. It is for

컴퓨팅 장치는 디바이스에 종속된 정보와 사용자에 종속된 정보를 모두 이용하여 초기화 벡터(IV)를 유도한다(S126). 초기화 벡터란 비트 라인이며, 스트림 암호 또는 블록 암호를 임의의 암호화 사용 모드에서 실행할 때 사용되는 값이다. 특히 블록 암호에서 첫 블록을 암호화할 때 사용된다. CBC, CFB, OFB에서 각각 사용될 수 있다. 블록 암호(block cipher)란 암호문을 만들기 위해 암호 키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방법이다. 평문의 동일 블록들이 하나의 메시지에서 동일한 암호문으로 되지 않도록 하기 위해 이전 암호 블록의 암호문을 다음 블록에 순서대로 적용하는 것이다. 같은 시간에 암호화된 동일 메시지들이 같은 암호문을 만들지 않도록 난수 발생기에 의한 초기화 벡터를 평문의 첫 블록에 조합함으로써 다음 블록들이 이전 암호 블록과 다른 암호문을 생성하는 것이 일반적이다.The computing device derives an initialization vector IV by using both device-dependent information and user-dependent information (S126). An initialization vector is a bit line, and is a value used when executing a stream cipher or block cipher in any encryption-enabled mode. In particular, it is used when encrypting the first block in block ciphers. It can be used in CBC, CFB, and OFB, respectively. A block cipher is an encryption method in which an encryption key and an algorithm are applied in blocks of data to produce ciphertext. The ciphertext of the previous cipherblock is applied in sequence to the next block in order to ensure that identical blocks of plaintext do not result in the same ciphertext in a message. In general, next blocks generate different ciphertext from the previous ciphertext by combining the initialization vector by the random number generator with the first block of plaintext so that identical messages encrypted at the same time do not produce the same ciphertext.

일 실시예에서, 상기 디바이스에 종속된 정보 및 사용자에 종속된 정보가 상기 초기화 벡터를 통하여 유출되는 것을 방지하기 위해, 상기 디바이스에 종속된 정보의 해쉬(hash) 값과 상기 사용자에 종속된 정보의 해쉬 값을 이용하여 상기 초기화 벡터를 유도하거나, 디바이스에 종속된 정보와 사용자에 종속된 정보의 연결(concatenation)에 대한 해쉬 값을 이용하여 상기 초기화 벡터를 유도할 수 있다.In one embodiment, in order to prevent the information dependent on the device and the information dependent on the user from leaking through the initialization vector, the hash value of the information dependent on the device and the information dependent on the user The initialization vector may be derived using a hash value, or the initialization vector may be derived using a hash value for concatenation of device-dependent information and user-dependent information.

컴퓨팅 장치는 초기화 벡터를 이용하여 화이트박스 암호 모듈의 암/복호화를 개시한다(S128). 초기화 벡터가 만들어지지 않으면 화이트박스 암호 모듈의 암/복호화가 수행될 수 없으므로, 사용자에 종속된 정보가 입력되기 전에는 화이트박스 암호 모듈의 동작을 일시 정지 시킬 수 있다.The computing device initiates encryption/decryption of the whitebox cryptographic module using the initialization vector (S128). Since the encryption/decryption of the whitebox cryptographic module cannot be performed unless the initialization vector is created, the operation of the whitebox cryptographic module can be temporarily stopped before information dependent on the user is input.

지금까지 본 발명의 몇몇 실시예들에 따른 화이트박스 암호를 이용한 암/복호화 방법에 대해 살펴보았다. 상기 화이트박스 암호를 이용한 암/복호화 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터 프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 데스크탑 PC와 같은 고정식 컴퓨팅 장치, 노트북, 스마트폰, 태블릿 PC와 같은 모바일 컴퓨팅 장치를 모두 포함한다.So far, encryption/decryption methods using white box cryptography according to some embodiments of the present invention have been described. The encryption/decryption methods using the white box encryption may be performed by executing a computer program implemented as a computer readable code. The computer program may be transmitted from the first computing device to the second computing device through a network such as the Internet, installed in the second computing device, and thus used in the second computing device. The first computing device and the second computing device include both a server device, a stationary computing device such as a desktop PC, and a mobile computing device such as a notebook computer, a smart phone, and a tablet PC.

상기 컴퓨터 프로그램은, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하고, 상기 화이트박스 암호 모듈의 런타임(run-time)에, 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를, 상기 런타임에 얻어진 데이터를 이용하여 결정하고, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 오퍼레이션을 실행시키기 위한 것일 수 있다. 상기 컴퓨터 프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있으나, 네트워크를 통하여 배포되는 것일 수도 있다.The computer program loads a white box cryptographic module into a memory provided in the computing device, and starts data for starting encryption/decryption of the white box cryptographic module at run-time of the white box cryptographic module. It may be to determine , using data obtained at runtime, and to execute an operation that initiates an encryption/decryption operation of the whitebox cryptographic module using the start data. The computer program may be stored in a recording medium such as a DVD-ROM or a flash memory device, but may also be distributed over a network.

상기 컴퓨터 프로그램은, 안드로이드, iOS와 같은 모바일 장치 운영 체제 내의 한 모듈 형태로 구현 될 수도 있다.The computer program may be implemented as a module in a mobile device operating system such as Android or iOS.

이하, 본 발명의 다른 실시예에 따른 화이트박스 암호 장치(200)의 구성 및 동작을 도 6을 참조하여 설명한다. 도 6을 참조하면, 본 실시예에 따른 화이트박스 암호 장치(200)는 통신 인터페이스(205), 데이터 입출력부(210), 화이트박스 암호부(215), 하드닝부(220) 및 사용자정보 인터페이스(225)를 포함할 수 있다.Hereinafter, the configuration and operation of the white box encryption apparatus 200 according to another embodiment of the present invention will be described with reference to FIG. 6 . Referring to FIG. 6 , the white box encryption device 200 according to the present embodiment includes a communication interface 205, a data input/output unit 210, a white box encryption unit 215, a hardening unit 220, and a user information interface ( 225) may be included.

통신 인터페이스(205)는 외부 장치로부터 암호화 또는 복호화할 데이터를 수신하여, 데이터 입출력부(210)에 제공한다. 또한, 통신 인터페이스(205)는 암호화 또는 복호화된 데이터를 데이터 입출력부(210)로부터 제공받아 외부 장치로 송신한다.The communication interface 205 receives data to be encrypted or decrypted from an external device and provides it to the data input/output unit 210 . Also, the communication interface 205 receives encrypted or decrypted data from the data input/output unit 210 and transmits it to an external device.

데이터 입출력부(210)는 통신 인터페이스(205), 사용자 인터페이스(225), 화이트박스 암호부(215) 및 하드닝 부(220) 사이의 데이터 송수신을 연결한다.The data input/output unit 210 connects data transmission and reception between the communication interface 205, the user interface 225, the white box encryption unit 215, and the hardening unit 220.

화이트박스 암호부(215)는 데이터 입출력부(210)로부터 제공된 데이터를 화이트박스 암호 방법으로 암호화 또는 복호화 할 수 있다. 화이트박스 암호부(215)는, 화이트박스 암호부가 실행되는 런타임에, 화이트박스 암호부를 통한 암/복호화의 시작을 위해 필요한 초기화 벡터를 생성하되, 상기 런타임에 얻은 데이터를 이용하여 상기 초기화 벡터를 생성할 수 있다. 상기 초기화 벡터의 생성에는 사용자 인터페이스(225)를 통하여 상기 런타임에 입력된 사용자 종속적인 데이터가 이용될 수 있다. 상기 초기화 벡터의 생성에 대하여는 이미 자세히 설명한 바 있으므로, 중복 설명은 생락한다.The white box encryption unit 215 may encrypt or decrypt data provided from the data input/output unit 210 using a white box encryption method. The white box encryption unit 215 generates an initialization vector necessary for starting encryption/decryption through the white box encryption unit at runtime when the white box encryption unit is executed, and generates the initialization vector using data obtained at runtime. can do. User-dependent data input to the runtime through the user interface 225 may be used to generate the initialization vector. Since the generation of the initialization vector has already been described in detail, a redundant description will be omitted.

하드닝 부(220)는 화이트박스 암호 방법을 보완하기 위한 모듈을 포함한다. 하드닝 부(220)는 안티-디버깅 모듈(222), 난독화 모듈(224), 무결성 검증 모듈(225)을 포함할 수 있다. 하드닝 부(220)는 화이트박스 암호 기술의 취약점을 보완하여 보안 강화의 효과를 가져올 수 있다.The hardening unit 220 includes a module for supplementing the white box encryption method. The hardening unit 220 may include an anti-debugging module 222 , an obfuscation module 224 , and an integrity verification module 225 . The hardening unit 220 can bring the effect of enhancing security by supplementing the weakness of the white box encryption technology.

안티-디버깅 모듈(222)은 크래커 애플리케이션이 화이트박스 암호부(215)의 동작에 대해 디버깅을 시도할 때, 디버깅을 방해하고 분석을 방해하는 기능을 수행할 수 있다. 화이트박스 암호부(215)의 바이너리가 디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법 등 다양한 방법을 사용하여 분석을 방해할 수 있다.The anti-debugging module 222 may perform a function of preventing debugging and analysis when a cracker application attempts to debug the operation of the white box encryption unit 215 . If the binary of the white box encryption unit 215 is being debugged, analysis may be interrupted using various methods such as terminating the corresponding debugger program or generating an error.

디버거는 주로 원하는 코드에 중단점을 지정하여 프로그램 실행을 정지하고, 메모리에 저장된 값을 살펴보며, 실행을 재개하거나, 코드를 단계적으로 실행하는 등의 동작을 한다. 크래커가 화이트박스 암호 모듈을 디버깅 하는 경우, 암, 복호화의 수행을 정지하고 메모리에 로드 된 값들을 볼 수 있다. 이 경우 런타임에 입력 받는 시작 데이터가 유출 될 수 있다. 시작 데이터가 유출 되면, 크래커는 화이트박스 암호 모듈을 통째로 다른 컴퓨팅 장치의 메모리에 로드하고, 상기 화이트박스 암호 모듈 디버깅 모드로 실행하면서 상기 유출된 시작 데이터를 입력할 수 있게 될 것이다. 안티-디버깅 모듈(222)은 이러한 디버거의 동작을 감지하여 즉시 화이트박스 암호 모듈의 실행을 중지하는 등의 동작을 수행한다.Debuggers usually stop program execution by setting breakpoints in desired code, examine values stored in memory, resume execution, or step through code. When a cracker debugs a whitebox cryptographic module, it can stop performing encryption and decryption and view the values loaded into memory. In this case, start data received at runtime may be leaked. If the starting data is leaked, the cracker will be able to load the entire whitebox cryptographic module into the memory of another computing device and input the leaked starting data while running the whitebox cryptographic module in debugging mode. The anti-debugging module 222 detects such an operation of the debugger and immediately performs an operation such as stopping the execution of the white box cryptographic module.

난독화 모듈(224)은 화이트박스 암호 모듈의 바이너리를 난독화하는 바이너리 난독화 기능을 수행한다. 화이트박스 암호 모듈의 바이너리는 난독화 모듈(224)에 의하여 난독화 된 후 메모리에 로드 될 수 있다. 이 때, 안티-디버깅 모듈(222)의 동작이 무력화 되어 디버깅 모드로 화이트박스 암호 모듈이 동작하더라도, 난독화 된 바이너리는 그 해독이 어렵다. 따라서, 난독화 모듈(224)은 크래커가 화이트박스 암호 모듈의 바이너리를 리버스 엔지니어링 기술 등을 통해 해독하여 상기 시작 데이터까지 유출 되는 것을 방지한다.The obfuscation module 224 performs a binary obfuscation function of obfuscating the binary of the white box cryptographic module. The binary of the whitebox cryptographic module may be obfuscated by the obfuscation module 224 and then loaded into the memory. At this time, even if the operation of the anti-debugging module 222 is disabled and the white box cryptographic module operates in the debugging mode, it is difficult to decipher the obfuscated binary. Therefore, the obfuscation module 224 prevents a cracker from leaking the start data by decrypting the binary of the white box cryptographic module through reverse engineering technology or the like.

무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리가 원본 그대로인지 여부를 검증한다. 즉, 무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리가 크래커에 의하여 조작된 것인지 여부를 검증한다.The integrity verification module 225 verifies whether the binary of the white box cryptographic module is original. That is, the integrity verification module 225 verifies whether the binary of the white box cryptographic module has been manipulated by a cracker.

무결성 검증 모듈(225)은 화이트박스 암호 모듈의 런타임 도중에 적어도 1회 이상 무결성을 검증할 수 있다. 예를 들어, 상기 시작 데이터의 결정 전후에 무결성을 검증하거나, 초기화 벡터의 유도 전후에 무결성을 검증하거나, 암/복호화 수행 전후에 무결성을 검증할 수 있다. 무결성 검증 모듈(225)은 화이트박스 암호 모듈의 바이너리의 원본에 대한 평가 정보, 예를 들어 해시 값 등을 저장하고, 저장 된 상기 평가 정보를 이용하여 메모리에 로드 된 화이트박스 암호 모듈의 바이너리의 무결성을 검증할 수 있다.The integrity verification module 225 may verify integrity at least once during runtime of the white box cryptographic module. For example, integrity may be verified before and after determining the start data, integrity may be verified before and after induction of an initialization vector, or integrity may be verified before and after performing encryption/decryption. The integrity verification module 225 stores evaluation information on the original binary of the white box cryptographic module, for example, a hash value, and uses the stored evaluation information to store the integrity of the binary of the white box cryptographic module loaded into the memory. can be verified.

지금까지, 화이트박스 암호 기술의 취약점을 보완하기 위한 본 발명의 몇몇 실시예들에 추가로 적용될 수 있는 보안 강화 실시예들을 살펴보았다. 상술한 하드닝부(220)의 각 모듈은 소프트웨어 업데이트에 대응하여 갱신되거나, 새로운 모듈로 대체될 수도 있다. 종래 기술에 따른 하드웨어 보안 요소에 의존하여 암/복호화 등의 보안 로직을 실행하는 경우 상기 하드웨어 보안 요소에 취약점이 발견되더라도 보완이 쉽지 않다. 반면에, 본 발명의 몇몇 실시예들에 따르면, 하드웨어 보안 요소를 전혀 사용하지 않고 범용 프로세서 및 범용 메모리를 통하여 구현된 소프트웨어 보안 요소를 통하여 보안 로직이 수행되므로, 소프트웨어로 구현된 보안 요소의 취약점에 대한 보완은 소프트웨어의 배포 및 설치로서 가능하여 유지보수가 용이한 장점이 있다.So far, security enhancement embodiments that can be additionally applied to some embodiments of the present invention to compensate for the weakness of the white box encryption technology have been looked at. Each module of the above-described hardening unit 220 may be updated in response to a software update or may be replaced with a new module. When security logic such as encryption/decryption is executed by relying on a hardware security element according to the prior art, even if a vulnerability is found in the hardware security element, it is not easy to compensate. On the other hand, according to some embodiments of the present invention, since the security logic is performed through a software security element implemented through a general-purpose processor and a general-purpose memory without using a hardware security element at all, the security element implemented in software is vulnerable to vulnerabilities. Complementary to this is possible through the distribution and installation of software, which has the advantage of easy maintenance.

이하, 도 7을 참조하여 본 발명의 몇몇 실시예들에 따른 방법이 구현되는 소프트웨어 아키텍처를 설명한다.A software architecture in which a method according to some embodiments of the present invention is implemented is described below with reference to FIG. 7 .

도 4 내지 도 6을 참조하여 설명한 본 발명의 몇몇 실시예들에 따른 방법은 하나의 어플리케이션에 모든 모듈이 포함된 것으로, 어플리케이션-종속적인 방식으로 구현될 수 있다.The method according to some embodiments of the present invention described with reference to FIGS. 4 to 6 includes all modules in one application, and may be implemented in an application-dependent manner.

다만, 본 발명의 몇몇 실시예들에 따르면, 화이트박스 암호 모듈이 어플리케이션-독립적인 라이브러리 형태로 제공되고, 각각의 어플리케이션(또는, 본 명세서에서는 모바일 디바이스에서 수행되는 어플리케이션을 가리키는 앱(APP)이라는 용어도 사용한다)이 상기 라이브러리에서 제공되는 API(Application Programming Interface)를 호출하여 보안 로직을 수행하는 형태로 구현될 수도 있다. 도 7은 상기 라이브러리의 일례로 화이트박스 암호 라이브러리(240)가 도시 되어 있다.However, according to some embodiments of the present invention, the white box cryptographic module is provided in the form of an application-independent library, and each application (or, in this specification, the term APP indicating an application executed on a mobile device) Also used) may be implemented in a form of performing security logic by calling an application programming interface (API) provided by the library. 7 shows a white box encryption library 240 as an example of the library.

도 7에 도시된 소프트웨어 아키텍처에서, 보안 로직은 화이트박스 암호 라이브러리(240)에서 수행되고, 그 외의 동작, 예를 들어 사용자 인터페이스, 네트워크 인터페이스(250)를 통한 외부 장치와의 커뮤니케이션 등은 각각의 앱(230a, 230b, 230c)에서 담당한다.In the software architecture shown in FIG. 7, the security logic is performed in the whitebox cryptographic library 240, and other operations, such as user interface and communication with external devices through the network interface 250, are performed by each app. (230a, 230b, 230c) is in charge.

앱(230a, 230b, 230c)의 요청에 따라 화이트박스 암호 라이브러리(240)는 시작 데이터를 결정하고, 상기 시작 데이터를 이용하여 암/복호화 수행을 개시하는 동작을 수행하고, 그 결과를 앱(230a, 230b, 230c)에 리턴(return) 한다.At the request of the apps 230a, 230b, and 230c, the whitebox cryptographic library 240 determines start data, performs an operation to initiate encryption/decryption using the start data, and returns the result to the app 230a. , 230b, 230c).

화이트박스 암호 라이브러리(240)는 암호화 함수를 포함할 수 있다. 앱(230a, 230b, 230c)이 상기 암호화 함수를 호출하는 경우, 상기 암호화 함수는 화이트박스 암호 장치(200)의 식별자를 조회하고, 앱(230a, 230b, 230c)을 통하여 사용자 종속적인 정보를 얻고, 상기 식별자 및 상기 사용자 종속적인 정보 중 적어도 하나를 이용하여 초기화 벡터를 유도하고, 상기 초기화 벡터를 이용하여 원문의 암호화를 개시하며, 원문의 암호화가 마무리되는 경우 리턴 하는 동작을 수행할 것이다.The whitebox cryptographic library 240 may include cryptographic functions. When the apps 230a, 230b, and 230c call the encryption function, the encryption function queries the identifier of the whitebox encryption device 200, obtains user-dependent information through the apps 230a, 230b, and 230c. , deriving an initialization vector using at least one of the identifier and the user-dependent information, starting encryption of the original text using the initialization vector, and performing a return operation when the encryption of the original text is completed.

화이트박스 암호 라이브러리(240)는 복호화 함수를 더 포함할 수 있다. 앱(230a, 230b, 230c)이 상기 복호화 함수를 호출하는 경우, 상기 복호화 함수는 화이트박스 암호 장치(200)의 식별자를 조회하고, 앱(230a, 230b, 230c)을 통하여 사용자 종속적인 정보를 얻고, 상기 식별자 및 상기 사용자 종속적인 정보 중 적어도 하나를 이용하여 초기화 벡터를 유도하고, 상기 초기화 벡터를 이용하여 암호문의 복호화를 개시하며, 암호문의 복호화가 마무리되는 경우 리턴 하는 동작을 수행할 것이다.The whitebox encryption library 240 may further include a decryption function. When the apps 230a, 230b, and 230c call the decryption function, the decryption function searches for the identifier of the white box encryption device 200, obtains user-dependent information through the apps 230a, 230b, and 230c. , deriving an initialization vector using at least one of the identifier and the user-dependent information, starting decryption of ciphertext using the initialization vector, and returning when decryption of the ciphertext is completed.

상기 암호화 함수 및 상기 복호화 함수는 초기화 벡터의 유도에 사용되는 시작 데이터의 종류에 따라 다양한 타입으로 제공될 수 있다. 이미 상술한 바와 같이 본 발명의 몇몇 실시예들에 따르면 다양한 데이터가 화이트박스 암호 라이브러리(240)의 런타임에 얻어지고, 얻어진 데이터를 이용하여 상기 시작 데이터가 화이트박스 암호 라이브러리(240)의 런타임에 결정된다. 상기 런타임에 얻어지는 데이터를 더 많이 사용할수록 보안성은 강화할 수 있을 것이나, 이러한 보안성의 요구 레벨은 앱(230a, 230b, 230c)에 따라 다를 것이다. 따라서, 다양한 보안성의 요구 레벨을 만족시키기 위하여 다양한 타입의 암/복호화 함수가 제공될 수 있다.The encryption function and the decryption function may be provided in various types according to the type of start data used to derive the initialization vector. As already described above, according to some embodiments of the present invention, various data are obtained at runtime of the whitebox encryption library 240, and the starting data is determined at runtime of the whitebox encryption library 240 using the obtained data. do. Security can be strengthened as the data obtained at runtime is used more, but the required level of this security will vary depending on the apps 230a, 230b, and 230c. Accordingly, various types of encryption/decryption functions may be provided to satisfy various security requirements.

예를 들어, 교통 카드 결제 기능을 가지는 APP의 경우, 신속하게 요금 지불을 마무리 하는 것이 중요하고 결제 되는 금액도 비교적 소액인 점에서, 크래킹에 의하여 다수의 모바일 디바이스에 의하여 무단 사용되는 것만 방지하면 될 것이다. 즉, 비밀번호와 같은 사용자 종속적인 정보 없이 화이트박스 암호 장치(200)의 식별자 만을 이용하여 상기 시작 데이터를 결정하면 될 것이다. 따라서, 교통 카드 결제 기능을 가지는 APP의 경우 장치의 식별자 만을 이용하여 상기 시작 데이터를 결정하는 타입의 암/복호화 함수를 이용하면 될 것이다.For example, in the case of an APP having a transportation card payment function, it is important to quickly complete fare payment and the amount to be paid is relatively small, so it is only necessary to prevent unauthorized use by multiple mobile devices by cracking. will be. That is, the starting data may be determined using only the identifier of the whitebox encryption device 200 without user-dependent information such as a password. Therefore, in the case of an APP having a transportation card payment function, an encryption/decryption function of a type that determines the starting data using only the identifier of the device may be used.

고도의 보안을 요구하는 상황을 예시한다. 예를 들어, 모바일 뱅킹 APP에서 고액을 이체하는 상황을 생각해보면, 다소 사용자의 불편함이 있더라도 부정한 이체가 아니라는 점을 확인하기 위하여 다수의 정보를 확인하는 것이 바람직하다. 예를 들어, 사용자의 모바일 디바이스의 식별자, 사용자에 의하여 사전 지정된 비밀번호 및 사용자의 생체 정보를 모두 반영하여 암/복호화를 수행하기를 원할 수 있다. 이러한 경우에도 상기 모바일 뱅킹 APP에서 사용자의 모바일 디바이스의 식별자, 사용자에 의하여 사전 지정된 비밀번호 및 사용자의 생체 정보를 모두 반영하여 시작 데이터를 결정하는 타입의 암/복호화 함수를 이용함으로써, 높은 보안 레벨을 만족 시킬 수 있다.Illustrates a situation that requires a high level of security. For example, considering a situation in which a large amount of money is transferred in a mobile banking APP, it is desirable to check a plurality of information to confirm that the transfer is not fraudulent even if the user is somewhat uncomfortable. For example, it may be desired to perform encryption/decryption by reflecting all of the identifier of the user's mobile device, a password designated by the user in advance, and the user's biometric information. Even in this case, the mobile banking APP uses a type of encryption/decryption function that determines start data by reflecting all of the identifier of the user's mobile device, a password pre-specified by the user, and the user's biometric information, thereby satisfying a high security level. can make it

상기 동작은 앱(230a, 230b, 230c)의 관여 없이 화이트박스 암호 라이브러리(240)에서 자체적으로 수행된다. 또한, 이미 설명된 바와 같이 화이트박스 암호 라이브러리(240)는 안티-디버깅, 난독화, 무결성 검증 등 다양한 크래킹 방지 기능을 가지고 있다. 따라서, 앱(230a, 230b, 230c)이 상기 초기화 벡터를 조작하기는 매우 어렵다.The above operation is performed by the whitebox cryptographic library 240 itself without involvement of the apps 230a, 230b, and 230c. In addition, as already described, the whitebox cryptographic library 240 has various anti-cracking functions such as anti-debugging, obfuscation, and integrity verification. Accordingly, it is very difficult for the apps 230a, 230b, and 230c to manipulate the initialization vector.

화이트박스 암호 라이브러리(240)는, 암/복호화 기능을 필요로 하는 컨텐츠 암/복호화 어플리케이션 또는 데이터 암/복호화 어플리케이션과, 암/복호화 기능을 기반으로 하는 인증(authentication) 절차를 수행하는 전자 상거래 결제 어플리케이션 또는 사용자 인증 기능을 구비한 어플리케이션에 사용될 수 있다.The whitebox encryption library 240 is a content encryption/decryption application or data encryption/decryption application that requires an encryption/decryption function, and an e-commerce payment application that performs an authentication procedure based on the encryption/decryption function. Alternatively, it may be used for an application having a user authentication function.

화이트박스 암호 라이브러리(240)는 상기 어플리케이션들에 임베드(embed) 되어 함께 설치되거나, 이미 상기 어플리케이션들과 별개로 화이트박스 암호 장치(200)에 설치된 상태에서 상기 어플리케이션들에 의하여 동적으로 호출 되어 사용될 수 있다.The whitebox cryptographic library 240 may be embedded and installed together with the applications, or may be dynamically called and used by the applications while already installed in the whitebox cryptographic device 200 separately from the applications. there is.

또한, 몇몇 실시예들에서 화이트박스 암호 라이브러리(240)는 화이트박스 암호 장치(200)에 설치된 운영 체제(Operating System)의 특화 모듈 중 하나의 형태로 구성될 수도 있다.Also, in some embodiments, the whitebox cryptographic library 240 may be configured as one of specialized modules of an operating system installed in the whitebox cryptographic device 200 .

이하, 결제 프로세스에 화이트박스 암/복호화가 적용되는 본 발명의 몇몇 실시예들에 대하여 설명한다. 도 7에 도시된 바와 같이 화이트박스 암호 장치(200)는 네트워크를 통하여 결제 서버(20)에 연결되어 결제 프로세스를 수행할 수 있다. 이하, 도 8을 참조하여 설명한다. 도 8에 도시된 것은, 화이트박스 암호 장치(200)의 사용자가 모바일 결제 앱(230a, 230b, 230c)을 이용하여 결제 서버(20)와 결제 프로세스를 수행하는 경우, 화이트박스 암호 장치(200)의 각 구성요소가 상기 결제 프로세스를 위해 각각 어떤 동작을 수행하는지 가리키는 신호 흐름도이다.Hereinafter, some embodiments of the present invention in which white box encryption/decryption is applied to a payment process will be described. As shown in FIG. 7 , the white box encryption device 200 may perform a payment process by being connected to the payment server 20 through a network. Hereinafter, it will be described with reference to FIG. 8 . 8 shows that when the user of the white box cryptographic device 200 performs a payment process with the payment server 20 using the mobile payment apps 230a, 230b, and 230c, the whitebox cryptographic device 200 It is a signal flow diagram indicating what operation each component of is performing for the payment process.

먼저, 네트워크 인터페이스(250)가 결제 서버(20)로부터 결제 요청 및 결제 정보를 수신한다(S300). 상기 결제 정보는 결제 금액에 대한 정보를 포함한다. 상기 결제 정보는 가맹점 명, 상품명 등에 대한 부가 정보를 추가로 포함할 수 있다. 네트워크 인터페이스(250)는 상기 결제 요청 및 결제 정보를 모바일 결제 앱(230a, 230b, 230c)에 전달한다(S305). 모바일 결제 앱(230a, 230b, 230c)은 상기 결제 정보에 대한 확인(confirm)을 요하는 사용자 메시지를 디스플레이 하면서, 결제 프로세스의 진행에 대한 사용자의 확인을 구할 수 있다(S310). 이 때, 사용자는 상기 확인 요청에 응답하여 상품명 정보, 가격 정보를 포함한 결제 정보를 확인하고, 지불 카드 종류 등을 포함한 결제 수단 정보를 입력할 수 있다.First, the network interface 250 receives a payment request and payment information from the payment server 20 (S300). The payment information includes information on a payment amount. The payment information may additionally include additional information about an affiliated store name, a product name, and the like. The network interface 250 transmits the payment request and payment information to the mobile payment apps 230a, 230b, and 230c (S305). The mobile payment app (230a, 230b, 230c) may obtain the user's confirmation of the progress of the payment process while displaying a user message requiring confirmation (confirm) for the payment information (S310). At this time, the user can check payment information including product name information and price information in response to the confirmation request, and input payment method information including payment card type.

모바일 결제 앱(230a, 230b, 230c)은 상품 정보, 결제 금액, 할부 개월 수 또는 결제 가맹점 정보 등을 포함하는 결제 정보와 사용자의 신원 정보, 카드사 정보, 카드 번호, 유효기간, CVV(Card Verification Value)등을 포함하는 결제 수단 정보 및 사용자의 신원 정보 중 적어도 하나를 포함하는 결제 요청 정보를 생성하고, 상기 결제 요청 정보를 이용하여 결제 인증 데이터를 생성해 주도록 화이트박스 암호 라이브러리(240)에 요청한다. 즉, 모바일 결제 앱(230a, 230b, 230c)은 상기 결제 요청 정보를 화이트박스 암호 라이브러리(240)에 제공한다(S315).Mobile payment apps (230a, 230b, 230c) are payment information including product information, payment amount, installment month number or payment member information, user's identity information, card company information, card number, expiration date, CVV (Card Verification Value) ) and the like, and generates payment request information including at least one of user identity information, and requests the whitebox cryptographic library 240 to generate payment authentication data using the payment request information. . That is, the mobile payment apps 230a, 230b, and 230c provide the payment request information to the whitebox cryptographic library 240 (S315).

화이트박스 암호 라이브러리(240)는 화이트박스 암호 라이브러리 바이너리의 무결성 검증하거나, 운영 체제 등 소프트웨어 플랫폼이 허가 된 것과 동일한 것인지의 확인하는 등의 보안 환경 확인을 수행한다(S320). 상기 보안 환경 확인 과정에서 문제가 있는 경우, 모바일 결제 앱(230a, 230b, 230c)에 실패를 가리키는 데이터를 제공 할 수 있다.The whitebox cryptographic library 240 verifies the integrity of the whitebox cryptographic library binary or verifies whether a software platform such as an operating system is the same as a licensed one (S320). If there is a problem in the process of checking the security environment, data indicating failure may be provided to the mobile payment apps 230a, 230b, and 230c.

화이트박스 암호 라이브러리(240)는 화이트박스 암호화를 수행하기 위해 시작 데이터를 결정해야 한다. 이미 상술한 바와 같이, 상기 시작 데이터는 사용자 종속적인 정보 및 화이트박스 암호 장치의 식별자 정보 중 적어도 하나를 이용하여 결정될 수 있다. 상기 사용자 종속적인 정보는 결제 서버(20)에 기 등록해 둔 패스워드, 또는 생체 정보 일 수 있다. 화이트박스 암호 라이브러리(240)는 모바일 결제 앱(230a, 230b, 230c)을 통하여 상기 사용자 종속적인 정보를 얻거나(S325, S330, S335), 화이트박스 암호 라이브러리(240) 자체적으로 상기 사용자 종속적인 정보의 입력을 위한 사용자 인터페이스를 생성하여 상기 사용자 종속적인 정보를 얻을 수 있다(미도시).The whitebox cryptographic library 240 must determine starting data to perform whitebox cryptography. As already described above, the start data may be determined using at least one of user dependent information and identifier information of a white box encryption device. The user-dependent information may be a password previously registered in the payment server 20 or biometric information. The whitebox cryptographic library 240 obtains the user-dependent information through the mobile payment apps 230a, 230b, and 230c (S325, S330, and S335), or the whitebox cryptographic library 240 itself obtains the user-dependent information. It is possible to obtain the user-dependent information by generating a user interface for input of (not shown).

화이트박스 암호 라이브러리(240)는 상기 시작 데이터를 결정하기 위한 디바이스 종속적인 데이터를 추가적으로 조회한다. 예를 들어, 화이트박스 암호 라이브러리(240)는 MAC 주소, IMEI 정보 등 화이트박스 암호 장치(200)의 식별자 정보를 조회한다.The whitebox cryptographic library 240 additionally queries device-dependent data to determine the starting data. For example, the whitebox encryption library 240 searches identifier information of the whitebox encryption device 200, such as MAC address and IMEI information.

여기서 중요한 것은, 상기 사용자 종속적인 정보는 얻는 것과, 상기 디바이스 종속적인 데이터를 얻는 것이, 화이트박스 암호 라이브러리(240)의 런타임에 이뤄져야 한다는 것이다.What is important here is that the acquisition of the user-dependent information and the acquisition of the device-dependent data must be performed at runtime of the whitebox encryption library 240 .

다음으로, 화이트박스 암호 라이브러리(240)는 상기 시작 데이터를 이용하여 초기화 벡터를 생성한다(S345). 초기화 벡터의 기능에 대하여는 이미 설명한 바 있으므로, 중복된 설명은 생략한다. 여기서 중요한 것은, 상기 초기화 벡터를 생성하는 것 역시, 화이트박스 암호 라이브러리(240)의 런타임에 이뤄져야 한다는 것이다. 일 실시예에서, 화이트박스 암호 라이브러리(240)는 상기 시작 데이터의 적어도 일부 데이터에 대하여 해시 함수를 적용하여, 그 해시 값을 이용하여 상기 초기화 벡터를 생성할 수 있다.Next, the whitebox cryptographic library 240 generates an initialization vector using the start data (S345). Since the function of the initialization vector has already been described, redundant description will be omitted. What is important here is that the generation of the initialization vector must also be performed at runtime of the whitebox cryptographic library 240. In an embodiment, the whitebox cryptographic library 240 may apply a hash function to at least some data of the starting data and generate the initialization vector using the hash value.

화이트박스 암호 라이브러리(240)는 상기 초기화 벡터를 이용한 화이트박스 암호화를 수행하여 결제 인증 데이터를 생성한다(S350). 예를 들어, 상기 결제 인증 데이터는 상기 결제 요청 정보의 암호문이거나, 상기 암호문이 추가로 결제 서버(20)와 공유된 규칙에 따라 인코딩 된 데이터일 수 있다.The whitebox encryption library 240 generates payment authentication data by performing whitebox encryption using the initialization vector (S350). For example, the payment authentication data may be encrypted text of the payment request information or data encoded according to a rule shared with the payment server 20 in addition to the encrypted text.

화이트박스 암호 라이브러리(240)는 상기 결제 인증 데이터를 모바일 결제 앱(230a, 230b, 230c)에 제공하기 전에, 추가로 보안 환경 확인 절차를 수행하고(S355), 보안 환경 확인 절차에 문제가 있는 것으로 판단되면, 상기 결제 인증 데이터를 제공하지 않고 실패를 가리키는 신호를 출력할 수 있다. 상기 추가로 수행되는 보안 환경 확인 절차는, 화이트박스 암호 라이브러리 바이너리의 무결성 검증하거나, 운영 체제 등 소프트웨어 플랫폼이 허가 된 것과 동일한 것인지의 확인하는 등의 절차 중 적어도 하나를 포함할 수 있다.Before providing the payment authentication data to the mobile payment apps 230a, 230b, and 230c, the whitebox cryptographic library 240 additionally performs a security environment check procedure (S355), and determines that there is a problem with the secure environment check procedure. If determined, a signal indicating failure may be output without providing the payment authentication data. The additional security environment confirmation procedure may include at least one of procedures such as verifying the integrity of the whitebox cryptographic library binary or verifying whether a software platform such as an operating system is the same as a licensed one.

시작 데이터가 결정된 경우, 모바일 디바이스는 화이트박스 암호화를 실행하고 결제 요청 정보를 암호화할 수 있다. 이에 따라 암호화된 결제 인증 데이터를 생성할 수 있다(S335). 모바일 디바이스는 암호화된 결제 인증 데이터를 생성하면, 상기 결제 인증 데이터를 외부로 전송할 수 있다(S340).When the starting data is determined, the mobile device may execute white box encryption and encrypt the payment request information. Accordingly, encrypted payment authentication data may be generated (S335). When the mobile device generates encrypted payment authentication data, it can transmit the payment authentication data to the outside (S340).

상기 결제 인증 데이터는 결제 서버(20)에 전달된다(S360, S365, S370). 도 8에는 도시되어 있지 않지만, 모바일 결제 앱(230a, 230b, 230c)은 결제 서버(20)에 상기 결제 요청 정보를 추가로 제공할 수 있다. 결제 서버(20)는 상기 결제 인증 데이터를 검증하고, 그 결과에 따라 결제를 승인하거나 거절한다(S375). 예를 들어, 상기 시작 데이터가 올바르게(correct)입력 되는 경우와, 상기 시작 데이터 중 적어도 하나라도 잘못된 값(incorrect)이 입력 되는 경우, 상기 결제 인증 데이터는 1bit 이상 다른 값이 생성되고, 결제 서버(20)는 이를 검증할 수 있을 것이다. 결제 서버(20)는 사용자 별로 디바이스 종속적인 정보 및 사용자 종속적인 정보를 미리 등록 받았을 것이기 때문이다.The payment authentication data is transmitted to the payment server 20 (S360, S365, S370). Although not shown in FIG. 8 , the mobile payment apps 230a , 230b , and 230c may additionally provide the payment request information to the payment server 20 . The payment server 20 verifies the payment authentication data, and approves or rejects the payment according to the result (S375). For example, when the start data is entered correctly and when at least one of the start data is entered as an incorrect value, the payment authentication data is generated with a different value of 1 bit or more, and the payment server ( 20) will be able to verify this. This is because the payment server 20 may have previously registered device-dependent information and user-dependent information for each user.

이하, 오프라인(off-line) 결제가 수행되는 프로세스를 도 9 내지 도 10을 참조하여 설명한다. 도 7 내지 도 8을 참조하여 설명된 결제 프로세스는, 온라인 상황을 전제로 한다. 하지만, 예를 들어 버스 요금을 결제하고자 하는 경우, 버스가 통신 음영 지역에 있더라도 요금 결제가 가능해야 한다. 도 9 내지 도 10을 참조하여 설명되는 본 발명의 몇몇 실시예들은 이를 가능하게 한다.Hereinafter, a process in which an off-line payment is performed will be described with reference to FIGS. 9 to 10 . The payment process described with reference to FIGS. 7 to 8 assumes an online situation. However, for example, if you want to pay a bus fare, you must be able to pay the fare even if the bus is in a communication shaded area. Several embodiments of the present invention described with reference to FIGS. 9-10 make this possible.

오프라인 결제를 위하여 필요한 것은 근거리 통신 인터페이스(260)와, 근거리 통신 인터페이스(260)를 이용하여 오프라인 결제를 수행할 수 있도록 구현 된 오프라인 결제 앱(230a, 230b, 230c)들이다. 화이트박스 암호 라이브러리(240)의 동작은 기 설명된 것과 다르지 않다.What is needed for offline payment is a short-range communication interface 260 and offline payment apps 230a, 230b, and 230c implemented to perform offline payment using the short-range communication interface 260. The operation of the whitebox cryptographic library 240 is not different from that previously described.

오프라인의 결제 단말기를 통해, 모바일 디바이스로 결제하는 과정을 예를 들어 설명한다. 결제 단말기(150)와 화이트박스 암호 장치(200)는 NFC, 블루투스, RFID, BLE 등의 통신 수단을 통해 통신할 수 있다. 예를 들어 NFC 통신을 통한 카드 결제의 경우, 결제 단말기(150)는 ISO/IEC 7816-4에 정의된 APDU(Application Protocol Data Unit) 통신을 수행하여 근거리 통신 인터페이스(260)와의 통신 채널을 형성하여 화이트박스 암호 장치(200)에 결제 요청 및 결제 정보를 송신할 수 있다.A process of paying with a mobile device through an offline payment terminal will be described as an example. The payment terminal 150 and the white box encryption device 200 may communicate through communication means such as NFC, Bluetooth, RFID, and BLE. For example, in the case of card payment through NFC communication, the payment terminal 150 performs APDU (Application Protocol Data Unit) communication defined in ISO/IEC 7816-4 to form a communication channel with the short-range communication interface 260 to A payment request and payment information may be transmitted to the white box encryption device 200 .

도 10에는 도 8과 유사한 신호 흐름도가 도시 되어 있다. 도 8의 결제 서버(20)가 결제 단말기(150)로 교체 되었을 뿐, 다른 신호 흐름은 동일한 것을 알 수 있다. 다만, 사용자에 종속된 정보를 입력 받는 동작(S325, S330, S335)과 관련하여, 모바일 결제 앱(230a, 230b, 230c)에서 요구하는 보안 레벨에 따라, 사용자에 종속된 정보를 입력 받는 것이 반복 되는 것이 완화 될 수 있다. 매 트랜잭션마다 사용자의 입력을 요구하는 것은 사용자에게 불편할 수 있고, 결제 지연을 초래할 수 있으므로, 타겟 환경을 고려하여 사용자 입력 후 일정 시간 동안 또는 일정 횟수의 거래 동안에는 상기 사용자에 종속된 정보가 기 저장 되었던 정보가 재사용 될 수 있다.10 shows a signal flow diagram similar to that of FIG. 8 . It can be seen that only the payment server 20 of FIG. 8 has been replaced with the payment terminal 150, and other signal flows are the same. However, in relation to the operation of receiving information dependent on the user (S325, S330, S335), depending on the security level required by the mobile payment apps 230a, 230b, 230c, receiving the information dependent on the user is repeated. being can be alleviated. Requiring user input for each transaction may be inconvenient for the user and may cause payment delay, so for a certain time after user input or during a certain number of transactions in consideration of the target environment, information dependent on the user was previously stored Information can be reused.

이하, 본 발명의 일 실시예에 따른 화이트박스 암호 장치(200)의 하드웨어 구성 및 그 동작을 설명한다. 화이트박스 암호 장치(200)는, 예를 들어 모바일 디바이스, PC 등의 컴퓨팅 장치일 수 있다. 이하, 화이트박스 암호 장치(200)가 스마트 폰, 스마트 와치, 웨어러블 디바이스 등의 모바일 디바이스 인 경우를 예를 들어 설명한다.Hereinafter, the hardware configuration and operation of the white box encryption apparatus 200 according to an embodiment of the present invention will be described. The whitebox encryption device 200 may be, for example, a computing device such as a mobile device or a PC. Hereinafter, a case where the whitebox encryption device 200 is a mobile device such as a smart phone, a smart watch, or a wearable device will be described as an example.

화이트박스 암호 장치(200)는 범용 AP와 같은 프로세서(290), 예를 들어 인터넷, 무선 이동통신망으로의 접속을 담당하는 네트워크 인터페이스(250), NFC와 같은 근거리 통신을 담당하는 근거리 통신 인터페이스(260), 본 발명의 몇몇 실시예들에 따른 소프트웨어의 바이너리 및 상기 바이너리의 실행 과정에서 참조되거나 기록되는 데이터를 저장하는 스토리지(270) 및 RAM(295)을 포함할 수 있다.The white box encryption device 200 includes a processor 290 such as a general-purpose AP, a network interface 250 responsible for access to the Internet and a wireless mobile communication network, and a short-range communication interface 260 responsible for short-range communication such as NFC. ), a storage 270 and a RAM 295 for storing binaries of software according to some embodiments of the present invention and data referenced or recorded during the execution of the binaries.

RAM(295)에는 화이트박스 암호 라이브러리의 바이너리(297) 및 화이트박스 암호 라이브러리의 바이너리(297)를 이용하여 데이터 암/복호화가 필요한 동작을 수행하는 하나 이상의 모바일 앱(230a, 230b, 230c)의 바이너리가 로드 될 수 있다. RAM(295)에 로드 되는 상기 바이너리는 범용 AP(290)에 페치(fetch) 되어 실행된다.The RAM 295 includes binaries 297 of the whitebox cryptographic library and binaries of one or more mobile apps 230a, 230b, and 230c that perform operations requiring data encryption/decryption using the binaries 297 of the whitebox cryptographic library. can be loaded. The binary loaded into the RAM 295 is fetched and executed by the general purpose AP 290 .

RAM(295)의 비-보안 주소 영역에 화이트박스 암호 라이브러리(297)가 로드 되고, 화이트박스 암호 라이브러리(297)는 화이트박스 암호 라이브러리(297)를 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 범용 AP(290)에서 실행된다.The whitebox cryptographic library 297 is loaded into the non-secure address area of the RAM 295, and the whitebox cryptographic library 297 does not have a hardware secure element for the whitebox cryptographic library 297. It runs on the general purpose AP 290.

이미 설명한 바와 같이, 화이트 박스 암호 라이브러리(297)는 화이트박스 암/복호화 동작을 수행하기 위해 필요한 초기화 벡터를 화이트 박스 암호 라이브러리(297)의 런타임에 생성하는데, 상기 초기화 벡터는 상기 런타임에 얻어진 데이터를 이용하여 유도한다.As already described, the white box cryptographic library 297 generates an initialization vector necessary for performing a white box encryption/decryption operation at runtime of the white box cryptographic library 297, and the initialization vector stores data obtained at runtime. induce using

몇몇 실시예들에서, 화이트 박스 암호 라이브러리(297)가 화이트박스 암호 장치(200)에 설치된 운영 체제(미도시)의 일부 모듈 형태로 구성 될 수도 있는 점은 이미 설명된 바 있다.In some embodiments, it has already been described that the white box cryptographic library 297 may be configured in the form of some modules of an operating system (not shown) installed in the white box cryptographic device 200 .

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described with reference to the accompanying drawings, those skilled in the art to which the present invention pertains can be implemented in other specific forms without changing the technical spirit or essential features of the present invention. you will be able to understand Therefore, the embodiments described above should be understood as illustrative in all respects and not limiting.

Claims (11)

컴퓨팅 장치가, 화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계;
상기 컴퓨팅 장치가, 상기 화이트박스 암호 모듈의 런타임(run-time)에 얻어진 상기 화이트박스 암호 모듈의 실행 환경 관련 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화를 시작하기 위한 시작 데이터를 결정하는 단계 - 상기 실행 환경 관련 데이터는 상기 컴퓨팅 장치에 종속된 정보이고 상기 암/복호화의 대상 데이터와 무관한 정보임 -; 및
상기 컴퓨팅 장치가, 상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
loading, by a computing device, a white box cryptographic module into a memory provided in the computing device;
Where the computing device determines start data for starting encryption/decryption of the whitebox cryptographic module using data related to an execution environment of the whitebox cryptographic module obtained at run-time of the whitebox cryptographic module. step - the data related to the execution environment is information subordinate to the computing device and is irrelevant to data subject to encryption/decryption; and
Initiating, by the computing device, an encryption/decryption operation of the whitebox cryptographic module using the start data,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 런타임에 얻어진 상기 실행 환경 관련 데이터는,
상기 런타임에 사용자 인터페이스를 통하여 입력된 정보를 더 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
The execution environment related data obtained at the runtime,
Further comprising information input through a user interface at the runtime,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 런타임에 얻어진 상기 실행 환경 관련 데이터는,
상기 컴퓨팅 장치의 사용자에게 종속된 정보를 더 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
The execution environment related data obtained at the runtime,
Further comprising information dependent on the user of the computing device,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 컴퓨팅 장치에 종속된 정보는,
상기 컴퓨팅 장치의 고유 식별자인,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
Information dependent on the computing device,
A unique identifier of the computing device,
Encryption/decryption method using whitebox password.
제3 항에 있어서,
상기 컴퓨팅 장치의 사용자에게 종속된 정보는,
상기 사용자가 미리 등록한 보안 정보 및 상기 사용자의 생체 정보 중 적어도 하나를 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 3,
Information dependent on the user of the computing device,
Including at least one of the user's pre-registered security information and the user's biometric information,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계는,
상기 시작 데이터를 이용하여 상기 화이트박스 암호 모듈의 초기화 벡터(initialization vector, IV)를 유도하는 단계; 및
상기 초기화 벡터를 이용하여 상기 화이트박스 암호 모듈의 암/복호화 동작을 개시하는 단계를 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
The step of initiating the encryption/decryption operation of the white box cryptographic module,
deriving an initialization vector (IV) of the whitebox cryptographic module using the starting data; and
Initiating an encryption/decryption operation of the white box cryptographic module using the initialization vector,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 메모리에 로드 하는 단계는,
상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고,
상기 화이트박스 암호 모듈은 상기 컴퓨팅 장치에 구비된 범용 프로세서(general-purpose processor)에서 실행되되,
상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것인,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
The step of loading into the memory is,
loading the whitebox cryptographic module into a non-secure address area of the memory;
The white box cryptographic module is executed in a general-purpose processor included in the computing device,
The general purpose processor does not have a hardware secure element for the white box cryptographic module,
Encryption/decryption method using whitebox password.
제1 항에 있어서,
상기 화이트박스 암호 모듈은 상기 런타임에 얻어진 상기 실행 환경 관련 데이터가 다른 데이터로 교체되는 것을 방지하기 위한 안티-디버깅(anti-debugging) 오퍼레이션을 포함하는,
화이트박스 암호를 이용한 암/복호화 방법.
According to claim 1,
The white box cryptographic module includes an anti-debugging operation for preventing the execution environment related data obtained at runtime from being replaced with other data.
Encryption/decryption method using whitebox password.
컴퓨팅 장치의 범용 프로세서에 의하여 수행되는 결제 인증 방법에 있어서,
결제 금액 정보를 포함하는 결제 요청 정보를 외부 장치로부터 수신하는 단계;
화이트박스 암호 모듈을 상기 컴퓨팅 장치에 구비된 메모리에 로드 하는 단계;
상기 화이트박스 암호 모듈의 런타임(run-time)에 얻어진 상기 화이트박스 암호 모듈의 실행 환경 관련 데이터를 이용하여 상기 화이트박스 암호 모듈의 암호화를 시작하기 위한 초기화 벡터를 유도하는 단계 - 상기 실행 환경 관련 데이터는 상기 암호화의 대상 데이터와 무관한 상기 컴퓨팅 장치의 식별자와 상기 컴퓨팅 장치에 대한 사용자 입력 데이터를 포함하고, 상기 사용자 입력 데이터는 상기 컴퓨팅 장치의 사용자에게 종속된 데이터임 -;
상기 초기화 벡터를 이용하여, 상기 화이트박스 암호 모듈의 상기 결제 요청 정보 중 적어도 일부의 데이터를 암호화하고, 상기 암호화된 데이터를 이용하여 결제 인증 데이터를 생성하는 단계; 및
상기 결제 인증 데이터를 상기 외부 장치에 송신하는 단계를 포함하는,
결제 인증 방법.
In the payment authentication method performed by a general-purpose processor of a computing device,
Receiving payment request information including payment amount information from an external device;
loading a white box cryptographic module into a memory provided in the computing device;
Deriving an initialization vector for starting encryption of the white-box cryptographic module using execution environment-related data of the white-box cryptographic module obtained at run-time of the white-box cryptographic module - the execution environment-related data contains an identifier of the computing device unrelated to the target data of the encryption and user input data for the computing device, the user input data being data subordinate to a user of the computing device;
encrypting at least some of the payment request information of the white box encryption module using the initialization vector, and generating payment authentication data using the encrypted data; and
Transmitting the payment authentication data to the external device,
Payment verification method.
제9 항에 있어서,
상기 결제 인증 데이터를 생성하는 단계는,
상기 컴퓨팅 장치의 식별자 및 상기 사용자 입력 데이터가 올바른 데이터인 경우, 상기 외부 장치에 의하여 결제 성공 처리되는 제1 결제 인증 데이터를 생성하는 단계; 및
상기 컴퓨팅 장치의 식별자 및 상기 사용자 입력 데이터 중 적어도 하나가 잘못된 데이터인 경우, 상기 외부 장치에 의하여 결제 거부 처리되는 제2 결제 인증 데이터를 생성하는 단계를 포함하되,
상기 제1 결제 인증 데이터와 상기 제2 결제 인증 데이터는 하나의 비트 이상 서로 다른 디지털 데이터인,
결제 인증 방법.
According to claim 9,
The step of generating the payment authentication data,
generating first payment authentication data that is successfully processed by the external device when the identifier of the computing device and the user input data are correct data; and
If at least one of the identifier of the computing device and the user input data is incorrect data, generating second payment authentication data for which payment is rejected by the external device,
The first payment authentication data and the second payment authentication data are digital data different from each other by at least one bit,
Payment verification method.
제9 항에 있어서,
상기 메모리에 로드 하는 단계는,
상기 메모리의 비-보안 주소 영역에 상기 화이트박스 암호 모듈을 로드 하는 단계를 포함하고,
상기 범용 프로세서는, 상기 화이트박스 암호 모듈을 위한 하드웨어 보안 요소(secure element)를 구비하지 않은 것인,
결제 인증 방법.
According to claim 9,
The step of loading into the memory is,
loading the whitebox cryptographic module into a non-secure address area of the memory;
The general purpose processor does not have a hardware secure element for the white box cryptographic module,
Payment verification method.
KR1020160088498A 2016-07-13 2016-07-13 Method and apparatus for white box cryptography KR102543267B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160088498A KR102543267B1 (en) 2016-07-13 2016-07-13 Method and apparatus for white box cryptography

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160088498A KR102543267B1 (en) 2016-07-13 2016-07-13 Method and apparatus for white box cryptography

Publications (2)

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

Family

ID=61071164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160088498A KR102543267B1 (en) 2016-07-13 2016-07-13 Method and apparatus for white box cryptography

Country Status (1)

Country Link
KR (1) KR102543267B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3584991A1 (en) * 2018-06-18 2019-12-25 Koninklijke Philips N.V. Device for data encryption and integrity
KR102364652B1 (en) 2019-08-01 2022-02-21 한국전자통신연구원 APPARATUS AND METHOD FOR AUTHENTICATING IoT DEVICE BASED ON PUF USING WHITE-BOX CRYPTOGRAPHY
KR102319699B1 (en) * 2019-08-02 2021-11-02 국민대학교산학협력단 White box cryptographic encoding device and method using anti-inversion function
KR102671054B1 (en) * 2020-09-25 2024-05-31 라인플러스 주식회사 Method and system for payment for central bank digital currency
US11922404B2 (en) 2020-09-25 2024-03-05 LINE Plus Corporation Method and system for payment for central bank digital currency

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471589B1 (en) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 Method for Providing Security for Common Intermediate Language Program
KR101527329B1 (en) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 Apparatus and method for data encryption

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341083B1 (en) * 2007-09-12 2012-12-25 Devicefidelity, Inc. Wirelessly executing financial transactions
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
KR20120042469A (en) * 2010-10-25 2012-05-03 한국전자통신연구원 Apparatus for protecting contents using binding additional information and encryption key and method thereof
KR101240243B1 (en) * 2011-05-26 2013-03-11 고려대학교 산학협력단 Encryption apparatus and method according to CTR mode of AES(advanced encryption standard)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471589B1 (en) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 Method for Providing Security for Common Intermediate Language Program
KR101527329B1 (en) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 Apparatus and method for data encryption

Also Published As

Publication number Publication date
KR20180007459A (en) 2018-01-23

Similar Documents

Publication Publication Date Title
EP3387813B1 (en) Mobile device having trusted execution environment
KR102543267B1 (en) Method and apparatus for white box cryptography
US20150310427A1 (en) Method, apparatus, and system for generating transaction-signing one-time password
CN100527145C (en) Programmable processor supporting secure mode
CN108055133B (en) Key security signature method based on block chain technology
EP3780484B1 (en) Cryptographic operation and working key creation method and cryptographic service platform and device
EP3394788B1 (en) Method and system for enhancing the security of a transaction
US20080082828A1 (en) Circuit arrangement and method for starting up a circuit arrangement
KR102218572B1 (en) Processing method for preventing replication attacks, and server and client
CA2779654A1 (en) Method for secure interaction with a security element
JPWO2004053664A1 (en) Program execution control device, OS, client terminal, server, program execution control system, program execution control method, program execution control program
US7721100B2 (en) Granting an access to a computer-based object
CN110602051B (en) Information processing method based on consensus protocol and related device
US20240113898A1 (en) Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity
CN115270159A (en) Intelligent contract calling method, device and equipment for block chain and storage medium
CN110457959B (en) Information transmission method and device based on Trust application
KR101906484B1 (en) Method for application security and system for executing the method
DONG et al. Sesoa: Security enhancement system with online authentication for android apk
CN104980913A (en) Method for protecting data information safety in terminal equipment and terminal equipment
KR101296402B1 (en) Registration method for mobile otp device using encrypted seed
CN118172060A (en) Management method and management system for blockchain wallets

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