KR101159487B1 - 소프트웨어 보안 - Google Patents

소프트웨어 보안 Download PDF

Info

Publication number
KR101159487B1
KR101159487B1 KR1020117021882A KR20117021882A KR101159487B1 KR 101159487 B1 KR101159487 B1 KR 101159487B1 KR 1020117021882 A KR1020117021882 A KR 1020117021882A KR 20117021882 A KR20117021882 A KR 20117021882A KR 101159487 B1 KR101159487 B1 KR 101159487B1
Authority
KR
South Korea
Prior art keywords
software
link library
tampering
obfuscated
terminal
Prior art date
Application number
KR1020117021882A
Other languages
English (en)
Other versions
KR20110110866A (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
Priority claimed from US11/061,399 external-priority patent/US7721340B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20110110866A publication Critical patent/KR20110110866A/ko
Application granted granted Critical
Publication of KR101159487B1 publication Critical patent/KR101159487B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • 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
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/083Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • 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
    • 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
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • 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
    • H04L9/3247Cryptographic 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 involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

소프트웨어 일부분의 변조가 방지된다. 소프트웨어 일부분을 역설계하는 해커의 이해를 혼란스럽게 하기 위한 소프트웨어 이미지의 난독화가 제공된다. 소프트웨어 일부분들이 함께 변조로부터의 보호를 요하는 소프트웨어 패키지를 구성하는지 검사하는 처리 또한 제공된다. 컴퓨팅 기기 상의 CPU 또는 캐쉬 메모리 등의 하드웨어 자원이 소프트웨어 변조를 방지하는 것이 가능한 종류에 속하는지를 판정하는 다른 처리 또한 제공된다. 스레드 보호는 보호적인 소프트웨어 일부분을 실행하는 다양한 스레드를 가지고 변조를 방지한다. 서비스 보호는 다양한 권한이 없는 서비스가 실행될 수 있게 하는 변조를 방지한다. 설치 구축 보호는 다양한 소프트웨어 일부분의 실행 중에 변조를 방지한다. 소프트웨어 난독화는 함수 이름을 조작하고 다양한 소프트웨어 일부분에 점프 명령어를 추가하는 해커에 의한 역설계를 방지한다. 하드웨어 보호는 해커가 다양한 소프트웨어 일부분이 권한이 없는 하드웨어 일부분에서 실행되도록 강요하는 것을 방지한다. 프로파일은 중앙 계층 데이터베이스에 저장되고 이러한 프로파일은 변조로부터 보호된다. 소프트웨어 이미지를 포함하는 소프트웨어 일부분을 역설계 하는 해커의 이해를 혼란스럽게 하기 위한 소프트웨어 이미지의 난독화가 제공된다. 이미지 검사는 설치될 소프트웨어 일부분의 진품 여부를 보장한다.

Description

소프트웨어 보안{SECURING SOFTWARE}
본 발명은 일반적으로 보안에 관한 것으로, 보다 상세히는, 권한이 없는 개인 또는 권한이 없는 소프트웨어 일부분(piece)에 의한 변경을 차단함으로써 소프트웨어 변조(tampering; 變造)를 방지하는 것에 관한 것이다.
소프트웨어는 컴퓨팅 기기를 강력하게 만든다. 이러한 기기는 사람의 결함이 있는 심장의 부정맥을 바로 잡고 사람이 천체의 위성군을 이해하게 할 수 있다. 그러나, 소프트웨어는 우발적인 장난 또는 의도적인 해악과 같은 간단한 것들에 취약하다. 우발적인 장난은 아이가 어떠한 방법으로 그의 부모의 퍼스널 컴퓨터에 접근하게 됨으로써 모르는 사이에 발행할 수 있으며, 이는 다른 예들 중에서도 특히, 데이터의 물리적 손실을 일으키거나 설정을 변경시켜 컴퓨팅 기기의 사용에 해로운 영향을 미친다. 의도적인 해악은 통상적으로 불법적인 목적으로 컴퓨터에 관한 전문 기술을 이용하는 사람들에 대한 위악 어법의 표현인 "해커"에 의해, 예를 들면, 컴퓨팅 기기 상에 악성 소프트웨어가 실행되게 하거나 허가 없이 직접적으로 컴퓨팅 기기에 접근하여 프로그램과 데이터를 변조함으로써 발생한다.
운영 체제는 메모리, CPU 시간, 디스크 공간, 및 주변 기기와 같은 컴퓨팅 기기 자원의 할당 및 이용을 제어하는 소프트웨어이다. 운영 체제는 애플리케이션이 의존하는 기반 소프트웨어이다. 인기있는 운영 체제는 윈도우즈 98, 윈도우즈 NT, 윈도우즈 XP, 맥 OS, 유닉스, 및 리눅스를 포함한다. 운영 체제는 때때로 특정 시장에 적절한 방식으로 패키징된다. 예를 들면, 작은 틈새 서버 시장에 이용되는 강력한 운영 체제는 소프트웨어 제조업체가 일반적인 대형 소비자 시장에서의 미숙한 사용자에 적절한 다양한 방식으로 보완을 할 수 있다. 한가지 문제점은 미숙한 사용자들이 이렇게 보완을 한 운영 체제를 부주의로 인해 변경하여 심하게 손상을 입힐 수 있다는 것이다. 그러나 무엇보다 가장 치명적인 문제점은 해커들이 이 보완을 한 운영 체제를 다른 불법 목적에 이용하도록 변형시키기 위해 역설계(reverse engineer)함으로써 소프트웨어 제조업체가 손해를 볼 수 있다는 점이다. 도 1은 이러한 문제점과 다른 문제점을 매우 상세히 도시한다.
소프트웨어 이미지(108)는 컴퓨터 하드웨어를 동작하게 하는 명령어를 포함하는 운영 체제의 복제본 또는 사본을 나타낸다. 통상적으로 소프트웨어 이미지(108)는 컴퓨터 하드웨어의 어딘가에 저장된 파일이기 때문에 해커 또는 그의 악성 소프트웨어(102)가 소프트웨어 이미지(108)를 변경하거나 쉽게 교체될 수 있게 할 수 있다. 사용자(110)가 운영 체제 등의 시스템 소프트웨어를 실행하기 위해 소프트웨어 이미지를 호출할 때에, 변경되거나 교체된 소프트웨어 이미지가 소프트웨어 제조업체가 제공한 원본 대신에 실행된다.
소프트웨어 이미지(108)의 변조는 통상적으로 해커 또는 악성 소프트웨어(102) 일부분들에 의해 수행되고, 사용자(110)에 의해서는 거의 수행되지 않는다. 그러나, 레지스트리(106)는 해커 또는 악성 소프트웨어(102) 일부분들 뿐 아니라 사용자(110)에 의해 의도적이지 않게 변조될 수 있다. 레지스트리(106)는 하나 이상의 사용자, 애플리케이션, 및 하드웨어 장치에 대하여 시스템을 구성하는 데에 채용될 수 있는 정보를 저장하는 데 이용되는 시스템 소프트웨어 일부분이다. 예를 들면, 레지스트리는 사용자 컴퓨팅 기기에 대한 하드웨어 속도 향상 지원 및 3차원적인 렌더링은 활성화하면서, 서버 컴퓨팅 기기에 대해서는 이들 동일한 특징들을 비활성화하는 데에 이용될 수 있다.
이들 정보의 일부분은 사용자(110)가 관리자 권한을 가지고 작업할 때 또는 부적절하게 레지스트리를 변경하는 권한을 얻은 해커 또는 악성 소프트웨어(102) 일부분들에 의해 변경될 수 있다. 해커 또는 악성 소프트웨어(102) 일부분들은 레지스트리(106) 조작을 시도하여 특정 청중 또는 마케팅 채널은 이용할 수 없는 레지스트리, 레지스트리 설정, 및 잠금 해지(unlock) 추가적인 특징의 정보를 변경하도록 하기 위한 라이센싱 제약을 극복할 수 있다. 한 가지 문제는 레지스트리를 변경함으로써 컴퓨팅 기기가 동작을 멈추거나 예측할 수 없는 행위를 할 수 있게 된다는 것이다.
다른 문제는 실행되는 소프트웨어(104)를 변조하는 것을 포함한다. 해커, 또는 악성 소프트웨어(102) 일부분들은 적절하게 실행되는 소프트웨어(104)를 부적절하게 폐기하고 권한이 없거나 금지된 소프트웨어 서비스로 대체할 수 있다. 또한, 해커 또는 악성 소프트웨어(102) 일부분들은 소프트웨어 응답 또는 소프트웨어 호출을 모방하고 실행되는 소프트웨어(104)의 실행을 변조할 수 있다.
우발적인 장난이나 의도적인 해악 모두에 의한, 소프트웨어 변조의 문제점이 발생하면, 사악한 해커 또는 이들의 악성 소프트웨어가 소프트웨어를 취약하게 할 수 있다는 것은 놀라운 일이 아니게 될 것이다. 소프트웨어 변조의 문제점을 해결하지 않는다면, 결국 사용자는 권한이 없는 개인에 의한 접근을 방지하면서 보안 컴퓨팅 체험을 제공하는 컴퓨터 제조업체를 더 이상 신뢰하지 않을 수 있다. 그러므로, 기존의 시스템에 관련된 상술한 문제점을 피하거나 줄이면서 소프트웨어 보안을 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 필요하다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 시스템 형태는 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조(tampering)를 방지하기 위한 시스템을 포함한다. 본 발명의 시스템은 권한이 없는 서비스의 실행을 방지하기 위해 난독화된(obfuscated) 보호 동적-링크 라이브러리의 보호 함수를 호출하기 위한 수단을 포함한다. 본 발명의 시스템은 중앙 계층 데이터베이스의 키 및 값을 보호하기 위해 난독화된 보호 동적-링크 라이브러리의 다른 보호 함수를 호출하기 위한 수단을 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 방법은 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하기 위한 방법을 포함한다. 본 발명의 방법은 권한이 없는 서비스의 실행을 방지하기 위해 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출하는 단계를 포함한다. 본 발명의 방법은 중앙 계층 데이터베이스의 키 및 값을 보호하기 위해 난독화된 보호 동적-링크 라이브러리의 다른 보호 함수를 호출하는 단계를 더 포함한다
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어를 가지는 컴퓨터-판독가능 매체를 포함한다. 이 방법은 권한이 없는 서비스의 실행을 방지하기 위해 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출하는 단계를 포함한다. 또한 이 방법은 중앙 계층 데이터베이스의 키 및 값을 보호하기 위해 난독화된 보호 동적-링크 라이브러리의 다른 보호 함수를 호출하는 단계를 더 포함한다
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 시스템이 정보의 일부분들의 진품 여부를 검사하는 데에 이용하는 컴퓨터-실행가능 명령어 및 하나 이상의 데이터 구조를 가지는 컴퓨터-판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 보호 동적-링크 라이브러리의 개인 라이브러리 키로 암호화된 프로파일을 포함하는데, 이 프로파일은 프로파일 유형에 의존하는 포맷 및 사이즈를 가지는 프로파일 데이터를 포함한다. 프로파일은 또한 보호 동적-링크 라이브러리의 공개 라이브러리 키로 디지털적으로 서명된 시그니처(signature)를 더 포함하며, 프로파일은 프로파일을 식별하는 식별자와 프로파일 데이터의 체크섬(checksum)을 포함하는 검증 블랍(blob)을 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 방법은 소프트웨어 일부분 간의 상호동작을 보호하기 위한 컴퓨터-구현 방법을 포함한다. 컴퓨터-구현 방법은 공개 호출 키 및 개인 호출 키를 가지는 제1 소프트웨어 일부분에 의해 중앙 계층 데이터베이스에 저장되는 프로파일로의 액세스를 개시하는 단계를 포함한다. 상기 제1 소프트웨어 일부분은 임의 솔트 값(random salt value)을 송신한다. 이 방법은 임의 솔트 값을 수신한 이후에, 개인 라이브러리 키를 가지는 제2 소프트웨어 일부분에 의해 상기 제2 소프트웨어 일부분이 상기 중앙 계층 데이터베이스에서 상기 프로파일을 검색하고 상기 개인 라이브러리 키를 이용하여 상기 프로파일을 복호화하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 소프트웨어 일부분 간의 상호동작을 보호하기 위한 컴퓨터-구현 방법을 포함한다. 컴퓨터-구현 방법은 공개 호출 키 및 개인 호출 키를 가지는 제1 소프트웨어 일부분에 의해 중앙 계층 데이터베이스에 저장되는 프로파일로의 액세스를 개시하는 단계를 포함한다. 상기 제1 소프트웨어 일부분은 임의 솔트 값을 송신한다. 컴퓨터-구현 방법은 임의 솔트 값을 수신한 이후에, 개인 라이브러리 키를 가지는 제2 소프트웨어 일부분에 의해 제2 소프트웨어 일부분이 상기 중앙 계층 데이터베이스에서 상기 프로파일을 검색하고 상기 개인 라이브러리 키를 이용하여 상기 프로파일을 복호화하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 시스템 형태는 소프트웨어 일부분 간의 상호동작을 보호하기 위한 시스템을 포함한다. 시스템은 공개 호출 키 및 개인 호출 키를 가지는 제1 소프트웨어 일부분에 의해 중앙 계층 데이터베이스에 저장되는 프로파일로의 액세스를 개시하기 위한 수단을 포함하며, 상기 제1 소프트웨어 일부분은 임의 솔트 값을 송신한다. 시스템은 임의 솔트 값을 수신한 이후에, 개인 라이브러리 키를 가지는 제2 소프트웨어 일부분에 의해 상기 제2 소프트웨어 일부분이 중앙 계층 데이터베이스에서 프로파일을 검색하고 개인 라이브러리 키를 이용하여 프로파일을 복호화하기 위한 수단을 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 방법은 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하기 위한 방법을 포함한다. 이 방법은 소프트웨어 일부분을 특징짓는 제품 종류에 대한 보호가 유용한 경우 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하는 단계를 포함한다. 이 방법은 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분이, 변조로부터의 보호가 유용한 제품 종류에 여전히 존재하는지를 모니터링하기 위한 시스템 타이머를 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하기 위한 방법을 포함한다. 이 방법은 소프트웨어 일부분을 특징짓는 제품 종류에 대한 보호가 유용한 경우 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하는 단계를 포함한다. 이 방법은 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분이, 변조로부터의 보호가 유용한 제품 종류에 여전히 존재하는지를 모니터링하기 위한 시스템 타이머를 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 방법은 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하기 위한 방법을 포함한다. 이 방법은 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출함으로써 멀티 실행 스레드를 생성하는 단계를 포함한다. 멀티 스레드 중 하나는 권한이 없는 서비스의 실행을 방지하고, 다른 멀티 스레드들은 중앙 계층 데이터베이스의 키 및 값을 보호한다. 이 방법은 멀티 스레드가 실행되고 있는지를 모니터링하기 위한 타이머를 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 이 방법은 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출함으로써 멀티 실행 스레드를 생성하는 단계를 포함한다. 멀티 스레드 중 하나는 권한이 없는 서비스의 실행을 방지하고, 다른 멀티 스레드들은 중앙 계층 데이터베이스의 키 및 값을 보호한다. 이 방법은 멀티 스레드가 실행되고 있는지를 모니터링하기 위한 타이머를 생성하는 단계를 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 방법은 서비스 변조를 방지하기 위한 변경을 포함한다. 이 방법은 컴퓨팅 기기를 시동할 때, 로그-온 모듈에 의해 권한이 없는 서비스의 실행을 방지하는 스레드를 생성하기 위해 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출하는 단계를 포함한다. 이 방법은 난독화된 보호 동적-링크 라이브러리와 통신하여 권한이 없는 서비스들의 리스트에 관련된 암호화된 보호 프로파일을 액세스하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 서비스 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 상기 방법은 컴퓨팅 기기를 시동할 때, 로그-온 모듈에 의해 권한이 없는 서비스의 실행을 방지하는 스레드를 생성하기 위해 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출하는 단계를 포함한다. 이 방법은 난독화된 보호 동적-링크 라이브러리와 통신하여 권한이 없는 서비스들의 리스트에 관련된 암호화된 보호 프로파일을 액세스하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 컴퓨팅 기기 상에 실행되는 소프트웨어 일부분의 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어를 가지는 컴퓨터-판독가능 매체를 포함한다. 이 방법은 권한이 없는 서비스의 실행을 방지하기 위해 난독화된 보호 동적-링크 라이브러리의 보호 함수를 호출하는 단계를 포함한다. 이 방법은 중앙 계층 데이터베이스의 키 및 값을 보호하기 위해 난독화된 보호 동적-링크 라이브러리의 다른 보호 함수를 호출하는 단계를 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 시스템이 소프트웨어 일부분을 설치하는 데에 이용하는 컴퓨터-판독가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 컴퓨터-판독가능 매체는 중앙 계층 데이터베이스가 변조되었는지 모니터링하고, 컴퓨팅 시스템에 저장된 파일 세트의 진품 여부를 검사하고, 권한이 없는 서비스를 실행하는 것을 중지시키는 컴퓨터-판독가능 명령어를 포함하는 보호 동적-링크 라이브러리를 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 방법은 소프트웨어 구축을 보호하기 위한 컴퓨터-구현 방법을 포함한다. 이 방법은 소프트웨어 일부분을 시판된 소프트웨어 패키지의 종류에 속할 것으로 식별하는 제품 식별자를 생성하는 단계를 포함한다. 이 방법은 제품 식별자에 기초하여 소프트웨어 일부분이 소프트웨어 변조 보호가 유용한 시판된 소프트웨어 패키지의 종류에 속한다면 소프트웨어 변조를 방지하기 위한 보호 동적-링크 라이브러리의 설치를 용이하게 하는 단계를 더 포함한다.
본 발명의 또 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 소프트웨어 구축을 보호하기 위한 컴퓨터-구현 방법을 실행하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 상기 방법은 소프트웨어 일부분을 시판된 소프트웨어 패키지의 종류에 속할 것으로 식별하는 제품 식별자를 생성하는 단계를 포함한다. 이 방법은 제품 식별자에 기초하여 소프트웨어 일부분이 소프트웨어 변조 보호가 유용한 시판된 소프트웨어 패키지의 종류에 속한다면 소프트웨어 변조를 방지하기 위한 보호 동적-링크 라이브러리의 설치를 용이하게 하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 시스템 형태는 소프트웨어 구축을 보호하기 위한 시스템을 포함한다. 시스템은 소프트웨어 일부분을 시판된 소프트웨어 패키지의 종류에 속할 것으로 식별하는 제품 식별자를 생성하기 위한 수단을 포함한다. 시스템은 제품 식별자에 기초하여 상기 소프트웨어 일부분이 소프트웨어 변조 보호가 유용한 시판된 소프트웨어 패키지의 종류에 속한다면 소프트웨어 변조를 방지하기 위한 보호 동적-링크 라이브러리의 설치를 촉진하기 위한 수단을 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 시스템이 소프트웨어 변조를 보호하는 데에 이용하는 컴퓨터-실행가능 명령어를 가지는 컴퓨터-판독가능 매체를 포함한다. 컴퓨터-판독가능 매체는 데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부를 검사하고, 권한이 없는 서비스를 실행하는 것을 중지시키는 난독화된 컴퓨터-실행가능 명령어를 포함하는 보호 동적-링크 라이브러리를 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 방법은 컴퓨팅 시스템이 소프트웨어 변조를 방지하는 데에 이용하는 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 생성하기 위한 컴퓨터-구현 방법을 포함한다. 이 방법은 데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부를 검사하고, 권한이 없는 서비스를 실행하는 것을 중지시키는 난독화된 보호 동적-링크 라이브러리 형성하는 단계를 포함하며 상기 보호 동적-링크 라이브러리에서는 제어 흐름, 필드, 메소드, 및 클래스의 이름이 난독화된다. 이 방법은 난독화된 보호 동적-링크 라이브러리의 체크섬을 포함하는 디지털적으로 서명된 카달로그 파일을 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 소프트웨어 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 이 방법은 데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부를 검사하고, 권한이 없는 서비스를 실행하는 것을 중지시키는 난독화된 보호 동적-링크 라이브러리 형성하는 단계를 포함하며, 상기 보호 동적-링크 라이브러리에서는 제어 흐름, 필드, 메소드, 및 클래스의 이름이 난독화 된다. 이 방법은 상기 난독화된 보호 동적-링크 라이브러리의 체크섬을 포함하는 디지털적으로 서명된 카달로그 파일을 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 형태는 컴퓨팅 시스템이 소프트웨어 변조를 방지하는 데에 이용하는 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 생성하기 위한 시스템을 포함한다. 이 시스템은 데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부를 검사하고, 권한이 없는 서비스를 실행하는 것을 중지시키는 난독화된 보호 동적-링크 라이브러리 형성하기 위한 수단을 포함하며, 상기 보호 동적-링크 라이브러리에서는 제어 흐름, 필드, 메소드, 및 클래스의 이름이 난독화된다. 이 시스템은 상기 난독화된 보호 동적-링크 라이브러리의 체크섬을 포함하는 디지털적으로 서명된 카달로그 파일을 생성하기 위한 수단을 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 방법은 소프트웨어 변조를 방지하기 위한 방법을 포함한다. 이 방법은 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하기 전에 난독화된 보호 동적-링크 라이브러리의 제1 체크섬을 계산하는 단계를 포함한다. 이 방법은 소프트웨어 변조를 방지하기 위한 보안 오류 조치가 취해져야 하는지를 판정하기 위하여 상기 난독화된 보호 동적-링크 라이브러리의 소프트웨어 이미지의 진품 여부를 검사하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 소프트웨어 변조를 방지하는 방법을 구현하기 위한 컴퓨터-실행가능 명령어를 가지는 컴퓨터-판독가능 매체를 포함한다. 이 방법은 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하기 전에 난독화된 보호 동적-링크 라이브러리의 제1 체크섬을 계산하는 단계를 포함한다. 이 방법은 소프트웨어 변조를 방지하기 위한 보안 오류 조치가 취해져야 하는지를 판정하기 위하여 상기 난독화된 보호 동적-링크 라이브러리의 소프트웨어 이미지의 진품 여부를 검사하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 시스템 형태는 소프트웨어 변조를 방지하기 위한 시스템을 포함한다. 이 시스템은 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하기 전에 난독화된 보호 동적-링크 라이브러리의 제1 체크섬을 계산하기 위한 수단을 포함한다. 이 시스템은 소프트웨어 변조를 방지하기 위한 보안 오류 조치가 취해져야 하는지를 판정하기 위하여 난독화된 보호 동적-링크 라이브러리의 소프트웨어 이미지의 진품 여부를 검사하기 위한 수단을 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 방법은 컴퓨팅 기기가 소프트웨어 일부분에 대하여 지원가능한 기기의 종류에 속하는지를 판정하기 위한 컴퓨터-구현 방법을 포함한다. 이 방법은 컴퓨팅 기기의 CPU 상에, CPU의 식별을 나타내는 명령어 세트가 존재하는지 검사하는 단계를 포함한다. 이 방법은 CPU가 자가 식별을 지원하는 아키텍처를 가지고 있다면 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 컴퓨팅 기기가 소프트웨어 일부분에 대하여 지원가능한 기기의 종류에 속하는지를 판정하기 위한 방법을 구현하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 상기 방법은 상기 컴퓨팅 기기의 CPU 상에, 상기 CPU의 식별을 나타내는 명령어 세트가 존재하는지 검사하는 단계를 포함한다. 이 방법은 CPU가 자가 식별을 지원하는 아키텍처를 가지고 있다면 컴퓨팅 기기 상에 난독화된 보호 동적-링크 라이브러리를 로딩하는 단계를 더 포함한다.
본 발명에 따르면, 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및 컴퓨터-판독가능 매체가 제공된다. 본 발명의 방법은 소프트웨어 변조를 방지하기 위한 방법을 포함한다. 이 방법은 컴퓨팅 기기의 시동 중에, 로그-온 모듈에 의해 난독화된 동적-링크 라이브러리의 보호 함수를 호출하여 시스템과 관련된 중앙 계층 데이터베이스의 키 및 값을 보호하는 제1 스레드를 생성하는 단계를 포함한다. 이 방법은 사용자에 의한 컴퓨팅 기기로의 로그-온 중에, 로그-온 모듈에 의한 난독화된 동적-링크 라이브러리의 보호 함수를 호출하여 사용자와 관련된 중앙 계층 데이터베이스의 키 및 값을 보호하는 제2 스레드를 생성하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, 본 발명의 컴퓨터-판독가능 매체 형태는 소프트웨어 변조를 방지하기 위한 방법을 구현하기 위한 컴퓨터-실행가능 명령어가 저장된 컴퓨터-판독가능 매체를 포함한다. 상기 방법은 컴퓨팅 기기의 시동 중에, 로그-온 모듈에 의해 난독화된 동적-링크 라이브러리의 보호 함수를 호출하여 시스템과 관련된 중앙 계층 데이터베이스의 키 및 값을 보호하는 제1 스레드를 생성하는 단계를 포함한다. 이 방법은 사용자에 의한 상기 컴퓨팅 기기로의 로그-온 중에, 상기 로그-온 모듈에 의한 상기 난독화된 동적-링크 라이브러리의 보호 함수를 호출하여 상기 사용자와 관련된 중앙 계층 데이터베이스의 키 및 값을 보호하는 제2 스레드를 생성하는 단계를 더 포함한다.
도 1은 허가되지 않은 개인들에 의한 컴퓨팅 기기에서의 소프트웨어 변조의 문제점을 보여주는 통상적인 시스템을 도시하는 블록도.
도 2는 변조를 방지하도록 소프트웨어 일부분을 구축하기 위한 예시적인 소프트웨어 컴포넌트를 도시하는 블록도.
도 3a는 소프트웨어 변조를 방지하도록 상호동작하는 예시적인 소프트웨어 컴포넌트를 도시하는 블록도.
도 3b는 본 발명의 일 실시예에 따른, 레지스트리 또는 동적-링크 라이브러리 중 하나에 저장된 예시적인 프로파일 및 소프트웨어 일부분들의 안전한 상호동작에 의한 프로파일의 추출을 도시하는 블록도.
도 4a 내지 4z는 본 발명의 일 실시예에 따른, 소프트웨어 변조를 방지하기 위한 방법을 예시하는 처리의 도면.
본 발명의 전술한 양태 및 다수의 부수적인 이점은 첨부된 도면에 관련하여 이루어질 이하 상세한 설명을 참조하면 보다 잘 이해되어질 것이므로 보다 쉽게 인식될 것이다.
소프트웨어는 강력하지만 취약하다는 양면성이 있다. 본 발명의 다양한 실시예는 소프트웨어 일부분의 변조를 방지한다. 일 실시예는 소프트웨어 이미지를 포함하는 소프트웨어 일부분들을 역설계하는 해커의 이해를 혼란스럽게 하기 위한 소프트웨어 이미지의 난독화(obfuscation)이다. 다른 실시예는 소프트웨어 일부분들 모두가 변조로부터 보호를 요하는 소프트웨어 패키지를 구성하는지를 검사하는 것이다. 또 다른 실시예는 컴퓨팅 기기 상의 CPU 또는 캐쉬 메모리 등의 하드웨어 자원이 소프트웨어 변조를 방지하는 것이 가능한 종류에 속하는지 판정하는 것이다. 다른 실시예는 컴퓨팅 기기 상의 특정한 중대한 파일들이 변조되었는지를 체크하는 것을 포함한다. 추가적인 실시예는 레지스트리가 변조되었는지를 판정하는 것을 포함한다. 몇몇의 다른 실시예는 실행되고 있는 소프트웨어 서비스들이 변조되었는지를 판정하는 것을 포함한다.
도 2는 제품 식별자(PID) 동적-링크 라이브러리(200A), 구축 소프트웨어(200B), 및 구축 정보 파일(200C)을 포함하는 소프트웨어 컴포넌트(200)를 도시한다. 구축 소프트웨어 컴포넌트(200)는 변조를 방지하기 위한 소프트웨어 일부분이 컴퓨터 시스템 상에 설치될 수 있는지를 판정하는 역할을 담당한다. 소프트웨어 일부분은 시스템 소프트웨어(운영 체제), 애플리케이션 소프트웨어, 및 네트워크 소프트웨어 등의 임의의 적절한 소프트웨어 일부분들을 포함한다. 제품 식별자 동적-링크 라이브러리(200A)는 파일들과는 별도로 저장된 실행가능한 루틴의 종류에 속한다. 이들 루틴은 "DLL" 등의 특정 확장자를 가지며, 프로그램이 필요로 할 때만 로딩된다. 이들 동적-링크 라이브러리는 마이크로소프트 윈도우즈 계열의 운영 체제 및 OS/2의 특징으로서 적절히 존재할 수 있다. 동적-링크 라이브러리는 몇 가지 특징을 가진다: 첫째, 통상적으로 사용되기 전까지는 어떠한 메모리도 소비하지 않는다; 둘째, 동적-링크 라이브러리는 별개의 파일이기 때문에 호출 프로그램, 또는 다른 동적-링크 라이브러리의 운영에 영향을 미치지 않으면서 프로그래머가 바로 그 모듈에만 정정이나 개선을 할 수 있다; 마지막으로, 프로그래머는 다른 프로그램과 동일한 동적-링크 라이브러리를 이용할 수 있다.
구축 정보 파일(200C)은 텍스트 기반 파일 종류에 속하며 설치 중에, 구축 소프트웨어(200B) 등의 구축 애플리케이션에 의해 이용되는 정보를 포함한다. 통상적으로, (보호 정보 파일(202A) 등의) 다른 구축 정보 파일들 중에서도 특히, 구축 정보 파일(200C)은 구축 소프트웨어(200B) 등의 구축 애플리케이션의 작성 이전에 생성된다. 정보 파일에 저장될 수 있는 정보의 예로는 레지스트리 변경, 파일 이름, 및 소스 매체 상의 소스 파일의 위치를 포함한다. 보호 정보 파일(202A) 뿐만 아니라 구축 정보 파일(200C)은 개인 섹션 또한 포함할 수 있다. 이들 개인 섹션은 구축 소프트웨어(200B)에 의존하며 구축 소프트웨어(200B) 등의 특정 구축 애플리케이션에 의해 이용되는 특수화된 정보를 저장하는 데 이용되어 소프트웨어 변조를 방지하는 소프트웨어 일부분들을 설치할 수 있다.
구축 소프트웨어(200B)는 저장 매체 또는 메모리 중 하나에서의 시스템 소프트웨어, 애플리케이션 소프트웨어, 또는 네트워크 소프트웨어 등의 다른 프로그램을 설치하는 기능을 가지는 프로그램이다. 구축 소프트웨어(200B)는 기기, 프린터, 모니터, 및 네트워크의 특정 조합에 대한 애플리케이션을 구축하는 빈번하고 복잡한 처리 전반에 걸쳐 사용자를 안내하는 데에 이용될 수 있다. 제품 식별자 동적-링크 라이브러리(200A)는 고유한 제품 식별자를 생성하고 레지스트리(204)에 이 생성된 제품 식별자(204A)를 저장하는데, 이는 이하 설명할 것이다. 구축 정보 파일(200C)은 소프트웨어 변조를 방지하는 소프트웨어 일부분의 설치를 위하여 설치 동적-링크 라이브러리(202B)를 준비한다. 설치 컴포넌트(202)는 보호 정보 파일(202A) 및 설치 동적-링크 라이브러리(202B)를 포함한다. 보호 정보 파일(202A)은 소프트웨어 변조를 방지하는 소프트웨어 일부분의 설치를 위한, 레지스트리 변경, 파일 이름, 및 소스 파일의 위치 등의 각종 정보 일부분을 포함한다. 또한, 보호 정보 파일(202A)은 시스템 파일(206B)의 설치를 위한 정보 및 시판된 소프트웨어 패키지에 특정된 다양한 소프트웨어 컴포넌트를 포함한다.
소프트웨어 컴포넌트(202) 내에 포함된, 설치 동적-링크 라이브러리(202B)는 특정 시장 부분에 특정되고 이 특정 시장 부분에 적절한 언어 및 내용을 제공할 수 있는, 보호 동적-링크 라이브러리(206A) 등의, 소프트웨어 변조를 방지하는 실질적인 소프트웨어 일부분을 설치한다. 설치 동적-링크 라이브러리(202B)는 또한 설치가 보안된 설치임을 빠르게 식별하기 위해 보호 동적-링크 라이브러리(206A)에 구현된 변조를 방지하는 소프트웨어 일부분을 허용하도록 활성화 키(204C)를 설정한다. 또한, 설치 동적-링크 라이브러리(202B)는 다른 것들 중에서도 특히, 하드웨어 및/또는 언어에 속하는 정보를 포함하는 복수의 암호화된 보호 프로파일, 및 각종 시스템 파일(206B)도 설치하여 무언가가 변조되었는지를 판정할 수 있게 한다.
런타임 컴포넌트(206)는 도움말 파일, 및 언어와 같은 시장-특정 내용 파일을 포함하는 시스템 파일(206B)을 가지고 소프트웨어 변경을 방지하는 소프트웨어 일부분을 구현하는 보호 동적-링크 라이브러리(206A)를 포함한다.
중앙 계층 데이터베이스(204)는 제품 식별자(204A), 활성화 키(204C), 및 암호화된 보호 프로파일(204D)을 포함한다. 중앙 계층 데이터베이스(204)는 하나 이상의 사용자, 애플리케이션, 및 하드웨어 장치에 대하여 시스템을 구성하는 데 필요한 정보를 저장하는 데 이용된다. 중앙 계층 데이터베이스(204)는 각 사용자에 대한 프로파일, 컴퓨터 상에 설치된 애플리케이션, 및 각각이 생성할 수 있는 문서 유형; 폴더 및 애플리케이션 아이콘에 대한 속성 시트 설정; 시스템 상에 존재하는 하드웨어; 및 사용되고 있는 포트와 같은, 동작 중에 운영 체제가 계속적으로 참조하는 정보를 포함한다. 중앙 계층 데이터베이스(204)는, 또한, 상술한 바와 같이, 소프트웨어 변조의 방지를 돕는 정보 일부분들을 저작하는 데에 이용될 수 있다. 정보의 적합한 일부분은 해커가 파일을 변경할 때 등에서, 데이터가 변조되었는지 검사하는 데에 이용되는 계산된 값들인 체크섬(checksum)을 포함한다. 체크섬은 데이터의 모든 바이트를 일련의 산술 또는 논리적 동작과 순차적으로 결합함으로써 주어진 데이터 청크(chunk)에 대해 계산되는 것이 바람직하다. 소프트웨어 변조가 확인되었거나 유효한 기간 동안, 저장된 데이터를 이용하여 동일한 방식으로 새로운 체크섬이 계산될 수 있다. 2개의 체크섬이 일치하지 않는다면, 소프트웨어 변조가 일어난 것일 수 있고, 변조를 고치거나 컴퓨팅 기기를 종료하기 위한 적절한 단계들을 취할 수 있다.
도 3a는 보호 동적-링크 라이브러리(306A)에 의해 구현된 소프트웨어 변조를 방지하기 위한 소프트웨어 일부분의 실행을 도시한다. 도 3a의 각종 구성요소는 도 2a의 각종 구성요소와 유사하며, 간결히 하기 위해 이들을 더 설명하지는 않을 것이다. 로그-온 컴포넌트(308)는 로그-온 모듈(308A)을 포함하며, 컴퓨터 시스템을 시동시킬 때, 로그-온 모듈(308A)은 제품 식별자(304A)에 의존하는 보호 동적-링크 라이브러리(306A)를 로딩하기를 시도한다. 중앙 계층 데이터베이스(308)에 적절한 제품 식별자가 존재하면, 보호 동적-링크 라이브러리(306A)는 로그-온 모듈(308A)에 의해 로딩될 것이다. 로그-온 모듈(308A)은 바람직하게는 사용자 이름 및 패스워드를 수신하는 소프트웨어 일부분이며 사용자가 컴퓨팅 기기 상의 시스템 소프트웨어를 액세스할 수 있게 되기 전에 정보를 확인한다.
컴퓨터 시스템의 소프트웨어의 실행 중에, 보호 동적-링크 라이브러리(306A)는 각종 암호화된 보호 프로파일(304D)을 읽음으로써 각종 시스템 파일(306B)이 변조되지 않았음을 확인한다. 또한, 보호 동적-링크 라이브러리(306A)는 각종 키 설정 및 그 관련 값들이 변조되었는지 판정하기 위하여 이들을 검사한다. 보호 동적-링크 라이브러리(306A)는 먼저 레지스트리 및 컴퓨터 시스템 상에서 실행되도록 허가된 서비스들을 검사하기 위한 타이머를 생성한다. 시스템이 변조되었다면, 보호 동적-링크 라이브러리(306A)는, 변조를 처리하는 다른 적절한 방법들 중에서도 특히, 이 변조를 교정하는 것을 시도하거나 컴퓨팅 기기를 종료하기 시작한다.
예를 들면, 보호 동적-링크 라이브러리(306A)는 중앙 계층 데이터베이스(304)를 모니터링하고 변조가 있었다면 키들 및 그들과 관련된 값들을 리셋한다. 보호 동적-링크 라이브러리(306A)는 또한, 암호화된 보호 프로파일(304D) 및 보호 동적-링크 라이브러리(306A)에 포함된 정보에 대하여, 각종 시스템 파일(306B) 등의 중대한 파일을 체크하여 변조가 있었는지 여부를 판정한다. 또한, 보호 동적-링크 라이브러리(306A)는 컴퓨터 시스템 상에서 실행되는 소프트웨어 서비스들이 권한이 있는지를 확인하도록 체크하고 권한이 없는 소프트웨어 서비스를 제거한다.
도 3b는 로그-온 모듈(308A) 등의 소프트웨어 일부분에 의해 액세스될 수 있는 암호화된 보호 프로파일(304D)을 도시한다. 로그-온 모듈(308A)은 보호 동적-링크 라이브러리(306B)와 통신하여 암호화된 보호 프로파일(304D)을 액세스한다. 로그-온 모듈(308A)과 보호 동적-링크 라이브러리(306B) 간의 상호 운용은 소프트웨어 일부분들 간에 정보의 전송 또는 통신이 안전하게 이루어질 수 있다는 것을 알리는 적절한 프로토콜에 의해 이루어지는 것이 바람직하다.
한 적절한 프로토콜은 로그-온 모듈(308A)에 의해 보호 동적-링크 라이브러리(306B)로 전송되는 숫자, 알파벳, 또는 알파벳 숫자의 문자열 정보를 포함할 수 있는 임의의 솔트 값(salt value)의 전송을 포함한다. 보호 동적-링크 라이브러리(306B)는 2개의 키, 즉, 공개 라이브러리 키 및 개인 라이브러리 키를 가지는 것이 바람직하다. 암호화 및 디지털 서명에서, 이들 키는 송신되거나 수신될 암호화 및 복호화 정보에 이용되는 비트 스트링을 포함한다. 암호화는 2개의 서로 다른 유형의 키, 한 명 이상에 알려지는 공개 키, 및 한 명에게만 알려지는 개인 키에 공통적으로 의존한다.
보호 동적-링크 라이브러리(306B)는 개인 라이브러리 키를 이용하여 프로파일(312 내지 316) 등의 프로파일을 복호화한다. 각 프로파일은 각종 정보 일부분이 저장될 수 있는 무정형의 데이터 구조인 블랍으로 알려진 데이터 구조로서 적절하게 조직화된다. 바람직하게는, 프로파일(312 내지 316)의 블랍은 보호 동적-링크 라이브러리(306B)의 개인 라이브러리 키를 이용하여 암호화된다. 프로파일(312)은 보호 동적-링크 라이브러리(306B)의 개인 라이브러리 키에 의해 암호화되었던 블랍 1을 포함한다. 블랍 1은 그 사이즈와 포맷이 하드웨어 프로파일 또는 언어 프로파일 등의 프로파일 유형에 의존하는 프로파일 데이터 1(312A)을 포함한다. 블랍 1은 또한 보호 동적-링크 라이브러리(306B)의 공개 라이브러리 키로 디지털적으로 서명된, 프로파일 데이터 1(312A)의 체크섬(checksum)을 포함하는 시그니처 1(312B)을 포함한다. 블랍 1은 또한 로그-온 모듈(308A)의 공개 호출 키로 디지털적으로 서명되고 로그-온 모듈(308A)의 개인 호출 키로 암호화도 된, 프로파일(312)의 식별자와 프로파일 데이터 1(312A)의 체크섬인 검증 블랍 1(312C)을 포함한다.
프로파일(314)은 로그-온 모듈(308A)의 공개 호출 키로 디지털적으로 서명되고 로그-온 모듈(308A)의 개인 호출 키로 암호화도 된, 프로파일 데이터 2(314B)에 의해 기술된 프로파일(314)의 식별자와 그 데이터의 체크섬인 검증 블랍 2(314A)을 포함하는 블랍 2로서 조직화된다. 블랍 2는 그 사이즈와 포맷이 하드웨어 프로파일 또는 언어 프로파일 등의 프로파일 유형에 의존하는 프로파일 데이터 2(314B)를 포함한다. 블랍 2는 또한 보호 동적-링크 라이브러리(306B)의 공개 라이브러리 키로 디지털적으로 서명된, 프로파일 데이터 2(312B)의 체크섬(checksum)인 시그니처 2(314C)를 포함한다.
프로파일(316)은 블랍 3으로서 조직화된다. 블랍 3은 보호 동적-링크 라이브러리(306B)의 공개 라이브러리 키로 디지털적으로 서명된 프로파일 데이터 3(316C)의 체크섬인 시그니처 3(316A)을 포함한다. 블랍 3은 로그-온 모듈(308A)의 공개 호출 키로 디지털적으로 서명되고 로그-온 모듈(308A)의 개인 호출 키로 암호화도 된, 프로파일(316)의 식별자와 그 프로파일 데이터 3(316C)의 체크섬인 검증 블랍 3(316B)을 포함한다. 블랍 3은 그 사이즈와 포맷이 하드웨어 프로파일 또는 언어 프로파일 등의 프로파일 유형에 의존하는 프로파일 데이터 3(313C)을 포함한다. 프로파일(312 내지 316)의 블랍들(1 내지 3) 각각에 대하여, 프로파일 데이터(1 내지 3), 시그니처(1 내지 3) 및 검증 블랍(1 내지 3) 등의 다양하게 명명된 조직은 블랍(1 내지 3) 또는 프로파일(312 내지 316) 각각에서 서로 다르게 위치된다. 이들 서로 다른 배치는 레지스트리(304) 내에 포함된 프로파일 데이터의 변조를 방지하는 것을 돕는다. 위치 정보를 포함하는 헤더가 블랍(1 내지 3) 내에 존재하여 각각의 명명된 조직이 블랍(1 내지 3) 내에 상주하지를 판정할 수 있게 한다.
보호 동적-링크 라이브러리(306B)가 그 개인 라이브러리 키를 이용하여 프로파일 또는 블랍을 복호화함으로써 원하는 프로파일을 찾았다면, 로그-온 모듈(308A)에 프로파일을 반환할 것이다. 로그-온 모듈(308A)에 데이터를 반환하기 전에, 보호 동적-링크 라이브러리(306B)는 찾아낸 프로파일의 식별자 및 프로파일 데이터로부터 체크섬을 계산한다. 체크섬은 최초에 로그-온 모듈(308A)에 의해 전송되었던 임의 솔트 값과 프로파일을 비교한 결과를 포함한다. 본질적으로 솔트 값은 해커가 보호 동적-링크 라이브러리(306A)를 간단히 에뮬레이팅하여 로그-온 모듈(308A)에 잘못된 프로파일을 반환하지 못하게 한다.
체크섬이 계산되었다면, 보호 동적-링크 라이브러리(306B)는 본질적으로 각종 정보 일부분(예를 들면, 성공, 실패, 및 성공 또는 실패를 상세히 기술하는 플래그), 찾아낸 프로파일 내의 검증 블랍, 및 프로파일의 식별자, 그 데이터, 결과, 및 임의 솔트 값으로부터 계산된 체크섬을 가지는 결과 데이터 구조인 결과를 로그-온 모듈(308A)에 반환한다. 로그-온 모듈(308A)은 보호 동적-링크 라이브러리(306B)로부터 반환된 결과를 검사한다. 로그-온 모듈(308A)은 자신의 개인 호출 키를 이용하여 검증 블랍을 복호화하여 프로파일의 식별자와 프로파일의 데이터의 체크섬을 획득한다. 또한, 로그-온 모듈(308A)은 자신의 공개 호출 키를 이용함으로써 검증 블랍의 시그니처를 검사한다. 게다가, 로그-온 모듈(308A)은 복호화된 검증 블랍 체크섬, DLL의 결과, 및 최초로 보호 동적-링크 라이브러리(306A)로 전달된 임의 썰트 값으로부터 체크섬을 계산한다. 로그-온 모듈(308A)은 계산된 체크섬과 보호 동적-링크 라이브러리(306B)에 의해 반환된 체크섬이 일치하는지를 판정하는 검사를 수행한다. 체크섬이 일치하지 않는다면, 로그-온 모듈(308A)은 시스템이 변조되었던 것이라고 결론짓는다.
도 4a 내지 4z는 소프트웨어 변조를 방지하기 위한 방법(400)을 도시한다. 명료함을 위하여, 이하 방법(400)의 상세한 설명은 도 2a의 소프트웨어 컴포넌트(200, 202, 204, 및 206), 도 3a 내지 3b의 로그-온 모듈(308A), 및 보호 동적-링크 라이브러리(306B)에 관련하여 도시된 각종 구성요소들을 참조한다. 시작 블록으로부터, 방법(400)은 연속 단말("단말 A")과 종료 단말("단말 B") 사이에 정의된 방법 단계 세트(402)로 진행된다. 방법 단계 세트(402)는 소프트웨어 변조를 방지하기 위한 소프트웨어 일부분의 난독화 기술을 기술한다.
(도 4c의) 단말 A로부터, 방법(400)은 소프트웨어 변조를 방지하는 소프트웨어 일부분을 실행하는, 보호 동적-링크 라이브러리에 대하여 소스 코드가 생성되는 블록(414)으로 진행된다. 블록(416)을 참조하면, 소프트웨어 코드가 컴파일되고 링킹되어 보호 동적-링크 라이브러리(DLL)를 생성한다. 그 다음, 블록(418)에서, 필드, 메소드, 및 클래스의 이름들을 포함하는 난독화 제어 파일이 생성된다. 그 다음 방법(400)은 보호 DLL 및 난독화 제어 파일을 입력으로서 이용하여 난독화가 실행되는 블록(420)으로 진행된다. 블록(422)을 참조하면, 제어 흐름, 및 필드, 메소드, 클래스의 이름의 난독화된 곳인, 난독화된 DLL이 생성된다. 난독화는 엔지니어의 보호 동적-링크 라이브러리를 역설계하기를 시도하는 해커가 보호 동적-링크 라이브러리를 디버그하는 것을 어렵게 만든다. 난독화의 일례는 보호 동적-링크 라이브러리에 점프 명령어 삽입 또는 프로그래밍 명령어의 재정렬이다.
상술한 난독화는 불법 목적으로 소프트웨어를 리버스 엔지니링하는 것을 시도하는 디컴파일러를 좌절시키도록 소프트웨어를 어셈블링할 때 심볼의 재명명을 제공하는 다수의 적절한 기법들 중 하나이다. 난독화는 불법 디컴파일로부터의 보호를 향상시키면서도 애플리케이션이 손상되지 않은 상태를 유지시킨다. 난독화의 목적은 소프트웨어 일부분의 다수의 양상의 지식적인 개념을 이해하는 해커의 마음에 부담을 주어 혼란스럽게 하는 것이다. 난독화는 해커인 인간 해석자(interpreter)를 혼란시키는 것 뿐만 아니라, 로직의 확실성에 의존하는 디컴파일러를 교란시킬 수도 있을 것이다. 난독화는 이 중 몇몇이 잘못된 로직에 도달하는 무수한 디컴파일 가능성을 생성하여, 변환을 불확실하게 한다.
(도 4d의) 단말 A1으로부터, 방법(400)은 난독화된 보호 DLL의 체크섬을 계산하는 블록(426)으로 진행한다. 그 다음에 블록(428)에서 카달로그 파일이 생성된다. 카달로그 파일의 한 적절한 구현은 데이터베이스이다. 카달로그는 각 소프트웨어 컴포넌트의 이름, 그 버전, 및 그 시그니처(예를 들면, 체크섬)를 포함한다. 그 다음, 블록(430)에서, 난독화된 보호 DLL의 체크섬이 카달로그 파일에 위치한다. 그 다음 방법(400)은 이 방법이 난독화된 보호 DLL의 체크섬을 포함하는 카달로그 파일의 체크섬을 계산하는 블록(432)으로 진행한다. 블록(434)을 참조하면, 카달로그 파일의 체크섬 또한 개인 키를 이용하여 암호화된다. 다시 말하면, 카달로그 파일은 개인 키에 의해 디지털적으로 서명된다. 이 시점에서, 방법(400)은 검사될 수 있는 카달로그 파일 및 난독화된 보호 DLL을 생성한다. 검사는 난독화된 보호 DLL이 특정 소프트웨어 제조업체 등의 알려진 소스로부터 유래하였고 난독화된 보호 DLL이 변조되지 않았음을 보장하는 것을 돕는다. 그 다음 방법(400)은 종료 단말 B로 계속된다.
(도 4A의) 단말 B로부터, 방법(400)은 연속 단말("단말 C")과 종료 단말("단말 D") 사이에 정의된 방법 세트(404)로 진행된다. 방법 단계 집합(404)은 컴퓨팅 기기 상에, 소프트웨어 변조를 방지하기 위한 소프트웨어 일부분들을 구현하는 보호 동적-링크 라이브러리의 구축을 기술한다.
(도 4e의) 단말 C로부터, 방법(400)은 이 방법이 소프트웨어 일부분에 대한 제품 식별자를 획득하고 이 식별자를 레지스트리 등의 중앙 계층 데이터에 저장하는 블록(438)으로 진행한다. 사용자가 소프트웨어 일부분의 패키징에 통상적으로 첨부되는 키로부터 획득할 수 있는 제품 식별자가 이 사용자에 의해 제공된다. 블록(440)을 참조하면, 이 방법은 제품 식별자를 디코딩하여 소프트웨어 일부분을 특징짓는 종류를 식별한다. 소프트웨어 일부분은 시스템 소프트웨어, 애플리케이션 소프트웨어, 또는 네트워크 소프트웨어 등의 임의의 적절한 소프트웨어 일부분을 포함할 수 있다. 그 다음, 판정 블록(442)에서, 식별된 종류에 대한 보호가 유용한지를 판정하기 위한 검사가 이루어진다. 결과가 "아니오"라면, 방법(400)은 다른 연속 단말("단말 L")로 진행하여 실행을 종료한다. 한편, 판정 블록(442)에서의 검사 결과가 "예"라면, 방법(400)은 설치 동적-링크 라이브러리가 호출되는 블록(444)으로 진행한다. 블록(446)을 참조하면, 설치 동적-링크 라이브러리가 제품 식별자에 기초하여, 레지스트리 등의 중앙 계층 데이터베이스에 활성화 키를 설치한다. 활성화 키는 컴퓨팅 기기로 하여금 시간 소모적일 수 있는 제품 식별자 디코딩을 하지 않고 소프트웨어 변조를 방지시키기 위한 소프트웨어 일부분이 컴퓨팅 기기 상에 실행되는지를 신속하게 체크하고 판정할 수 있게 한다.
(도 4f의) 단말 C1로부터 설치 동적-링크 라이브러리는 레지스트리 등의 중앙 계층 데이터베이스로 암호화된 보호 프로파일을 설치한다. 블록(450)을 참조하면, 컴퓨팅 기기를 시동시킬 때, 시스템 소프트웨어 등의 소프트웨어 일부분의 로그-온 모듈이 실행된다. 그 다음, 블록(452)에서, 로그-온 모듈은 레지스트리 등의 중앙 계층 데이터베이스에 저장된 제품 식별자를 디코딩하여, 소프트웨어 일부분을 특징짓는 제품 종류를 획득한다. 방법(400)은 식별된 제품 종류에 대한 보호가 유용한지를 판정하기 위한 검사가 수행되는 판정 블록(454)으로 진행한다. 판정 블록(454)에서의 검사 결과가 "아니오"라면, 방법(400)은 실행을 종료하는 단말 L로 진행된다. 반면에, 판정 블록(454)에서의 검사 결과가 "예"라면, 블록(456)에 나타난 바와 같이 로그-온 모듈(308A)은 난독화된 보호 동적-링크 라이브러리를 컴퓨팅 기기에 로딩하는 것을 시도한다. 이 방법은 다른 연속 단말("단말 C2")로 계속된다.
(도 4g의) 단말 C2로부터, 방법(400)은 이 방법이 설치될 보호 동적-링크 라이브러리의 체크섬이 계산하는 블록(458)으로 진행한다. 이하 명료함을 위하여 난독화된 보호 동적-링크 라이브러리는 보호 동적-링크 라이브러리로 알려질 것임을 유의한다. 블록(460)을 참조하면, 이 방법은 시스템 파일에 포함된 카달로그 파일의 리스트를 획득한다. 그 다음, 블록(462)에서, 방법은 리스트로부터 카달로그 파일을 취득하고 카달로그 파일에 포함된 체크섬을 찾기 위한 검색을 한다. 시그니처의 검사 및 복호화가 일어난다. 방법(400)은 2개의 체크섬들 간에 일치가 있는지를 판정하기 위한 검사가 수행되는 판정 블록(464)으로 진행한다. 판정 블록(464)에서의 검사 결과가 "아니오"라면, 방법(400)은 다른 연속 단말("단말 C3")로 계속된다. 반면에, 판정 블록(464)에서의 검사 결과가 "예"라면, 방법(400)은 다른 연속 단말("단말 C4")로 계속된다. 도 4g에 관련하여 기술된 처리 단계들은 소프트웨어 이미지의 진품 여부(즉, 소프트웨어 이미지가 처음부터 원하는 소프트웨어 제조업체에 의해 출하되고 배포되었는지)를 판정하기 위하여 난독화된 보호 동적-링크 라이브러리의 소프트웨어 이미지를 검사하는 처리를 기술한다. 변조가 이루어졌다면, 검사 처리는 로딩될 난독화된 보호 동적-링크 라이브러리의 소프트웨어 이미지가 변조되었음을 인지하고, 컴퓨팅 기기 종료 등의 보안 오류 조치가 취해져야할 수 있다.
(도 4h의) 단말 C3로부터, 방법(400)은 검색할 카달로그 파일이 더 있는지를 판정하기 위한 검사가 수행되는 판정 블록(466)으로 진행한다. 판정 블록(466)에서의 검사 결과가 "예"라면, 방법은 다른 연속 단말("단말 C5")로 진행한다. (도 4g의) 단말 C5로부터, 방법(400)은 상술한 처리 단계들이 반복되는 블록(462)으로 다시 루핑한다. 반면에, 판정 블록(466)에서의 검사 결과가 "아니오"라면, 방법(400)은 설치될 보호 동적-링크 라이브러리가 카달로그 파일에 부수적으로 딸려온 진품이 아니므로 변조가 되었을 수 있음을 나타내는 블록(468)으로 계속된다. 그 다음 방법(400)은 다른 연속 단말("단말 C7")로 계속된다. (도 4h의) 단말 C4로부터, 방법(400)은 신뢰되는 카달로그 파일 및 보호 동적-링크 라이브러리가 존재하는지 여부를 판정하기 위한 검사가 수행되는 판정 블록(470)으로 진행된다. 판정 블록(470)에서의 검사 결과가 "아니오"라면, 방법(400)은 블록(462)으로 다시 루핑하여 상술한 처리 단계들이 반복되는 단말 C5로 진행한다. 판정 블록(470)에서 기술된 검사의 한 적절한 구현은 마이크로소프트 윈도우즈에 의해 제공된 신뢰-체킹 애플리케이션 프로그래밍 인터페이스 세트이다. 그렇지 않고, 판정 블록(470)에서의 검사 결과가 "예"라면, 방법은 다른 연속 단말("단말 C6")로 진행된다.
(도 4i의) 단말 C6로부터, 방법(400)은 이 방법이 신뢰-체킹 애플리케이션 프로그래밍 인터페이스 세트를 호출함으로써 찾아낸 카달로그 파일을 검사하고 반환 값으로서 상태 데이터를 획득하는 블록(472)으로 진행한다. 블록(474)에서 방법은 신뢰-체킹 애플리케이션 프로그래밍 인터페이스 세트를 통하여 획득된 상태 데이터를 이용하여 신뢰 제공자 정보를 획득한다. 그 다음, 블록(476)에서, 방법은 획득된 신뢰 제공자 정보를 이용하여 인증 체인으로부터 기본 서명자(base signer)를 획득한다. 방법(400)은 이 방법이 기본 서명자의 환경(context)을 이용하여 인증 체인의 마지막 요소를 검사하는 블록(478)으로 진행한다. 판정 블록(480)을 참조하면, 마지막 요소가 적절한 공개 키를 포함하는였는지를 판정하기 위한 검사가 수행된다. 반면에, 판정 블록(480)에서의 검사 결과가 "아니오"라면, 방법은 블록(462)으로 다시 루핑하여 상술한 처리 단계들이 반복되는 단말 C5로 계속된다.
(도 4j의) 단말 C7로부터, 방법(400)은 보호 동적-링크 라이브러리가 성공적으로 로딩되었는지를 판정하기 위한 검사가 수행되는 판정 블록(482)으로 진행된다. 판정 블록(482)에서의 검사 결과가 "아니오"라면, 블록(484)에 나타난 바와 같이, 방법은 시스템을 종료하기 시작한다. 방법(400)은 단말 L로 진행하고 실행을 종료한다. 반면에, 판정 블록(482)에서의 검사 결과가 "예"라면, 방법(400)은 이 방법이 종료될 수 없는 스레드에서 실행되는 제1 타이머를 생성하는 블록(486)으로 진행한다. 그 다음 방법은 연속 단말("단말 C8")과 종료 단말 D로 나타낸 2개의 실행 경로로 계속된다. 이렇게 도 4j의 실행 경로가 분리되는 것은 컴퓨팅 기기 상에 실행되는 몇몇의 소프트웨어 일부분이 동시에 발생하는 것을 예시하는 것이다.
(도 4k의) 단말 C8로부터, 방법(400)은 미리-구성된 기간이 만료되었는지를 판정하는 검사가 수행되는 판정 블록(488)으로 진행한다. 판정 결과가 "아니오"라면, 방법(400)은 상술한 처리 단계들이 반복되는 판정 블록(488)으로 다시 루핑한다. 판정 블록(488)에서의 검사 결과가 "예"라면, 방법(400)은 이 방법이 레지스트리 등의 중앙 계층 데이터베이스에 저장되는 활성화 키를 체크하여 제품 클레스를 디코딩하는 블록(490)으로 진행한다. 판정 블록(492)을 참조하면 디코딩된 제품 종류에 대한 보호가 유용한지를 판정하기 위한 다른 검사가 수행된다. 판정 블록(492)에서의 검사 결과가 "예"라면, 방법(400)은 상술한 처리 단계들이 반복되는 단말 C8로 다시 루핑한다. 판정 블록(480)에서의 검사 결과가 "예"라면, 방법(400)은 단말 C7로 계속된다. 반면에, 판정 블록(492)에서의 검사 결과가 "아니오"라면, 코어 애플리케이션 프로그래밍 인터페이스가 변조된 것어서 이 방법은 컴퓨팅 기기를 종료하는 등의 보안 조치를 취한다. 블록(494) 참조한다. 그 다음 방법(400)은 단말 L로 진행하고 실행을 종료한다.
(도 4a의) 단말 D로부터, 방법(400)은 연속 단말("단말 E")과 종료 단말("단말 F") 사이에 정의된 방법 단계 세트(406)로 진행한다. 방법 단계 세트(406)는 컴퓨팅 기기가 지원될 수 있는 기기의 종류에 속하는지를 판정한다.
(도 4l의) 단말 E로부터, 방법(400)은 이 방법이 컴퓨팅 기기의 CPU 상에 명령어 세트가 존재하는지 검사하여 그 식별자를 획득하는 블록(496)으로 진행한다. 블록(498)에서 명령어 세트가 유용한지를 판정하는 검사가 수행된다. 판정 블록(498)에서의 검사 결과가 "아니오"라면, 블록(499)에 나타난 바와 같이 컴퓨팅 기기의 CPU는 자가 식별을 지원하지 않는 아키텍처를 가진다. 한 적절한 결론은 CPU가 소프트웨어 변조를 방지하기 위한 소프트웨어 일부분들을 지원할 수 있는 것이다. 그 다음 방법(400)은 종료 터미널 F로 진행한다. 반면에, 판정 블록(498)에서의 검사 결과가 "예"라면, 블록(497)에서 로그-온 모듈은 보호 동적-링크 라이브러리와 통신하여 배타적인 CPU 종류에 관련된 암호화된 보호 프로파일을 액세스한다. 다시 말하면, 컴퓨팅 기기를 동작시키는 각종 파라미터를 기술하는 컴퓨팅 기기 상에 설치된 파일이 존재한다. 예를 들면, 언어 파일은 운영 체제가 사용자에게 정보를 표시하는 데에 이용되는 언어를 기술한다. 다른 예로서, 하드웨어 파일은 운영 체제가 지원하는 컴퓨팅 기기 일부분을 기술한다. 문제는 해커 또는 악성 소프트웨어에 의해 파일들이 쉽게 변조될 수 있는 것이다. 컴퓨팅 기기 상에 설치된 원본 파일을 나타내는 체크섬이 암호화된 보호 프로파일 내에 포함된다. 원본 파일이 변조되었다면, 암호화된 보호 프로파일에 저장된 체크섬과 변조된 파일은 일치하지 않아, 원본 파일이 변조되었음을 알 수 있다. 예를 들면, 해커가 지원불가능한 컴퓨팅 기기를 지원하는 것으로 운영 체제를 속이도록 하드웨어 파일을 변경하였다면, 변경된 하드웨어 파일의 체크섬은 암호화된 보호 파일에 저장된 체크섬과 달라질 수 있어, 변조를 판정할 수 있게 된다. 도 4a를 다시 참조해 보면, 블록(495)에서 로그-온 모듈은 보안을 향상시키는 데에 이용되는 임의 솔트 값의 보호 동적-링크 라이브러리로 전달된다. 임의 솔트 값은 함수 호출을 못하게 하거나 차단시키는 것을 어렵게 한다. 이하 기술될 바와 같이, 임의 솔트 값은 보호 동적-링크 라이브러리에 의해 송신된 데이터 및 임의 솔트 값에 기초하는 체크섬의 계산에 이용된다. 그 체크섬은 변조가 일어나는지를 판정하는 보호 동적-링크 라이브러리에 의해 계산된 체크섬과 비교된다. 그 다음 방법(400)은 다른 연속 단말("단말 E1")로 계속된다.
(도 4m의) 단말 E1로부터, 방법(400)은 보호 동적-링크 라이브러리가 개인 라이브러리 키를 이용하여 암호화된 보호 프로파일("프로파일")을 복호화하는 블록(493)으로 진행한다. 블록(491)에서 보호 동적-링크 라이브러리는 프로파일을 시스템과 비교한다. 그 다음, 판정 블록(489)에서, 프로파일이 발견되었는지를 판정하기 위한 검사가 수행된다. 각 프로파일은 64 비트와 같은 복수의 비트인 것이 바람직한 이름을 가진다. 판정 블록(489)에서의 검사 결과가 "아니오"라면, 방법(400)은 상술한 처리 단계들을 반복하는 블록(493)으로 다시 루핑한다. 반면에, 판정 블록(489)에서의 검사 결과가 "예"라면, 방법(400)은 보호 동적-링크 라이브러리가 프로파일의 식별자, 그 데이터, 비교 결과 및 솔트 값에 대한 체크섬을 계산하는 블록(487)으로 진행한다. 블록(485)에서 보호 동적-링크 라이브러리는 결과 데이터 구조, 프로파일의 검증 블랍, 및 계산된 체크섬을 반환한다. 그 다음 방법은 다른 연속 단말("단말 E2")로 계속된다.
(도 4n의) 단말 E2로부터, 방법(400)은 로그-온 모듈이 개인 호출 키를 이용하여 검증 블랍을 복호화하고 검사 체크섬을 획득하는 블록(483)으로 진행한다. 블록(481)에서 로그-온 모듈은 공개 호출 키를 이용하여 체크섬의 서명을 검사한다. 그 다음, 블록(479)에서, 로그-온 모듈은 복호화된 검사 체크섬, 수신된 결과 데이터 구조, 및 솔트 값으로부터 체크섬을 계산한다. 방법(400)은 이 방법이 로그-온 모듈에 의해 계산된 체크섬과 보호 동적-링크 라이브러리를 비교하는 블록(477)으로 진행한다. 판정 블록(475)에서 체크섬들이 일치하는지를 판정하기 위한 검사가 수행된다. 판정 블록(475)에서의 검사 결과가 "아니오"라면, 방법(400)은 단말 L로 계속되고 실행은 종료된다. 그렇지 않고, 판정 블록(475)에서의 검사 결과가 "예"라면, 방법(400)은 다른 연속 단말("단말 E3")로 계속된다.
(도 4o의) 단말 E3로부터, 방법(400)은 이 방법이 프로파일로부터 배타적인 컴퓨팅 기기 종류들의 리스트를 추출하는 블록(473)으로 진행한다. 그 다음 블록(471)에서 방법은 컴퓨팅 기기로 하여금 CPU 정보(예를 들면, 벤더 신원, 유형, 계열, 모델 번호, 브랜드 신원, 및 특징 세트)를 검토하도록 한다. 그 다음, 판정 블록(469)에서, 벤더 신원이 배타적인 리스트 상에 있는지를 판정하기 위한 검사가 수행된다. 판정 블록(469)에서의 검사 결과가 "아니오"라면, 방법(400)은 단말 F로 계속된다. 그렇지 않고, 검사 결과가 "예"라면, 방법은 다른 연속 단말("단말 E4")로 계속된다.
(도 4p의) 단말 E4로부터, 방법(400)은 유형, 계열, 및 모델 번호가 배타적인 리스트 상에 있는지 판정하기 위한 검사가 수행되는 판정 블록(467)으로 계속된다. 판정 블록(467)에서의 검사 결과가 "예"라면, 방법(400)은 다른 연속 단말("단말 E7")로 계속된다. 그렇지 않고, 판정 블록(467)에서의 검사 결과가 "아니오"라면, 방법(400)은 브랜드 신원 및 특징 세트가 배타적인 리스트 상에 있는지를 판정하기 위한 검사가 수행되는 다른 판정 블록(465)으로 계속된다. 판정 블록(465)에서의 검사 결과가 "예"라면, 방법(400)은 단말 E7로 계속된다. 그렇지 않고, 판정 블록(465)에서의 검사 결과가 "아니오"라면, 방법(400)은 다른 연속 단말("단말 E5")로 계속된다.
(도 4q의) 단말 E5로부터, 방법(400)은 컴퓨팅 기기 신원의 CPU, 즉 중앙 처리 장치를 결정하기 위한 확장된 명령어가 존재하는지를 판정하는 검사가 수행되는 판정 블록(463)으로 계속된다. 판정 블록(463)에서의 검사 결과가 "아니오"라면, 방법은 단말 F로 계속된다. 그렇지 않고, 판정 블록(463)에서의 검사 결과가 "예"라면, 블록(461)에서 방법은 컴퓨팅 기기의 CPU, 즉 중앙 처리 장치의 이름을 획득하기 위한 확장된 명령어를 호출한다. 그 다음, 블록(459)에서, 방법은 중앙 처리 장치의 캐쉬 사이즈를 획득하기 위한 확장된 명령어를 호출한다. 방법(400)은 다른 연속 단말("단말 E6")로 계속된다.
(도 4r의) 단말 E6로부터, 방법(400)은 중앙 처리 장치의 이름이 배타적인 리스트 상에 있는지를 판정하는 검사가 수행되는 판정 블록(457)으로 진행한다. 판정 블록(457)에서의 검사 결과가 "예"라면, 방법은 단말 E7로 계속된다. 판정 블록(457)에서의 검사 결과가 "아니오"라면, 판정 블록(455)에서 CPU의 캐쉬 사이즈가 배타적인 리스트 상에 있는지를 판정하기 위한 다른 검사가 수행된다. 판정 블록(455)에서의 검사 결과가 "예"라면, 방법(400)은 단말 E7로 계속된다. 그렇지 않고, 결과가 "아니오"라면, 방법(400)은 단말 F로 계속된다.
(도 4s의) 단말로부터, 블록(455)에서 방법은 컴퓨팅 기기 상에 어떠한 보호도 유용하지 않다는 오류 메시지를 발행하고 시스템을 종료하기 시작한다. 그 다음 방법(400)은 단말 L로 계속되고 실행을 종료한다.
(도 4b의) 단말 F로부터, 방법(400)은 연속 단말("단말 G")과 종료 단말("단말 H") 사이에 정의된 방법 단계 세트(408)로 계속된다. 방법 단계 세트(408)는 설치 파일이 변조되었는지 검사한다.
(도 4s의) 단말 G로부터, 블록(453)에서 로그-온 모듈은 보호 동적-링크 라이브러리와 통신하여 컴퓨팅 기기 상의 중대한 파일과 관련된 암호화된 보호 파일을 액세스한다. 블록(451)을 참조하면 (도시된 일련의) 도 4l 내지 4n의 단계들(495 내지 475)은 컴퓨팅 기기 상의 중대한 파일에 관련된 암호화된 보호 프로파일을 발견하는 관점에서 실행된다. 그 다음, 블록(449)에서, 방법은 프로파일로부터 중대한 파일 리스트를 추출한다. 블록(447)에서 컴퓨팅 기기 상의 중대한 파일이 변경되었는지 판정하는 검사가 수행된다. 판정 블록(447)에서의 검사 결과가 "예"라면, 방법(400)은 단말 L로 계속되고 실행을 종료한다. 그렇지 않고, 판정 블록(447)에서의 검사 결과가 "아니오"라면, 방법은 단말 H로 계속된다. 단말 G와 단말 H 사이의 처리 단계들은 동시에 실행되어 컴퓨팅 기기 상의 중대한 파일들이 변경되거나 변조되었는지를 계속하여 체크할 수 있음을 유의한다.
(도 4b의) 단말 H로부터, 방법(400)은 연속 단말("단말 I")과 종료 단말("단말 J") 사이에 정의된 방법 단계 세트(410)로 진행한다. 방법 단계 세트(410)는 레지스트리가 변조되었는지를 판정한다.
(도 4t의) 단말 I로부터, 블록(445)을 참조하면, 시동 시에, 로그-온 모듈은 시스템 환경의 레지스트리의 값 및 키를 보호하기 위해 보호 동적-링크 라이브러리의 보호 함수를 호출한다. 블록(443)에서 보호 동적-링크 라이브러리는 시스템 환경의 레지스트리의 각종 키 및 값을 보호하기 위한 스레드를 생성한다. 그 다음, 블록(441)에서, 보호 동적-링크 라이브러리는 방금 생성된 스레드에 대한 핸들을 로그-온 모듈에 반환한다. 방법(400)은 이 방법이 시스템 환경에서 레지스트리의 값 및 키를 보호하는 스레드의 존속을 체크하는 타이머를 생성하는 블록(439)으로 진행한다. 그 다음, 방법(400)은 연속 단말("단말 I2"), 판정 블록(437), 및 다른 연속 단말("단말 I4")로 나타낸 3개의 독립적인 실행 경로로 진행한다. 이들 독립적인 실행 경로는 동시 발생을 나타낸다. 판정 블록(437)에서 미리-구성된 기간이 만료되었는지를 판정하기 위한 검사가 수행된다. 판정 블록(437)에서의 검사 결과가 "아니오"라면, 방법(400)은 다른 연속 단말("단말 I3")로 진행하고 상술한 처리 단계가 반복되는 판정 블록(437)으로 다시 루핑한다. 그렇지 않고, 판정 블록(437)에서의 검사 결과가 "예"라면, 방법(400)은 다른 연속 단말("단말 I1")로 계속된다.
(도 4u의) 단말 I1으로부터, 방법(400)은 스레드가 종료되었는지 판정하기 위한 검사가 수행되는 판정 블록(435)으로 진행한다. 판정 블록(435)에서의 검사 결과가 "아니오"라면, 방법은 스레드가 보류되었는지를 판정하기 위한 다른 검사가 수행되는 판정 블록(433)으로 계속된다. 판정 블록(433)에서의 검사 결과가 "아니오"라면, 방법(400)은 단말 I3로 계속되어 상술한 처리 단계가 반복되는 판정 블록(437)으로 다시 루핑한다. 판정 블록(435, 433)에서의 검사 결과가 "예"라면, 방법(400)은 시스템이 변조되었다고 여기는 블록(431)으로 진행하여 방법은 시스템을 종료하기 시작한다. 그 다음 방법(400)은 단말 L로 진행하고 실행을 종료한다.
(도 4v의) 단말 I2로부터, 방법(400)은 스레드가 보호 동적-링크 라이브러리와 통신하여 보호될 시스템 레지스트리 키 및 값의 리스트를 액세스하는 블록(429)으로 진행한다. 블록(427)에 나타난 바와 같이, 도 4l 내지 4n의 (도시된 일련의) 단계들(495 내지 475)이 수행된다. 그 다음, 블록(425)에서, 스레드는 레지스트리 키를 보호하기 위하여 임의의 변경들의 통지에 가입한다. 판정 블록(423)에서 변경의 통지가 있는지를 판정하기 위한 검사가 수행된다. 판정 블록(423)에서의 검사 결과가 "아니오"라면, 방법은 상술한 처리 단계가 반복되는 판정 블록(423)으로 다시 루핑한다. 그렇지 않고, 판정 블록(423)에서의 검사 결과가 "예"라면, 블록(421)에서 방법은 변조된 키 및 그 값을 교정한다. 그 다음 방법(400)은 상술한 처리 단계들이 반복되는 판정 블록(423)으로 다시 루핑한다.
(도 4w의) 단말 I4로부터, 방법(400)은 사용자에 의한 로그-온 중에, 로그-온 모듈이 사용자 환경의 레지스트리의 값 및 키를 보호하기 위한 보호 동적-링크 라이브러리의 보호 함수를 호출하는 블록(419)으로 진행한다. 블록(417)에서 보호 동적-링크 라이브러리는 사용자 환경에서 레지스트리의 각종 키 및 값을 보호하기 위한 스레드를 생성한다. 그 다음, 블록(415)에서, 보호 동적-링크 라이브러리는 방금 생성된 스레드에 대한 핸들을 로그-온 모듈에 반환한다. 방법(400)은 이 방법이 사용자 환경의 레지스트리의 값 및 키를 보호하는 스레드의 존속을 체크하는 타이머를 생성하는 블록(413)으로 진행한다. (도시된 일련의) 도 4t 내지 4u의 단계들(437 내지 421)은 사용자 환경에 대해 실행된다. 그 다음 방법(400)은 단말 J로 계속된다.
(도 4b의) 단말 J로부터, 방법(400)은 연속 단말("단말 K")과 종료 단말("단말 L") 사이에 정의된 방법 단계 세트(412)로 진행한다. 방법 세트(412)는 서비스들이 변조되었거나 권한이 없는 서비스가 수행되고 있는지를 판정한다. (도 4x의) 단말 k로부터, 시동 시에, 로그-온 모듈은 권한이 없는 서비스의 실행을 방지하기 위한 보호 동적-링크 라이브러리의 보호 함수를 호출한다. 블록(407)에서 보호 동적-링크 라이브러리는 권한이 없는 서비스의 실행을 방지하기 위한 스레드를 생성한다. 그 다음, 블록(405)에서, 보호 동적-링크 라이브러리는 방금 생성된 스레드에 대한 핸들을 로그-온 모듈에 반환한다. 그 다음 방법(400)은 이 방법이 권한이 없는 서비스들의 실행을 방지하는 스레드의 존속을 체크하는 타이머를 생성하는 블록(403)으로 계속된다. 블록(401)을 참조하면 도 4t 내지 4u의 단계(437 내지 431)가 실행된다. 그 다음, 블록(401A)에서, 스레드는 보호 동적-링크 라이브러리와 통신하여 권한이 없는 서비스들의 리스트에 관련된 암호화된 보호 프로파일을 액세스한다. 그 다음 방법(400)은 다른 연속 단말("단말 K1")로 계속된다.
(도 4y의) 단말 K1으로부터, 도 4l 내지 4n의 단계들(495 내지 475)이 수행된다. 판정 블록(401C)에서 권한이 없는 서비스가 실행되는지를 판정하기 위한 검사가 수행된다. 판정 블록(401C)의 검사 결과가 "아니오"라면, 방법(400)은 다른 연속 단말("단말 K2")로 계속되다. 그렇지 않고, 판정 블록(401C)에서의 검사 결과가 "예"라면, 방법(400)은 이 방법이 권한이 없는 서비스에 의존하는 모든 서비스들을 중지시키는 블록(401D)으로 진행한다. 그 다음 블록(401E)에서 권한이 없는 서비스가 실행 목록으로부터 삭제된다.
(도 4j의) 단말 K2로부터, 방법(400)은 권한이 없는 서비스가 더 있는지 판정하기 위한 검사가 수행되는 판정 블록(401F)으로 진행한다. 판정 블록(401F)에서의 검사 결과가 "예"라면, 방법은 다른 연속 단말("단말 K3")로 계속된다. (도 4y의) 단말 K3로부터, 방법(400)은 상술한 처리 단계가 반복되는 판정 블록(401C)으로 다시 루핑된다. 그렇지 않고, 판정 블록(401F)에서의 검사 결과가 "아니오"라면, 방법(400)은 스레드가 미리-구성된 기간 동안 슬립(sleep) 상태에 있는 블록(401G)으로 계속된다. 그 다음 방법(400)은 상술한 처리 단계들이 반복되는 단말 K3을 통하는 판정 블록(401C)으로 다시 루핑된다. 단말 K와 L 사이에 정의된 방법 단계 세트(412)와 관련하여 기술된 단계들은 다른 방법 단계 세트와 동시에 실행되는 것이 바람직하다.
본 발명의 바람직한 실시예가 도시되고 기술되었지만, 본 발명의 사상 및 범위로부터 벗어나지 않는 다양한 변경이 이루어질 수 있다고 인식될 것이다.
독점적인 특징 또는 특권이 청구된 본 발명의 실시예가 이하 정의된다.

Claims (10)

  1. 컴퓨팅 시스템에 의해 실행되는 경우, 소프트웨어 변조로부터 보호하기 위한 동작들을 수행하는 컴퓨터-실행가능 명령어들이 기억되어 있는 하나 이상의 컴퓨터-판독가능 기억 매체로서,
    상기 동작들은,
    소프트웨어 변조로부터 보호하도록 구성된, 난독화된 보호 동적 링크 라이브러리(an obfuscated protection dynamic link library)를 제공하는 동작; 및
    데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부(originality)를 검증하고, 권한이 없는 서비스의 실행을 중지시키도록 상기 난독화된 보호 동적 링크 라이브러리를 실행시키는 동작
    을 포함하는 하나 이상의 컴퓨터-판독가능 기억 매체.
  2. 제1항에 있어서,
    소프트웨어 변조로부터 보호하기 위한 상기 동작들은, 상기 컴퓨팅 시스템에 의해 상기 난독화된 보호 동적 링크 라이브러리를 생성하도록 실행가능한 난독화 제어 파일(an obfuscation control file)을 생성하는 동작을 더 포함하며,
    상기 난독화 제어 파일은, 난독화되지 않은 보호 동적 링크 라이브러리(a non-obfuscated protection dynamic link library) 내의 클래스의 이름, 메소드, 및 필드를 포함하는 하나 이상의 컴퓨터-판독가능 기억 매체.
  3. 제1항에 있어서,
    소프트웨어 변조로부터 보호하기 위한 상기 동작들은, 상기 컴퓨팅 시스템에 의해, 난독화되지 않은 보호 동적 링크 라이브러리 내의 클래스의 이름, 메소드, 및 필드를 난독화하기 위하여 상기 난독화 제어 파일을 실행시킴으로써 상기 난독화된 보호 동적 링크 라이브러리를 생성하는 동작을 더 포함하는 하나 이상의 컴퓨터-판독가능 기억 매체.
  4. 제1항에 있어서,
    소프트웨어 변조로부터 보호하기 위한 상기 동작들은, 상기 난독화된 보호 동적 링크 라이브러리의 체크섬을 포함하는 카탈로그 파일을 저장하는 동작을 더 포함하는 하나 이상의 컴퓨터-판독가능 기억 매체.
  5. 제4항에 있어서,
    소프트웨어 변조로부터 보호하기 위한 상기 동작들은, 비밀 개인 키를 이용하여 디지털 서명된 카탈로그 파일의 암호화 체크섬 및 상기 카탈로그 파일을 포함하는 디지털 서명된 카탈로그 파일을 저장하는 동작을 더 포함하는 하나 이상의 컴퓨터-판독가능 기억 매체.
  6. 컴퓨팅 시스템으로서,
    하나 이상의 프로세서;
    메모리; 및
    상기 하나 이상의 프로세서에 의해 실행되는 경우, 상기 컴퓨팅 시스템으로 하여금 데이터베이스가 변조되었는지 모니터링하고, 파일 세트의 진품 여부를 검증하고, 권한이 없는 서비스의 실행을 중지시키게 하는 난독화된 컴퓨터-실행가능 명령어들을 포함하며, 상기 메모리에 저장된 난독화된 보호 동적 링크 라이브러리
    를 포함하는 컴퓨팅 시스템.
  7. 제6항에 있어서,
    상기 난독화된 보호 동적 링크 라이브러리를 생성하기 위해 이용가능한 난독화되지 않은 컴퓨터-실행가능 명령어들을 포함하는, 난독화되지 않은 보호 동적 링크 라이브러리를 생성하도록, 컴파일 및 링크가 가능한 소스 코드를 더 포함하는 컴퓨팅 시스템.
  8. 제7항에 있어서,
    상기 난독화되지 않은 보호 동적 링크 라이브러리 내의 클래스의 이름, 메소드, 및 필드를 포함하며, 상기 메모리에 저장된 난독화 제어 파일을 더 포함하고,
    상기 난독화 제어 파일은, 상기 난독화된 보호 동적 링크 라이브러리를 생성하기 위해 상기 난독화되지 않은 보호 동적 링크 라이브러리 내의 클래스의 이름, 메소드, 및 필드를 난독화하는 데 이용되는 컴퓨팅 시스템.
  9. 제6항에 있어서,
    상기 난독화된 보호 동적 링크 라이브러리의 체크섬을 포함하며, 상기 메모리에 저장된 카탈로그 파일을 더 포함하는 컴퓨팅 시스템.
  10. 제9항에 있어서,
    비밀 개인 키를 이용하여 디지털 서명된 카탈로그 파일의 암호화 체크섬 및 상기 카탈로그 파일을 포함하며, 상기 메모리에 저장되는 디지털 서명된 카탈로그 파일을 더 포함하는 컴퓨팅 시스템.
KR1020117021882A 2004-06-12 2005-06-10 소프트웨어 보안 KR101159487B1 (ko)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US57893704P 2004-06-12 2004-06-12
US60/578,937 2004-06-12
US11/062,238 US7526805B2 (en) 2004-06-12 2005-02-17 Thread protection
US11/061,790 2005-02-17
US11/061,399 US7721340B2 (en) 2004-06-12 2005-02-17 Registry protection
US11/062,237 US7552337B2 (en) 2004-06-12 2005-02-17 Service protection
US11/061,280 2005-02-17
US11/061,411 2005-02-17
US11/061,399 2005-02-17
US11/061,792 2005-02-17
US11/061,411 US7631360B2 (en) 2004-06-12 2005-02-17 Hardware protection
US11/061,792 US7577997B2 (en) 2004-06-12 2005-02-17 Image verification
US11/061,791 2005-02-17
US11/062,238 2005-02-17
US11/061,484 US7640592B2 (en) 2004-06-12 2005-02-17 Installation setup
US11/061,790 US7559091B2 (en) 2004-06-12 2005-02-17 Software obfuscation
US11/061,280 US7891008B2 (en) 2004-06-12 2005-02-17 Profile protection
US11/061,791 US7584509B2 (en) 2004-06-12 2005-02-17 Inhibiting software tampering
US11/062,237 2005-02-17
US11/061,484 2005-02-17
PCT/US2005/020638 WO2005125081A2 (en) 2004-06-12 2005-06-10 Securing software

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077000788A Division KR101203245B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안

Publications (2)

Publication Number Publication Date
KR20110110866A KR20110110866A (ko) 2011-10-07
KR101159487B1 true KR101159487B1 (ko) 2012-06-22

Family

ID=35510448

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020117021880A KR101187554B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안
KR1020117021882A KR101159487B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안
KR1020117021881A KR101187521B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117021880A KR101187554B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117021881A KR101187521B1 (ko) 2004-06-12 2005-06-10 소프트웨어 보안

Country Status (5)

Country Link
US (8) US7559091B2 (ko)
EP (1) EP1757008B1 (ko)
JP (1) JP4729575B2 (ko)
KR (3) KR101187554B1 (ko)
WO (1) WO2005125081A2 (ko)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2778053A (en) * 1954-09-13 1957-01-22 Duro Metal Products Co Separable hinged mounting for motors or the like
AU2001292910B2 (en) * 2000-09-22 2008-05-01 Sca Ipla Holdings, Inc. Systems and methods for preventing unauthorized use of digital content
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
US7788496B2 (en) 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7860239B2 (en) * 2004-07-07 2010-12-28 International Business Machines Corporation Method and apparatus for metering usage of software products using multiple signatures
US7841009B1 (en) * 2004-07-09 2010-11-23 Angel Secure Networks System and method for defending against reverse engineering of software, firmware and hardware
US20060021066A1 (en) * 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
US20060259903A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
US20060259900A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
GB0516471D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Protected software identifiers for improving security in a computing device
US20070192824A1 (en) * 2006-02-14 2007-08-16 Microsoft Corporation Computer hosting multiple secure execution environments
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
US8020001B2 (en) * 2006-02-23 2011-09-13 Qualcomm Incorporated Trusted code groups
US8010947B2 (en) 2006-05-23 2011-08-30 International Business Machines Corporation Discovering multi-component software products based on weighted scores
US7814544B1 (en) * 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking
US7805289B2 (en) * 2006-07-10 2010-09-28 Microsoft Corporation Aligning hierarchal and sequential document trees to identify parallel data
WO2008007305A2 (en) * 2006-07-12 2008-01-17 Koninklijke Philips Electronics N.V. Method and system for obfuscating a gryptographic function
US8392996B2 (en) * 2006-08-08 2013-03-05 Symantec Corporation Malicious software detection
US20080099141A1 (en) * 2006-10-26 2008-05-01 Ashland Inc. Method of producing flexible laminates
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8286138B2 (en) * 2007-01-30 2012-10-09 Microsoft Corporation Multi-threaded detection of a game software debugger
US8356356B2 (en) * 2007-01-30 2013-01-15 Microsoft Corporation Anti-debugger comprising spatially and temporally separate detection and response portions
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US20080229115A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Provision of functionality via obfuscated software
US20080263366A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Self-verifying software to prevent reverse engineering and piracy
US8336107B2 (en) * 2007-04-27 2012-12-18 Angel Secure Networks, Inc. System and methods for defending against root
US8176473B2 (en) * 2007-05-14 2012-05-08 Microsoft Corporation Transformations for software obfuscation and individualization
US9545258B2 (en) 2007-05-17 2017-01-17 Boston Scientific Scimed, Inc. Tissue aperture securing and sealing apparatuses and related methods of use
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US10552701B2 (en) * 2008-02-01 2020-02-04 Oath Inc. System and method for detecting the source of media content with application to business rules
WO2009098630A1 (en) 2008-02-06 2009-08-13 Nxp B.V. Data processing device and method for executing obfuscated programs
EP2243098A2 (en) 2008-02-11 2010-10-27 Nxp B.V. Method of program obfuscation and processing device for executing obfuscated programs
US8208900B2 (en) * 2008-03-04 2012-06-26 Apple Inc. Secure device configuration profiles
US8176337B2 (en) * 2008-03-12 2012-05-08 Apple Inc. Computer object code obfuscation using boot installation
JP5230797B2 (ja) * 2008-04-02 2013-07-10 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ディスクドライブデータの暗号化
US8752185B2 (en) * 2008-05-01 2014-06-10 Yahoo! Inc. Method for media fingerprinting
EP2234031A1 (en) * 2009-03-24 2010-09-29 SafeNet, Inc. Obfuscation
US8474052B2 (en) * 2009-12-09 2013-06-25 Microsoft Corporation User-administered license state verification
US20110225649A1 (en) * 2010-03-11 2011-09-15 International Business Machines Corporation Protecting Computer Systems From Malicious Software
JP2013523043A (ja) 2010-03-22 2013-06-13 エルアールディシー システムズ、エルエルシー ソースデータセットの完全性を識別及び保護する方法
US11297045B2 (en) 2010-03-26 2022-04-05 Kioxia Corporation Information recording apparatus with shadow boot program for authentication with a server
WO2011118034A1 (ja) 2010-03-26 2011-09-29 株式会社 東芝 情報記録装置
JP5585257B2 (ja) * 2010-07-16 2014-09-10 株式会社リコー 画像形成装置、機器システム、プログラム管理方法、プログラム
JP5688458B2 (ja) * 2010-08-05 2015-03-25 ジェムアルト エスアー セキュリティ部品及び携帯通信装置において複数の加入者プロファイルを安全に使用するシステムと方法
TWI420339B (zh) 2010-11-10 2013-12-21 Ind Tech Res Inst 軟體授權系統及方法
US8499173B2 (en) * 2010-11-23 2013-07-30 Lockheed Martin Corporation Apparatus and method for protection of circuit boards from tampering
US8683452B1 (en) * 2010-12-21 2014-03-25 Emc Corporation Dynamically obfuscated javascript
JP5932837B2 (ja) 2011-01-19 2016-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コードを更新および認証するための方法およびシステム、プログラムの完全性を試験する方法およびシステム
US8930717B2 (en) 2011-03-01 2015-01-06 Angel Secure Networks, Inc. Secure processing module and method for making the same
US9058482B2 (en) 2011-03-01 2015-06-16 Angel Secure Networks, Inc. Controlling user access to electronic resources without password
US8893272B2 (en) * 2011-04-29 2014-11-18 Beijing Zhongtian Antai Technology Co., Ltd. Method and device for recombining runtime instruction
US8516273B2 (en) * 2011-05-31 2013-08-20 Asobe Systems Incorporated Porting digital rights management service to multiple computing platforms
US8181035B1 (en) 2011-06-22 2012-05-15 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8261085B1 (en) * 2011-06-22 2012-09-04 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8595510B2 (en) 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
US9519648B2 (en) * 2011-09-27 2016-12-13 International Business Machines Corporation Software detection
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US20140032733A1 (en) 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US8869235B2 (en) * 2011-10-11 2014-10-21 Citrix Systems, Inc. Secure mobile browser for protecting enterprise data
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US8640242B2 (en) * 2011-12-01 2014-01-28 Mcafee, Inc. Preventing and detecting print-provider startup malware
US9052824B2 (en) * 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
US9608881B2 (en) * 2012-04-13 2017-03-28 International Business Machines Corporation Service compliance enforcement using user activity monitoring and work request verification
US10409984B1 (en) * 2012-06-15 2019-09-10 Square, Inc. Hierarchical data security measures for a mobile device
CN102799815B (zh) * 2012-06-29 2015-07-29 安科智慧城市技术(中国)有限公司 一种安全加载程序库的方法和装置
CN104408333B (zh) * 2012-09-24 2017-06-13 江苏理工学院 一种基于片上系统多核融合的软件保护装置
US9774658B2 (en) 2012-10-12 2017-09-26 Citrix Systems, Inc. Orchestration framework for connected devices
US9189645B2 (en) 2012-10-12 2015-11-17 Citrix Systems, Inc. Sharing content across applications and devices having multiple operation modes in an orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US9170800B2 (en) 2012-10-16 2015-10-27 Citrix Systems, Inc. Application wrapping for application management framework
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
GB2505531B (en) * 2012-11-16 2015-01-07 F Secure Corp Methods, systems and apparatus for managing data entries on a database
US9270660B2 (en) 2012-11-25 2016-02-23 Angel Secure Networks, Inc. System and method for using a separate device to facilitate authentication
MX2015007457A (es) * 2012-12-12 2015-09-04 Zeon Corp Composicion de resina de cloruro de vinilo para moldeo en polvo, articulo y laminado moldeado de resina de cloruro de vinilo.
EP2973175B1 (en) * 2013-03-13 2019-07-31 Intel Corporation Managing device driver cross ring accesses
US8875247B2 (en) * 2013-03-14 2014-10-28 Facebook, Inc. Instant personalization security
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US9369449B2 (en) 2013-03-29 2016-06-14 Citrix Systems, Inc. Providing an enterprise application store
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US8850049B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities for a managed browser
US8943592B1 (en) * 2013-07-15 2015-01-27 Eset, Spol. S.R.O. Methods of detection of software exploitation
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
DE102014204417A1 (de) 2014-03-11 2015-09-17 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
US9639673B2 (en) 2014-06-17 2017-05-02 Apple Inc. Protecting software through a fake cryptographic layer
CN104217137B (zh) * 2014-08-29 2017-09-29 广东欧珀移动通信有限公司 一种识别智能终端系统是否被更改的方法及装置
PL3197953T3 (pl) * 2014-09-24 2018-10-31 Evonik Röhm Gmbh Odporna udarnościowo masa formierska z ulepszonym profilem właściwości
US9483381B2 (en) * 2014-12-15 2016-11-01 Dell Products L.P. Obfuscating debugging filenames
US10733594B1 (en) 2015-05-11 2020-08-04 Square, Inc. Data security measures for mobile devices
CN104933332B (zh) * 2015-06-10 2018-07-13 北京北信源软件股份有限公司 一种防止软件被非法卸载的方法及装置
KR20170010574A (ko) 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
US10719379B2 (en) 2016-02-26 2020-07-21 Hewlett Packard Enterprise Development Lp Fault isolation in transaction logs
US10594731B2 (en) 2016-03-24 2020-03-17 Snowflake Inc. Systems, methods, and devices for securely managing network connections
US10546302B2 (en) 2016-06-30 2020-01-28 Square, Inc. Logical validation of devices against fraud and tampering
US10373167B2 (en) 2016-06-30 2019-08-06 Square, Inc. Logical validation of devices against fraud
US10474446B2 (en) * 2016-09-16 2019-11-12 Bank Of America Corporation Installation tool for adhering to enterprise requirements
US10404667B2 (en) 2016-11-17 2019-09-03 Bank Of America Corporation Secure, autonomous file encryption and decryption
US10496993B1 (en) 2017-02-15 2019-12-03 Square, Inc. DNS-based device geolocation
US10552308B1 (en) 2017-06-23 2020-02-04 Square, Inc. Analyzing attributes of memory mappings to identify processes running on a device
US10715536B2 (en) 2017-12-29 2020-07-14 Square, Inc. Logical validation of devices against fraud and tampering
US11005971B2 (en) * 2018-08-02 2021-05-11 Paul Swengler System and method for user device authentication or identity validation without passwords or matching tokens
US11494762B1 (en) 2018-09-26 2022-11-08 Block, Inc. Device driver for contactless payments
US11507958B1 (en) 2018-09-26 2022-11-22 Block, Inc. Trust-based security for transaction payments
JP7084273B2 (ja) * 2018-10-10 2022-06-14 株式会社Nttドコモ 難読化判定装置
WO2021021949A1 (en) 2019-07-29 2021-02-04 Intertrust Technologies Corporation Systems and methods for managing state
US11610004B2 (en) * 2021-04-14 2023-03-21 Bank Of America Corporation System for implementing enhanced file encryption technique

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04107631A (ja) * 1990-08-28 1992-04-09 Seiko Epson Corp 情報処理装置
JPH06242957A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd プログラム実行制御装置
GB9422389D0 (en) * 1994-11-05 1995-01-04 Int Computers Ltd Authenticating access control for sensitive functions
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
CN100365535C (zh) 1995-02-13 2008-01-30 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6006328A (en) * 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US5802368A (en) 1995-09-29 1998-09-01 Informix Software, Inc. Dynamic Library Task Switching
US5794232A (en) 1996-03-15 1998-08-11 Novell, Inc. Catalog services for distributed directories
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
CN1260055A (zh) 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
US20040107368A1 (en) * 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
US20020002678A1 (en) 1998-08-14 2002-01-03 Stanley T. Chow Internet authentication technology
US20020062451A1 (en) * 1998-09-01 2002-05-23 Scheidt Edward M. System and method of providing communication security
US7140005B2 (en) 1998-12-21 2006-11-21 Intel Corporation Method and apparatus to test an instruction sequence
EP1044554B1 (de) * 1998-12-29 2001-06-27 Swisscom Mobile AG Verfahren und system, um benutzern eines telekommunikationsnetzes objekte zur verfügung zu stellen
US6421768B1 (en) * 1999-05-04 2002-07-16 First Data Corporation Method and system for authentication and single sign on using cryptographically assured cookies in a distributed computer environment
US7146505B1 (en) 1999-06-01 2006-12-05 America Online, Inc. Secure data exchange between date processing systems
US6731756B1 (en) 1999-06-21 2004-05-04 Elisar Software Corporation, Inc. Method for securing video images
AU6607000A (en) 1999-07-22 2001-02-13 Open Security Solutions, Llc A computer system and process for accessing an encrypted and self-decrypting digital information product
DE60035324T2 (de) * 1999-10-26 2008-02-28 Iontas Ltd., Moville Überwachung von Rechnerbenutzung
US6898707B1 (en) * 1999-11-30 2005-05-24 Accela, Inc. Integrating a digital signature service into a database
AU2374401A (en) * 1999-12-03 2001-06-12 First Hop Oy A method and a system for obtaining services using a cellular telecommunication system
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
CN100394385C (zh) * 2000-07-25 2008-06-11 麦克罗维西恩公司 确认动态可连接可执行镜像的可靠性的系统和方法
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7000100B2 (en) 2001-05-31 2006-02-14 Hewlett-Packard Development Company, L.P. Application-level software watchdog timer
NL1018494C2 (nl) 2001-07-09 2003-01-10 Koninkl Kpn Nv Methode en systeem voor het door een dienstproces aan een client leveren van een dienst.
US7424615B1 (en) 2001-07-30 2008-09-09 Apple Inc. Mutually authenticated secure key exchange (MASKE)
US20040054952A1 (en) * 2002-09-13 2004-03-18 Morrow James W. Device verification system and method
US7320075B2 (en) 2001-11-20 2008-01-15 Safenet, Inc. Software protection method utilizing hidden application code in a protection dynamic link library object
US7249262B2 (en) 2002-05-06 2007-07-24 Browserkey, Inc. Method for restricting access to a web site by remote users
WO2003100610A1 (en) * 2002-05-28 2003-12-04 Toshiba Corporation System update protocol and bootable cd controller
JP2004013608A (ja) * 2002-06-07 2004-01-15 Hitachi Ltd プログラムの実行および転送の制御
US7318235B2 (en) * 2002-12-16 2008-01-08 Intel Corporation Attestation using both fixed token and portable token
US7607009B2 (en) 2003-02-10 2009-10-20 International Business Machines Corporation Method for distributing and authenticating public keys using time ordered exchanges
US7251732B2 (en) 2003-06-18 2007-07-31 Microsoft Corporation Password synchronization in a sign-on management system
US7281271B1 (en) 2003-09-25 2007-10-09 Symantec Corporation Exception handling validation system and method
US7478146B2 (en) * 2003-11-03 2009-01-13 Nokia Corporation System, apparatus, and method for communicating capabilities of a mobile device
US7555568B2 (en) * 2004-02-28 2009-06-30 Huang Evan S Method and apparatus for operating a host computer from a portable apparatus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Christian S. Collberg and Clark Thomborson, "Watermarking, Tamper-Proofing, and ObfuscationÐTools for Software Protection," IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 28, NO. 8, PP. 735-746, 2002 *
CS-245 Database System Principles - Winter 2002 Assignment 2 (http://infolab.stanford.edu/~ullman/dbsi/win02/assignment/assignment2.pdf) *

Also Published As

Publication number Publication date
EP1757008A4 (en) 2012-11-21
US20060005250A1 (en) 2006-01-05
EP1757008A2 (en) 2007-02-28
US7631360B2 (en) 2009-12-08
WO2005125081A3 (en) 2006-03-23
US20060005251A1 (en) 2006-01-05
KR20110110866A (ko) 2011-10-07
US7552337B2 (en) 2009-06-23
US7891008B2 (en) 2011-02-15
JP2008503014A (ja) 2008-01-31
US20050278791A1 (en) 2005-12-15
KR20110119809A (ko) 2011-11-02
KR101187521B1 (ko) 2012-10-02
US7584509B2 (en) 2009-09-01
KR101187554B1 (ko) 2012-10-02
US20050278782A1 (en) 2005-12-15
US20060005252A1 (en) 2006-01-05
US7559091B2 (en) 2009-07-07
US20050278535A1 (en) 2005-12-15
US20060005249A1 (en) 2006-01-05
US7577997B2 (en) 2009-08-18
JP4729575B2 (ja) 2011-07-20
US7526805B2 (en) 2009-04-28
EP1757008B1 (en) 2018-09-26
US7640592B2 (en) 2009-12-29
KR20110119808A (ko) 2011-11-02
WO2005125081A2 (en) 2005-12-29
US20050278553A1 (en) 2005-12-15

Similar Documents

Publication Publication Date Title
KR101159487B1 (ko) 소프트웨어 보안
US7721340B2 (en) Registry protection
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
US9189605B2 (en) Protected computing environment
US20050289067A1 (en) System and method for secure storage of data using a key
IL168907A (en) System and method for protected operating system boot using state validation
KR101203245B1 (ko) 소프트웨어 보안
CN112685697B (zh) 一种防止安卓应用被破解篡改的方法及终端

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 8