KR20170049388A - 암호화 프로그램 다양화 - Google Patents

암호화 프로그램 다양화 Download PDF

Info

Publication number
KR20170049388A
KR20170049388A KR1020160127343A KR20160127343A KR20170049388A KR 20170049388 A KR20170049388 A KR 20170049388A KR 1020160127343 A KR1020160127343 A KR 1020160127343A KR 20160127343 A KR20160127343 A KR 20160127343A KR 20170049388 A KR20170049388 A KR 20170049388A
Authority
KR
South Korea
Prior art keywords
program
data processing
processing apparatus
personalization
encryption
Prior art date
Application number
KR1020160127343A
Other languages
English (en)
Other versions
KR102583995B1 (ko
Inventor
얀-에릭 구스타프 에크버그
도날드 케네스 펠톤
Original Assignee
트러스토닉 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 트러스토닉 리미티드 filed Critical 트러스토닉 리미티드
Publication of KR20170049388A publication Critical patent/KR20170049388A/ko
Application granted granted Critical
Publication of KR102583995B1 publication Critical patent/KR102583995B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1011Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

디바이스는 수신된 다양화 값에 따라 암호화 연산을 행하는 설치된 암호화 프로그램을 갖는다. 다양화 값은, 디바이스에 설치된 난독화된 개인화 프로그램에 의해 발생되고, 개인화 프로그램에 대한 개인화 입력에 의존한다. 개인화 입력은, 디바이스에 의해 제공된 특정한 실행 환경의 특징이며, 하드웨어 특성, 정적 소프트웨어 환경설정과, 동적 변수들이 예상된 거동을 갖는지 검사하기 위해 이들 동적 변수들에 대해 처리에서 얻어진 결과 등과 같은 디바이스의 특징을 표시하는 변수들 중에서 선택된 적절한 서브셋의 형태를 취할 수도 있다. 개인화 프로그램에 의해 발생된 다양화 값은, 암호화 프로그램의 복사본을 더 갖는 서버로 (암호화된 형태로) 반환된다. 따라서, 서버와 디바이스는 암호화 프로그램 및 다양화 값의 조합에 의해 제공된 보안 채널을 사용하여 통신한다. 설치된 개인화 프로그램은 코드 평탄화, 재배열 및 변수 단편화에 의해 난독화된다.

Description

암호화 프로그램 다양화{CRYPTOGRAPHIC PROGRAM DIVERSIFICATION}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은, 암호화 프로그램을 사용하여 한 개 이상의 암호화 연산을 행하는 데이터 처리 시스템에 관한 것이다.
데이터의 암호화, 데이터의 복호화 및 암호 키의 조작 등과 같은 한 개 이상의 암호화 연산을 행하기 위해 암호화 프로그램을 데이터 처리장치에 설치하는 것이 알려져 있다. 악성 변형 및/또는 역공학 분석에 견디는 암호화 프로그램을 작성하는데 상당한 자원이 쏟아질 수도 있다. 시스템의 무결성에 대한 한가지 형태의 공격은, 한 개의 디바이스에 배치된 암호화 프로그램을 다른 디바이스에 복사하여, 이 다른 디바이스에서 이 암호화 프로그램이 부적절하게 사용되어 암호화 연산을 행하는 것일 수 있다. 따라서, 개별적인 디바이스 상에서만 동작하도록 제약을 받고 다른 디바이스로 복사되는 경우에는 동작하지 않게 되는 암호화 프로그램을 작성하는 것이 바람직하다. 그러나, 오용(misuse) 및 역공학에 견디며 개별적인 디바이스에 구속되는 적절히 난독화된(obfuscated) 암호화 프로그램을 작성하는데 필요한 시간 및 자원은 소모되는 자원, 시간 및 비용 면에서 불리하다.
본 발명의 적어도 일부 실시예는, 데이터 처리장치의 작동방법으로서,
상기 데이터 처리장치에서 개인화(personalization) 프로그램을 수신하는 단계와,
상기 개인화 프로그램을 실행하여, 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들을 개인화 입력으로서 판독하고, 상기 개인화 입력의 함수로써 다양화 값(diversification value)을 발생하는 단계와,
상기 다양화 값을 암호화 프로그램에 다양화 입력으로서 공급하는 단계와,
상기 암호화 프로그램을 실행하여, 상기 다양화 값에 따라 암호화 연산을 행하는 단계를 포함하는 데이터 처리장치의 작동방법을 제공한다.
본 발명은, 악성 개입에 견디도록 암호화 프로그램을 개별적인 디바이스에 구속하는 기술을 제공한다. 특히, 개인화 프로그램은, 디바이스에 제공되고, 개별적인 디바이스의 특징을 표시하고 이 개별적인 디바이스로부터 판독된 복수의 변수들에 따라 다양화 값을 발생하는 역할을 한다. 그후, 암호화 프로그램은 수신된 다양화 값에 의존하는 암호화 연산을 행한다. 본 발명은, 암호화 프로그램을 사용하기 원하는 개별적인 디바이스들이 이들 개별적인 디바이스들의 특징을 표시하는 적절히 선택된 변수들에서 상당한 변동을 표시하므로, 개인화 프로그램이 이들 디바이스들에 대해 다른 개인화 입력을 수신하게 되고, 이 개인화 프로그램에 의해 상이한 다양화 값이 발생되어 암호화 프로그램에 공급됨으로써, 그것이 행하는 암호화 연산을 변경할 수 있다는 것을 인식하였다. 따라서, 한 개의 디바이스 인스턴스(instance)로부터 다른 디바이스 인스턴스로 복사된 암호화 프로그램이 이들 서로 다른 인스턴스들에서 다른 다양화 값을 수신하게 되고, 이에 따라 서로 다른 암호화 연산을 행하게 되므로, 다른 디바이스에서 동일한 암호화 연산을 행하는 것을 원하는 경우에, 행해지는 암호화 연산이 이 다른 디바이스에서의 개인화 프로그램에 의해 발생되는 다른 다양화 값에 의존하게 되기 때문에, 암호화 프로그램을 이 다른 디바이스로 단순히 복사하는 것이 가능하지 않게 된다. 따라서, 각각의 디바이스에 대해 개별적인 암호화 프로그램을 설치할 필요가 없이, 암호화 프로그램과 그것의 관련된 암호화 연산이 개별적인 디바이스에 안전하게 구속된다.
개별적인 데이터 처리장치(디바이스)의 특징을 표시하는 복수의 변수들은 다양한 다른 형태를 취할 수도 있다는 것은 명백하다. 개인화 프로그램에 의해 용이하게 액세스되는 간편한 상태의 변수들은 데이터 처리장치의 실행 환경의 환경설정(configuration)의 특징을 표시하는 변수들이다. 예를 들어, 이들 변수로는, 데이터 처리장치의 한 개 이상의 하드웨어 특성들(예를 들어, IMEI 값, 메모리 사이즈, 시리얼 번호, MAC 어드레스), 및/또는 정적 소프트웨어 환경설정 변수들(예를 들면, /etc 엔트리 내부의 엔트리들, 윈도우즈 레지스트 엔트리들 등)을 들 수 있다.
개인화 입력의 일부를 구성하는 데이터 처리장치의 특성 변수의 또 다른 예는, 데이터 처리장치의 동적 변수에 처리 연산을 적용하여 결정된 결과값이며, 적용할 처리 연산을 명시하는 데이터는 보안 스토리지에 기억되어 비밀로 유지된다. 디바이스와 관련된 특정한 동적 변수들은, 보통은 증가만 하는 디바이스의 배터리의 충전 사이클 계수값과 같이 예측가능한 속성을 갖는다. 따라서, 개인화 프로그램에 대한 개인화 입력은, 배터리의 충전 사이클 계수값에 대응하는 동적 변수가 동일하거나 예측되게 증가한 상태로 유지된 것을 표시하는 플래그일 수도 있다. 암호화 프로그램과 동적 변수들에 적용된 안전하게 기억된 처리 연산이 다른 디바이스로 복사되는 경우에는, 이 다른 디바이스 상의 동적 변수의 다른 값이 처리 연산으로부터 다른 결과를 발생할 가능성이 크므로, 개인화 프로그램에 대한 다른 개인화 입력을 발생할 가능성이 크다. 일부 실시예에서, 동적 변수에 적용할 데이터 처리 연산을 명시하는 데이터는 그 자체가, 해당 데이터 처리장치의 정적 변수들에 의존하는 그 자신의 다양화 값으로 다양화되는 암호화 프로그램 내부에 내장(embed)되어도 된다.
개인화 프로그램이 격리된 실행 환경에서 실행되어, 암호화 연산을 위한 입력에 개인화 값들을 결합하는 알고리즘이 비밀리에 실행될 수 있도록 하는 경우에, 시스템의 보안이 향상된다. 이와 같은 비밀성(secrecy)을 제공하기 위한 이와 같은 격리된 실행 환경을 다양한 다른 형태를 취할 수 있다. 일부 실시예에서는, 하드웨어가 개인화 프로그램이 실행되는 신뢰된 실행 환경을 제공해도 된다(예를 들어, ARM 프로세서의 TrustZone 아키텍처를 구비한 프로세서의 보안 도메인). 다른 형태의 격리된 실행 환경은, 개인화 프로그램이 실행되어 다양화 값을 발생하도록 허용하기 위해 물리 키(예를 들어, USB 동글)를 필요로 하는 것 등이 될 수 있다. 개인화 프로그램에 대한 격리된 실행 환경의 또 다른 형태는 개인화 프로그램의 난독화에 의해 제공되어, 소스 프로그램(예를 들어, 개인화 프로그램의 소스 코드 버전)을 코드 난독화 처리(예를 들어, 코드 평탄화(flattening), 코드 재배열, 변수 단편화 등)를 겪게 함으로써 전개된/설치된 개인화 프로그램이 형성된다.
다양화 값은, 개별적인 데이터 처리장치(디바이스)의 암호화 프로그램에 의해 행해진 암호화 연산을 (적어도 일부) 제어한다. 서버가 개별적인 디바이스 상의 암호화 프로그램과 적절히 상호작용하기 위해, 일부의 실시형태는 다양화 값을 명시하는 데이터를 이 서버에 송신해도 된다. 그후, 서버는, 그것이 수신한 다양화 값에 따라 디바이스에 주어진 동일한 암호화 프로그램을 사용하여 보호된 데이터를 암호화하고, 이것을 해당 데이터 처리장치(디바이스)에 전송해도 된다. 타겟 데이터 처리장치(타겟 디바이스)에 있는 암호화 프로그램에 의해 사용되고 있는 동일한 다양화 값에 따라 보호된 데이터를 암호화하는 것은, 암호화된 보호된 데이터를 복호화하기 위해 모든 타겟 데이터 처리장치에서 행해진 암호화 연산이 올바르게 행해져 보호된 데이터를 복원한다는 효과를 갖는다. 그러나, 동일한 암호화 프로그램에 대해 다른 다양화 값을 사용하는 다른 디바이스가, 암호화된 보호된 데이터를 수신한다면, 그것의 암호화 프로그램이 다른 다양화 값이 주어질 때 다른 암호화 연산을 행할 것이기 때문에, 이 암호화된 보호된 데이터를 복호화할 수 없게 될 것이다.
디바이스에 의해 사용된 다양화 값을 명시하는 데이터가 서버로 반환될 때, 다양한 다른 방식으로 이것이 행해질 수 있다. 일부 예시적인 실시예에서는, 다양화 값이 다양화 값의 암호화된 형태로 전달될 수도 있다. 다른 가능성은, 이 다양화 값을 발생한 개인화 입력의 (예를 들어, 공개/개인 키 암호화를 이용한) 암호화된 형태를 송신하여 다양화 값을 전달함으로써, 수신 서버가 해당 데이터 처리장치(디바이스)에 전송한 개인화 프로그램을 이용하여, (암호화된 형태로) 그것을 전송한 개인화 입력으로부터 동일한 다양화 값을 발생하는 것이다. 개인화 프로그램이 적어도 한 개의 내장된 변수를 포함하고 개인화 프로그램에 의해 발생된 다양화 값이 내장된 변수의 함수인 구성을 제공함으로써, 시스템에 추가적인 보안이 부가될 수도 있다. 따라서, 서로 다른 내장된 변수들을 사용하여 서로 다른 인스턴스들의 개인화 프로그램이 생성됨으로써, 이들 인스턴스들이 동일한 개인화 입력으로부터 다른 다양화 값을 생성할 수도 있다. 이것은 개인화 입력과 개인화 프로그램에 의해 생성된 다양화 값 사이의 관계를 발견하기 더 어렵게 만든다. 암호화 프로그램은 이 암호화 프로그램이 사용되는 디바이스의 다수의 인스턴스들에 걸쳐 동일해도 되지만(예를 들어, 어플리케이션 스토어에서 다운로드된 동일한 이진 프로그램), 필요한 경우에는 개인화 프로그램이 로컬 다양화(local diversification)를 적용하여 디바이스 전용의 암호화 연산을 가능하게 해도 된다.
본 발명은, 암호화 프로그램의 사용을 포함하는 시스템의 초기화/설치의 일부로서 개인화 프로그램을 무선으로 다운로드하는 무선 모바일 디바이스의 분야에서 특히 유용하다. 그러나, 본 발명은 무선 모바일 디바이스 분야 이외에도 사용될 수 있다.
본 발명의 적어도 일부의 또 다른 실시예는,
데이터 처리장치에서 개인화 프로그램을 수신하는 단계와,
상기 개인화 프로그램을 실행하여, 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들을 개인화 입력으로서 판독하고, 상기 개인화 입력의 함수로써 다양화 값을 발생하는 단계와,
상기 다양화 값을 암호화 프로그램에 다양화 입력으로서 공급하는 단계와,
상기 암호화 프로그램을 실행하여, 상기 다양화 값에 따라 암호화 연산을 행하는 단계를 행하도록 구성된 프로그램 제어된 처리회로를 구비한 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는, 데이터 처리장치의 환경설정 방법으로서,
상기 데이터 처리장치의 변수들의 세트 중에서 적절한 서브셋을 선택하는 단계를 포함하고, 상기 적절한 서브셋의 값들은 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 하고,
상기 환경설정 방법은,
개인화 프로그램을 발생하여, 상기 데이터 처리장치를 제어함으로써, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들의 값들을 개인화 입력으로서 판독하고 상기 개인화 입력의 함수로써 암호화 프로그램에 대한 다양화 값을 발생하는 단계와,
상기 개인화 프로그램을 상기 데이터 처리장치에 송신하는 단계를 더 포함하는 데이터 처리장치의 환경설정 방법을 제공한다.
암호화 프로그램을 사용하는 데이터 처리장치(디바이스)에서의 전술한 거동 이외에, 본 발명은, 데이터 처리장치(디바이스)를 환경설정하고 이 데이터 처리장치와 통신하는 시스템(들), 예를 들어, 데이터 처리장치에 개인화 프로그램을 제공하는 서버의 가동에 있어서 상호보완적인 측면을 더 보여준다. 특히, 다른 데이터 처리장치에 제공된 개인화 프로그램들은 데이터 처리장치의 변수들의 세트 중에서 적절한 서브셋을 선택함으로써 변동될 수 있으며, 그후 이 적절한 서브셋의 값들은 생성되고 있는 개인화 프로그램에 의해 사용될 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 한다. 따라서, 특정한 선택된 적절한 서브셋의 특징 변수들을 사용하여 생성된 개인화 프로그램은, 타겟 데이터 처리장치로 송신된 후, 이 타겟 데이터 처리장치에서 적절한 다양화 값을 발생하는데 사용된다. 발생된 각각의 개인화 프로그램들에 대한 적절한 서브셋 선택의 변동은, 공격자가 개인화 프로그램의 동작에 대해 이해하여 개인화 프로그램들의 사용에 의해 제공된 추가적인 보안을 우회하려는 시도에 저항하는데 도움을 준다.
전술한 것과 같이, 개인화 프로그램을 제공한 서버(또는 이 제공 서버와 적절히 관련된 다른 서브)는, 개인화 프로그램이 설치된 데이터 처리장치로부터 다양화 값을 명시하는 데이터를 수신한 후, 이 다양화 값을 이용하여 이 데이터 처리장치에게 안전하게 송신할 암호화된 보호된 데이터를 형성함으로서, 이 암호화된 보호된 데이터가 로컬 디바이스에 설치된 암호화 프로그램에 대한 입력과 동일한 다양화 값을 사용하는 의뢰하는 수신처 데이터 처리장치에서 복호화될 수도 있다.
일부 실시예에서는, 타겟 데이터 처리장치에 개인화 프로그램을 송신할 뿐만 아니라, 암호화 프로그램 그 자체가 타겟 데이터 처리장치에 송신되어도 된다. 다른 실시예에서는, 암호화 프로그램이 다른 채널을 거쳐 별도로 다운로드/설치된 후, 적절한 개인화 프로그램의 다운로딩에 의해 사용하기 위해 인증/환경설정되어도 된다.
본 발명의 적어도 일부 실시예들은,
데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 하는 값들을 갖는 적절한 서브셋을 상기 데이터 처리장치의 변수들의 세트 중에서 선택하는 단계와,
개인화 프로그램을 발생하여, 상기 데이터 처리장치를 제어함으로써, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들을 개인화 입력으로서 판독하고 상기 개인화 입력의 함수로써 암호화 프로그램에 대한 다양화 값을 발생하는 단계와,
상기 개인화 프로그램을 상기 데이터 처리장치에 송신하는 단계를 행하도록 구성된 프로그램 제어된 처리회로를 구비한 데이터 처리장치를 더 제공한다.
본 발명의 또 다른 발명내용, 특징 및 이점은 다음의 첨부도면을 참조하여 주어지는 이하의 실시예들의 설명으로부터 명백해질 것이다.
도 1은 복수의 모바일 디바이스들과 무선으로 통신하는 서버를 개략적으로 나타낸 것이고,
도 2는 모바일 디바이스에 대한 개인화 프로그램 및 암호화 프로그램의 제공과, 모바일 디바이스에서 개인화 프로그램을 사용하여 어떤 암호화 프로그램이 암호화 연산을 행하는지에 따라 다양화 값을 생성하는 것을 개략적으로 나타낸 것이다.
도 3은 새로운 디바이스에 대한 암호화 기능의 설치와 관련된 서버에서의 동작을 개략적으로 나타낸 흐름도이다.
도 4는 새로운 디바이스에 대한 암호화 기능의 설치와 관련된 디바이스에서의 동작을 개략적으로 나타낸 흐름도이다.
도 5는 서버가 보호된 데이터를 디바이스에게 전송하는 것을 개략적으로 나타낸 흐름도이다.
도 6은 디바이스에서의 암호화 연산의 수행을 개략적으로 나타낸 흐름도이다.
도 1은 무선 송신기(6)를 거쳐 복수의 무선 모바일 디바이스들(8, 10, 12)에 링크된 서버(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 무선 모바일 디바이스들(8, 10, 12)은, 예를 들어, 스마트폰(8), 태블릿 컴퓨터(10) 및 스마트 워치(12)의 형태를 가질 수 있다. 또한, 본 발명은 무선 모바일 디바이스들 이외의 디바이스, 예를 들면, 퍼스널 컴퓨터, 사물 인터넷(Internet-of-things(IoT)) 디바이스 등에도 적용될 수도 있다는 것은 자명하다.
암호화 프로그램은 무선 모바일 디바이스들(8, 10, 12)에서 사용되는 것이 요구된다. 예를 들어, 은행 계정과 상호작용하는 보안 어플리케이션이 무선 모바일 디바이스들에 의해 사용된다. 이와 같은 보안 어플리케이션은 암호화, 복호화 및 암호화 키 조작 등의 암호화 연산을 행하기 위한 암호화 프로그램을 포함해도 된다. 암호화 프로그램은, 해당 보안 어플리케이션에 대해 고유한 형태를 갖고, 암호화 프로그램의 거동의 역공학을 곤란하게 만들고 암호화 키들 또는 기타 보안 정보(예를 들면, 암호화 알고리즘의 거동)의 추출을 행하기 어렵게 만드는 수준으로 난독화되도록, 상당한 노력으로 생성/발생된다. 그러나, 암호화 프로그램의 오용의 한가지 형태는, 스마트폰(8) 등의 무선 모바일 디바이스들 중에서 한 개로부터 태블릿 컴퓨터(10) 등의 다른 무선 디바이스로 암호화 프로그램의 인스턴스를 복사한 후, 이 암호화 프로그램을 실행하여 보호된 데이터의 복호화 등의 비인가된 암호화 연산을 행하려고 시도하는 것이 될 수 있다. 또한, 본 발명은, 개인화 입력에 응답하여 개인화 프로그램의 사용을 통해 모바일 장치들(8, 10, 12)에 대해 암호화 프로그램을 구속함으로써, 어떤 암호화 프로그램이 그것의 암호화 연산을 행하는지에 따라 암호화 프로그램에 주어지는 다양화 값을 생성하는 역할을 한다.
도 2는 본 발명의 사용의 한가지 예를 개략적으로 나타낸 것이다. 암호화 프로그램 생성기(14)는, 복수의 모바일 디바이스들(8, 10, 12)로 분배되도록 의도된 암호화 프로그램(16)을 생성한다. 암호화 프로그램(16)은, 보안 암호화 알고리즘들 및 보안 암호화 키들을 난독화된 안전한 형태로 포함하는 "키박스(keybox)" 프로그램의 형태를 취할 수 있다. 암호화 프로그램(16)이 한 개의 디바이스로부터 다른 디바이스로 복사되면, 암호화 알고리즘들 및 암호화 키들도 이들 디바이스들 사이에서 복사되지만, 이들 디바이스들의 사용자들에게 암호화 프로그램(16)에 의해 주어진 암호화 기능들을 작동할 수 있는 능력이 제공되는 것이 아니라, 이들 디바이스들의 사용자는 암호화 키들 또는 암호화 알고리즘의 상세내용을 조사할 수 없다.
개별 모바일 디바이스의 경우에, 이 모바일 디바이스에게 보안 처리 어플리케이션을 추가하는 것이 필요할 때, 이 암호화 프로그램(16)을 유지하는 서버로부터 모바일 디바이스로 암호화 프로그램(16)의 복사본이 설치되어 모바일 디바이스에서 설치된 암호화 프로그램(18)을 생성한다. 이와 동시에, 또는 아마도 다른 시간에, 서버, 또는 아마도 다른 서버가 개인화 프로그램 생성기(20)를 이용하여 특징 변수 선택, 기능 선택 및 내장된 변수(들)를 명시하는 입력에 응답하여, 설치된 암호화 프로그램(18)과 함께 사용되는 모바일 디바이스에 설치될 개인화 프로그램(22)의 인스턴스를 생성한다. 개인화 프로그램 생성기(20)는, 특성 변수 선택 입력을 이용하여 디바이스의 잠재적인 특성 변수들의 수퍼셋(superset) 중에서 적절한 서브셋을 선택한다. 이 선택된 적절한 서브셋은 개인화 프로그램(22)의 인스턴스에 의해 사용되어 이 개인화 프로그램에 대한 개인화 입력으로서 생성된다. 마찬가지로, 개인화 프로그램 생성기(20)에 대한 기능 선택 입력은, 개인화 프로그램(22)에 의한 개인화 입력에 적용될 수 있는 가능한 복수의 기능들 중에서 생성할 개인화 프로그램(22)에 의해 적용되는 특정한 기능을 선택하는 역할을 한다. 이때, 기능 선택은 논리 연산자들, 피연산자 순서화 등의 서로 다른 조합을 선택하고, 이것을 사용하여 개인화 입력을 구성하는 서로 다른 선택된 특성값들이 논리적으로 결합하여 설치된 암호화 프로그램(18)에 공급될 다양화 값을 생성한다는 것을 알 수 있다. 개인화 프로그램 생성기(20)는 개인화 프로그램 내부에 내장될 한 개 이상의 내장된 변수들을 더 수신하고, 개인화 입력으로부터 다양화 값의 생성은 이들 내장된 변수들에 의존한다. 이와 같은 내장된 변수(들)는 개인화 프로그램 내부에 내장된 한 개 이상의 리터럴(literal) 변수이어도 된다.
개인화 프로그램(22)은, 개인화 프로그램 생성기(20)에 의해 소스 프로그램으로서(예를 들어, 소스 코드 형태로) 생성된 후, 난독화 스텝(24)을 겪는데, 이 스텝에서는, 개인화 입력과 생성된 이와 관련된 다양화 값 사이의 매핑을 이해하기 더 어렵도록 역공학에 견디는 난독화된 개인화 프로그램을 생성하기 위해, 예를 들어, 코드 평탄화, 코드 재배열, 변수 단편화 및 기타 기술에 의해, 개인화 프로그램이 난독화된다.
스텝 24에서 생성된 난독화된 개인화 프로그램이 설치되어 모바일 디바이스 내부에 설치된 개인화 프로그램(26)을 제공한다. 설치시에, 또는 보안 어플리케이션을 사용하고자 할 때마다, 설치된 개인화 프로그램(26)은 디바이스의 특징을 표시하는 변수들의 값들을 설치된 개인화 프로그램(26)에 대한 개인화 입력으로서 판독하는 역할을 한다. 장치의 특징을 표시하는 이들 변수들은, 하드웨어 특성, 정적 소프트웨어 환경설정 특성, 동적 변수들이 예상된 거동을 갖는지 검사하기 위해 이들 동적 변수들에 대해 보안 처리 연산을 행하여 얻어진 결과 등의 다양한 다른 형태들을 취할 수 있다. 설치된 개인화 프로그램(26)은, 개인화 입력과, 개인화 프로그램 생성기(20)가 개인화 프로그램(22)을 생성하였을 때 선택된 기능에 의해 명시된 내장된 변수들에 대해 선택된 처리 기능을 행하여, 다양화 값을 발생한다.
이 다양화 값은 설치된 난독화 프로그램(18)을 제공한 서버로 다시 안전하게 전송된다. 암호화 프로그램(18)은, 그것에게 주어진 다양화 값에 따라 그것의 암호화 연산을 행한다. 개인화 입력은 서로 다른 모바일 디바이스들에 대해 서로 다른 값을 갖게 된다. 개인화 입력은 디바이스에 의해 제공된 실행 환경의 특징을 표시한다. 이것들을 보통, 설치된 메모리 사이즈, IMEI 값, MAC 어드레스, 프로세서 종류, 캐시 메모리 사이즈 등과 같이 이들 디바이스들의 인스턴스들 사이에서 차이가 난다. 더구나, 펌웨어 버전, 레지스터 값, /etc 디렉토리 엔트리 등과 같은 개별적인 디바이스들의 정적 소프트웨어 환경설정도 변한다. 따라서, 설치된 개인화 프로그램(26)은 이 개인화 프로그램이 설치된 디바이스를 "스니핑(sniff)"하여, 동일한 개인화 프로그램(26)이 서로 다른 디바이스들에서 실행되더라도 이들 서로 다른 디바이스들 사이에서 변동하는 다양화 값을 발생하기 위해 이 디바이스의 "지문"으로서의 역할을 하는 이 디바이스의 특성 변수들을 판독한다. 따라서, 설치된 암호화 프로그램(18)과 그것의 관련된 다양화 값은 모바일 디바이스의 개별적인 인스턴스(또는, 2개의 디바이스가 동일한 개인화 입력을 발생하는 것은 드물지만, 적어도 동일한 개인화 입력을 생성하는 인스턴스들)에 구속된다. 더구나, 설치된 개인화 프로그램(26)의 난독화된 속성으로 인해, 공격자는, 개인화 프로그램이 다른 디바이스 상에 설치될 때 서로 다른 세트의 개인화 입력으로부터 원하는 다양화를 생성하기 위해 개인화 프로그램을 어떻게 변형하는지를 이해하기 곤란하게 된다.
암호화된 형태로 서버로 반환된 다양화 값은 복호화되어 서버에 기억됨으로써, 서버에 위치한 암호화 프로그램(16)의 대응하는 인스턴스에 대한 입력으로 사용하여 암호화 연산을 행하여 설치된 암호화 프로그램(18)을 갖고 동일한 다양화 값을 사용하는 모바일 디바이스에 보호된 데이터를 송신한다. 따라서, 서버와 디바이스가 동일한 암호화 프로그램들 16, 18과 이들 암호화 프로그램 16, 18에 의해 행해진 암호화 연산들이 의존하는 동일한 다양화 값을 사용할 때, 서버와 디바이스 사이에서 보안 통신 채널이 제공된다.
전술한 것과 같이, 설치된 개인화 프로그램(26)에 대한 개인화 입력은 디바이스의 동적 변수의 처리로부터 얻어진 결과값을 포함할 수도 있다. 이 결과값은 동적 변수에 대해 보안 처리 연산을 행하여 유도될 수도 있다. 보안 처리 연산은, 보안 메모리 내부에 기억됨으로부터 보호되거나, 모바일 디바이스에 설치된 또 다른 별개의 암호화 프로그램의 일부로서 잠재적으로 보호되어도 된다. 동적 변수가 예측된 특성과 일치하는 특성을 갖는 경우에, 예를 들어, 동적 변수가 증가할 것으로만 예측되는 카운터인 경우에, 결과값은 특정한 형태를 갖게 되고, 처리 연산은, 개인화 프로그램 및 암호화 프로그램이 원래 설치된, 즉 다른 디바이스로 복사되지 않은 디바이스의 동일한 인스턴스에 계속 설치되는 이들 개인화 프로그램 및 암호화 프로그램과 일치하도록 카운터가 증가한 것을 검사한다.
전술한 실시예에서, 개인화 프로그램 생성기(20)는 소스 코드 형태로 개인화 프로그램(22)을 생성한다. 또한, 개인화 프로그램(22)은 컴파일된 형태 등의 다른 형태로 생성되는 것도 가능하다. 그럼에도 불구하고, 개인화 프로그램(22)은 소스 프로그램인 것으로 생각해도 되고, 이 개인화 프로그램은 그후 스텝 24에 의한 난독화를 겪어, 모바일 디바이스 내부에 설치된 개인화 프로그램(26)으로서 설치될 개인화 프로그램의 한가지 형태를 생성한다. 적용된 난독화는 역공학에 견디도록 개인화 프로그램의 인스턴스들 사이에서 변동해도 된다. 다양화 프로그램에 의해 다양화 입력값들에 적용되는 다양화 기능(알고리즘), 및/또는 사용될 다양화 입력값들의 선택은, 공격자에 의한 보안의 파괴를 더 어렵게 만들기 위해 빈번하게 변경되어도 된다. 유저들이 모두 다양화 프로그램을 다운로드하지만, 이 다양화는 용이하게 정기적으로 변경되어도 된다. 더욱 일반적으로 설명하면, 개인화 프로그램은 개인화 프로그램의 보안을 보호하기 위해 격리된 실행 환경을 구비하도록 고려되어도 된다. 이와 같은 격리된 실행 환경은, 난독화에 의해, 또는 모바일 디바이스에 의해 지원된 보안 실행 도메인(예를 들면, 신뢰된 실행 환경) 등의 다른 수산에 의해 제공되어도 된다. 개인화 프로그램의 인스턴스에 의해 사용된 개인화 입력값들은 모든 가능한 개인화 입력값들의 수퍼셋으로부터 선택된 적절한 서브셋이어도 된다. 이와 같은 구성은 공격자가 다수의 디바이스들을 분석할 필요가 없이 수퍼셋을 식별하는 것을 곤란하게 만든다.
서버와 디바이스 사이의 통신을 용이하게 하기 위해 모바일 디바이스에 의해 서버로 반환된 다양화 값은 다양한 형태로 송신되어도 된다. 한가지 형태는, 서버가 모바일 디바이스에 의해 사용되고 있는 것과 동일한 개인화 프로그램을 액세스한 이후에 서버에서 다양화 값이 재생되어, 이 동일한 개인화 입력을 이 개인화 프로그램에 적용하여 다양화 값을 발생할 수 있도록, 모바일 디바이스에 의해 사용된 암호화된 개인화 입력이어도 된다. 다른 예시적인 형태는, 예를 들어, 공개/개인 키 암호화를 사용하여, 암호화된 다양화 값으로서 다양화 값을 전달하는 것일 수 있다.
도 3은 새로운 디바이스에 암호화 능력을 설치하는 것이 필요할 때 서버에서 행해지는 동작을 개략적으로 나타낸 흐름도이다. 스텝 28에서는, 새로운 디바이스에 암호화 능력을 설치할 필요성이 검출될 때까지 처리를 대기한다. 스텝 30은, 설치의 목표이며 개인화 프로그램에 대한 개인화 입력의 일부로서 사용할 디바이스의 실행 환경의 특징을 표시하는 가능한 변수들의 적절한 서브셋을 선택하는 역할을 한다. 이들 변수는, 예를 들면, 하드웨어 특성, 정적 소프트웨어 환경설정 특성, 동적 변수에 대한 소정의 처리 연산의 결과값들, 또는 개별적인 디바이스에 의해 제공된 특정한 실행 환경을 식별하는데 유용한 다른 특징의 형태를 취할 수 있다. 스텝 32는 생성할 개인화 프로그램의 동작을 제어하는데 사용할 한 개 이상의 내장된 변수들을 생성한다. 스텝 34는 개인화 프로그램에 주어진 개인화 입력으로부터 다양화 값을 생성하기 위해 개인화 프로그램에 의해 적용할 특정한 기능을 선택한다. 스텝 36은 스텝 30으로부터의 선택된 변수들, 스텝 32로부터의 내장된 변수들과, 스텝 34로부터의 선택된 기능을 사용하여 개인화 프로그램을 생성한다. 개인화 프로그램은 소스 프로그램 포맷으로 생성된다. 스텝 38은, 예를 들면, 코드 평탄화, 코드 재배열, 변수 단편화 등과 같이, 스텝 36에서 생성된 개인화 프로그램의 난독화를 행한다. 스텝 40은 난독화된 개인화 프로그램을 타겟 디바이스에 송신한다.
개인화 프로그램과 함께 사용할 암호화 프로그램이 타겟 디바이스에 아직 송신되지 않았거나 설치되지 않은 경우에는, 스텝 42는 타겟 디바이스에 암호화 프로그램을 송신하는 역할을 한다.
암호화된 다양화 값이 타겟 디바이스에서 수신될 때까지 스텝 44에서 처리를 대기한다. 타겟 디바이스로부터 암호화된 다양화 값이 수신되면, 스텝 46은, 타겟 디바이스와 보호된 데이터를 교환하기 위한 보안 통신 채널을 제공하기 위해 이 디바이스에 설치된 암호화 프로그램의 서버 자신의 복사본과 관련하여 서버에 의해 추후 사용하기 위해 이 다양화 값을 복호화하여 기억하는 역할을 한다.
도 4는 타겟 디바이스에 암호화 기능을 설치하려고 할 때 타겟 디바이스에서의 동작을 개략적으로 나타낸 흐름도이다. 암호화 기능이 설치될 것이라는 것이 판정될 때까지 스텝 48에서 처리를 대기한다. 스텝 50은, 서버로부터 난독화된 개인화 프로그램(26)을 수신하는 역할을 한다. 옵션으로, 이때 암호화 프로그램(18)이 수신되어도 된다. 또한, 암호화 프로그램은, 그것의 초기의 설치시가 아니라, 이 암호화 프로그램의 기동과 관련되는 도 4에 도시된 처리로 이전에 별도로 설치되었을 수도 있다는 것도 가능하다.
스텝 52에서는, 난독화된 개인화 프로그램이 디바이스에 의해 실행되어, 난독화된 개인화 프로그램에 대한 개인화 입력을 판독하고 이 디바이스에 대해 고유한(또는 의사 고유한(quasi-unique)) 다양화 값을 생성한다. 스텝 54에서는, 전술한 것과 같이, 스텝 52에서 생성된 다양화 값이 (예를 들어, 서버의 공개 키를 이용하여) 암호화되어 서버로 다시 전송된다. 스텝 52에서 생성된 다양화 값도 디바이스에 설치된 암호화 프로그램(18)으로 주어져, 이 다양화 값에 따라 암호화 프로그램(18)에 의해 행해진 암호화 연산을 제어하여도 된다.
도 5는 디바이스에 보호된 데이터를 전송하기를 원하는 서버에서의 동작을 개략적으로 나타낸 것이다. 스텝 56에서는, 전송할 데이터가 존재할 때까지 처리를 대기한다. 송신할 데이터가 존재하는 경우에, 스텝 58은, 해당 디바이스에 설치되는 것과 동일한 암호화 프로그램(16)과, 타겟 디바이스로부터 반환되고 이 개별적인 타겟 디바이스의 실행 환경을 표시하는 기억된 다양화 값을 사용하여 이 데이터를 암호화하는 역할을 한다. 스텝 60에서, 스텝 58에서 생성된 암호화된 데이터가 타겟 디바이스로 전송된다. 정확한 타겟 디바이스가 동일한 암호화 프로그램 및 동일한 다양화 값을 사용하므로, 전송된 암호화된 데이터를 복호화할 수 있다. 이 암호화된 데이터를 수신하는 다른 (비인가된) 디바이스가 동일한 암호화 프로그램(16) 및 개인화 프로그램을 가지고 있을 수도 있지만, 개인화 프로그램의 그 자신의 인스턴스로부터 동일한 다양화 값을 생성하지 않으므로, 그것이 수신한 암호화된 데이터를 적절히 복호화할 수 없게 된다.
도 6은 암호화 연산을 행하는 것이 필요할 때 디바이스에서 행해지는 처리 동작을 개략적으로 나타낸 것이다. 디바이스가 암호화 연산을 행할 것인지 판정할 때까지 스텝 62에서 처리를 대기한다. 스텝 64로 처리를 진행하여, 해당 디바이스에 설치된 개인화 프로그램(26)이 디바이스의 특징 변수들의 값들을 판독하여 디바이스의 개인화 프로그램(26)에 대한 개인화 입력을 생성한다. 스텝 66에서, 이 디바이스에 있는 난독화된 개인화 프로그램(26)이 특징 변수들의 판독된 값들(즉, 개인화 입력)을 이용하여 개인화 입력(과 개인화 프로그램 내부의 내장된 변수들)에 대해 사전에 선택된 기능을 수행함으로써 다양화 값을 생성한다. 스텝 68에서는, 스텝 66에서 생성된 다양화 값을 디바이스에 설치된 암호화 프로그램(18)의 인스턴스에 공급한다. 스텝 70은 수신된 다양화 값에 따라 원하는 암호화 연산을 행한다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (25)

  1. 데이터 처리장치의 작동방법으로서,
    상기 데이터 처리장치에서 개인화 프로그램을 수신하는 단계와,
    상기 개인화 프로그램을 실행하여, 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들을 개인화 입력으로서 판독하고, 상기 개인화 입력의 함수로써 다양화 값을 발생하는 단계와,
    상기 다양화 값을 암호화 프로그램에 다양화 입력으로서 공급하는 단계와,
    상기 암호화 프로그램을 실행하여, 상기 다양화 값에 따라 암호화 연산을 행하는 단계를 포함하는 데이터 처리장치의 작동방법.
  2. 제 1항에 있어서,
    상기 복수의 변수들은 상기 데이터 처리장치의 실행 환경의 환경설정의 특징을 표시하는 실행 환경 변수들을 포함하는 데이터 처리장치의 작동방법.
  3. 제 1항에 있어서,
    상기 복수의 변수들은,
    상기 데이터 처리장치의 하드웨어 특성들, 및
    상기 데이터 처리장치의 정적 소프트웨어 환경설정 변수들
    중에서 적어도 한 개를 포함하는 데이터 처리장치의 작동방법.
  4. 제 1항에 있어서,
    상기 복수의 변수들은 상기 데이터 처리장치의 동적 변수에 처리 연산을 적용하여 결정된 적어도 한 개의 결과값을 포함하고, 적용되는 상기 처리 연산을 명시하는 데이터가 상기 데이터 처리장치의 보안 스토리지 내부에 기억되는 데이터 처리장치의 작동방법.
  5. 제 1항에 있어서,
    상기 개인화 프로그램은 상기 데이터 처리장치에 의해 격리된 실행 환경에서 실행되는 데이터 처리장치의 작동방법.
  6. 제 5항에 있어서,
    상기 격리된 실행 환경은 상기 개인화 프로그램의 난독화에 의해 제공되어, 소스 프로그램이 코드 난독화 처리를 겪게 함으로써 상기 개인화 프로그램이 생성되는 데이터 처리장치의 작동방법.
  7. 제 1항에 있어서,
    상기 다양화 값을 명시하는 데이터를 서버로 송신하는 단계와,
    상기 다양화 값에 따라 암호화된 암호화되고 보호된 데이터를 상기 서버에서 수신하는 단계와,
    상기 다양화 입력에 따라 상기 암호화 프로그램을 사용하여 상기 암호화되고 보호된 데이터를 복호화하여 보호된 데이터를 복원하는 단계를 포함하는 데이터 처리장치의 작동방법.
  8. 제 7항에 있어서,
    상기 다양화 값을 명시하는 상기 데이터는,
    상기 개인화 입력의 암호화된 형태, 및
    상기 다양화 값의 암호화된 형태
    중에서 한 개를 포함하는 데이터 처리장치의 작동방법.
  9. 제 1항에 있어서,
    상기 개인화 프로그램은 적어도 한 개의 내장된 변수를 포함하고, 상기 다양화 값은 상기 적어도 한 개의 내장된 변수의 함수인 데이터 처리장치의 작동방법.
  10. 제 1항에 있어서,
    상기 데이터 처리장치는 무선 모바일 디바이스이고, 상기 작동방법은 상기 개인화 프로그램을 상기 무선 모바일 디바이스에 무선으로 다운로드하는 단계를 포함하는 데이터 처리장치의 작동방법.
  11. 데이터 처리장치에서 개인화 프로그램을 수신하는 단계와,
    상기 개인화 프로그램을 실행하여, 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들을 개인화 입력으로서 판독하고, 상기 개인화 입력의 함수로써 다양화 값을 발생하는 단계와,
    상기 다양화 값을 암호화 프로그램에 다양화 입력으로서 공급하는 단계와,
    상기 암호화 프로그램을 실행하여, 상기 다양화 값에 따라 암호화 연산을 행하는 단계를 행하도록 구성된 프로그램 제어된 처리회로를 구비한 데이터 처리장치.
  12. 데이터 처리장치의 환경설정 방법으로서,
    상기 데이터 처리장치의 변수들의 세트 중에서 적절한 서브셋을 선택하는 단계를 포함하고, 상기 적절한 서브셋의 값들은 상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 하고,
    상기 환경설정 방법은,
    개인화 프로그램을 발생하여, 상기 데이터 처리장치를 제어함으로써, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들의 값들을 개인화 입력으로서 판독하고 상기 개인화 입력의 함수로써 암호화 프로그램에 대한 다양화 값을 발생하는 단계와,
    상기 개인화 프로그램을 상기 데이터 처리장치에 송신하는 단계를 더 포함하는 데이터 처리장치의 환경설정 방법.
  13. 제 12항에 있어서,
    상기 데이터 처리장치로부터 상기 다양화 값을 명시하는 데이터를 수신하는 단계와,
    상기 다양화 값에 따라 보호된 데이터를 암호화하여 암호화되고 보호된 데이터를 생성하는 단계와,
    상기 암호화되고 보호된 데이터를 상기 데이터 처리장치로 송신하는 단계를 포함하는 데이터 처리장치의 환경설정 방법.
  14. 제 12항에 있어서,
    상기 개인화 입력으로부터 상기 다양화 값을 발생하기 위한 기능으로서의 역할을 하는 선택된 한 개의 기능을 복수의 기능들 중에서 선택하는 단계를 포함하고,
    상기 발생단계는, 상기 개인화 프로그램을 발생하고 상기 선택된 한 개의 기능을 이용하여 상기 다양화 값을 발생하는 데이터 처리장치의 환경설정 방법.
  15. 제 12항에 있어서,
    상기 암호화 프로그램을 상기 데이터 처리장치로 송신하여 상기 데이터 처리장치에 의해 실행하는 단계를 포함하고, 상기 암호화 프로그램은 상기 다양화 값의 함수로써 암호화 연산을 행하도록 구성된 데이터 처리장치의 환경설정 방법.
  16. 제 13항에 있어서,
    상기 암호화 프로그램을 상기 데이터 처리장치로 송신하여 상기 데이터 처리장치에 의해 실행하는 단계를 포함하고, 상기 암호화 프로그램은 상기 다양화 값의 함수로써 암호화 연산을 행하도록 구성되고, 상기 암호화 연산은 상기 다양화 값의 함수로써 상기 암호화되고 보호된 데이터를 복호화하는 것을 포함하는 데이터 처리장치의 환경설정 방법.
  17. 제 12항에 있어서,
    상기 복수의 변수들은, 상기 데이터 처리장치의 실행 환경의 환경설정의 특징을 표시하는 실행 환경 변수들을 포함하는 데이터 처리장치의 환경설정 방법.
  18. 제 12항에 있어서,
    상기 복수의 변수들은,
    상기 데이터 처리장치의 하드웨어 특성들, 및
    상기 데이터 처리장치의 정적 소프트웨어 환경설정 변수들
    중에서 적어도 한 개를 포함하는 데이터 처리장치의 환경설정 방법.
  19. 제 12항에 있어서,
    상기 복수의 변수들은 상기 데이터 처리장치의 동적 변수에 처리 연산을 적용하여 결정된 적어도 한 개의 결과값을 포함하고, 적용되는 상기 처리 연산을 명시하는 데이터가 상기 데이터 처리장치의 보안 스토리지 내부에 기억되는 데이터 처리장치의 환경설정 방법.
  20. 제 12항에 있어서,
    소스 프로그램이 코드 난독화 처리를 겪게 함으로써 상기 개인화 프로그램이 생성되는 데이터 처리장치의 환경설정 방법.
  21. 제 12항에 있어서,
    상기 다양화 값을 명시하는 데이터는,
    상기 개인화 입력의 암호화된 형태, 및
    상기 다양화 값의 암호화된 형태
    중에서 한 개를 포함하는 데이터 처리장치의 환경설정 방법.
  22. 제 12항에 있어서,
    상기 개인화 프로그램은 적어도 한 개의 내장된 변수를 포함하고, 상기 다양화 값은 상기 적어도 한 개의 내장된 변수의 함수인 데이터 처리장치의 환경설정 방법.
  23. 제 12항에 있어서,
    상기 데이터 처리장치는 무선 모바일 디바이스이고, 상기 환경설정 방법은 상기 개인화 프로그램을 상기 무선 모바일 디바이스에 무선으로 다운로드하는 단계를 포함하는 데이터 처리장치의 환경설정 방법.
  24. 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 하는 값들을 갖는 적절한 서브셋을 상기 데이터 처리장치의 변수들의 세트 중에서 선택하는 단계와,
    개인화 프로그램을 발생하여, 상기 데이터 처리장치를 제어함으로써, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들을 개인화 입력으로서 판독하고 상기 개인화 입력의 함수로써 암호화 프로그램에 대한 다양화 값을 발생하는 단계와,
    상기 개인화 프로그램을 상기 데이터 처리장치에 송신하는 단계를 행하도록 구성된 프로그램 제어된 처리회로를 구비한 데이터 처리장치.
  25. 서버 및 데이터 처리장치의 작동방법으로서,
    상기 서버에서,
    상기 데이터 처리장치의 특징을 표시하는 복수의 변수들의 값들로서의 역할을 하는 값들을 갖는 적절한 서브셋을 상기 데이터 처리장치의 변수들의 세트 중에서 선택하는 단계와,
    개인화 프로그램을 발생하여, 상기 데이터 처리장치를 제어함으로써, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들을 개인화 입력으로서 판독하고 상기 개인화 입력의 함수로써 암호화 프로그램에 대한 다양화 값을 발생하는 단계와,
    상기 개인화 프로그램을 상기 데이터 처리장치에 송신하는 단계와,
    상기 데이터 처리장치에서,
    상기 데이터 처리장치에서 상기 개인화 프로그램을 수신하는 단계와,
    상기 개인화 프로그램을 실행하여, 상기 데이터 처리장치의 특징을 표시하는 상기 복수의 변수들의 값들을 상기 개인화 입력으로서 판독하고, 상기 개인화 입력의 상기 함수로써 상기 다양화 값을 발생하는 단계와,
    상기 다양화 값을 상기 암호화 프로그램에 다양화 입력으로서 공급하는 단계와,
    상기 암호화 프로그램을 실행하여, 상기 다양화 값에 따라 암호화 연산을 행하는 단계를 포함하는 서버 및 데이터 처리장치의 작동방법.
KR1020160127343A 2015-10-27 2016-10-04 암호화 프로그램 다양화 KR102583995B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1518965.7 2015-10-27
GB1518965.7A GB2543780B (en) 2015-10-27 2015-10-27 Cryptographic program diversification

Publications (2)

Publication Number Publication Date
KR20170049388A true KR20170049388A (ko) 2017-05-10
KR102583995B1 KR102583995B1 (ko) 2023-10-06

Family

ID=55130273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160127343A KR102583995B1 (ko) 2015-10-27 2016-10-04 암호화 프로그램 다양화

Country Status (5)

Country Link
US (1) US10474844B2 (ko)
EP (1) EP3163494A1 (ko)
KR (1) KR102583995B1 (ko)
CN (1) CN106992853B (ko)
GB (1) GB2543780B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096589A (ko) 2020-12-31 2022-07-07 충남대학교산학협력단 중간언어를 활용한 바이너리 프로그램 난독화 시스템 및 그 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889334A (zh) * 2019-01-30 2019-06-14 深圳市高端无人机有限公司 嵌入式固件加密方法、装置、wifi设备及存储介质
US11475140B1 (en) * 2020-11-24 2022-10-18 Amazon Technologies, Inc. Enclave-based cryptography services in edge computing environments

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009510644A (ja) * 2005-10-03 2009-03-12 エンキャップ アー エス 安全な認証のための方法及び構成
US20090150674A1 (en) * 2007-12-05 2009-06-11 Uniloc Corporation System and Method for Device Bound Public Key Infrastructure
US20120079282A1 (en) * 2010-06-28 2012-03-29 Lionstone Capital Corporation Seamless end-to-end data obfuscation and encryption
US20120201381A1 (en) * 2011-02-03 2012-08-09 mSignia, Inc. Cryptographic security functions based on anticipated changes in dynamic minutiae

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2434724A (en) * 2006-01-13 2007-08-01 Deepnet Technologies Ltd Secure transactions using authentication tokens based on a device "fingerprint" derived from its physical parameters
JP4967544B2 (ja) * 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
GB2468890A (en) * 2009-03-26 2010-09-29 John Christopher Birkett Software and USB key for user authentication during credit and debit card transactions on a computer.
WO2010123122A1 (ja) * 2009-04-24 2010-10-28 日本電信電話株式会社 暗号システム、暗号通信方法、暗号化装置、鍵生成装置、復号装置、コンテンツサーバ装置、プログラム、記憶媒体
CN102254121B (zh) * 2011-07-05 2013-11-13 北京神州绿盟信息安全科技股份有限公司 数据处理方法、装置及系统
CN104751028B (zh) * 2013-12-25 2018-08-17 北京壹人壹本信息科技有限公司 应用程序加密、解密的方法及装置
CN103838988B (zh) * 2014-03-07 2016-08-17 北京深思数盾科技股份有限公司 信息安全保护方法和装置
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009510644A (ja) * 2005-10-03 2009-03-12 エンキャップ アー エス 安全な認証のための方法及び構成
US20090150674A1 (en) * 2007-12-05 2009-06-11 Uniloc Corporation System and Method for Device Bound Public Key Infrastructure
US20120079282A1 (en) * 2010-06-28 2012-03-29 Lionstone Capital Corporation Seamless end-to-end data obfuscation and encryption
US20120201381A1 (en) * 2011-02-03 2012-08-09 mSignia, Inc. Cryptographic security functions based on anticipated changes in dynamic minutiae

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220096589A (ko) 2020-12-31 2022-07-07 충남대학교산학협력단 중간언어를 활용한 바이너리 프로그램 난독화 시스템 및 그 방법

Also Published As

Publication number Publication date
GB2543780A (en) 2017-05-03
CN106992853B (zh) 2021-08-17
GB2543780B (en) 2020-01-22
CN106992853A (zh) 2017-07-28
US10474844B2 (en) 2019-11-12
EP3163494A1 (en) 2017-05-03
US20170116438A1 (en) 2017-04-27
KR102583995B1 (ko) 2023-10-06
GB201518965D0 (en) 2015-12-09

Similar Documents

Publication Publication Date Title
US11615411B2 (en) POS system with white box encryption key sharing
US8213612B2 (en) Secure software download
US8347114B2 (en) Method and apparatus for enforcing a predetermined memory mapping
US20210349712A1 (en) Secure application distribution systems and methods
US8972723B2 (en) Storage device and method for providing a partially-encrypted content file to a host device
US20150095652A1 (en) Encryption and decryption processing method, apparatus, and device
KR20060127205A (ko) 암호 코프로세서를 포함하는 장치
US10621593B2 (en) Method for verifying the authenticity of a product
US20170353315A1 (en) Secure electronic entity, electronic apparatus and method for verifying the integrity of data stored in such a secure electronic entity
KR102583995B1 (ko) 암호화 프로그램 다양화
CN106209346B (zh) 白盒密码技术交错查找表
CN107315966B (zh) 固态硬盘数据加密方法及系统
JP2006514321A (ja) 暗号化されたアプリケーションをインストールするためのアーキテクチャ
JP6357091B2 (ja) 情報処理装置、及びコンピュータプログラム
CN103370718B (zh) 使用分布式安全密钥的数据保护方法、设备和系统
KR101473656B1 (ko) 모바일 데이터 보안 장치 및 방법
KR20200063535A (ko) 서버 및 이를 이용한 어플리케이션의 무결성 판단 방법
JP4593207B2 (ja) ソフトウェア無線システム
CN107688729B (zh) 基于可信主机的应用程序保护系统及方法
CN107682147B (zh) 用于智能卡芯片操作系统文件的安全管理方法及系统
Schiess Governmental Control of Digital Media Distribution in North Korea: Surveillance and Censorship on Modern Consumer Devices
JP7170588B2 (ja) データ処理方法及びデータ処理システム
KR101945738B1 (ko) 어플리케이션의 무결성을 검증하기 위한 어플리케이션 서버 및 그 제어 방법
Dettbarn Using cryptography as copyright protection for embedded devices
JP2004240719A (ja) ソフトウェア実行制御方法

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