KR100406228B1 - 의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼레지스턴스 - Google Patents

의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼레지스턴스 Download PDF

Info

Publication number
KR100406228B1
KR100406228B1 KR10-2001-0003121A KR20010003121A KR100406228B1 KR 100406228 B1 KR100406228 B1 KR 100406228B1 KR 20010003121 A KR20010003121 A KR 20010003121A KR 100406228 B1 KR100406228 B1 KR 100406228B1
Authority
KR
South Korea
Prior art keywords
distinct portion
binary sequence
random binary
pseudo random
function
Prior art date
Application number
KR10-2001-0003121A
Other languages
English (en)
Other versions
KR20010078013A (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 KR20010078013A publication Critical patent/KR20010078013A/ko
Application granted granted Critical
Publication of KR100406228B1 publication Critical patent/KR100406228B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain 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
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

템퍼 레지스턴스(tamper resistance)는 프로세서 및 그 주변장치와 드라이버의 하나의 구별된 부분(one differentiated section)에 배타적으로 이용가능한 함수를 다른 구별된 부분으로부터 호출함으로써 소프트웨어부의 거동의 관찰을 회피하도록 제공된다. 의사 랜덤 이진 시퀀스 생성기는 이와 같이 각각의 구별된 부분 및 함수의 호출 및 수행에 대해 증가된 사건에 연관된다. 의사 랜덤 이진 시퀀스 값은 소프트웨어를 더 실행시키거나 실행을 방지하기 전에 비교된다. 비교는 임의의 권한 레벨에서 실행될 수 있으며, 본 발명의 변형으로는, 비교를 수행하기 위해 부가적 권한 함수를 이용함으로써 부가적인 보안을 제공한다. 본 발명에서의 향상은 하나의 권한 레벨에서 PRBS 값을 이용하여 데이타 또는 프로그램 파일을 손상시키고, 그 자신의 PRBS 값을 갖는 다른 권한 레벨에서 데이타 또는 프로그램 파일을 복원시키기 위해 반전 함수를 수행하는 것이다.

Description

의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼 레지스턴스{TAMPER RESISTANCE WITH PSEUDO-RANDOM BINARY SEQUENCE PROGRAM INTERLOCKS}
본 발명은 총체적으로 컴퓨터 소프트웨어 어플리케이션용 보안의 제공에 관한 것으로, 더 상세하게는 권한없는 자에 의한 어플리케이션 프로그램의 거동의 관찰을 방지하기 위한 구성에 관한 것이다.
컴퓨터 어플리케이션 소프트웨어의 수와 다양성은 지난 수년 동안 확산되어 왔다. 컴퓨터 하드웨어 발전으로 인해 이와 같은 어플리케이션의 기능이 크게 확장되는 것이 가능하게 되고, 결국 이로 인해 작성되어야 하는 코드의 양 및 다른 개발 비용이 크게 증가하고 있다. 그와 함께, 권한없는 복제에 의해 손실될 수 있는 이와 같은 프로그램의 값어치에 대한, 소프트웨어 벤더의 인식이 증가하고 있다. 따라서, 현재 소프트웨어 벤더가 개별적인 프로그램 사본의 등록을 필요로 하거나 또는 특정 사용자에게 사이트 라이선스(site licenses)를 판매하고, 프로그램 사본이 등록되어 있는 사람 이외의 사람이 어플리케이션 또는 그 주요 부분을 실행하는 것을 방지하는 프로그램에 피쳐(features)를 포함할 것을 요구하는 것은 흔한 현상이다.
일반적으로 등록에 따라 액세스가 인가되지 않는 한, 소프트웨어의 대부분을 디스에이블시킴으로써, 소프트웨어의 등록이 강제되고 있다. 대부분, 잠재적인 구매자가 구매를 할 지의 여부를 결정하는데 충분히 실행될 수 있는 데모본(demonstration copy)과 유사하게 기능이 축소된 형태의 소프트웨어를 사용자에게, 가능하게 온라인으로 제공함으로써 소프트웨어의 판매를 홍보하는 것은 흔히 있는 일이다. 이때, 초기에 디스에이블된 기능의 인에이블화(enablement)는 구매, 지불 및 등록시 원격으로 수행된다. 이와 같은 변환가능한 형태의 소프트웨어의 배포는, 개별적인 버젼을 데모본으로서 생산할 필요성, 및 하나의 사본을 다른 사본으로 변조할 잠재성을 피하는 장점을 제공한다.
그러나, 비록 이와 같은 특징이 첨단 및 복잡성의 수준을 발전시키고 양호한 수준의 보안을 달성하고 있지만, 임의의 이와 같은 특징은 이와 같은 특징을 바이패스하는 어플리케이션 프로그램의 변형에 의해 무색하게 될 수 있다. 보호되는 소프트웨어(protected software) 기능 및 보호되는 기능(protected functions)에 대한 액세스를 복원할 수 있는 프로세스를 일반적으로 "해킹(hacking)"이라고 하는데, 이는 일반적으로 또한 패스워드 보호, 사용자 식별 또는 증명 등을 무력하게 하는데에도 적용된다. 프로그램의 수정 프로세스(process of modification)를 흔히 "패칭(pacthing)"이라고 한다. 해킹에 의한 프로그램 수정을 어렵게 하는 특질을 "템퍼 레지스턴스(tamper resistance)"라고 한다. 물론, "템퍼 레지스턴스"는 어플리케이션 프로그램은 물론, 데이타베이스와 같은 많은 유형의 소프트웨어에 바람직한 특질이다.
템퍼 레지스턴스 소프트웨어의 생성은 흔히, 프로세서에 일체화되고 소위 권한 인스트럭션(privileged instructions)이라고 하는 권한 레벨의 개념을 포함한다. 권한 인스트럭션은 일반적으로 프로세서 아키텍춰의 제한된 특징에의 액세스를 허용할 것을 필요로 한다. 예를 들어, 권한 인스트럭션 또는 함수는 프로세서 내의 보호된 전용 디버그 레지스터의 로딩 및 언로딩, 인터럽트 벡터의 후킹(hooking) 및 입/출력(I/O) 함수는 물론 중요한 운용체제(OS) 메모리 영역을 처리하는 것을 포함한다. 이들 권한 함수는 하위 권한 레벨에서 어플리케이션에 의해 제어(즉, 요청)되지만, 실제로는 보다 권한이 있는 운영체제 구성요소를 통해 어플리케이션 프로그램의 정상적인 동작 동안 보다 상위의 권한 레벨에서 다른 구성요소 또는 소프트웨어에 의해 수행된다. 특히, I/O 함수의 실행은 OS의 최상위 권한 레벨(들)에 제한되고 수행될 수 없지만, 보다 하위의 권한 레벨에서 동작하거나 실행하는 어플리케이션에 의해 요청될 뿐이다.
즉, 어플리케이션 소프트웨어가 보다 안전하고 소프트웨어 개발 조건에 일관성이 있도록 하기 위해서는, 흔히 어플리케이션과 제휴하여 동작하고 보다 권한이 낮은 어플리케이션 대신에 이들 권한 동작을 수행하는 (흔히 장치 드라이버의 형태의) 권한이 있는 동료(privileged companion) 소프트웨어 모듈을 개발할 필요가 있다. 어플리케이션이 시스템 무결성을 증명하거나 또는 임의의 유형의 템퍼링이 발생하였는지를 판정할 필요가 있을 때 (또는 프로그래머에 의해 결정된 필요성을 가질 필요가 있을 때), 어플리케이션은 이들 서비스를 수행하는 권한 모듈을 호출할 수 있다. 불행하게도, 이와 같은 구성 및 그의 비교적 광범위한 사용은 어플리케이션과 권한 모듈 간의 인터페이스가 보안 특징을 무력화시키려고 시도하는 논리적 공격점이 되게 한다. 예를 들어, 보안 관련 호출을 권한 모듈에 패치 아웃(patching out)하면, 대부분의 경우 템퍼 레지스턴스, 및 수행하려 하는 무결성 점검기능을 무력화시킬 것이다.
비록 어떠한 형태의 템퍼 레지스턴스도 완전히 안전하지 않더라도, 일반적으로 어플리케이션 및 대응하는 권한 모듈 내에서 (즉, 보다 많은 기법, 트랩 및 상호독립성을 포함시킴으로써) 이와 같은 조치에 제공될 수 있는 복잡도가 클 수록, 어플리케이션 또는 데이타 무결성을 저해하거나(compromise) 또는 내부에 포함된 기밀에의 액세스를 얻으려는 소정의 시간 및 노력 내에서 이들을 무력하게 할 성공 가능성은 낮은 것으로 알려지고 있다. 불행히도, 이와 같은 복잡성은 또한 소프트웨어의 실행 속도 및 효율성 자체는 물론, 소프트웨어 어플리케이션의 신뢰성 및/또는 안정성 (또는, 예를 들어, 데이타베이스 및/또는 에러 복구 시스템의 견고성)을 떨어뜨릴(compromise) 수 있다. 따라서, 어플리케이션 실행의 효율성, 및 어플리케이션 자체 및 그 데이타의 보안 간에 피할 수 없는 절충이 존재한다.
따라서, 본 발명의 목적은 템퍼링 및 실행의 종료, 및/또는 템퍼링이 검출될 때 파일의 손상의 검출에 의해 소프트웨어를 위한 보안을 증가시키기 위한 기술을 제공하는 것이다.
본 발명의 다른 목적은 소트웨어의 실행 효율을 크게 떨어뜨리지 않고 소프트웨어를 위한 효율적인 보안을 제공하는 것이다.
본 발명의 또 다른 목적은 권한없는 자에 의한 소프트웨어 거동의 관찰을 방지하는 것이다.
본 발명의 또 다른 목적은 소프트웨어의 디스에이블된 또는 보호된 부분의 비인가 인에이블화 또는 관찰을 방지하는 것이다.
본 발명의 상기 및 다른 목적을 달성하기 위해, 복수의 구별된 부분, 제2 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있는 제1 구별된 부분 및 방법을 수행하기 위한 명령어를 포함하는 소프트웨어를 구비하고, 프로세서 상에서 실행하는 소프트웨어에 템퍼 레지스턴스를 제공하기 위한 방법에 있어서, 이 방법은 제2 구별된 부분에 연관된 제1 의사 랜덤 이진 시퀀스를 증가시키는 단계, 제2 구별된 부분으로부터 제1 구별된 부분 내의 함수를 호출하는 단계, 제1 구별된 부분에 연관된 제2 의사 랜덤 이진 시퀀스 생성기를 증가시키는 단계, 함수(이는 의사 랜덤 시퀀스 값의 비교를 포함할 수 있거나 또는 의사 랜덤 이진 시퀀스 생성기의 증가 이외에 하나 이상의 연산을 포함하거나 포함하지 않을 수 있음)를 수행하는 단계, 제1 및 제2 의사 랜덤 이진 시퀀스 생성기 내의 의사 랜덤 이진 시퀀스 값을 비교하는 단계, 및 비교 결과에 따라 소프트웨어의 실행을 제어하는 단계를 포함한다.
본 발명의 다른 특징에 따르면, 복수의 구별된 부분, 제2 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있는 제1 구별된 부분 및 방법을 수행하기 위한 명령어를 포함하는 소프트웨어를 구비하고, 프로세서 상에서 실행하는 소프트웨어에 템퍼 레지스턴스를 제공하기 위한 방법에 있어서, 이 방법은 알고리즘 및 제1 구별된 부분 내의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계, 및 반전 알고리즘 및 제1 구별된 부분에서의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계를 포함하되, 이로 인해 제1 구별된 부분 및 제2 구별된 부분의 의사 랜덤 이진 시퀀스 값이 동일할 때 알고리즘에 의해 변경된 데이타가 복원된다.
상기 및 다른 목적, 및 특징 및 장점은 도면을 참조한 본 발명의 바람직한 실시예의 다음의 상세한 설명으로부터 보다 잘 이해할 수 있을 것이다.
도 1은 본 발명의 바람직한 실시예의 하이레벨 블럭도 및 그 동작을 도시하는 도면,
도 2a 및 도 2b는 도 1에 도시된 본 발명의 실시예의 동작을 도시하는 순서도,
도 3은 도 1의 실시예에 대한 바람직한 개선을 도시하는 하이레벨 블럭도, 및
도 4는 도 3에 도시된 본 발명의 개선을 도시하는 순서도.
<도면의 주요 부분에 대한 부호의 설명>
110, 120 : PRBS 생성기
지금부터 도면, 특히 도 1, 2a 및 도 2b를 참조하면, 하이레벨 개략도 형태로 본 발명의 실시예(100)가 도시되어 있다. 화살표 104로 표시된 바와 같이, 이진 시간 스케일(좌에서 우로)이 도 1에 도시되어 있는데, 여기서 실선 블럭은 하드웨어 또는 소프트웨어로 구현될 수 있는 기능 소자를 지칭한다. 점선으로 도시된 블럭은 보호가 필요한 소트프웨어 시퀀스를 나타낸다. 도 2a 및 도 2b에서, 시퀀스는 위에서 아래쪽으로 진행하고, 도시된 각각의 기능이 수행되는 소프트웨어는, 도 1이 권한 레벨을 분할하는 점선(106)에 의해 분할되는 것과 동일한 방법으로, 좌 또는 우로 분리되어 있다. 이와 같이 도 1 및 도 2a 및 도 2b는 서로 다른 강조 및 관점으로 대부분의 동일한 주제를 도시하고 있다. 가능한 한 대응하는 도면부호가 사용될 것이다. (동일한 도면 부호가 역시 도 3 및 4에서도 채택되어 있다)
의사 랜덤 이진 시퀀스(PRBS) 생성기는 공지되어 있고, 기술분야의 숙련자가 알고 있는 바와 같이 다양한 형태로 사용되고 구현되고 있다. 일반적으로, PRBS 생성기는 복수의 기억장치를 포함할 수 있는 논리 어레이로서 구현된다. 한가지 흔하게 사용되는 형태의 PRBS 생성기는 쉬프트 레지스터의 성질을 갖는 직렬 접속된 플립플롭 스트링을 이용한다. 이와 같은 다양한 길이의 쉬프트 레지스터의 경우, 참 또는 보수 값중의 하나로서 가능하게 다른 단의 출력(보다 일반적으로 마스크(mask)라고 함)과 논리적으로 결합된 것으로서, 다른 단으로의 일부 단의 출력의 피드백인, 진짜 랜덤 값과 실질적으로 동일한 통계적 성질을 갖는 긴 스트링의 논리 값이 발생될 수 있다는 것을 보여주고 있다. 물론, 이와 같은 하드웨어 구현을 기술분야에 공지된 방법으로 소프트웨어로 시뮬레이트될 수 있다. (실제로, 이하에 상세히 설명하는 바와 같이, 본 발명의 실시를 위해서는 소프트웨어 구현이 훨씬 바림직하다.)
PRBS 생성기의 반복 주기는 제공되는 기억 단의 수에 대히 극히 길 수 있다. PRBS 생성기의 출력은 단일 단으로부터 직렬로 또는 내부 탭으로부터 병렬인 (기억 단의 수까지) 임의의 길이의 바이트로 병렬로 취해질 수 있다. 비록 임의적으로 길어 질 수 있는 많은 이진 디짓 다음에 PRBS가 반복할 수 있지만, 시퀀스의 시작점은 예를 들어, 내부의 기억 장치의 초기 기억 상태로서 PRBS 생성기에 초기에 제공되는 특정 값에 의해 임의의 점에서 시작될 수 있다. 이들 초기 상태를 집단적으로 시드 값(seed value)이라고 한다. 따라서, PRBS 생성기로부터 유도될 수 있는 유일한 시퀀스의 수는 반복 시퀀스 내의 디짓의 수와 같다.
또한, PRBS 생성기 내의 각각의 서로 다른 논리 어레이 상호접속 또는 마스크 (즉, 각 단의 출력의 피드백 및 논리 조합)는 유일한 이진 시퀀스를 제공할 것이다. 그러나, 동일한 토큰에 의해, 동일한 마스크 및 기억 단의 수를 가지며 동일한 시드 값으로 초기화된 기능적으로 동일한 PRBS 생성기로부터 동일한 이진 시퀀스만이 유도될 수 있다. 따라서, PRBS 시퀀스는 이들 파라메타를 미리 알지 못하고는 복제하기가 힘들다.
본 발명은 원칙적으로 권한 호출의 요청 및 실행시 각각 증가되는 동일한 시드값으로 초기화된 두개의 동일한 PRBS 생성기(110 및 120)(또는 동일한 마스크 및 스테이지 n의 수를 갖는 PRBS 생성기)를 사용한다. 이들 동일한 PRBS 생성기중의 하나는 본 발명의 원리에 따라 템퍼 레지스턴스(tamper resistance)가 사이에 제공될 권한 레벨의 각각에 제공되거나 또는 이들 각각에 액세스가능하게 된다.
PRBS 생성기로부터의 PRBS 보다 상위의 권한 또는 보다 하위의 권한 레벨(또는 각 레벨의 PRBS에 기초하여 두개의 서로 다른 권한 레벨에서 수행되는 다른 함수)에서 비교되고, 각각의 PRBS 신호가 동일하지 않을 때마다 보다 상위의 권한 기능의 실행의 중단 및 결과의 가로챔이 수행된다. 이와 같은 기본적인 동작 모드는 극히 신속히 실행될 수 있으며, 자주 반복될 때에도 소프트웨어의 실행 효율을 크게 떨어뜨리지(compromise) 않으며, 도 3 및 4를 참조하여 이하에 상세히 설명하는 바와 같이 용이하게 증가될 수 있다.
지금부터 도 1 및 도 2a 및 도 2b를 참조하면, 각각이 각각의 PRBS 생성기(110 또는 120)를 갖는 두개 레벨의 권한이 도시되어 있다는 것을 알 수 있다. 이들 권한 레벨은 윈도우즈-인텔 환경 용어와 부합하는 링 3(하위 권한) 및 링 0(상위 권한)으로서 지정되어 있다. 그러나, 본 발명은 서로 다른 기능들이 서로 다른 권한 레벨에서 실행되거나 또는 특정의 분리된 하드웨어, 소프트웨어 또는 펌웨어에 의한 실행에 제한되어 있는 임의의 환경에 완전히 적용가능하다는 것을 알아야 한다. 예를 들어, 명령어의 실행을 위해, 특정 데이타 경로 또는 레지스터가 요구될 수 있다.
즉, 본 발명의 성공적인 실시가 그 의도하는 목적을 제공하기 위해서는, 프로세서 또는 그 주변장치 또는 그를 위한 드라이버가 별개의 동일한(또는 동일하게 컨피그되고 초기화된) PRBS 생성기와 연관될 수 있는 구별된 연산부를 가질 것(또는 갖도록 컨피그가능한)을 필요가 있고, 이와 같은 하나의 구별된 부분(differentiated section)은 다른 구별된 부분에 이용가능하지 않은 기능을 수행할 수 있어야 한다. 따라서, "구별된 부분(differentiated section)"이라는 용어는 이들 조건을 충족하는 이와 같은 모든 가능한 구성을 포괄하는 것으로 알아야 한다.
이와 같은 맥락에서, 하드웨어 액세스가 하위 권한 레벨에서 부인되고 이는 소프트웨어 PRBS 생성기 구현을 필요로 하기 때문에, PRBS 생성기의 소프트웨어의 구현이 원칙적으로 바람직하다. 더우기, PRBS 생성기의 소프트웨어 구현은 동일한 PRBS 생성기의 제공, 및 어플리케이션 및 그 동료 장치 드라이버 또는 다른 상위 권한 레벨 소프트웨어 모두에서의 그 초기화를 용이하게 한다. 또한 본 발명은 PRBS 생성기 자체를 보호할 수 있으며 이를 보호하는데 사용되어야 한다는 것을 알 것이다.
다음 설명을 위해, 어플리케이션 또는 다른 소프트웨어는 점선 화살표 200으로 표시된 바와 같이, 본 발명에 따라 보안되지 않은 기능들을 실행하고 수행한다고 가정한다. 또한 PRBS 생성기(110,120)는 동일한 시드 값, 동일한 마스크 및 동일한 n의 값으로 초기화되었으며, 따라서 동일한 값을 출력할 것이며 동기화된 것으로 간주될 수 있다고 가정한다.
안전하기를 원하는 프로그램의 부분 앞의 프로그램 인스트럭션의 리스트의 임의의 점에서, 연산 A(및/또는 B 및/또는 X)의 시퀀스가 삽입된다. 이들 연산은 즉시 시퀀스로 수행될 필요가 없지만, 권한없는 자가 그 목적을 보다 더 인식할 수 없도록 하기 위해 이들 가운데 다른 연산들이 삽입될 수 있다. 본 발명의 설명을 위해, 인스트럭션 A의 시퀀스는 세개의 연산 A1, A2 및 A3를 구비한 것으로 표시되어 있다. 이들 각각의 연산은 복수의 명령어를 포함할 수 있다.
시퀀스 A가 서로 다른 권한 레벨에서 또는 특정 하드웨어로 수행되는 하나 이상의 후속하는 연산(즉, A2)을 안전하게 하는 프로그램에 도달되면, 단계 A는 202로 표시한 바와 같이 PRBS 생성기를 증가시키고, 204로 표시한 바와 같이 권한 링 0(즉, 장치 드라이버)에 있는 소정의 기능 A(FnA)를 호출하는 보호 단계 A2로 진행한다. 다음에 기능 A는 PRBS 생성기(120)를 증가시킨다. 다음에 기능 A는 소정의 연산을 수행하고, 208로 표시한 바와 같이 어플리케이션으로 복귀한다.
다음에 어플리케이션은 연산 A3으로 진행하고, 210으로 표시한 바와 같이 PRBS 생성기(110)의 출력을 페치(fetch)하고, FnP를 호출하여 212로 도시한 바와 같이 PRBS 생성기(120)의 출력을 페치하고, 214로 표시한 바와 같이 이를 어플리케이션으로 반환한다. 다음에 연산 A3는 PRBS 생성기(110 및 120)의 출력을 비교하고, 이들이 모두 초기에 동기화되고 시퀀스 A의 과정에서 한번 모두 증가되었기 때문에, 이 비교는 성공적이고, 218로 표시한 바와 같이 어플리케이션은 계속한다.
시퀀스 B도 유사한 방법으로 동작하므로 별도로 설명하지 않을 것이다. 만일 PRBS 생성기 출력의 비교가 연산 B3(연산 A3에 대응함)에서 성공적이면, 222로도시한 바와 같이 어플리케이션이 계속한다.
그러나, 만일 예를 들어, 어플리케이션이 등록되지 않았고 링 0 또는 내부의 임의의 함수 (또는 그로 인해 수행될 연산)에의 액세스가 부인되었기 때문에 연산 A2이 인가되지 않았다면, 어플리케이션은 진행할 수 없다. 만일 권한없는 사용자가 단계 A1(202)를 패치 아웃함으로써 이와 같은 액세스의 부인을 무력화하려고 시도하면, 단계 A2는 PRBS 생성기(110)를 증가시키지 않고 PRBS 생성기(120)를 증가시킬 것이고, A3(216)에서의 비교는 실패할 것이다.
역으로, 만일 연산 A 동안 PRBS 생성기(120)의 증가를 패치 아웃함으로써 액세스의 부인을 무력화시키려고 시도하면, 비교는 또한 실패할 것이다. PRBS 생성기(110)가 증가되는 한편 PRBS 생성기(120)는 증가되지 않을 것이기 때문에, 함수 A를 패치 아웃(즉, 연산 A2를 삭제하거나 또는 "NO-OP함으로써)함으로써 어플리케이션의 후속하는 부분(즉, 코드의 비교를 위한)에의 액세스의 부인을 무력화시키려고 시도하는 것은 또한 비교의 실패를 초래할 것이다. 본 발명에 따른 FnA및 다른 권한 함수가 함수를 수행하기 전에 PRBS 생성기(120)를 증가시키기 때문에, PRBS 생성기(120 또는 110)에의 증가 또는 감소를 패치 인(patching in)함으로써 액세스의 부인을 무력화하려는 시도는 또한 A2에서의 비교의 실패를 초래할 것이다.
심지어 권한 함수가 수행되더라도, 이 어플리케이션에 대한 결과의 보고 이전에 비교가 이루어진다. 비교(216)의 실패시, 어플리케이션의 실행은, 예를 들어, 컴퓨터 상에 로드되었던 기억장치 또는 기억매체로부터 어플리케이션 또는 그의 다소 중요한 부분의 삭제를 포함하는 임의의 서브루틴으로 분기함으로써 프로그래머가 요구하는 방식으로 종료될 수 있다.
두 패치의 최소는 권한 함수에의 액세스의 부인을 무력화시키기 위해 동시에 그리고 정확하게 수행되어야 하며, 어플리케이션의 거동을 미리 알지 못하는 권한없는 사용자에 의해 성공적으로 달성될 수 없을 것이다. 시스템의 거동의 관찰은 본 발명이 방지하려고 하는 바로 그 유형의 템퍼링이라는 것을 상기하여야 한다. 따라서, 어플리케이션에서 여러번 이용하고 반복하더라도 간단하고 신속하게 실행가능하지만 본 발명은 어플리케이션의 거동을 권한없는 자들에게 노출시킬 수 있는 템퍼링에 대한 보호를 제공하는데 있어서 극히 효과적이라는 것을 알아야 한다.
본 발명의 기본 원리의 실시에 있어서, 비교가 어디서 수행되는지, 또는 권한 함수일 수 있는 부수적인 함수가 수행되는지의 여부는 중요하지 않다. 그러나, 도 1 및 도 2b에서 보안 연산 X와 관련하여 이제부터 설명하는 바와 같이 이와 같은 부수적인 함수를 수행함으로써 부수적인 보호가 제공될 수 있다. 이 경우에, 222로 표시한 바와 같이, 연산 X1은 앞의 연산 A1에서처럼 PRBS 생성기(110)를 증가한다. 연산 X2는 FnX(224)를 호출하고 이전과 같이 PRBS 생성기(120)를 증가시킨다(226). 다시 상기 설명한 바와 같이 어플리케이션(228)로 복귀한다.
다음에 연산 X3는 PRBS 생성기(110)로부터 PRBS 값을 페치(230)하지만, 이제 연산 FnP'를 호출하고, PRBS 생성기(110)로부터의 PRBS 값(232)을 장치 드라이버에 제공한다. 다음에, 권한 함수 FnP'는 PRBS 생성기(120)로부터 PRBS 값을 페치하고, 비교를 수행한다. FnP'는 PRBS 생성기(120)를 더 이상 증가시키지 않거나 또는 선택적으로 X3 및 FnP'모두는 PRBS 생성기(110 및 120)를 각각 더욱 증가시키도록 배열될 수 있다. 이와 같은 동작은, 이 비교가 상위(또는 적어도 서로 다른) 권한 레벨에서 수행된다는 점을 제외하고는 연산 시퀀스 A와 유사하다. 그러나, 실제의 경우에, 권한없는 자에 의해 패치가 부정확하게 적용될 수 있는 많은 위치가 제공되며, 연산 A3 및 다른 권한 함수와 비교하여 X3 또는 FnP'에 변환의 비일관성이 제공된다.
지금부터 도 3 및 4를 참조하면, 이제부터 본 발명의 개선이 설명될 것이다. 상기 설명된 본 발명의 실시예는 PRBS 출력의 비교가 실패한 후에 어플리케이션의 종료 또는 파일의 파괴 또는 손상을 초기화시킬 수 있는 반면에, 도 3 및 4에 도시된 본 발명의 개선은 템퍼 저항의 일부로서 파일 손상 및 보수를 포함하고, 따라서 성능이 보다 우수하고, 템퍼링이 보호되기 전에도 초기에 보호 조치가 취해질 수 있게 한다. 이와 같은 개선은 상기 설명된 보안 동작 A의 변형 A'으로서 설명될 것이다.
연산 A1은 PRBS 생성기(110)를 증가시키기 위해 이전과 같이 수행된다. 그러나, 402로 표시한 바와 같이, 증가된 PRBS 값은 어플리케이션으로 반환된다. 연산 A2'는 PRBS 값을 이용하여, 404에 표시된 바와 같이 알고리즘 X를 사용하여 데이타 및/또는 어플리케이션 프로그램 코드, 및 PRBS 생성기(110)로부터의 현재의 PRBS 값을 의도적으로 파괴하거나 또는 손상시킨다. 다음에, 연산 A3'는 PRBS 생성기(120)를 증가시키고 새로운 PRBS 값을 반환한 후에, 권한 함수 FnA를 호출하여 연산 A'를 수행한다. 다음에, 이제 PRBS 생성기(110)의 값과 동일하여야 하는 PRBS 생성기(120)로부터의 새로운 PRBS 값은, PRBS 생성기(120)로부터의 PRBS 값 및 알로리즘 X의 반전인 알고리즘 X'를 사용하여 410으로 표시한 바와 같이 404에서 손상된 데이타 또는 코드를 재구성하기 위해, 연산 A4를 수행하는데 사용된다.
이 경우에, 데이타 또는 코드의 부정확한 재구성이 어플리케이션을 중지시키거나 또는 부정확하고 의미없는 결과를 반환할 것이기 때문에 (데이타 또는 코드가 효과적으로 랜덤한 이진 코드 시퀀스에 의해 손상되었기 때문에) 어떠한 별도의 비교도 필요하지 않다. 또한, 데이타의 손상 및 재구성 이외의 어떠한 권한 동작도 연산 A' 과정에 수행될 필요가 없으며, 가상적으로 프로그램 거동을 관찰하려고 시도하는 권한없는 자는 어플리케이션으로부터 어떠한 정보도 입수할 수 없다. 이와 같은 개선은 단독으로 또는 상기 설명한 A, B 또는 X와 같은 권한 함수의 특정 예에 대한 대체 방법으로서의 비교를 이용하는 권한 함수와 결합하여 사용될 수 있다.
상기에 비추어, 본 발명은 간단하고 신속하게 실행될 수 있으면서 단일 예로 극히 놓은 정도의 템퍼 레지스턴스를 제공한다는 것을 알 수 있다. 본 발명의 다수의 예가 제공될 수 있으며, 특히 변형(도 2b) 및 개선(도 4)로 반복되는 템퍼 레지스턴트 프로시져는 어플리케이션의 실행 속도를 떨어뜨리지 않고 실제적으로 상당한 정도의 보호를 제공한다.
비록 본 발명이 단일의 바람직한 실시예로서 설명되었지만, 기술분야의 숙련자는 첨부하는 특허청구의 범위의 정신 및 범위 내에서 본 발명이 변형될 수 있다는 것을 알 것이다.
본 발명에 따르면, 소트웨어의 실행 효율을 크게 떨어뜨리지 않고 소프트웨어를 위한 효율적인 보안을 제공할 수 있게 되며, 권한없는 자에 의한 소프트웨어 거동의 관찰을 방지할 수 있는 효과가 있다.

Claims (18)

  1. 구별된 부분들(differentiated sections) - 하나의 구별된 부분은 다른 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있음 - 을 갖는 프로세서 상에서 실행하는 소프트웨어에 템퍼 레지스턴스(tamper resistance)를 제공하는 방법에 있어서,
    상기 다른 구별된 부분에 연관된 제1 의사 랜덤 이진 시퀀스 생성기를 증가시키는 단계,
    상기 다른 구별된 부분으로부터 상기 하나의 구별된 부분 내의 상기 함수를 호출하는 단계,
    상기 하나의 구별된 부분에 연관된 제2 의사 랜덤 이진 시퀀스 생성기를 증가시키는 단계,
    상기 함수를 실행하는 단계,
    상기 제1 및 제2 의사 랜덤 이진 시퀀스 생성기 내의 의사 랜덤 이진 시퀀스 값을 비교하는 단계, 및
    상기 비교 단계의 결과에 따라 상기 소프트웨어의 실행을 제어하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 함수는 상기 하나의 구별된 부분의 PRBS 생성기를 증가시키는 것으로 제한되는 방법.
  3. 제1항에 있어서, 상기 하나의 구별된 부분에서 이용가능한 다른 함수는 상기 다른 구별된 부분으로부터 의사 랜덤 이진 시퀀스 값을 호출하고, 상기 하나의 구별된 부분에서 상기 비교 단계를 수행하는 방법.
  4. 제3항에 있어서, 상기 다른 함수는 상기 하나의 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기를 증가시키고, 상기 다른 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기는 상기 다른 함수가 호출될 때 증가되는 방법.
  5. 제2항에 있어서, 상기 하나의 구별된 부분에서 이용가능한 다른 함수는 상기 다른 구별된 부분으로부터의 의사 랜덤 이진 시퀀스 값을 호출하고, 상기 하나의 구별된 부분에서 상기 비교 단계를 수행하는 방법.
  6. 제5항에 있어서, 상기 다른 함수는 상기 하나의 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기를 증가시키고, 상기 다른 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기는 상기 다른 함수가 호출될 때 증가되는 방법.
  7. 제1항에 있어서,
    알고리즘 및 상기 다른 구별된 부분 내의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계, 및
    상기 알고리즘의 반전인 함수를 갖는 다른 알고리즘 및 상기 하나의 구별된 부분에서의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계
    를 더 포함하며, 이로 인해 상기 알고리즘에 의해 변경된 데이타는 상기 하나의 구별된 부분 및 상기 다른 구별된 부분의 의사 랜덤 이진 시퀀스 값이 동일할 때 복원되는 방법.
  8. 제1항에 있어서, 상기 구별된 부분들은 서로 다른 권한 레벨들인 방법.
  9. 구별된 부분들(differentiated sections) - 하나의 구별된 부분은 다른 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있음 - 을 갖는 프로세서 상에서 실행하는 소프트웨어에 템퍼 레지스턴스(tamper resistance)를 제공하는 방법에 있어서,
    알고리즘 및 상기 다른 구별된 부분 내의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계, 및
    상기 알고리즘의 반전인 함수를 갖는 다른 알고리즘 및 상기 하나의 구별된 부분에서의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계
    를 포함하며, 이로 인해 상기 알고리즘에 의해 변경된 데이타는 상기 하나의 구별된 부분 및 상기 다른 구별된 부분의 의사 랜덤 이진 시퀀스 값이 동일할 때 복원되는 방법.
  10. 제8항에 있어서, 상기 구별된 부분들은 서로 다른 권한 레벨들인 방법.
  11. 구별된 부분들(differentiated sections) - 하나의 구별된 부분은 다른 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있음 - 을 갖는 프로세서를 제어하기 위한 프로그램을 기억하는 매체에 있어서,
    상기 기억 프로그램은 상기 프로세서로 하여금,
    상기 다른 구별된 부분에 연관된 제1 의사 랜덤 이진 시퀀스를 증가시키는 단계,
    상기 다른 구별된 부분으로부터 상기 하나의 구별된 부분 내의 상기 함수를 호출하는 단계,
    상기 하나의 구별된 부분에 연관된 제2 의사 랜덤 이진 시퀀스 생성기를 증가시키는 단계,
    상기 함수를 수행하는 단계,
    상기 제1 및 제2 의사 랜덤 이진 시퀀스 생성기 내의 의사 랜덤 이진 시퀀스 값을 비교하는 단계, 및
    상기 비교 단계의 결과에 따라 소프트웨어의 실행을 제어하는 단계
    를 실행하게 하는 명령어를 포함하고,
    이로 인해, 템퍼링(tampering)의 검출시에 상기 소프트웨어의 실행이 제어될 수 있는 프로그램 기억 매체.
  12. 제11항에 있어서, 상기 함수는 상기 하나의 구별된 부분의 PRBS 생성기를 증가시키는 것으로 제한되는 프로그램 기억 매체.
  13. 제11항에 있어서, 상기 하나의 구별된 부분에서 이용가능한 다른 함수는 상기 다른 구별된 부분으로부터의 의사 랜덤 이진 시퀀스 값을 호출하고, 상기 하나의 구별된 부분에서 상기 비교 단계를 수행하는 프로그램 기억 매체.
  14. 제13항에 있어서, 상기 다른 함수는 상기 하나의 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기를 증가시키고, 상기 다른 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기는 상기 다른 함수가 호출될 때 증가되는 프로그램 기억 매체.
  15. 제12항에 있어서, 상기 하나의 구별된 부분에서 이용가능한 다른 함수는 상기 다른 구별된 부분으로부터의 의사 랜덤 이진 시퀀스 값을 호출하고, 상기 하나의 구별된 부분에서 상기 비교 단계를 수행하는 프로그램 기억 매체.
  16. 제15항에 있어서, 상기 다른 함수는 상기 하나의 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기를 증가시키고, 상기 다른 구별된 부분 내의 상기 의사 랜덤 이진 시퀀스 생성기는 상기 다른 함수가 호출될 때 증가되는 프로그램 기억 매체.
  17. 제11항에 있어서,
    알고리즘 및 상기 다른 구별된 부분 내의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계, 및
    상기 알고리즘의 반전인 함수를 갖는 다른 알고리즘 및 상기 하나의 구별된 부분에서의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계
    를 더 포함하며, 이로 인해 상기 알고리즘에 의해 변경된 데이타는 상기 하나의 구별된 부분 및 상기 다른 구별된 부분의 의사 랜덤 이진 시퀀스 값이 동일할 때 복원되는 프로그램 기억 매체.
  18. 구별된 부분들(differentiated sections) - 하나의 구별된 부분은 다른 구별된 부분 상에서 이용가능하지 않은 함수를 실행할 수 있음 - 을 갖는 프로세서를 제어하기 위한 프로그램을 기억하는 매체에 있어서,
    상기 기억 프로그램은, 상기 프로세서로 하여금,
    알고리즘 및 상기 다른 구별된 부분 내의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계, 및
    상기 알고리즘의 반전인 함수를 갖는 다른 알고리즘 및 상기 하나의 구별된 부분에서의 의사 랜덤 이진 시퀀스 값을 사용하여 데이타를 변경하는 단계
    를 실행하게 하는 명령어를 포함하고,
    이로 인해, 상기 알고리즘에 의해 변경된 데이타는 상기 하나의 구별된 부분 및 상기 다른 구별된 부분의 의사 랜덤 이진 시퀀스 값이 동일할 때 복원되고,
    이로 인해, 템퍼링(tampering)의 검출시에 소프트웨어의 실행이 제어되는 기억 프로그램 기억 매체.
KR10-2001-0003121A 2000-02-08 2001-01-19 의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼레지스턴스 KR100406228B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/500,345 2000-02-08
US09/500,345 US6789199B1 (en) 2000-02-08 2000-02-08 Tamper resistance with pseudo-random binary sequence program interlocks

Publications (2)

Publication Number Publication Date
KR20010078013A KR20010078013A (ko) 2001-08-20
KR100406228B1 true KR100406228B1 (ko) 2003-11-17

Family

ID=23989003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0003121A KR100406228B1 (ko) 2000-02-08 2001-01-19 의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼레지스턴스

Country Status (7)

Country Link
US (1) US6789199B1 (ko)
JP (1) JP3721085B2 (ko)
KR (1) KR100406228B1 (ko)
CN (1) CN1303529C (ko)
CA (1) CA2324759A1 (ko)
GB (1) GB2366028B (ko)
TW (1) TW490608B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305564B2 (en) 2002-12-19 2007-12-04 International Business Machines Corporation System and method to proactively detect software tampering
US7100205B2 (en) * 2003-10-22 2006-08-29 The United States Of America As Represented By The Secretary Of The Navy Secure attention instruction central processing unit and system architecture
US7552342B1 (en) 2005-02-16 2009-06-23 Rennie Glen Software, Llc Method and system for increasing the tamper resistance of a software application
US20090201126A1 (en) * 2008-02-11 2009-08-13 Sanyo Electric Co., Ltd. Electronic device provided with theft prevention function, and method for preventing theft of electronic devices
US20110030036A1 (en) * 2009-07-31 2011-02-03 Wells Jr James W Running a software module at a higher privilege level in response to a requestor associated with a lower privilege level
EP2362314A1 (en) * 2010-02-18 2011-08-31 Thomson Licensing Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4310720A (en) 1978-03-31 1982-01-12 Pitney Bowes Inc. Computer accessing system
US4573119A (en) 1983-07-11 1986-02-25 Westheimer Thomas O Computer software protection system
US4644493A (en) * 1984-09-14 1987-02-17 International Business Machines Corporation Implementing a shared higher level of privilege on personal computers for copy protection of software
US4605922A (en) 1984-09-14 1986-08-12 Racon, Inc. Intrusion detector
FR2638869B1 (fr) 1988-11-10 1990-12-21 Sgs Thomson Microelectronics Dispositif de securite contre la detection non autorisee de donnees protegees
GB9005916D0 (en) 1990-03-16 1990-05-09 Amstrad Plc Computer system
US5175847A (en) 1990-09-20 1992-12-29 Logicon Incorporated Computer system capable of program execution recovery
US5337357A (en) 1993-06-17 1994-08-09 Software Security, Inc. Method of software distribution protection
GB9422389D0 (en) * 1994-11-05 1995-01-04 Int Computers Ltd Authenticating access control for sensitive functions
US5724423A (en) * 1995-09-18 1998-03-03 Telefonaktiebolaget Lm Ericsson Method and apparatus for user authentication
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
FR2742616B1 (fr) * 1995-12-18 1998-01-09 Cit Alcatel Dispositif de chiffrement et dispositif de dechiffrement d'informations transportees par des cellules a mode de transfert asynchrone
GB9608696D0 (en) 1996-04-26 1996-07-03 Europ Computer Ind Res Electronic copy protection mechanism
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator

Also Published As

Publication number Publication date
TW490608B (en) 2002-06-11
CN1314635A (zh) 2001-09-26
CA2324759A1 (en) 2001-08-08
GB2366028A (en) 2002-02-27
US6789199B1 (en) 2004-09-07
JP3721085B2 (ja) 2005-11-30
JP2001236132A (ja) 2001-08-31
GB0102166D0 (en) 2001-03-14
CN1303529C (zh) 2007-03-07
GB2366028B (en) 2004-08-18
KR20010078013A (ko) 2001-08-20

Similar Documents

Publication Publication Date Title
CN111052115B (zh) 取决于调用路径的认证的数据处理装置和方法
US5421006A (en) Method and apparatus for assessing integrity of computer system software
US20070271461A1 (en) Method for managing operability of on-chip debug capability
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
US20100106979A1 (en) Method, Apparatus, and Device for Providing Security Among a Calling Function and a Target Function
EP1013023B1 (en) Security coprocessor for enhancing computer system security
WO2016060817A1 (en) Code pointer authentication for hardware flow control
JP2007529803A (ja) 周辺機器に対するアクセスを制御する方法およびデバイス
CN107066887A (zh) 具有敏感数据访问模式的处理装置
CN102667794A (zh) 用于保护操作系统免于非授权修改的方法和系统
US20160055331A1 (en) Detecting exploits against software applications
KR20190085387A (ko) 반도체 장치 및 반도체 장치의 동작 방법
US7444677B2 (en) Intentional cascade failure
US7451485B2 (en) Information processing unit having tamper-resistant system
KR100406228B1 (ko) 의사 랜덤 이진 시퀀스 프로그램 인터록을 이용한 템퍼레지스턴스
Evtyushkin et al. Computing with time: Microarchitectural weird machines
US11675587B2 (en) Enhanced protection of processors from a buffer overflow attack
Zhou et al. Smile: Secure memory introspection for live enclave
US7624442B2 (en) Memory security device for flexible software environment
CN101189615B (zh) 建立并维护受保护计算环境的方法
Zhao et al. Gracewipe: Secure and Verifiable Deletion under Coercion.
Hasan et al. Trojan resilient computing in COTS processors under zero trust
US20240152610A1 (en) Methods and systems for detecting and blocking malicious actions in operating system
Provelengios et al. A hardware monitor to protect Linux system calls
CN115310055B (zh) 一种基于双看门狗的软件完整性保护方法

Legal Events

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

Payment date: 20091103

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee