KR20080104167A - 타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 risc식 어셈블리 코드를 위한 정보 흐름 강제 - Google Patents

타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 risc식 어셈블리 코드를 위한 정보 흐름 강제 Download PDF

Info

Publication number
KR20080104167A
KR20080104167A KR1020087023929A KR20087023929A KR20080104167A KR 20080104167 A KR20080104167 A KR 20080104167A KR 1020087023929 A KR1020087023929 A KR 1020087023929A KR 20087023929 A KR20087023929 A KR 20087023929A KR 20080104167 A KR20080104167 A KR 20080104167A
Authority
KR
South Korea
Prior art keywords
timing
assembly code
information
code
security
Prior art date
Application number
KR1020087023929A
Other languages
English (en)
Other versions
KR101025467B1 (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 KR20080104167A publication Critical patent/KR20080104167A/ko
Application granted granted Critical
Publication of KR101025467B1 publication Critical patent/KR101025467B1/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/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
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)

Abstract

어셈블리 코드를 위한 정보 흐름 강제를 수행하는 방법 및 장치가 개시되어 있다. 일 실시형태에서, 본 방법은 어셈블리 코드가 보안 정책에 위반되는지 여부에 관해 정적으로 체크하는 경우, 타이밍-관련 은닉 채널 및 동시 채널 중 하나 이상에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석을 가진 어셈블리 코드를 수신하는 단계 및 상기 보안 정책에 기초하여 상기 어셈블리 코드에 대한 정보 흐름에 관해 검증을 수행하는 단계를 포함한다.
보안 정책, 어셈블리, 주석, 은닉 채널

Description

타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 RISC식 어셈블리 코드를 위한 정보 흐름 강제{INFORMATION FLOW ENFORCEMENT FOR RISC-STYLE ASSEMBLY CODE IN THE PRESENCE OF TIMING-RELATED COVERT CHANNELS AND MULTI-THREADING}
우선권
본 특허 출원은, 발명의 명칭이 "Information Flow Enforcement for RISC-style Assembly Code in the Presence of Timing-Related Covert Channels and Multi-Threading"이고, 2006년 9월 14일에 출원되었으며, 참조로서 통합된 대응하는 미국 가출원 제60/844,974호에 대한 우선권을 주장한다.
관련 특허출원
본 출원은 발명의 명칭이 "Information Flow Enforcement for RISC-style Assembly Code"이고, 2005년 12월 19일에 출원되어 출원계속 중이며, 본 발명의 양수 법인에게 양도된, 미국 특허 출원 제11/316,621호와 관련되어 있다.
기술 분야
본 발명은 프로그램 실행 및 보안 분야에 관한 것으로, 더 상세하게는 어셈블리 코드에서의 정보 흐름의 제약조건을 강제하는 것에 관한 것이다.
배경 기술
통상적으로, 정보-흐름 문제는 상이한 보안 레벨(예를 들어, 로우 및 하이)의 데이터에 대해 동작하는 프로그램과 관련되어 있다. 여기에서 설명을 목적 으로, 로우 데이터는 모든 당사자들에게 개시될 수도 있는 공지 데이터이고, 하이 데이터는 액세스가 제한되어야 하는 비밀 데이터이다. 통상적으로, 불간섭(noninterference)과 같은 정보-흐름 정책에서는, 하이 입력 데이터에 관한 어떠한 정보라도 로우 출력 데이터를 관찰하는 것으로부터 추론될 수 없을 것을 요구한다. 실제로, 보안 레벨은 격자(lattice) 모델로 일반화될 수 있다.
이러한 정보 흐름 문제를 다루는데 유망한 언어-기반 기술이 나타나고 있다. 프로그램 코드를 직접 검사함으로써, 이들 기술은 정보-흐름 보안에 대한 강화된 보증을 제공한다. 그럼에도 불구하고, 기존의 대부분의 언어-기반 정보-흐름 기술은 고급 언어에 초점을 맞추고 있다. 이들은 어셈블리 코드의 고급추상화(예를 들어, 프로그램 구조 및 데이터 구조) 및 극단적인 융통성(extreme flexibility; 예를 들어, 메모리 앨리어싱(aliasing) 및 제1-클래스 코드 포인터)의 부족으로 인해 대개 어셈블리 코드에 적용되지 않는다.
일부 애플리케이션이 배포되어 있거나(예를 들어, 모바일 계산용 네이티브 코드), 심지어 어셈블리 코드에 직접 기록되기 때문에(예를 들어, 임베디드 시스템), 어셈블리 코드에 관한 정보-흐름 문제를 다루는 것은 유용하다. 이러한 콘텍스트에서, 타입 시스템(type system)이 제안되고 있다. 더 상세하게, 타입 시스템은 타입 주석(annotation)을 사용하여 어셈블리 코드에서 누락된 추상화를 복원하고, 타입-보존 컴파일을 사용하여 소스로부터 타깃으로의 보안 증거(security evidence)를 보존한다. 타깃 레벨에서 직접 보안-타입 체크를 함으로써, 코드 소비자는 신뢰할 수 없는 코드의 작동이 원하는 특정한 정보-흐름 정 책들을 충족시킨다는 확신을 얻는다.
침입자(attacker)들 또한 프로그램 타이밍 작동과 같은 은닉 정보-흐름 채널을 종종 악용할 수도 있다. 프로그램의 실행 시간(외부 타이밍)을 물리적으로 관찰하거나, 스레드 상호활동(내부 타이밍)을 악용함으로써, 침입자는 비밀 데이터에 대한 정보를 습득할 수도 있다. 따라서, 특히 추상화 및 극단적인 융통성이 부족한 어셈블리 코드에 관해, 이러한 타이밍-관련 은닉 채널이 존재하는 정보-흐름 보안을 보호하는 솔루션을 갖는 것은 유용하다.
은닉 채널 및 멀티-스레딩에 대한 종래의 솔루션에 관해, Volpano 및 Smith는, 1997년 6월 워싱턴 DC에서 있었던 제10차 IEEE 컴퓨터 보안 기초 워크샵에서 발표된 "Eliminating Covert Flows with Minimum Typings"의 156페이지 내지 169페이지에서, 종결-민감 불간섭을 연구했으며, 민감한 프로그램 포인트에서 루프가 발생하는 것을 허용하지 않음으로써 종결 채널을 폐쇄하는 타입 시스템을 제시하였다. Agat는, 2000년 1월 메사추세츠주 보스턴에서 있었던 제27차 프로그래밍 언어의 원리에 관한 ACM 심포지엄에서 발표된 "Transforming Out Timing Leaks"의 40페이지 내지 53페이지에서, 프로그램 변환을 사용하여 타이밍 누락을 방지했으며, 여기서, 하이 분기문(branch)들의 실행 시간은 적절한 더미 명령을 갖는 크로스-패딩(cross-padding)에 의해 등화된다. Smith 및 Volpano는, 1998년 1월 캘리포니아주 샌디에고에서 있었던 제25차 프로그래밍 언어의 원리에 관한 ACM 심포지엄에서 발표된 "Secure Information Flow in a Multi-Threaded Imperative Language"의 355페이지 내지 364페이지에서, 또한, 민감한 프로그램 포인트에서 루 프가 발생하는 것을 허용하지 않음으로써, 멀티-스레딩 언어에 관한 가능성 불간섭(possibilistic noninterference)을 확립했다. Sabelfeld 및 Sands는, 2000년 7월 영국 캠브리지에서 있었던 제13차 IEEE 컴퓨터 보안 기초 워크샵에서 발표된 "Probabilistic Noninterference for Multi-Thread Programs"의 200페이지 내지 214페이지에서, 스케줄러-독립적인 보안 조건에 관해 확률 불간섭 결과를 증명했다. 이들 시스템은 소스-레벨 프로그램에 관한 정보-흐름 보안을 다루며, 어셈블리 코드에 적용될 수 없다.
타입화된 어셈블리어의 개관으로부터, 타깃-코드 레벨에서 직접 정보-흐름 보안을 강제하는 방향으로의 최근의 일부 노력이 있다. 그러나, 이러한 작업 중 어느 것도 은닉 채널 및/또는 멀티-스레딩을 다루지는 않았다. 이는, 은닉 채널 및 스레드 상호활동이 용이하게 악용될 수 있는 실제 시나리오에 솔루션을 적용하는 경우, 어려움이 존재한다.
발명의 요약
어셈블리 코드를 위한 정보 흐름 강제를 수행하는 방법 및 장치가 개시되어 있다. 일 실시형태에서, 본 방법은, 코드가 보안 정책에 위반되었는지 여부에 관해 정적으로 체크하는 경우, 타이밍-관련 은닉 채널 및 동시 채널(concurrent channel)들 중 하나 이상에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석을 가진 어셈블리 코드를 수신하는 단계, 및 보안 정책에 기초하여 어셈블리 코드에 대한 정보 흐름에 관한 검증을 수행하는 단계를 포함한다.
도면의 간단한 설명
본 발명은 이하 제시되는 상세한 설명 및 본 발명의 다양한 실시형태의 첨부 도면으로부터 더 완전하게 이해될 것이나, 이는 특정 실시형태로 발명을 제한하려는 것이 아니라, 단지 설명 및 이해를 목적으로 한 것이다.
도 1a은 명령형 언어의 예시를 나타낸다.
도 1b는 간단한 보안-타입의 시스템을 나타낸다.
도 2는 간략화된 버전의
Figure 112008068592136-PCT00001
의 구문(syntax)을 나타낸다.
도 3은 보안-타입화된 소스 프로그램으로부터 번역되는 타깃 코드인 예시적인
Figure 112008068592136-PCT00002
프로그램을 나타낸다.
도 4a는 정보 흐름 강제를 위한 프로세스의 흐름도이다.
도 4b는 도 4a의 정보 흐름 강제가 구현될 수도 있는 환경을 나타낸다.
도 5는 조건문에 관한 타이밍 주석의 일 실시형태를 나타낸다.
도 6는 루프에 관한 타이밍 주석의 일 실시형태를 나타낸다.
도 7은
Figure 112008068592136-PCT00003
구문 확장의 일 실시형태를 나타낸다.
도 8은
Figure 112008068592136-PCT00004
타입화 판단의 일 실시형태를 나타낸다.
도 9는 종결 채널을 폐쇄하는 타이밍 규칙의 일 실시형태를 나타낸다.
도 10은 비-명령(non-instruction)에 관한
Figure 112008068592136-PCT00005
타입화 규칙의 일 실시형태를 나타낸다.
도 11은 명령에 관한
Figure 112008068592136-PCT00006
타입화 규칙의 일 실시형태를 나타낸다.
도 12는 표현식 번역의 일 실시형태를 나타낸다.
도 13은 명령어 번역의 일 실시형태를 나타낸다.
도 14는 타이밍 채널을 폐쇄하는 타이밍 규칙의 일 실시형태를 나타낸다.
도 15는 조건문에 관한 확장된 타이밍 주석의 일 실시형태를 나타낸다.
도 16은 타이밍 채널이 존재하는 조건문들을 번역하는 방법을 나타낸다.
도 17은 가능성 불간섭의 예시를 나타낸다.
도 18은 확률 불간섭의 예시를 나타낸다.
도 19는 컴퓨터 시스템의 일 실시형태의 블록도이다.
발명의 상세한 설명
타이밍-관련 은닉 채널 및 멀티-스레딩이 존재하는 어셈블리 코드(예를 들어, RISC식 어셈블리 코드)를 위한 정보 흐름 강제 방법이 개시되어 있다. 본 발명의 실시형태들은 RISC식 어셈블리 코드를 위한 정보-흐름 보안을 보증하는 타입 시스템 분야에 관한 것이다. 어셈블리 코드는 타입화 주석에 의해 증대된다. 타입화 규칙에 따르는 타입 체커는 증대된 코드를 검사하고, 그 코드가 특정 정보-흐름 정책을 충족시키는지 여부를 판정한다.
본 발명의 실시형태들은, 순차적인 코드 및 멀티-스레딩 코드 모두를 위한 정보-흐름 보안을 보호하며, 침입자가 타이밍-관련 은닉 채널에 액세스할 수도 있는 경우라도 적용될 수 있다. 상이한 실시형태에서, 본 발명은 종결 채널, 타이밍 채널, 가능성 채널, 및/또는 확률 채널이 존재하는 정보-흐름 보안을 취급한다.
어셈블리 코드의 정보-흐름 보안을 위한 일련의 타입 시스템이 개시되어 있 다. 이들 시스템은 타이밍 주석 및, 관련 판단 및 규칙들을 포함한다. 상이한 타이밍 규칙을 사용함으로써, 이들 시스템은 상이한 실제 설정에 적용될 수 있다. 특히, 이들은 멀티-스레딩 프로그램에서의 가능성 채널 및 확률 채널뿐 아니라 순차적인 프로그램에서의 종결 채널 및 타이밍 채널을 통한 불법 정보 흐름을 방지하는데 사용될 수 있다.
이하, 일반적인 타입 시스템
Figure 112008068592136-PCT00007
으로서 이들 타입 시스템의 형태상의 상세설명을 제시하였으며, 인증 컴파일에서의 사용을 예로 들어 설명한다.
Figure 112008068592136-PCT00008
의 상이한 "파라미터"를 사용함으로써, 일련의 타입 시스템 및 인증 컴파일 방식이 획득될 수 있으며, 종결-민감 불간섭, 타이밍 민감 불간섭, 가능성 불간섭, 및 확률 불간섭 정책을 각각 다룬다. 또한, "파라미터들"의 조합은 상기 정책들의 조합을 다루는 시스템을 달성하는데 사용될 수 있다.
다음 설명에서, 본 발명의 더 완벽한 설명을 제공하기 위해, 수많은 상세설명들이 개시되어 있다. 그러나, 본 발명이 이들 특정 상세설명 없이 실시될 수도 있다는 것은 당업자에게 명백할 것이다. 다른 예시에서, 본 발명을 불명확하게 하는 것을 피하기 위해, 널리-공지된 구조 및 디바이스는 상세히 설명하기 보다는 오히려 블록도 형태로 나타내었다.
후속하는 상세한 발명의 일부분들은 컴퓨터 메모리 내의 데이터 비트에 대해 동작하는 알고리즘 및 심벌 표현이라는 용어를 이용하여 제시되어 있다. 이들 알고리즘 설명 및 표현들은 당업자들이 작업 내용들을 다른 당업자에게 가장 효과 적으로 전달할 수 있도록 데이터 프로세싱에 관한 업계의 당업자에 의해 사용되는 수단이다. 여기에서, 알고리즘은 일반적으로 원하는 결과를 이끌어 내는 일관성 있는 스텝 시퀀스로 간주된다. 이들 스텝은 물리적 양의 물리적 조종을 요구하는 스텝들이다. 대개, 반드시 필요한 것은 아니지만, 이들 양은, 저장되고, 변환되고, 결합되고, 비교되고, 그렇지 않으면 조종될 수 있는 전기적 또는 자기적 신호의 형태를 취한다. 원칙적으로 통상의 사용을 이유로, 이들 신호를 비트, 값, 소자, 심벌, 문자, 용어, 숫자 등으로 지칭하는 것이 종종 편리하다는 것이 입증되었다.
그러나, 이들 용어 및 유사한 용어 전부는 적절한 물리적 양과 연관되어 있으며, 이들 양에 적용되는 단순히 편리한 라벨이라는 것을 기억해야 한다. 다음 설명으로부터 명백한 것과 같이 특별히 다른 언급이 없으면, 명세서 전체에 걸쳐, "프로세싱" 또는 "연산" 또는 "계산" 또는 "결정" 또는 "디스플레이" 등과 같은 용어를 이용한 설명들은 컴퓨터 시스템의 활동 및 프로세스, 또는 유사한 전자 컴퓨터 디바이스를 지칭하며, 이들은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적 (전기적) 양으로서 표현된 데이터를 조종하거나, 그 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 이러한 다른 정보 저장부, 송신 디바이스 또는 디스플레이 디바이스 내의 물리적 양으로서 유사하게 표현되는 다른 데이터로 변환한다.
또한, 본 발명은 여기에 기재된 동작들을 수행하는 장치에 관한 것이다. 이 장치는 요구되는 목적을 위해 특별히 구성될 수도 있고, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 도 있다. 이러한 컴퓨터 프로그램은, 이들로 제한되는 것은 아니지만, 플로피 디스크, 광학 디스크, CD-ROM, 및 자기-광학 디스크를 포함하는 임의의 타입의 디스크, ROM(read-only memory), RAM(random access memory), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령을 저장하는데 적합한 임의의 타입의 매체와 같은 컴퓨터 판독가능 저장 매체에 저장될 수도 있으며, 이들은 컴퓨터 시스템 버스에 각각 커플링될 수도 있다.
여기에 제시된 알고리즘 및 디스플레이는 본래 임의의 특정 컴퓨터 또는 다른 장치와 관련되어 있는 것이 아니다. 다양한 범용 시스템은 여기에 기재된 교시에 따른 프로그램에 의해 사용될 수도 있거나, 요구되는 방법 스텝들을 수행하기 위해 더 특수한 장치를 구성하는 것이 편리하다는 것이 입증될 수도 있다. 이들 다양한 시스템에 대해 요구되는 구조는 이하 설명으로부터 알게 될 것이다. 또한, 본 발명은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 여기에 설명한 바와 같은 본 발명의 교시를 구현하기 위해, 다양한 프로그래밍 언어가 사용될 수도 있다.
머신-판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하거나 송신하는 임의의 메커니즘을 포함한다. 예를 들어, 머신-판독가능 매체는 ROM("read only memory"); RAM("random access memory"); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 디바이스; 전기적, 광학적, 청각적 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함한다.
개요
보안-타입 시스템
이하, 소스 언어를 위한 정보-흐름 보안을 다루는 타입 시스템을 사용하는 방법에 대한 간단한 설명이 제시되어 있다.
도 1a에 제시된 간단한 언어를 고려한다. 이 언어에는 2개의 보안 레벨 즉, 로우 및 하이가 사용된다. 환경(
Figure 112008068592136-PCT00009
)은 변수(
Figure 112008068592136-PCT00010
)의 보안 레벨(
Figure 112008068592136-PCT00011
)을 특정한다. 편리를 위해,
Figure 112008068592136-PCT00012
(및
Figure 112008068592136-PCT00013
) 및
Figure 112008068592136-PCT00014
(및
Figure 112008068592136-PCT00015
)는 하이 변수 및 로우 변수를 각각 표시하는데 사용된다. 표현식(
Figure 112008068592136-PCT00016
)은 상수(
Figure 112008068592136-PCT00017
), 변수(
Figure 112008068592136-PCT00018
) 또는 부가물들이다. 명령어(
Figure 112008068592136-PCT00019
)는 모두 공통적이다. 하이 변수로부터 로우 변수로의 정보 흐름이 존재하지 않아야 하는 정책이 요구된다. 더 상세하게, 다음과 같은, 몇몇 종류의 불법 정보 흐름이 방지된다.
1.
Figure 112008068592136-PCT00020
와 같은 할당을 통한 명시적 흐름.
2.
Figure 112008068592136-PCT00021
와 같은 프로그램 구조(조건문 및 while-loop문)를 통한 암묵적 흐름.
3. 제1-클래스의 오브젝트 및/또는 함수에 의해 확장되는 경우, 데이터 및/또는 코드 포인터를 통한 부가적인 암묵적 흐름이 존재할 것이다.
상술한 간단한 언어의 경우, 통상적으로, 보안-타입 시스템은 다음 단계들을 포함한다.
1. 표현식의 타입에서의 보안 레벨을 트래킹하는 단계. 이는 명시적 흐 름을 통한 정보의 누설을 방지하는데 도움이 되며, 즉, 할당에서의 보안 레벨의 불일치가 허용되지 않을 것이다.
2. 보안 레벨에 의해 PC(program counter)를 표시하는 단계. 조건부 표현식이 하이 가드(guard)를 갖는다면, 그의 분기문은 하이 PC 하에서 타입-체크될 것이다. 이는 본질적으로 분기문을 "민감 영역"에 두는 것으로 표시할 것이며, 이 영역 하에서는 로우 변수로의 업데이트가 허용되지 않는다. 이러한 아이디어는 또한 while-loop문과 같은 다른 프로그램 구조에 적용된다.
3. 포인터를 갖는 언어에서, 포인터에는 2개의 보안 레벨이 부여되며, 하나는 포인터에 관한 것이고, 다른 하나는 참조되는 데이터 또는 코드에 관한 것이다. 포인터를 통한 불법 흐름은 포인터가 액세스되는 경우 2개의 보안 레벨에 대한 적절한 체크에 의해 방지될 수 있다.
도 1b는 이들 아이디어 중 처음 2개를 반영한, 간단한 보안 타입 시스템을 나타낸다. 이러한 규칙들은 당업자에 의해 용이하게-이해될 것이다. 규칙[C4](소전제)은 낮은 보안 콘텍스트에서의 높은 계산의 포함을 허용하도록 도우며, 즉, 민감한 콘텍스트에서 일부 코드를 실행하는 것이 안전한 경우, 민감하지 않은 콘텍스트에서 동일한 코드를 실행하는 것 또한 안전하다.
Figure 112008068592136-PCT00022
Figure 112008068592136-PCT00023
는 2005년 12월 19일에 출원되고, 발명의 명칭이 "Information Flow Enforcement for RISC-style Assembly Code"이며, 본 발명의 양수 법인에게 양도되고, 어셈블리 코드에 관한 정보-흐름 문제를 다루는 미국 특허 출원 제 US2005000316621호에 설명되어 있다. 여기에 설명된 주요한 도전과제 중 하나는 어셈블리 코드가 소스 코드만큼 추상화를 제공하지 않는다는 것이다. 소스 코드의 프로그램 구조가 다양한 프로그램 포인트의 보안 레벨을 판정하는데 도움이 되는 반면에, 이러한 구조는 어셈블리 코드에서 이용가능하지 않다. 예를 들어, 소스 프로그램 내의 조건부 문장은 양 분기문들이 가드 표현식의 보안 레벨을 고려하도록 체크될 수 있다. 어셈블리 코드에서는 이러한 체크가 어려우며, 여기서, "평평해진(flattened)" 제어 흐름은 프로그램 구조를 식별하는데 거의 도움을 제공하지 못한다. 통상적으로 조건문은 분기 명령 및 일부 코드 블록으로 번역되고, 여기서, 분기문의 종료 포인트는 명확하지 않다.
Figure 112008068592136-PCT00024
는 타입 주석을 사용하여 누락된 구조를 복구한다. 이들 주석은 보안 레벨의 종료 포인트뿐 아니라 명령들의 보안 레벨에 대한 명시적 정보를 제공한다. 일 실시형태에서, 2개의 보안 동작은 주석들을 조종하는데 사용되고, 적절한 타입화 규칙은 그 주석들이 실제 코드 구조를 충실하게 반영한다는 것을 확인하는데 사용된다.
도 2에는 간략화된 버전의
Figure 112008068592136-PCT00025
의 구문이 제시되어 있다. 원래의
Figure 112008068592136-PCT00026
과 비교하면, 스택 및 다형성(polymorphism)은, 이들이 주로 소스 프로그램에서의 함수 및 절차를 지원하기 위한 것이고, 이들의 취급은 여기에서 설명한 확장부에 직교하기 때문에, 생략되어 있다. 심벌
Figure 112008068592136-PCT00027
는 보안 레벨을 표현하는데 사용된다. 보안 콘텍스트
Figure 112008068592136-PCT00028
는, PC의 보안 레벨이 프로그램 포인트
Figure 112008068592136-PCT00029
에 도 달될 때까지,
Figure 112008068592136-PCT00030
보다 작지 않아야 한다는 것을 나타낸다.
Figure 112008068592136-PCT00031
동작은 보안 레벨을 증가시키는데 사용되며, 이는 하이 조건문에 의해 도입되는 미감 영역과 같은 민감 영역의 시작부에 대응한다.
Figure 112008068592136-PCT00032
은 보안 레벨을 복원하는데 사용되며, 이는 민감 영역의 종료부를 표시한다. 이들 2개의 보안 동작은, 소스 프로그램의 타입화 및 구조에 기초하여 인증 컴파일 프로세스에 의해 타깃 코드로 배치될 수 있다.
이들이 주어지면, 모든 프로그램 포인트의 보안 레벨은 주석(콘텍스트)을 통해 명백해진다. 하이 분기는 하이 콘텍스트에서 발생하고, 하이 콘텍스트에서 로우 데이터로의 할당은 허용되지 않는다. 또한, 모든 참조 셀에는 2개의 보안 레벨이 부여되며, 하나는 포인터에 관한 것이고, 다른 하나는 참조된 데이터 또는 코드에 관한 것이다.
도 3에는 예시적인
Figure 112008068592136-PCT00033
프로그램이 제시되어 있으며, 이는 보안-타입화된 소스 프로그램으로부터 번역된다. 소스 프로그램은 1개의 로우 변수
Figure 112008068592136-PCT00034
및 2개의 하이 변수
Figure 112008068592136-PCT00035
Figure 112008068592136-PCT00036
를 포함한다. 대응하는
Figure 112008068592136-PCT00037
프로그램에서,
Figure 112008068592136-PCT00038
,
Figure 112008068592136-PCT00039
, 및
Figure 112008068592136-PCT00040
라고 라벨을 붙인 히프 셀(heap cell)들은 이들 변수를 나타내는데 사용된다.
Figure 112008068592136-PCT00041
프로그램은 낮은 보안 콘텍스트
Figure 112008068592136-PCT00042
에서
Figure 112008068592136-PCT00043
라고 라벨을 붙인 코드로부터 시작한다. 초기 설정 후에, 보안 콘텍스트를
Figure 112008068592136-PCT00044
로 상승시키며, 여기서,
Figure 112008068592136-PCT00045
는 보안 레벨 하이를 나타낸다. 그 다음, 제어신호가
Figure 112008068592136-PCT00046
라고 라벨을 붙인 코드 로 전송되며, 이는 하이 변수
Figure 112008068592136-PCT00047
에 대한 테스트를 포함하고, 2개의 별도의 분기문으로 실행을 안내한다. 조건문 중 어느 하나의 분기문에서, 하이 변수
Figure 112008068592136-PCT00048
가 업데이트되고, 보안 콘텍스트는
Figure 112008068592136-PCT00049
에 의해 복원된다. 그 다음,
Figure 112008068592136-PCT00050
에서의 코드는 자유롭게 로우 변수
Figure 112008068592136-PCT00051
를 다시 업데이트한다.
더 상세하게 말하면,
Figure 112008068592136-PCT00052
를 타깃으로 하는 함수와 포인터, 정확한 의미론(semantic)과 정확도 증명, 및 인증 컴파일 방식에 관한 지원을 포함하여, Yu 및 Islam의 2005년 3월 미국 캘리포니아주 산 호세의 도코모 통신 연구소에서의, "A Typed Assembly Language for Confidentiality"라는 기술 보고서 DCL-TR-2005-0002, 즉 http://www.docomolabsresearchers-usa.com/~dyu/talc-tr.pdf를 참조한다.
이하, 다양한 보안 가정 하에서 적용가능한
Figure 112008068592136-PCT00053
에 대한 일련의 확장을 설명하며, 이는 불간섭을 위한 로우-레벨 타입 시스템과 실제 애플리케이션 간의 차이를 브리지시킨다. 특히, 이들 확장 모두는, 이하 설명되고 여기에서
Figure 112008068592136-PCT00054
이라고 지칭되는 일반적인 프레임워크에 적합하다. 이러한 방법으로, 일반적인 타입화된 어셈블리어는 "커스터마이즈된"(종료-민감, 타이밍-민감, 가능성, 확률, 및 일반) 불간섭에 이용될 수 있다.
타이밍-관련 채널
여기에는, 몇몇 실제적인 설정에서 어셈블리 코드에 관한 정보-흐름 보안을 다루는데 사용될 수 있는 실시형태들을 설명하고 있다. 순차적인 프로그램의 경우, 일부 은닉 채널을 폐쇄하는 타입 시스템들을 설명하며, 여기에는 종결 채널 및 타이밍 채널을 포함한다. 멀티-스레딩 프로그램의 경우, 가능성 불간섭 및 확률 불간섭을 보증하는 타입 시스템들을 설명한다. 일 실시형태에서, 상술한 타입 시스템
Figure 112008068592136-PCT00055
는 프로그램 실행의 타이밍을 기록한 부가적인 주석을 포함하도록 확장된다. 이들 타이밍 주석은, 높은 보안 콘텍스트에서의 루프의 부존재와 같은 다양한 소스-레벨의 제약조건을 표현하는데 사용된다.
상이한 타이밍 주석은 상이한 정보-흐름 채널을 다루는데 사용된다. 그럼에도 불구하고, 기본적인 타입 시스템 간에는 많은 유사점이 존재한다. 상이한 "타이밍 규칙"이 주어진 경우, 상이한 정보-흐름 채널들을 다루는 일반적인 타입 시스템
Figure 112008068592136-PCT00056
의 형식이 제시되어 있다. 본 발명의 실시형태들의 상세설명은 일반적인 타입 시스템이라는 관점에서 제시되어 있다. 이러한 일반적인 타입 시스템에 상이한 "파라미터"를 부여함으로써, 상이한 상황에 대한 특수화된 타입 시스템이 획득된다.
도 4a는 정보 흐름 강제를 위한 프로세스의 일 실시형태의 흐름도이다. 프로세스는 하드웨어(예를 들어, 회로, 전용 로직 등), (범용 컴퓨터 시스템 또는 적용 머신에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다.
도 4a를 참조하면, 프로세스는 어셈블리 코드 또는 다른 안전하게 타입화된 네이티브 코드를 수신하는 로직을 프로세싱함으로써 시작된다(프로세싱 블록 401). 일 실시형태에서, 프로세싱 로직은 네트워크 위치로부터 코드를 다운로드하거나 검색함으로써 코드를 수신한다.
일 실시형태에서, 안전하게 타입화된 네이티브 코드는, 그 코드가 보안 정책에 위반되는지 여부를 정적으로 체크하는 경우, 타이밍-관련 은닉 채널 및 동시 채널 중 하나 이상에 관해 정보 흐름을 강제하는 타이밍 주석 및 타입 정보에 의해 어셈블리 코드에 주석을 다는 단계를 포함하는 보안-타입 보존 번역을 경험한 어셈블리 코드를 포함한다. 일 실시형태에서, 동시 채널은 멀티-스레딩과 관련되어 있다. 일 실시형태에서, 타이밍-관련 은닉 채널은 하나 이상의 종결 채널, 타이밍 채널, 가능성 채널, 및 확률 채널을 포함한다.
일 실시형태에서, 타이밍 주석은 소스-레벨의 제약조건을 표현한다. 일 실시형태에서, 타이밍 주석은 명령어가 실행되기 위해 필요한 시간의 양을 표시하는 시간 값을 특정하는 제1 주석, 명령어와 관련된 타이밍이 특정 시간 주기 후에 변경될 수 있는지를 특정하는 제2 주석, 명령어가 특정 보안 레벨 하에서 실행되는 수용가능한 타이밍을 특정하는 제3 주석, 및 명령어와 관련된 타이밍이 특정 보안 레벨 하에서 시간 경과와 매칭하는지를 특정하는 제4 주석으로 구성되는 그룹 중 하나 이상을 포함한다. 일 실시형태에서, 타이밍 주석은 관찰가능한 활동 시퀀스와 관련된 실행 시간을 표시하여, 어셈블리 코드의 일부의 실행과 관련된 타이밍 정보의 관찰을 가능하게 한다. 일 실시형태에서, 타이밍 주석은 분기 명령의 양 분기문들이 동일한 타이밍 작동을 나타내는 것으로 표시하는지를 체크하게 할 수 있다. 일 실시형태에서, 그 분기 명령의 양 분기문들은, 그 분기문들이 특 정 보안 레벨에서 식별되는 코드의 종료부에서 동일한 시간의 양으로 합류하는 경우, 동일한 타이밍 작동을 나타낸다. 일 실시형태에서, 타이밍 주석은, 제1 보안 레벨의 변수에 대한 어떠한 출력 또는 업데이트도 제1 보안 레벨보다 더 높은 제2 보안 레벨을 갖는 코드 영역에서 발생하지 않는다는 것을 보장하는지를 체크하게 할 수 있다. 일 실시형태에서, 주석들은 또한 소정의 정보에 기초한 2 개의 실행 경로가 충돌하는 코드 영역의 시작부과 종료부를 표시하는 동작을 포함한다.
코드를 수신한 후에, 프로세싱 로직은 보안 정책에 기초하여 안전하게 타입화된 네이티브 코드에 관한 정보 흐름에 대한 검증을 수행한다(프로세싱 블록 402). 검증은, 디바이스(예를 들어, 셀룰러 전화기와 같은 이동 디바이스)가 코드를 실행하기 전에 그 디바이스에서 수행된다. 일 실시형태에서, 프로세싱 로직은 코드의 동작을 정적으로 체크하여, 그 코드가 보안 정책을 위반하지 않는지 여부를 판정함으로써 검증을 수행한다. 일 실시형태에서, 실행될 때 코드가 식별된 타입 정보로 하여금 그 코드를 실행하는 디바이스로부터 흐르지 않게 하는 경우, 그 코드는 보안(안전) 정책을 위반하지 않는다. 즉, 실행될 때 어셈블리 코드의 제어 하에서 발생할 정보 흐름을 검증한다.
코드가 보안 정책을 위반하지 않는다고 검증이 판정하는 경우, 프로세싱 로직은 그 코드로부터 임의의 주석들을 제거하고(프로세싱 블록 403), 그 코드를 실행한다(프로세싱 로직 404).
도 4b에는 도 4a의 정보 흐름 강제가 구현될 수 있는 환경을 나타내고 있다. 도 4b를 참조하면, 프로그램(450)은 보안 정책(452)에 기초한 보안 타입 간 섭(451)에 영향을 받는다. 그 결과는 안전하게 타입화된 프로그램(453)이다. 인증 컴파일러(454)는 프로그램(453)을 컴파일하고, 결과적으로, 안전하게 타입화된 타깃 코드(455)를 생성한다.
안전하게 타입화된 타깃 코드(455)는 소비자 디바이스에 의해 다운로드될 수도 있다. 소비자 디바이스는 예를 들어, 이하 설명하는 바와 같은 셀룰러 전화기 또는 다른 이동 디바이스일 수도 있다. 소비자 디바이스는, 안전하게 타입화된 타깃 코드(455)를 실행시키기 전에 그 코드(455)에 대해 검증 모듈(460)을 실행시킨다. 검증 모듈(460)은 보안 정책(452)에 기초하여 검증을 수행하며, 타입 체커로서 활동한다.
소비자 디바이스는, 또한, 안전하게 타입화된 타깃 코드(455)를 실행시키기 전에 그 코드에 대해 삭제 모듈(470)을 실행하여, 인증 컴파일러(454)에 의해 그 코드에 추가된 주석을 삭제한다.
검증 모듈(460)이 코드가 안전하다고 판정하거나, 그 코드가 보안 정책(452)에 기초하여 수용될 수 있다고 검증한 경우, 검증 모듈(460)은 안전하게 타입화된 타깃 코드(455)가 소비자 디바이스(예를 들어, 소비자 디바이스 내의 프로세서)에 의해 실행될 수도 있도록 소비자 디바이스를 시그널링한다.
이하, 본 발명의 다양항 실시형태의 상세설명들은 추상화 언어
Figure 112008068592136-PCT00057
를 사용하여 설명한다.
종결 채널
여기에서 설명한 기술은 정보-흐름 보안에 관한 몇몇 상이한 문제들을 다루는데 사용된다. 이하, 이해를 쉽게 하기 위해, 순차적인 프로그램에서의 종결 채널을 상세하게 설명한다.
Figure 112008068592136-PCT00058
는 프로그램 작동을 관찰하는 수단이 프로그램 변수들(또는 어셈블리 코드에 관한 히프 및 레지스터 파일)의 콘텐츠를 검사하는 것에 의한다고 가정한다. 실제로, 변수들의 범위를 넘는 몇몇 은닉 채널들이 존재한다. 하나의 대표적인 예가 종결 채널이다. 더 상세하게, 침입자 또한 프로그램이 종결되었는지 여부를 관찰할 수 있다.
종결 채널을 악용함으로써, 침입자는 불법 정보 흐름을 구성할 수도 있다. 다음의 2개의 예에서, 어떠한 로우 변수도 업데이트되지 않는다. 그럼에도 불구하고, 프로그램이 종결되었는지 여부를 관찰함으로써 하이 변수
Figure 112008068592136-PCT00059
의 값을 알 수 있다.
1. 하이 루프의 비종결 :
Figure 112008068592136-PCT00060
;
2. 하이 조건문 내의 루프의 비종결:
Figure 112008068592136-PCT00061
Figure 112008068592136-PCT00062
.
일 실시형태에서, 모든 while-loop문들은 최소 타입화 로우를 갖도록 제한된다. 이는, 종결 중인 루프조차 잠재적으로 종결되지 않은 것으로 간주하기 때문에, 보수적인 접근법이라는 것에 주의한다. 이는, 로우 PC 하에서만 while-loop문을 허용하는 타입 시스템에 반영된다. 더 상세하게, PC가 루프에 관해 반드시 로우가 되도록, 도 1b의 타입 시스템에서 단 하나의 타입화 규칙, 즉 [C6]만을 변경할 필요가 있다.
Figure 112008068592136-PCT00063
이러한 변화는 소스-레벨 프로그램에서 종결 채널을 폐쇄한다. 상술한 제1 예시에서, 루프의 하이 가드가 로우 PC 하에서 타입화될 수 없기 때문에, 하이 루프가 허용되지 않는다. 제2 예시에서, 하이 조건문의 본문은 하이 PC를 갖지만, 그 루프는 로우 PC 하에서만 허용되기 때문에, 하이 조건문에서의 루프 또한 허용되지 않는다. 본질적으로, 루프 구조는, 하이 분기문들이 종결되도록 강제하는 것을 돕기 때문에, 이러한 분석의 핵심이다. 소스 프로그램에 적용될 수 있는 경우에도, 상기 솔루션은 어셈블리 코드에 대해 작동하지 않는다.
타입화된 어셈블리어에서, 루프와 조건문 모두가 분기 명령을 사용하여 구현되기 때문에, 쉽게 루프를 식별할 수 없다. 일 실시형태에서, 하이 분기문의 종결은 특별히 설계된 주석에 의해 강제된다.
Figure 112008068592136-PCT00064
의 보안 주석은 하이 분기문을 식별하는데 유용하며, 즉, 분기문이 하이 콘텍스트를 갖는 경우에 한해, 그 분기문은 하이이다. 일 실시형태에서, 이러한 분기문의 최상단에서, 로우 영역으로 되돌리기 전의 이들의 실행 스텝의 상한을 표시하는 몇몇 부가적인 타이밍 주석이 하이 분기문에 첨부된다.
Figure 112008068592136-PCT00065
의 솔루션은 하이 분기문들을 종결시키는 것이 결국 로우 영역에서 로우 변수와 매칭시키는 것과 일치할 것이라고 보증한다. 그 부가적인 타이밍 주석은 하이 분기문이 종결되는 것을 보증하기 위한 것이다.
더 상세하게, 일 실시형태에서, 타이밍 태그
Figure 112008068592136-PCT00066
는 이러한 목적으로 사용되며, 여기서,
Figure 112008068592136-PCT00067
는 (최대, 이 개수의 스텝에서 실행이 현재의 하이 영역을 떠날 것이라고 표시하는) 자연수 또는 ("알 수 없는" 또는 "잠재적으로 무한한" 것을 표시하는)
Figure 112008068592136-PCT00068
이다. 하이 콘텍스트 하에서, 타입 시스템은 양 분기문이 유한한 타이밍 태그를 갖는 경우에만 분기 명령을 허용한다. 즉, 하이 분기 시에, 프로그램의 2개의 실행은 나눠질 수도 있지만, 유한한 개수의 스텝에서의 로우 영역에서 합쳐질 것이다. 이는 장차 종결되지 않을 "백워드 점프"를 잠재적으로 방지한다. 분기 명령의 2개의 분기문은 상이한 타이밍 태그를 가질 수도 있다는 것을 주의한다. 타이밍 태그를 (중첩(nested) 분기문에 필요한) 분기 명령 자체에 부여하는 경우, 현재의 하이 영역에서 이탈하기 전에 타이밍 태그는 본질적으로 실행 스텝들의 상한이기 때문에, 더 긴 분기문을 고려한다.
이들 타이밍 주석은 보안-타입화된 소스 코드의 컴파일로부터 유래할 수 있다. 일 실시형태에서, 조건문은 양 분기문들이 유한한 타이밍을 양산하는 경우에 한해, 유한한 타이밍으로 컴파일될 것이고, 루프는 보수적으로 무한한 타이밍으로 컴파일될 것이다. 이는 도 5 및 도 6에 나타내져 있으며(
Figure 112008068592136-PCT00069
Figure 112008068592136-PCT00070
모두 하이 변수임), 여기서, 본 발명을 불명확하게 하는 것을 피하기 위해, 타이밍 주석 및 다른 주석만이 생략되어 있다.
루프는
Figure 112008068592136-PCT00071
로만 타입화될 수 있다는 것을 주의한다. 도 6에서 이러한 경 우를 조사하면, 어떠한 유한한 타이밍도 코드 블록
Figure 112008068592136-PCT00072
에서 백워드 점프인
Figure 112008068592136-PCT00073
를 위해 작동하지 않을 것이다. 유사한 이유에 기초하여, 앞서 제시한 2개의 소스-레벨 카운터-예시들은 유한한 타이밍으로 타입화될 수 없다. 단지 하이 영역에서 유한한 타이밍 주석만을 수용함으로써, 타입 시스템은 이들 루프를 거부할 것이다.
이러한 타이밍 주석은 또한, 유한한 타이밍 주석이 함수 본문에 부여될 수 있기 때문에, 비-반복적인, 루프가 없는 함수를 지원할 수 있다. 코드 재사용을 지원하기 위해, 다음의 예시에서와 같은 간단한 형태의 다형성을 도입하는 것이 유용하다.
Figure 112008068592136-PCT00074
이러한 "포스트-타이밍" 다형성은 본질적으로 상이한 타입화 콘텍스트에 관한 동일한 함수의 다수의 카피본을 선언하고 있다. 일 실시형태에서, 어떤 카피본을 사용할지에 관한 결정은 타입 인스턴스 생성(instantiaion)을 갖는 사용 사이트에 의해 결정된다.
요약하면, 종결 채널을 폐쇄하는 것은 하이 콘텍스트에서 잠재적인 비-종결 구조문(예를 들어, loop문 및 반복 함수)을 허용하지 않음으로써 수행된다. 어셈블리 코드에서, 부분적인 동작에 의해 발생되는 잡히지 않은 예외(uncaught exception)들과 같은 비정상적인 종결에 대한 지원은 하이 영역에서 부분적인 동작 을 허용하지 않음으로써 간단해진다.
Figure 112008068592136-PCT00075
이하, 상기 아이디어들을 구현한, 타입화된 어셈블리어
Figure 112008068592136-PCT00076
를 설명한다. 특히,
Figure 112008068592136-PCT00077
Figure 112008068592136-PCT00078
에 대한 확장이다(도 2에서의 버전이 사용되며, 여기서, 타이밍 작동에 직교하는 특성들은 여기에서 설명한 바와 같이 생략되어 있다).
Figure 112008068592136-PCT00079
에 따르면, 보안 라벨들이 격자
Figure 112008068592136-PCT00080
를 형성한다고 가정한다. 변수
Figure 112008068592136-PCT00081
Figure 112008068592136-PCT00082
엘리먼트를 넘는 범위를 정하는데 사용된다. 심벌
Figure 112008068592136-PCT00083
Figure 112008068592136-PCT00084
은 격자의 최상단과 최하단으로서 사용되며,
Figure 112008068592136-PCT00085
Figure 112008068592136-PCT00086
는 격자 결합 또는 합류 동작으로서,
Figure 112008068592136-PCT00087
는 격자 순서화로서 사용된다.
도 7에는 구문 확장의 일 실시형태가 제시되어 있다. 타이밍 주석
Figure 112008068592136-PCT00088
들은 자연수
Figure 112008068592136-PCT00089
또는 특별히
Figure 112008068592136-PCT00090
일 수도 있다. 이들은 코드 타입 및 코드 값 내에 보안 콘텍스트
Figure 112008068592136-PCT00091
를 수반한다.
도 8에서, 타입화 판단은 타이밍 주석에 대해 확장된다. 명령 시퀀스 및 프로그램은
Figure 112008068592136-PCT00092
에 관해 더 체크된다. 일 실시형태에서, 타이밍 주석들의 4개의 판단 형태가 사용된다. 이들 4개의 판단 형태의 상이한 정의를 사용함으로써, 타입 시스템은 상이한 정보 채널들을 종료시키기 위해 획득된다. 도 9에는 종결 채널에 관한 정의가 존재한다. 다른 채널에 관한 정의들은 이하 더 설명한다.
판단
Figure 112008068592136-PCT00093
은 프로그램이 실행되는 동안 시간의 진행을 트래킹하도록 설계되어 있다. 종결과 관련하여, 임의의 어셈블리 명령어(또는 보안 동작)가 하나의 시간 유닛을 소비하는 것으로 간주하는 것을 충족시킨다. 시간의 경과
Figure 112008068592136-PCT00094
는 낮은 보안 콘텍스트
Figure 112008068592136-PCT00095
에서 부적절하다. 다른 보안 콘텍스트에서,
Figure 112008068592136-PCT00096
Figure 112008068592136-PCT00097
Figure 112008068592136-PCT00098
의 합보다 작지 않을 것을 요구한다. 여기에서, 덧셈 + 는
Figure 112008068592136-PCT00099
로 작동하도록 직접 확장된다. 낮은 보안 콘텍스트
Figure 112008068592136-PCT00100
하에서는 임의의 타이밍이 수용될 수 있다. 반대로, 높은 보안 콘텍스트에서는 타이밍이 유한한 경우에 한해 수용될 수 있다. 결국, 매칭 타이밍
Figure 112008068592136-PCT00101
는, 종결 채널에 관한 역할을 수행하지 못하기 때문에, 단순히 유지되는 것으로 정의된다. 이는 후속 섹션에서의 확장을 위한 플레이스홀더(placeholder)이다.
도 10 및 도 11에는 확장된 타입화 규칙의 일 실시형태를 나타내고 있다. 일 실시형태에 있어서,
Figure 112008068592136-PCT00102
에서, 비-명령들에 관한 규칙에 대해서는
Figure 112008068592136-PCT00103
에 대해 단지 약간의 변경이 있다. 특히, 프로그램을 체크하기 위한 규칙에는 여분의 불변식(extra invariant)이 존재하며, 즉, 타이밍
Figure 112008068592136-PCT00104
는 콘텍스트
Figure 112008068592136-PCT00105
의 보안 레벨에 관해 OK이어야 한다. 이 경우,
Figure 112008068592136-PCT00106
Figure 112008068592136-PCT00107
의 보안 라벨 컴포넌트라고 지칭하는데 사용되며,
Figure 112008068592136-PCT00108
Figure 112008068592136-PCT00109
로 정의된다.
일 실시형태에서, 도 11에 나타낸
Figure 112008068592136-PCT00110
Figure 112008068592136-PCT00111
에 관한 규칙은 동일한 방법으로 모두 확장된다. 도 11을 참조하면, 시간의 경과에 대한 추가적 인 체크는 타이밍 주석이 실제 명령과 매칭한다는 것을 확인하기 위해 사용된다. 명령
Figure 112008068592136-PCT00112
는 2개의 잠재적인 후임자(successor)를 갖는다. 따라서, 양 분기문은 시간 경과에 관해 체크된다. 매칭 판단은 우선 단순히 유지된다.
일 실시형태에서,
Figure 112008068592136-PCT00113
라고 표시된 새로운 보안 콘텍스트에 진입하는 경우, 새로운 타이밍
Figure 112008068592136-PCT00114
이 체크되어 새로운 보안 레벨
Figure 112008068592136-PCT00115
하에서 OK라고 판정한다. 또한, 시간 경과 또한 체크되며, 이는 현재의 보안 레벨
Figure 112008068592136-PCT00116
Figure 112008068592136-PCT00117
가 아닐 수도 있는 멀티-레벨 보안 격자에 유용하다. 이 포인트에서 새로운 콘텍스트
Figure 112008068592136-PCT00118
의 종료 포인트
Figure 112008068592136-PCT00119
의 타이밍
Figure 112008068592136-PCT00120
을 직접 체크할 필요는 없다. 일 실시형태에서,
Figure 112008068592136-PCT00121
에 대해,
Figure 112008068592136-PCT00122
하에서 OK인 시간 경과가 체크된다. 가장 낮은 보안 레벨로 진행하는 경우, 이는 단순히 유지된다.
일 실시형태에서,
Figure 112008068592136-PCT00123
에 대해, 시간 경과가 체크된다. 일 실시형태에서,
Figure 112008068592136-PCT00124
에 대해, 특별한 것이 요구되지 않는다.
Figure 112008068592136-PCT00125
는 비어있는 보안 콘텍스트에서만
Figure 112008068592136-PCT00126
를 허용한다. 이러한 콘텍스트에서, 모든 타이밍 주석은 OK이다.
인증 컴파일
일 실시형태에서, 번역은 최소 소스 언어로부터 보안-타입을 보존하는데 사용된다. 더 상세하게, 이 소스 언어는 규칙 [C6']에 적합한 도 1b에서의 타입 시스템을 갖는 도 1a에서의 언어이다. 이는 간결한 표현을 허용하지만, 주요한 기여, 즉, 어셈블리 코드에서 종결 채널을 폐쇄하는 타이밍 주석의 사용을 증명하 는데 충분하다.
도 1a의 낮고-높은 보안 계층(hierachy)은 2개의 엘리먼트 즉,
Figure 112008068592136-PCT00127
Figure 112008068592136-PCT00128
로 구성되는 간단한 격자를 정의한다. 표시
Figure 112008068592136-PCT00129
Figure 112008068592136-PCT00130
에서 소스 타입
Figure 112008068592136-PCT00131
의 번역을 표시하며, 즉,
Figure 112008068592136-PCT00132
이고,
Figure 112008068592136-PCT00133
이다.
프로그램 번역은,
Figure 112008068592136-PCT00134
를 충족시키고 소스 프로그램의 모든 변수에 관한 엔트리를 포함하는 히프
Figure 112008068592136-PCT00135
및 히프 타입
Figure 112008068592136-PCT00136
에서 시작하는 것으로 가정한다.
Figure 112008068592136-PCT00137
인 임의의 소스 변수 v의 경우,
Figure 112008068592136-PCT00138
이 되도록, 히프에서의 위치
Figure 112008068592136-PCT00139
가 존재한다. 이러한 대응은 여기에서
Figure 112008068592136-PCT00140
라고 지칭된다.
도 12에는 형태
Figure 112008068592136-PCT00141
의 표현식 번역이 정의되어 있다. 명령 벡터
Figure 112008068592136-PCT00142
Figure 112008068592136-PCT00143
의 값을 계산하며, 그 결과는 레지스터
Figure 112008068592136-PCT00144
에 놓인다.
Figure 112008068592136-PCT00145
를 완료하는데 필요한 시간은
Figure 112008068592136-PCT00146
이다.
도 13에서, 명령어 번역의 정의는 소스 프로그램의 타입화 유도(derivation) 구조에 기초한다. 어떤 번역 규칙이 적용되는지는, 소스 명령어를 체크하는데 사용된 마지막 타입화 규칙에 의해 결정된다. (가능한 다수의) 타입화 유도는
Figure 112008068592136-PCT00147
를 사용하여 표시된다. 특히, 일 실시형태에서, 명령어 번역은 형태
Figure 112008068592136-PCT00148
를 갖는다.
6개의 인수는 코드 히프 타입
Figure 112008068592136-PCT00149
, 코드 히프
Figure 112008068592136-PCT00150
,
Figure 112008068592136-PCT00151
의 계산을 위한 시작 라벨
Figure 112008068592136-PCT00152
및 종료 라벨
Figure 112008068592136-PCT00153
, 종료 라벨
Figure 112008068592136-PCT00154
에서의 코드의 타이밍 주석
Figure 112008068592136-PCT00155
, 및 보안 콘텍스트
Figure 112008068592136-PCT00156
이다. 그 명령어의 번역은 확장된 코드 히프 타입
Figure 112008068592136-PCT00157
및 코드 히프
Figure 112008068592136-PCT00158
를 생성하며, 시작 라벨
Figure 112008068592136-PCT00159
에 관한 타이밍 주석을 생성한다.
명령어 번역의 정의는, 인증 컴파일러의 형식상의 모델을 제공하기 때문에, 복잡해 보일 수도 있다. 그럼에도 불구하고, 일부 불변식이 번역에 의해 유지되기 때문에 따르는 것이 어렵지 않다.
·
Figure 112008068592136-PCT00160
Figure 112008068592136-PCT00161
하에서 적절히-타입화되며, 모든 소스 변수 및 절차에 관한 엔트리를 포함한다.
·
Figure 112008068592136-PCT00162
Figure 112008068592136-PCT00163
Figure 112008068592136-PCT00164
라는 라벨로 표시된 연속 코드를 포함한다.
·
Figure 112008068592136-PCT00165
에서의 코드는
Figure 112008068592136-PCT00166
에 의해 반영되는 타이밍 작동을 갖는다.
·
Figure 112008068592136-PCT00167
라는 라벨로 표시된 새로운 코드는
Figure 112008068592136-PCT00168
Figure 112008068592136-PCT00169
에 놓일 것이다.
·생성된 주석
Figure 112008068592136-PCT00170
Figure 112008068592136-PCT00171
에서 시작하는 코드의 타이밍 작동을 반영할 것이다.
·보안 콘텍스트
Figure 112008068592136-PCT00172
는 PC와 매칭되어야 한다.
타이밍 주석의 조종
Figure 112008068592136-PCT00173
로 작동하기 위해, 덧셈 +는 기대되는 방법으로 확장된다고 가정한다. 규칙[TRC1]에서, 시작 라벨의 타이밍 주석
Figure 112008068592136-PCT00174
를 계산하는 경우, 소스 명령어를 계산하는 어셈블리 명령의 코스트(cost)가 종료 라벨의 타이밍 주석
Figure 112008068592136-PCT00175
의 최상단에 더해진다. 규칙[TRC2]에서, 보안 레벨이 낮고, 따라서, 특수한 주석
Figure 112008068592136-PCT00176
가 사용된다. 조건문의 경우, 규칙[TRC3]에서는 "더 긴" 분기문의 타이밍을 고려해야 한다고 지시한다. 규칙[TRC4]에서는 본질적으로 일부 래퍼(wrapper) 코드를 도입하며, 따라서, 이는 타이밍 계산이다. 순차적인 명령어의 경우, 규칙[TRC5]에서는 2개의 서브-명령어의 번역을 결합한다. 최종적으로, while-loop문의 경우, 규칙[TRC6]에서는 간단히 특수한 주석
Figure 112008068592136-PCT00177
를 사용한다.
다른 번역 규칙에 대한 더 많은 정보를 위해, D. Yu 및 N. Islam의 2005년 3월 미국 캘리포니아주 산 호세에 있는 도코모 통신 연구소의 기술 보고서 DCL-TR-2005-0002인 "A Typed Assembly Language for Confidentiality",
Figure 112008068592136-PCT00178
를 참조한다. 번역의 정확도는 2개의 정리로 공식화되며, 이는 번역의 유도에 대한 구조적 귀납법에 의해 직접 증명될 수 있다.
정리 1(표현식 번역)
Figure 112008068592136-PCT00179
Figure 112008068592136-PCT00180
이면,
Figure 112008068592136-PCT00181
이다.
정리 2(명령어 번역)
Figure 112008068592136-PCT00182
Figure 112008068592136-PCT00183
Figure 112008068592136-PCT00184
Figure 112008068592136-PCT00185
이면,
Figure 112008068592136-PCT00186
이다.
타이밍 채널, 가능성 불간섭, 및 확률 불간섭
본 발명의 일 실시형태는 종결 채널이 존재하는 정보-흐름 보안에 대한 것이다. 이하, 타이밍 채널, 가능성 불간섭 및 확률 불간섭에 관한 3개의 다른 실시형태를 설명한다.
타이밍 채널
타이밍 채널을 고려하면, 실행 시간
Figure 112008068592136-PCT00187
및 출력 활동 output
Figure 112008068592136-PCT00188
을 명시적으로 특정하여 머신 모델을 확장하며, 프로그램 실행의 더 정확한 타이밍 정보의 관찰을 허용한다.
Figure 112008068592136-PCT00189
형태에서의,
Figure 112008068592136-PCT00190
의 작은-스텝 상태 트랜지션(transition)의 최상단에서, 프로그램 실행에 따라 생성되는 활동 시퀀스는
Figure 112008068592136-PCT00191
형태로 특정된다. 이는
Figure 112008068592136-PCT00192
Figure 112008068592136-PCT00193
로 스텝이동하여 관찰가능한 활동 시퀀스
Figure 112008068592136-PCT00194
를 생성한다는 것을 의미하며, 여기서,
Figure 112008068592136-PCT00195
는 실행 시간
Figure 112008068592136-PCT00196
에 의해 분리되는 출력 개수
Figure 112008068592136-PCT00197
을 나타낸 다.
(활동 시퀀스)
Figure 112008068592136-PCT00198
동작적 의미론(operational semantics)에서,
Figure 112008068592136-PCT00199
의 값은 현재의 명령에 의해 결정될 것이다. 다음의 샘플의 경우를 고려한다.
Figure 112008068592136-PCT00200
이는 직접 피연산자
Figure 112008068592136-PCT00201
에 대해
Figure 112008068592136-PCT00202
명령어를 실행하는 동작적 의미론의 경우이다. 정규의 머신 상태 업데이트 이외에, 상술한 것 또한 이 명령을 완료하는데 필요한 시간
Figure 112008068592136-PCT00203
을 특정한다. 동작적 의미론의 직접적인 정의는 본 발명을 불명확하게 하는 것을 피하기 위해 생략되어 있으며,
Figure 112008068592136-PCT00204
은 명령
Figure 112008068592136-PCT00205
의 실행 시간을 나타내는데 사용된다. 원래의 동작(즉, 어셈블리 명령)은, 인수로서 주어진 값과 상관없이, 불변시간 내에 실행되어야 한다고 가정한다. 이는 상이하게 타이밍되는 것으로부터
Figure 112008068592136-PCT00206
(직접 이동) 및
Figure 112008068592136-PCT00207
(레지스터 이동)을 방지하지 않는다는 것을 주의한다. 따라서, 스텝 트랜지션의 반사 이행적 폐쇄(reflexive transitive closure)가 확장된다.
이러한 확장된 머신 모델은 타이밍 채널을 통한 정보 누설을 알려준다. 다음의 소스-레벨 프로그램을 예로써 제시한다.
Figure 112008068592136-PCT00208
Figure 112008068592136-PCT00209
이면, 프로그램은 관찰가능한 활동 시퀀스
Figure 112008068592136-PCT00210
를 생성하며, 여기 서,
Figure 112008068592136-PCT00211
은 "시간-소비 동작"의 실행 시간이다.
Figure 112008068592136-PCT00212
이면, 프로그램은
Figure 112008068592136-PCT00213
을 생성하며, 여기서,
Figure 112008068592136-PCT00214
Figure 112008068592136-PCT00215
명령어의 실행 시간이다. 이는, 프로그램에서 어떠한 로우 데이터도 업데이트 되지 않는 경우에도, 정보 누설을 제공한다.
상술한 바와 같이
Figure 112008068592136-PCT00216
의 접근법은 타이밍 채널을 통한 이러한 정보 누설을 설명하는데 사용될 수 있다. 하이 영역의 종료부까지의 실행 스텝의 상한을 기록하는 대신에, 타이밍 주석은 정확히 관찰가능한 활동 시퀀스
Figure 112008068592136-PCT00217
를 기록하는데 사용된다. 하이 영역에서 로우 업데이트를 허용하지 않는 것과 동일한 이유에 기초하여, 출력 활동은 하이 영역에서 허용되지 않는다. 본질적으로, 확장된 타이밍 주석은 실행 시간을 반영한다. 이러한 확장된 시스템에서, 분기에 관한 타입화 규칙은 2개의 분기문의 타이밍 주석이 매칭하는지를 체크해야 한다.
도 14에는
Figure 112008068592136-PCT00218
에 대한 정확한 적용이 제시되어 있다. 타이밍 판단에 상이한 정의를 부여함으로서, 타이밍 채널을 폐쇄하는 타입 시스템이 획득되며, 도 10 및 도 11의 타입화 규칙은 동일하게 유지된다. 도 14에서의 타이밍 규칙은 정확한 타이밍이 트래킹된다는 아이디어를 반영하고 있다. 로우가 아닌 콘텍스트에서의 시간 경과
Figure 112008068592136-PCT00219
의 경우,
Figure 112008068592136-PCT00220
Figure 112008068592136-PCT00221
Figure 112008068592136-PCT00222
의 합을 정확히 반영하게 되어 있다.
Figure 112008068592136-PCT00223
는 여전히 로우 콘텍스트에서만 허용된다. 최종적으로, 타이밍 매칭
Figure 112008068592136-PCT00224
Figure 112008068592136-PCT00225
로서 정의되며, 즉, 이는, 분기 명령을 타입-체크하여 분기문들이 동일한 타이밍 작동을 표시한다고 확인하는 경우에 사용된다는 것 을 상기한다. 도 15에는 예시적인 프로그램 및 관련 타이밍 주석이 제시되어 있다.
여기에서 설명하는 인증 컴파일 방식은, 2000년 1월 메사추세츠주 보스턴에서 있었던 제27차 프로그래밍 언어의 원리에 관한 ACM 심포지엄에서 발표된 "Transforming Out Timing Leaks"의 40페이지 내지 53페이지에서, J. Agat에 의해 제안된 크로스-카피 변환에 의해 생성되는 것과 같이, 보안 소스 프로그램을 지원하는데 적용될 수 있다. 프로그램
Figure 112008068592136-PCT00226
가 크로스-카피 변환에 의해 수용되어
Figure 112008068592136-PCT00227
로 변환된 경우, 적용된 인증 컴파일 방식은
Figure 112008068592136-PCT00228
를 적절히-타입화된 어셈블리 코드로 번역할 것이다.
적용의 경우, 규칙[TRC3]에 유일한 변경이 존재할 것이며, 여기서, "균형적인 분기문들"은 컴파일 후에 균형적으로 유지되도록 보장된다. 도 16에는 규칙[TRC3']로서 1개의 방법이 제시되어 있다. 변환된 소스 프로그램에서, 조건문의 2개의 분기문들은 균형적이라는 것에 주의한다. 따라서, 규칙[TRC3']에서는
Figure 112008068592136-PCT00229
인 코드를 생성할 것이다. 이전의 규칙[TRC3]에서는 타깃 코드가 균형적이지 않으며,
Figure 112008068592136-PCT00230
가 상한을 취하는데 사용된다. 다음으로, 규칙[TRC3']은
Figure 112008068592136-PCT00231
라는 라벨이 표시된 여분의 코드 블록을 삽입하여, 분기문들이 타깃 코드에서 균형적으로 유지된다.
가능성 불간섭
일 실시형태에서, 멀티 스레딩 설정에서의 정보 흐름의 문제를 고려하기 위 해, 불간섭의 표시는 스레드의 비결정 실행을 설명하도록 확장된다. 일 실시형태에서, 프로그램의 관찰가능한 작용을 가능한 실행 결과의 세트라고 간주하는 직접적인 일반화가 사용된다.
스레드 간의 상호활동은 정보 흐름의 채널로서 악용될 수 있다. 침입자가 프로그램의 외부 타이밍 작동을 관찰할 수 없는 경우에도, 일부 내부 타이밍 작동은, 예를 들어, 상호활동 중인 스레드의 실행 순서에 영향을 미침으로써, 여전히 불법 정보 흐름을 발생시킬 수도 있다.
도 17에는 3개의 스레드의 예시적인 프로그램을 제시하고 있다.
Figure 112008068592136-PCT00232
의 값은 초기에 0이라고 가정한다.
Figure 112008068592136-PCT00233
가 참인 경우를 고려한다. 스레드 1은 우선 "언록될(unlocked)" 것이다. 스레드 2은 스레드 1의 마지막 문장 후에 "언록될" 것이다. 따라서,
Figure 112008068592136-PCT00234
의 최종 값은 참일 것이다. 유사하게,
Figure 112008068592136-PCT00235
가 거짓인 경우,
Figure 112008068592136-PCT00236
의 최종 값은 거짓일 것이다. 효과적으로, 상기 멀티 스레딩 프로그램은
Figure 112008068592136-PCT00237
의 콘텐츠를
Figure 112008068592136-PCT00238
로 카피한다.
Figure 112008068592136-PCT00239
Figure 112008068592136-PCT00240
가 하이 변수이고
Figure 112008068592136-PCT00241
이 로우 변수라고 가정하면, 각각의 개별적인 스레드는 통상의 순차적인 정보-흐름 타입 시스템(예를 들어 도 1b의 타입 시스템) 하에서 적절히-타입화된다. 그럼에도 불구하고, 스레드들은 하이 정보를 함께 누설한다.
일 실시형태에서, 비결정 스레드 스케줄링이 존재하는 가능성 불간섭을 보증하기 위해, 모든 스레드는 이러한 타입 시스템에서 별도로 체크되어 순차적인 설정에서의 불간섭에 대해 강제되는 요구사항 외에 2개의 요구사항을 충족시킨다.
1. while-loop문의 가드는 타입 로우를 가져야 하며,
2. while-loop문 자체 또한 타입 로우를 가져야 한다.
이들 2개의 조건은 소스-레벨 프로그램에서 종결 채널을 폐쇄하는 조건과 동일하다. 본질적으로, 루프는 로우 PC 하에서만 발생할 수 있다(상기 규칙[C6'] 참조). 이는, 상술한 어셈블리 코드에 관한 기술이 재사용될 수 있기 때문에, 편리하다. 특히, 타이밍 주석을 지속적으로 감소시키면서, 하이 영역에서의 백워드 점프의 부존재가 강제된다. 멀티-스레팅의 도입은, 타입 체크가 각각의 스레드에 대해 별도로 수행되기 때문에, 상술한 취급 방법에 영향을 미치지 않는다.
확률 불간섭
상술한 불간섭의 일반화는 가능한 실행 결과의 세트를 고려한다. 이는 종종 실제 특정 악용을 방지하는데 충분하게 강력하지 못하다. 예를 들어, 가능한 결과의 확률 분포는 정보 흐름의 채널로서 기능할 수도 있다.
도 18에는 예시적인 프로그램을 나타내고 있다.
Figure 112008068592136-PCT00242
가 하이이고,
Figure 112008068592136-PCT00243
이 로우이며,
Figure 112008068592136-PCT00244
은 중간에 다수의 잠재적인 콘텍스트 스위치를 갖는 긴 문장의 시퀀스이다. 이 프로그램은 상술한 가능성 불간섭 분석에 의해 안전한 것으로 간주될 것이다. 그러나, 대부분의 스케줄러 하에서, 더 긴 분기문을 실행하는 스레드는 다른 스레드보다 더 늦게 종료될 것이기 때문에,
Figure 112008068592136-PCT00245
의 결과는
Figure 112008068592136-PCT00246
와 거의 동일할 것이다.
Figure 112008068592136-PCT00247
의 가능한 결과 세트가
Figure 112008068592136-PCT00248
의 값과 상관없이 동일한 경우에도, 가능한 결과의 확률 분포는 상이하다.
이러한 확률 침입(probabilistic attack)은 프로그램의 내부 타이밍 작동을 악용한다. 따라서, 일 실시형태에서, 타이밍 채널을 폐쇄하는 기술은 외부 타이밍을 다루는 것으로부터 내부 타이밍을 다루는 것으로 적용된다. 더 상세하게, 프로그램 명령의 외부 실행 시간을 반영하는 것 대신에, 타이밍 주석은 잠재적인 콘텍스트 스위치의 개수, 즉, 스레드에 의해 관찰가능한 "내부 시간"을 반영한다. 이러한 내부 시간은 잠재적인 콘텍스트 스위치가 존재할 때마다 1 유닛만큼 진행한다. 따라서, 일 실시형태에서, 타이밍-민감 불간섭 분석법이 적용되며,
1. 하이 영역에서 로우 할당을 허용하지 않고;
2. 하이 영역에서 while-loop문을 허용하지 않고;
3. 2개의 분기문이 내부-타이밍 주석을 매칭하는 단계를 갖는 경우에만 하이 조건문을 허용할 것을 강제한다.
기본 명령어, 스킵 명령, 더미 포크(dummy fork)를 정확히 구현하도록 주의하는 한, 당연히
Figure 112008068592136-PCT00249
는 안전한 소스 프로그램의 인증 컴파일을 지원한다(예를 들어, Sabelfeld 및 Sands의, 2000년 7월 영국 캠브리지에서 있었던 제13차 IEEE 컴퓨터 보안 기초 워크샵에서 발표된 "Probabilistic Noninterference for Multi-Thread Programs"의 200페이지 내지 214페이지).
정확도
보안 레벨
Figure 112008068592136-PCT00250
에 관한 2개의 프로그램의 동등성이 정의되어 있다. 직관적으로, 2개의 프로그램(히프 및 레지스터 파일)은 이들이 낮은 보안 콘텐츠에 동의하는 경우에만 동등하다.
정의 1(히프 동등성)
Figure 112008068592136-PCT00251
Figure 112008068592136-PCT00252
Figure 112008068592136-PCT00253
인 경우,
Figure 112008068592136-PCT00254
이다.
정의 2(레지스터 파일 동등성)
Figure 112008068592136-PCT00255
Figure 112008068592136-PCT00256
Figure 112008068592136-PCT00257
인 경우,
Figure 112008068592136-PCT00258
이다.
정의 3(프로그램 동등성)
Figure 112008068592136-PCT00259
Figure 112008068592136-PCT00260
Figure 112008068592136-PCT00261
Figure 112008068592136-PCT00262
또는
Figure 112008068592136-PCT00263
이다.
상기 관계는 모두 반사적이고, 대칭적이며, 이행적이다. 불간섭 이론은 (관심있는 보안 레벨과 관련하여) 양자 모두 낮은 보안 콘텍스트에서 시작하는 2개의 동등한 프로그램의 실행에 관한 것이다.
Figure 112008068592136-PCT00264
에서, 양 실행이 종결된 경우, 결과 프로그램은 동등하다. 다음으로, 여분의 타이밍 주석은 비종결이 가 장 낮은 보안 레벨의 콘텍스트에서만 발생할 수 있다는 것을 보증한다.
증명의 아이디어는 직관적이다. 관심있는 보안 레벨이 주어진 경우, 실행은 "로우 스텝" 및 "하이 스텝"으로 단계적으로 행해진다. 로우 스텝 하에서 2개의 실행에 관한 것은, 이들이 동일한 명령을 포함하기 때문에, 용이하다. 하이 스텝 하에서, 2개의 실행은 록(lock) 스텝에 더 이상 존재하지 않는다.
Figure 112008068592136-PCT00265
Figure 112008068592136-PCT00266
가 안전한 영역의 시작부 및 종료부를 표시한다는 것을 상기한다.
Figure 112008068592136-PCT00267
전의 프로그램 상태와
Figure 112008068592136-PCT00268
후의 프로그램 상태들은 관련되어 있어, 하이 스텝 하에서의 2개의 실행을 직접 관련 짓는 것을 회피한다. 또한, 안전한 영역에서는 비종결이 존재하지 않는다.
형식상의 상세설명은 3개의 정리 및 1개의 불간섭 이론에서 제공된다. 정리 3에서는 하이 스텝에서의 보안 콘텍스트가 단지
Figure 112008068592136-PCT00269
Figure 112008068592136-PCT00270
에 의해서만 변경될 수 있다는 것을 나타낸다. 정리 4에서는 하이 콘텍스트에서의 프로그램이
Figure 112008068592136-PCT00271
에 의해 현재의 보안 콘텍스트를 방출하는 스텝으로 결국 감소할 것이라는 것을 보여준다. 정리 5에서는 로우 스텝에서의 2개의 동등한 프로그램 간의 록 스텝 관계를 명확하게 한다. 그 다음, 불간섭 이론 1이 후속하며, 즉, 2개의 동등한 프로그램이 주어진 경우로서, 하나가 종결된 경우, 다른 하나는 상기 하나와 동등한 상태에서 종결된다. 추론적으로, 하나가 종결되지 않은 경우, 다른 하나 또한 종결되지 않는다.
다음으로,
Figure 112008068592136-PCT00272
는 동작적 의미론의 단일-스텝 관계
Figure 112008068592136-PCT00273
의 반사적이고 이 행적인 폐쇄를 나타낸다.
Figure 112008068592136-PCT00274
는,
Figure 112008068592136-PCT00275
이고
Figure 112008068592136-PCT00276
이 되도록 모든
Figure 112008068592136-PCT00277
에 관해
Figure 112008068592136-PCT00278
라는 것을 의미한다. 2개의 실행을 비교하는 경우, 심벌
Figure 112008068592136-PCT00279
Figure 112008068592136-PCT00280
와 더불어 프로그램들을 표시하는데 사용된다.
정리 3( 하이 스텝)
Figure 112008068592136-PCT00281
인 경우,
1.
Figure 112008068592136-PCT00282
,
Figure 112008068592136-PCT00283
,
Figure 112008068592136-PCT00284
이 되도록
Figure 112008068592136-PCT00285
Figure 112008068592136-PCT00286
가 존재하거나,
2.
Figure 112008068592136-PCT00287
Figure 112008068592136-PCT00288
또는
Figure 112008068592136-PCT00289
의 형태로 존재한다.
증명 요약:
Figure 112008068592136-PCT00290
의 제1 명령에 대한 케이스 분석에 의함.
Figure 112008068592136-PCT00291
에 관한 타입화 규칙은 콘텍스트가
Figure 112008068592136-PCT00292
이 될 것을 요구하기 때문에,
Figure 112008068592136-PCT00293
Figure 112008068592136-PCT00294
일 수 없다.
Figure 112008068592136-PCT00295
Figure 112008068592136-PCT00296
,
Figure 112008068592136-PCT00297
,
Figure 112008068592136-PCT00298
가 아니라면, 타입화 규칙에서의 동작적 의미론 및 반전에 의해, 다음 스텝에 관한
Figure 112008068592136-PCT00299
Figure 112008068592136-PCT00300
를 획득할 수 있다. 타입화 규칙에서의 시간 경과 판단으로 인해
Figure 112008068592136-PCT00301
가 유지된다. 또한, 타입화 규칙은 로우 히프 셀로 기록하는 것을 금지하며, 따라서, 로우 히프 셀은 그 스텝 이후에도 동일하게 남는다. 레지스터가 업데이트된 경우,
Figure 112008068592136-PCT00302
는 그 레지스터에게 보안 라벨이
Figure 112008068592136-PCT00303
라고 고려하는 타입을 제공하며, 따라서, 레지스터는
Figure 112008068592136-PCT00304
에서 하이 타입을 갖는다. 결과적으로,
Figure 112008068592136-PCT00305
Figure 112008068592136-PCT00306
이다.
정리 4( 콘텍스트 방출)
Figure 112008068592136-PCT00307
인 경우,
Figure 112008068592136-PCT00308
Figure 112008068592136-PCT00309
이 되도록
Figure 112008068592136-PCT00310
, 및
Figure 112008068592136-PCT00311
가 존재한다.
증명 요약:
Figure 112008068592136-PCT00312
에 대한 일반화된 추론에 의함
Figure 112008068592136-PCT00313
에 의한
Figure 112008068592136-PCT00314
의 적절한-타입화에 대한 반전에 의해,
Figure 112008068592136-PCT00315
이라는 것을 함축하는 시간-경과 판단이 획득될 수 있기 때문에,
Figure 112008068592136-PCT00316
인 기본적인 경우에는 용이하게 방출된다.
귀납적인 경우에, 이 명제는
Figure 112008068592136-PCT00317
인 경우에 유지된다고 가정한다. 고려해야 할 2개의 경우가 있으며, 이는 정리 3을 따른다.
정리 3에 의해,
Figure 112008068592136-PCT00318
의 제1 명령이
Figure 112008068592136-PCT00319
또는
Figure 112008068592136-PCT00320
가 아닌 경우에,
Figure 112008068592136-PCT00321
이고,
Figure 112008068592136-PCT00322
의 보안 콘텍스트가
Figure 112008068592136-PCT00323
의 보안 콘텍스트와 동일하도록
Figure 112008068592136-PCT00324
Figure 112008068592136-PCT00325
이 존재한다.
Figure 112008068592136-PCT00326
Figure 112008068592136-PCT00327
에 대한 추론 가설에 의해,
Figure 112008068592136-PCT00328
이고,
Figure 112008068592136-PCT00329
이 되도록
Figure 112008068592136-PCT00330
Figure 112008068592136-PCT00331
이 존재한다. 상술한 내용들을 모으면,
Figure 112008068592136-PCT00332
이고,
Figure 112008068592136-PCT00333
가 정의
Figure 112008068592136-PCT00334
에 의해 이행적이기 때문에
Figure 112008068592136-PCT00335
이며,
Figure 112008068592136-PCT00336
라는 정의 및 사실에 의해
Figure 112008068592136-PCT00337
이다.
Figure 112008068592136-PCT00338
인 경우이다. 동작적 의미론의 정의에 의해,
Figure 112008068592136-PCT00339
이며, 여기서,
Figure 112008068592136-PCT00340
이다.
Figure 112008068592136-PCT00341
의 타입화 규칙 및
Figure 112008068592136-PCT00342
에 대한 반전에 의해,
Figure 112008068592136-PCT00343
이며,
Figure 112008068592136-PCT00344
이 되도록
Figure 112008068592136-PCT00345
이 존재한다. 적절히-타입화된 프로그램의 정의에 의해,
Figure 112008068592136-PCT00346
이다.
Figure 112008068592136-PCT00347
Figure 112008068592136-PCT00348
에 대한 추론 가설에 의해,
Figure 112008068592136-PCT00349
Figure 112008068592136-PCT00350
이 되도록
Figure 112008068592136-PCT00351
Figure 112008068592136-PCT00352
가 존재한다. 그 다음,
Figure 112008068592136-PCT00353
Figure 112008068592136-PCT00354
에서의 히프 및 레지스터 파일이 동일하기 때문에,
Figure 112008068592136-PCT00355
가 후속한다.
Figure 112008068592136-PCT00356
라고 가정한다.
Figure 112008068592136-PCT00357
(
Figure 112008068592136-PCT00358
의 현재의 명령)의 타입화 규칙에 대한 반전에 의해,
Figure 112008068592136-PCT00359
이다. 동작적 의미론에 의해,
Figure 112008068592136-PCT00360
이며, 여기서,
Figure 112008068592136-PCT00361
Figure 112008068592136-PCT00362
이다.
Figure 112008068592136-PCT00363
의 적절한-타입화에 대한 반전(즉,
Figure 112008068592136-PCT00364
)에 의해,
Figure 112008068592136-PCT00365
이다.
Figure 112008068592136-PCT00366
Figure 112008068592136-PCT00367
에 대한 추론 가설에 의해,
Figure 112008068592136-PCT00368
Figure 112008068592136-PCT00369
이 되도록,
Figure 112008068592136-PCT00370
, 및
Figure 112008068592136-PCT00371
이 존재한다. 상술한 내용들을 모으면, 원래의 명제는
Figure 112008068592136-PCT00372
인 경우에 유지된다.
Figure 112008068592136-PCT00373
인 경우이다.
Figure 112008068592136-PCT00374
의 타입화 규칙에 대한 반전에 의해,
Figure 112008068592136-PCT00375
이다.
Figure 112008068592136-PCT00376
, 및
Figure 112008068592136-PCT00377
가 되도록 선택하면, 이 명제는 단순히 유지된다.
정리 5( 로우 스텝)
Figure 112008068592136-PCT00378
Figure 112008068592136-PCT00379
인 경우,
Figure 112008068592136-PCT00380
Figure 112008068592136-PCT00381
, 및
Figure 112008068592136-PCT00382
이 되도록
Figure 112008068592136-PCT00383
Figure 112008068592136-PCT00384
가 존재한다.
증명 요약:
Figure 112008068592136-PCT00385
의 제1 명령에 대한 케이스 분석에 의함.
Figure 112008068592136-PCT00386
및,
Figure 112008068592136-PCT00387
의 정의에 의해,
Figure 112008068592136-PCT00388
Figure 112008068592136-PCT00389
는 동일한 명령 시퀀스를 포함한다.
Figure 112008068592136-PCT00390
의 경우에는 상태를 변경시키지 않으며, 따라서, 단순히 동등하게 유지된다. 다른 모든 경우에는 보안 콘텍스트가
Figure 112008068592136-PCT00391
보다 작게 유지된다. 타입화 규칙에 대한 조사는 히프에서의 로우 위치가 로우 값에 단지 할당된다는 것을 보여준다. 일단 하나의 레지스터에 하이 값이 주어지면,
Figure 112008068592136-PCT00392
에서의 타입이 하이로 변경될 것이다. 분기하는 경우, 가드는 로우이어야 하며, 따라서,
Figure 112008068592136-PCT00393
Figure 112008068592136-PCT00394
모두는 동일한 코드로 분기된다. 따라서, 2개의 프로그램은 한 스텝 후에 동등하게 유지된다.
이론 1(불간섭)
Figure 112008068592136-PCT00395
Figure 112008068592136-PCT00396
Figure 112008068592136-PCT00397
Figure 112008068592136-PCT00398
Figure 112008068592136-PCT00399
Figure 112008068592136-PCT00400
인 경우,
Figure 112008068592136-PCT00401
Figure 112008068592136-PCT00402
이 되도록
Figure 112008068592136-PCT00403
이 존재한다.
증명 요약: 유도
Figure 112008068592136-PCT00404
의 스텝의 개수에 대한 일반적인 추론에 의함. 0 스텝의 기본 경우는 단순하다. 귀납적인 경우는 의 제1 명령에 대한 케이스 분석에 의해 증명된다.
Figure 112008068592136-PCT00406
이고
Figure 112008068592136-PCT00407
인 경우를 고려한다. 타입화 규칙 및 동작적 의미론의 정의에 의해,
Figure 112008068592136-PCT00408
이 되도록
Figure 112008068592136-PCT00409
가 존재하며, 여기서,
Figure 112008068592136-PCT00410
Figure 112008068592136-PCT00411
Figure 112008068592136-PCT00412
이다. 정리 4에 의해,
Figure 112008068592136-PCT00413
, 및
Figure 112008068592136-PCT00414
Figure 112008068592136-PCT00415
이 되도록,
Figure 112008068592136-PCT00416
Figure 112008068592136-PCT00417
Figure 112008068592136-PCT00418
가 존재한다. 따라서,
Figure 112008068592136-PCT00419
이고,
Figure 112008068592136-PCT00420
이다.
동작적 의미론의
Figure 112008068592136-PCT00421
의 경우에 의해,
Figure 112008068592136-PCT00422
이며, 여기서,
Figure 112008068592136-PCT00423
이고,
Figure 112008068592136-PCT00424
이다.
Figure 112008068592136-PCT00425
의 유도에 대한 반전에 의해,
Figure 112008068592136-PCT00426
Figure 112008068592136-PCT00427
를 획득할 수 있다.
Figure 112008068592136-PCT00428
가 후속한다.
Figure 112008068592136-PCT00429
의 명령 시퀀스가
Figure 112008068592136-PCT00430
Figure 112008068592136-PCT00431
의 유도에 대한 반전에 의해,
Figure 112008068592136-PCT00432
를 획득한다.
유사한 이유에 의해,
Figure 112008068592136-PCT00433
이며, 여기서,
Figure 112008068592136-PCT00434
Figure 112008068592136-PCT00435
Figure 112008068592136-PCT00436
, 및
Figure 112008068592136-PCT00437
이다. 동등한 관계의 이행 성에 의해,
Figure 112008068592136-PCT00438
Figure 112008068592136-PCT00439
이다. 따라서,
Figure 112008068592136-PCT00440
이다. 그 다음, 추론 가설에 의한 경우가 후속한다.
다른 모든 경우가 한 스텝 후에 로우로 남는다. 정리 5에 의해, 다음 스텝에서의 2개의 프로그램은 동등하며, 적절히-타입화된다. 그 다음, 추론 가설에 의한 이들 경우의 증명이 후속한다.
컴퓨터 시스템의 예시
도 19는 여기에서 설명한 하나 이상의 동작을 수행할 수도 있는 예시적인 컴퓨터 시스템의 블록도이다. 도 19를 참조하면, 컴퓨터 시스템(1900)은 예시적인 클라이언트 및 서버 컴퓨터 시스템을 포함할 수도 있다. 컴퓨터 시스템(1900)은 정보를 통신하기 위한 통신 메커니즘 또는 버스(1911), 및 정보를 프로세싱하기 위해 버스(1911)와 커플링된 프로세서(1912)를 포함한다. 프로세서(1912)는 하나의 마이크로프로세서로 제한되는 것은 아니지만, 예를 들어, PentiumTM, PowerPCTM, AlphaTM 등과 같은 마이크로프로세서를 포함한다.
시스템(1900)은 프로세서(1912)에 의해 실행되는 명령들 및 정보를 저장하기 위해 버스(1911)에 커플링되는 (주 메모리라고 지칭되는) RAM(random access memory), 또는 다른 동적 저장 디바이스(1904)를 더 포함한다. 또한, 주 메모리(1904)는 프로세서(1912)에 의해 명령들이 실행되는 동안에 임시 변수 또는 다른 중간 정보를 저장하는데 사용될 수도 있다.
또한, 컴퓨터 시스템(1900)은 프로세서(1912)를 위한 정적 정보 및 명령들을 저장하기 위해 버스(1911)에 커플링되는 ROM(read only memory) 및/또는 다른 정적 저장 디바이스(1906), 및 자기 디스크 또는 광 디스크 및 이에 대응하는 디스크 드라이브와 같은 데이터 저장 디바이스(1907)를 포함한다. 데이터 저장 디바이스(1907)는 정보 및 명령들을 저장하기 위해 버스(1911)에 커플링된다.
컴퓨터 시스템(1900)은 컴퓨터 사용자에게 정보를 디스플레이하기 위해 버스(1911)에 커플링되는, CRT(cathode ray tube), LCD(liquid crystal display)와 같은 디스플레이 디바이스(1921)에 더 커플링될 수도 있다. 또한, 문자, 숫자 또는 다른 키들을 포함하는 문자 및 숫자 입력 디바이스(1922)는 프로세서(1912)에 대해 정보 및 명령어 선택을 통신하기 위해 버스(1911)에 커플링될 수도 있다. 추가적인 사용자 입력 디바이스는 프로세서(1912)에 대해 지시 정보 및 명령어 선택을 통신하고, 디스플레이(1921)에서 커서의 이동을 제어하기 위해 버스(1911)에 커플링되는, 마우스, 트랙볼, 트랙패드, 스타일러스, 또는 커서 방향 키와 같은 커서 제어기(1923)이다.
버스(1911)에 커플링될 수도 있는 또 다른 디바이스는 하드 카피 디바이스(1924)이며, 이는 종이, 필름, 또는 유사한 타입의 매체와 같은 매체에 정보를 표시하는데 사용될 수도 있다. 버스(1911)에 커플링될 수도 있는 또 다른 디바이스는 전화기 또는 휴대용 디바이스와 통신하는 유/무선 통신 수용체(1925)이다.
시스템(1900)의 임의의 컴포넌트 또는 모든 컴포넌트 및 관련 하드웨어가 본 발명에 사용될 수도 있다는 것에 주의한다. 그러나, 다른 구성의 컴퓨터 시스템이 이들 디바이스의 일부 또는 전부를 포함할 수 있다.
상기 설명을 읽은 후에, 당업자에게 본 발명의 다수의 변화 및 변형이 당연히 명백해질 것이지만, 예시를 통해 설명하고 나타낸 임의의 특정한 실시형태로 제한하려는 것은 아니라는 것을 이해할 것이다. 따라서, 다양한 실시형태의 상세설명에 대한 참조는 본 발명에 본질적인 것으로 간주되는 특성들만을 스스로 인용하는 특허청구범위의 범위를 제한하려는 것이 아니다.

Claims (4)

  1. 어셈블리 코드가 보안 정책에 위반되는지 여부에 관해 정적으로 체크하는 경우, 하나 이상의 타이밍-관련 은닉 채널(covert channel) 및 동시 채널(concurrent channel)에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석(annotation)들을 가진 어셈블리 코드를 수신하는 단계; 및
    상기 보안 정책에 기초하여 상기 어셈블리 코드에 대한 정보 흐름에 관해 검증을 수행하는 단계를 포함하는, 방법.
  2. 명령들을 저장하는 하나 이상의 기록가능한 매체를 가진 제조품으로서,
    상기 명령들은, 시스템에 의해 실행되는 경우, 상기 시스템으로 하여금,
    어셈블리 코드가 보안 정책에 위반되는지 여부에 관해 정적으로 체크되는 경우, 타이밍-관련 은닉 채널 및 동시 채널 중 하나 이상에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석을 가진 어셈블리 코드를 수신하는 단계; 및
    상기 보안 정책에 기초하여 상기 어셈블리 코드에 대한 정보 흐름에 관해 검증을 수행하는 단계를 포함하는 방법을 수행하게 하는, 제조품.
  3. 주석 달린 어셈블리 코드를 저장하는 메모리로서, 상기 주석 달린 어셈블리 코드는, 상기 주석 달린 어셈블리 코드가 보안 정책에 위반되는지 여부에 관해 정적으로 체크되는 경우, 타이밍-관련 은닉 채널 및 동시 채널 중 하나 이상에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석을 가진, 상기 메모리,
    검증 모듈,
    코드 변형 모듈, 및
    상기 보안 정책에 기초하여 상기 주석 달린 어셈블리 코드에 대한 정보 흐름에 관해 검증을 수행하기 위해 상기 검증 모듈을 실행시키는 프로세서를 포함하는, 장치.
  4. 어셈블리 코드에 관해 보안-타입 보존 변환을 수행하는 단계를 포함하며,
    상기 보안-타입 보존 변환을 수행하는 단계는,
    상기 어셈블리 코드가 보안 정책에 위반되는지 여부에 관해 정적으로 체크되는 경우, 타이밍-관련 은닉 채널 및 동시 채널 중 하나 이상에 관한 정보 흐름을 강제하는 타입 정보를 갖는 타이밍 주석으로 상기 어셈블리 코드에 주석을 다는 단계;
    실행될 때, 상기 어셈블리 코드로부터 발생되는 정보 흐름에 관한 컴파일을 인증하는 단계; 및
    안전하게 타입화된 어셈블리 코드가 네트워크를 통해 다운로드될 수 있게 하는 단계를 포함하는, 방법.
KR1020087023929A 2006-09-14 2007-09-13 타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 risc식 어셈블리 코드를 위한 정보 흐름 강제 KR101025467B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US84497406P 2006-09-14 2006-09-14
US60/844,974 2006-09-14
US11/840,158 2007-08-16
US11/840,158 US8091128B2 (en) 2006-09-14 2007-08-16 Information flow enforcement for RISC-style assembly code in the presence of timing-related covert channels and multi-threading

Publications (2)

Publication Number Publication Date
KR20080104167A true KR20080104167A (ko) 2008-12-01
KR101025467B1 KR101025467B1 (ko) 2011-04-04

Family

ID=38705141

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023929A KR101025467B1 (ko) 2006-09-14 2007-09-13 타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 risc식 어셈블리 코드를 위한 정보 흐름 강제

Country Status (5)

Country Link
US (1) US8091128B2 (ko)
EP (1) EP2062187B1 (ko)
JP (1) JP5308337B2 (ko)
KR (1) KR101025467B1 (ko)
WO (1) WO2008033539A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321666B2 (en) * 2006-08-15 2012-11-27 Sap Ag Implementations of secure computation protocols
US8488567B2 (en) 2007-10-02 2013-07-16 Samsung Electronics Co., Ltd Repeating transmissions of signals in communication systems
US20100023782A1 (en) * 2007-12-21 2010-01-28 Intel Corporation Cryptographic key-to-policy association and enforcement for secure key-management and policy execution
US8990930B2 (en) * 2009-02-06 2015-03-24 Microsoft Corporation Code property analysis for security mitigations
US9275246B2 (en) * 2009-10-08 2016-03-01 International Business Machines Corporation System and method for static detection and categorization of information-flow downgraders
US9032378B2 (en) 2011-12-16 2015-05-12 Microsoft Technology Licensing, Llc Available symbol set generation using untyped variable
US9305166B2 (en) * 2013-03-08 2016-04-05 The Regents Of The University Of California Method and systems for detecting and isolating hardware timing channels
US8955155B1 (en) 2013-03-12 2015-02-10 Amazon Technologies, Inc. Secure information flow
US10437993B2 (en) * 2014-10-03 2019-10-08 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for detecting covert timing channels
US10691797B2 (en) * 2016-04-21 2020-06-23 Big Stream Solutions, Inc. Systems and methods for compiler guided secure resource sharing
KR101978812B1 (ko) 2017-08-09 2019-05-15 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
CN109032934B (zh) * 2018-07-10 2021-07-02 北京计算机技术及应用研究所 一种fpga/ip核逻辑代码安全规则检测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US6253370B1 (en) * 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
JP4547861B2 (ja) * 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
US20060143689A1 (en) 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code

Also Published As

Publication number Publication date
EP2062187B1 (en) 2019-04-10
US20080072323A1 (en) 2008-03-20
JP2010503921A (ja) 2010-02-04
US8091128B2 (en) 2012-01-03
WO2008033539A1 (en) 2008-03-20
JP5308337B2 (ja) 2013-10-09
EP2062187A1 (en) 2009-05-27
KR101025467B1 (ko) 2011-04-04

Similar Documents

Publication Publication Date Title
KR101025467B1 (ko) 타이밍-관련 은닉 채널 및 멀티 스레딩이 존재하는 risc식 어셈블리 코드를 위한 정보 흐름 강제
Blazy et al. Verifying constant-time implementations by abstract interpretation
Barthe et al. Non-interference for a JVM-like language
US20060143689A1 (en) Information flow enforcement for RISC-style assembly code
US8181134B2 (en) Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
US8468499B2 (en) Directed testing for property violations
Cordeiro et al. JBMC: Bounded Model Checking for Java Bytecode: (Competition Contribution)
Ernst et al. SecCSL: Security concurrent separation logic
Hahner et al. Modeling data flow constraints for design-time confidentiality analyses
Blanchard et al. Ghosts for lists: a critical module of Contiki verified in Frama-C
Schlich et al. Reduction of interrupt handler executions for model checking embedded software
Argañaraz et al. Detection of vulnerabilities in smart contracts specifications in ethereum platforms
Cassez et al. Formal and executable semantics of the ethereum virtual machine in dafny
Xiang et al. Co-Inflow: Coarse-grained information flow control for Java-like languages
Hu et al. A security type verifier for smart contracts
Avvenuti et al. JCSI: A tool for checking secure information flow in java card applications
Koval et al. Lincheck: A practical framework for testing concurrent data structures on JVM
Cai et al. Fine-grained smart contract vulnerability detection by heterogeneous code feature learning and automated dataset construction
Liu et al. Proving LTL properties of bitvector programs and decompiled binaries
Liu et al. Verifying pufferfish privacy in hidden Markov models
Lounas et al. A formal verification of dynamic updating in a Java-based embedded system
Chapman et al. Cyber Security
Haar et al. Combining Refinement of Parametric Models with Goal-Oriented Reduction of Dynamics
Sarrab Policy based runtime verification of information flow.
Bastys et al. Automatic Annotation of Confidential Data in Java Code

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: 20140228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160219

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170221

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180302

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190306

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200303

Year of fee payment: 10