KR20060096286A - 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법,시스템 및 컴퓨터-액세스가능 매체 - Google Patents

다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법,시스템 및 컴퓨터-액세스가능 매체 Download PDF

Info

Publication number
KR20060096286A
KR20060096286A KR1020060015573A KR20060015573A KR20060096286A KR 20060096286 A KR20060096286 A KR 20060096286A KR 1020060015573 A KR1020060015573 A KR 1020060015573A KR 20060015573 A KR20060015573 A KR 20060015573A KR 20060096286 A KR20060096286 A KR 20060096286A
Authority
KR
South Korea
Prior art keywords
group
fields
identifier
block
encoded
Prior art date
Application number
KR1020060015573A
Other languages
English (en)
Other versions
KR101183432B1 (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 KR20060096286A publication Critical patent/KR20060096286A/ko
Application granted granted Critical
Publication of KR101183432B1 publication Critical patent/KR101183432B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

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

Abstract

일반적으로 기술된 본 발명의 실시예들은 악성 공격 및 버퍼 오버런(의도적이든지 의도적이 아니든지)으로부터 컴퓨터를 보호하기 위한 시스템 및 방법을 제공한다. 특히, 본 발명의 실시예들은 데이터 블럭의 블럭 헤더의 내용을 보호하여, 메모리 관리자가 블럭 헤더의 일부가 수정되었는지를 판정할 수 있게 한다. 본 발명의 한 양상에 따라, 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법이 제공된다. 방법은 다수의 필드를 적어도 제1 그룹 및 제2 그룹으로 그룹화하는 단계, 및 제1 그룹에 대한 제1 식별자, 및 제2 그룹에 대한 제2 식별자를 생성하는 단계를 포함한다. 부가적으로, 그룹의 필드들에 포함된 정보를 보호하기 위하여 제1 및 제2 그룹이 인코딩된다. 또한, 제1 및 제2 식별자도 그룹에 인코딩될 수 있다.
악성 공격, 보안, 보호, 식별자

Description

다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법, 시스템 및 컴퓨터-액세스가능 매체{METHOD AND SYSTEM FOR ENCODING METADATA}
도 1은 두 개의 할당된 블럭을 포함하는 메모리 영역의 일부에 대한 블럭도.
도 2는 버퍼 오버런을 야기하는 악성 코드가 작성된 두 개의 데이터 블럭을 포함하는 메모리 영역에 대한 블럭도.
도 3은 본 발명의 실시예에 따라, 우연이든지 고의적이든지 버퍼 오버런, 및 허가되지 않은 액세스에 대한 기타 시도로부터 기인하는 헤더 메타데이터의 붕괴를 검출할 뿐 아니라, 메모리 관리자 기능으로부터 기인하는 기타 약점을 이용하는 악성 코드의 잠재성을 경감시키도록 인코딩된 블럭 헤더의 블럭도.
도 4는 본 발명의 실시예에 따라, 블럭 헤더의 필드들이 개별적으로 그룹화 및 인코딩되는 인코딩된 블럭 헤더의 블럭도.
도 5는 본 발명의 실시예에 따라, 필드들의 그룹을 인코딩하기 위한 인코딩 루틴을 나타내는 흐름도.
도 6은 본 발명의 실시예에 따라, 그룹을 디코딩하기 위한 디코딩 루틴을 나타내는 흐름도.
<도면의 주요부분에 대한 부호의 설명>
501: 인코딩 루틴 시작
503: 인코딩될 필드들 수신
507: 필드들을 그룹화
509: 그룹의 필드들을 배열
511: 그룹에 대한 식별자?
513: 그룹에 대한 식별자 생성
515: 그룹을 암호화
517: 부가적인 그룹?
519: 종료
일반적으로, 본 발명은 컴퓨터 및 컴퓨터 데이터에 관한 것이며, 특히, 블럭 메타데이터를 인코딩하기 위한 시스템 및 방법에 관한 것이다.
현재, 컴퓨터의 메모리는 본원에서 일반적으로 "메모리 관리자"라 불리는 컴퓨터의 운영 시스템의 일부에 의해 관리된다. 컴퓨터 프로그램 또는 기타 컴퓨팅 어플리케이션(본원에서는 총괄적으로 "어플리케이션"이라 칭함)이 동작을 수행하고, 데이터를 저장하거나, 기타 기능을 수행하기 위해 메모리를 필요로 하는 경우, 메모리 관리자에게 필요한 메모리의 양에 대한 식별을 제공함으로써 메모리 관리자로부터 필요한 메모리를 요청한다. 응답으로, 메모리 관리자가 요청된 양의 메모리(본원에서 "블럭"이라 칭함)를 할당하고, 블럭을 식별 및 기술하는 블럭 헤더를 생성하며, 요청 어플리케이션에게 할당된 메모리에의 액세스를 허용한다. 블럭 헤더는 일반적으로 메모리를 관리하기 위하여 메모리 관리자에 의해 생성되고 메모리 관리자에 의해 사용되는 여러 필드를 포함한다. 예를 들어, 블럭 헤더의 필드들은 블럭 크기에 대한 표현, 이전 블럭에의 링크에 대한 표현, 블럭 플래그, 미사용 바이트, 및 기타 내부 블럭 상태를 포함할 수 있다.
블럭 크기는 메모리 요청에 응답하여 할당되는 블럭의 크기에 대한 식별을 포함할 수 있다. 플래그 필드는 블럭이 비지(busy)인지, 프리(free)인지, 내부적으로 할당되었는지 등을 식별하기 위해 메모리 관리자에 의해 사용될 수 있다. 미사용 바이트들은 할당된 블럭 중 요청 어플리케이션에 의해 사용되지 않는 바이트들을 메모리 관리자에게 식별해줄 수 있다. 일반적으로, 블럭 헤더의 필드들은 메모리 관리자에 의해 사용되고, 사적이고 메모리 관리자에 의해서만 수정되는 것으로 의도된다. 부가적으로, 블럭 헤더의 필드들은 내용, 수, 및 크기에 있어서 변할 수 있다.
도 1은 두 개의 할당된 블럭(101 및 102)을 포함하는 메모리 영역의 일부에 대한 블럭도이다. 각 블럭(101, 102)은, 블럭을 식별하는 메타데이터를 포함하는 블럭 헤더를 포함하며, 블럭 헤더는 필드들로 분리된다. 예를 들어, 블럭(102)은 블럭 헤더(103)를 포함한다. 블럭 헤더(103)는 6개의 필드(105, 107, 109, 111, 113, 115)로 분리되는 블럭(102)에 대한 메타데이터를 포함한다. 필드들(105, 107, 109, 111, 113, 115) 각각은 블럭(102)을 관리하기 위해 메모리 관리자에 의해 사용되는 정보를 포함한다.
블럭 헤더의 사용이 데이터를 더욱 효율적으로 관리할 수 있게 하지만, 잠재적으로 컴퓨팅 시스템을 공격 및 의도되지 않은 에러에 노출시킨다. 예를 들어, 어플리케이션은 특정 양의 메모리를 요청할 수 있고, 그만큼의 메모리를 할당받을 수 있지만, 할당된 메모리가 수용할 수 있는 것보다 많은 양의 데이터를 기입할 수 있다. 따라서, 메모리 영역에서 다음 블럭 헤더 및 잠재적으로 다음 블럭의 이어지는 데이터의 일부가 덮어쓰여질 수 있고, 이에 의해 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다. 할당된 메모리보다 많은 데이터를 기입하는 것은 일반적으로 "버퍼 오버런(buffer overrun)"이라 불린다. 버퍼 오버런은 어플리케이션의 의도하지 않은 부적절한 코딩으로부터 야기될 수 있다. 그러나, 버퍼 오버런은 메모리의 일부를 제어하여 악성 코드를 실행하려는 노력으로 고의적으로 프로그래밍될 수 있다.
도 2는 악성 코드가 기입되어 버퍼 오버런을 야기하는 두 개의 데이터 블럭을 포함하는 메모리 영역에 대한 블럭도이다. 도 1에 관하여 논의된 메모리 영역에 대해 계속하면, 어플리케이션은 데이터를 기입하기 위해 필요한 특정 양의 메모리를 요청할 수 있다. 응답으로, 메모리 관리자는 데이터 영역(200)으로부터 데이터의 블럭(201)을 할당하고, 그 데이터 블럭(201)에 대한 블럭 헤더(216)를 생성하며, 요청 어플리케이션이 그 블럭에 기입하도록 할 수 있다. 도 1 및 도 2에서 알 수 있는 바와 같이, 할당된 데이터 블럭(201)이 메모리 영역(200)에서 데이터의 또다른 할당된 블럭(202)에 인접할 수 있고, 그것 또한 블럭 헤더(203) 및 데이터 블럭(217)을 포함한다.
블럭(201)에의 액세스가 허가되면, 어플리케이션은 의도하지 않게 할당된 메모리보다 더 많은 데이터를 기입할 수 있고, 그것은 블럭 헤더(203)를 넘어서까지 그리고 어쩌면 인접한 메모리 블럭(202)의 데이터 블럭(217)의 일부를 넘어서까지 데이터를 기입하는 버퍼 오버런을 야기한다. 덮어쓰여진 블럭 헤더 필드(205, 207, 209, 211, 213, 215) 중 몇몇이 메모리 관리자에 의해 사용되기 때문에, 불일치를 인지하여 예외 발생, 어플리케이션 종료, 에러 기록 등과 같은 동작들을 수행함으로써 예측할 수 없는 결과를 방지할 수 있다.
악성 코드의 생성자가 고의적 버퍼 오버런을 메모리 관리자에게 숨기려고 할 수 있고, 따라서 오버런이 검출되지 않을 수 있으며, 또는 어플리케이션에 대해 제어를 행하려는 노력에 의한 불일치로 인하여 어플리케이션이 고장나는 것을 방지하려 할 수 있다. 버퍼 오버런을 숨기기 위한 하나의 기술은 블럭 헤더의 특정 필드를 복구하려고 시도하는 것이다. 특히, 악성 코드의 생성자는, 블럭 헤더의 어떤 필드가 메모리 관리자가 버퍼 오버런을 검출하게 하고, 악성 코드가 제어할 수 있기 전에 어플리케이션을 종료시킬 수 있는지를 예측할 수 있다. 그러한 예측을 사용하여, 그러한 필드들에 대한 알맞은 값이 예측될 수 있고, 그러한 필드들을 복구하려 시도할 필드들의 위치의 버퍼 오버런에 데이터가 포함될 수 있다. 예를 들어, 필드 3(209) 및 필드 4(211)가 변경되면 메모리 관리자가 버퍼 오버런을 검출할 것이라는 것을 악성 코드의 작성자가 예측할 수 있는 경우, 그러한 예측에 기초하여, 그 필드들의 위치에 기입된 데이터가 그 필드들에 본래 포함된 데이터와 동 일하도록 버퍼 오버런이 생성될 수 있다.
특정 필드(209 및 211)에 대한 알맞은 값을 예측함으로써 악성 코드가 버퍼 오버런을 숨기는 데에 성공하면, 악성 코드는 블럭 헤더(205, 207, 213 및 219)의 다른 필드들을 수정하여, 그 필드들이 메모리 관리자에 의해 액세스되는 경우에, 악성 코드가 어플리케이션을 제어하여 타겟 어플리케이션에서 악성 코드의 일부를 실행하는 것과 같이 잠재적으로 의도된 해로운 결과를 컴퓨터에 야기할 수 있다.
따라서, 버퍼 오버런이 악성 코드에 의해 이용될 수 있기 전에, 시도된 버퍼 오버런을 검출하기 위해 사용될 수 있는 시스템 및 방법이 필요하다. 그러한 시스템 및 방법은 컴퓨터를 악성 공격으로부터 보호하는 데에 유익할 뿐 아니라, 성능, 메모리 활용도 등에 영향을 주는 기타 디버깅 방법의 오버헤드를 감수할 필요없이, 어플리케이션 개발 시 초기에 의도하지 않은 프로그램 결함을 검출할 능력도 제공할 것이다.
일반적으로 기술된 본 발명의 실시예들은 컴퓨터가 악성 공격하에 있는지를 검출하고, 버퍼 오버런을 검출하기 위한 시스템 및 방법을 제공한다. 따라서, 본 발명의 실시예들은 버퍼 오버런, 및 메모리 관리자 기능의 사용에 관련된 기타 결함을 이용하는 악성 코드의 위험을 경감시킨다. 특히, 본 발명의 실시예들은 데이터 블럭의 블럭 헤더의 내용을 보호하고, 메모리 관리자가 블럭 헤더의 일부가 수정되었는지를 판정할 수 있게 한다.
본 발명의 한 양상에 따르면, 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법이 제공된다. 방법은 다수의 필드를 적어도 제1 그룹 및 제2 그룹으로 그룹화하는 단계, 및 제1 그룹에 대한 제1 식별자, 및 제2 그룹에 대한 제2 식별자를 생성하는 단계를 포함한다. 부가적으로, 그룹의 필드들에 포함된 정보를 보호하기 위해 제1 및 제2 그룹이 인코딩된다. 또한, 제1 및 제2 식별자도 그룹들에 인코딩될 수 있다.
본 발명의 또다른 양상에 따르면, 다수의 그룹으로 나누어지는 데이터의 적어도 일부에의 액세스를 입증하는 방법을 수행하기 위한 컴퓨터-실행가능 프로그램을 내부에 포함하는 컴퓨터-판독가능 매체를 갖는 컴퓨터 시스템이 제공된다. 수행된 방법은 데이터의 일부에 대한 액세스 요청을 수신하는 단계, 및 데이터의 다수의 그룹 중 액세스 요청에 대응하는 적어도 하나의 그룹을 결정하는 단계를 포함한다. 그 후 결정된 그룹이 디코딩되고, 선택적으로, 디코딩된 그룹에 대해 식별자가 이전에 생성되었었는지 확인된다. 디코딩된 그룹이 확인된 후, 데이터의 일부에의 액세스가 허용된다.
본 발명의 또다른 실시예에 따르면, 컴퓨터 시스템이 블럭 헤더의 다수의 필드를 적어도 2개의 그룹으로 그룹화하고, 적어도 2개의 그룹 중 제1 그룹에 대한 제1 식별자를 생성하며, 제1 그룹 및 제1 식별자를 인코딩하고, 제2 그룹을 인코딩하도록 지시하는 명령어들을 저장하고 있는 컴퓨터-액세스가능 매체가 제공된다.
본 발명의 전술된 양상 및 이점들 중 다수가 후술되는 상세한 설명을 참조하여 첨부되는 도면들과 함께 고려될 때 보다 잘 이해됨을 쉽게 알게 될 것이다.
도 3은 본 발명의 실시예에 따라, 버퍼 오버런, 및 허가되지 않은 액세스에 대한 기타 시도로부터 기인하는 헤더 메타데이터의 붕괴를 검출할 뿐 아니라, 우연이든지 고의적이든지, 메모리 관리자 기능으로부터 기인하는 기타 약점을 이용하는 악성 코드의 잠재성을 경감시키도록 인코딩된 블럭 헤더의 블럭도이다. 또한, 도 3에 관하여 기술된 실시예는 버퍼 오버플로우를 식별하기 위해 복잡한 디버깅 오버헤드를 필요로 하지 않고서 프로그래밍 에러를 식별하기 위해 사용될 수 있다.
그러한 실시예에서, 블럭 헤더(303)의 필드들 모두 암호화와 같은 임의의 타입의 인코딩 기술을 사용하여 인코딩되고, 이에 의해 헤더의 개개의 필드들의 값 및 위치를 예측 및/또는 발견하는 것을 더욱 어렵게 한다. 이전 필드들에 기초하여 알맞은 값을 예측하기 위해, 그 필드들에 포함된 값들을 결정하기 위해 필드들이 디코딩되어야 할 것이다. 하기에 논의된 바와 같이, 모든 인코딩 및 디코딩이 메모리 관리자에 의해 수행되기 때문에, 인코딩/디코딩 알고리즘 및/또는 인코딩/디코딩 키를 공유할 필요없이 인코딩 기술의 무결성(integrity) 및 보안성(secrecy)이 높게 유지될 수 있다.
본원에 기술된 실시예들이 6개의 필드를 갖는 블럭 헤더의 필드들을 그룹화하는 것을 포함하지만, 임의의 수의 필드들이 헤더에 포함되어 그룹화될 수 있음을 잘 알 것이다. 부가적으로, 필드들은 임의의 크기를 가질 수 있고, 동일하거나 상이한 크기를 가질 수 있으며, 각 필드는 메모리 관리자의 필요에 기초하여 동적으로 생성될 수 있다.
필드들을 인코딩하는 것은 또한 필드들의 알맞은 값이 예측되는 경우에도 그것을 특정 필드들에 기입하는 것을 더욱 어렵게 한다. 특히, 알맞은 값이 결정된 다고 가정하는 경우에도, 버퍼 오버런 데이터는 본래 값을 인코딩하기 위해 사용되었던 적합한 인코딩 알고리즘 및 키를 사용하여 인코딩되어야 할 것이다. 값들이 정확한 경우에도 인코딩이 부정확하면, 메모리 관리자에 의해 디코딩될 때, 의도된 값이 생성되지 않을 것이고 메모리 관리자가 수정을 검출할 것이며, 이에 의해 악성 코드가 제어할 기회를 갖기 전에 어플리케이션을 종료한다.
인코딩 기술의 예들은 대칭(개인 키) 암호화를 포함하지만 이것으로 제한되지는 않는다. 그러나, 메모리 관리자가 블럭 헤더를 인코딩 및/또는 디코딩할 수 있도록 의도된 유일한 프로그램이기 때문에, 정보를 인코딩하기 위해 사용된 개인 키 및/또는 알고리즘을 공유할 필요는 없다. 부가적으로, 사용된 키 및/또는 사용된 알고리즘은 블럭 헤더 데이터에 액세스하여 기입하는 것을 더욱 어렵게 하기 위하여 메모리 관리자에 의해 변경될 수 있다. 예를 들어, 인코딩 키 및/또는 알고리즘은 상이한 메모리 관리자, 상이한 메모리 영역, 상이한 메모리 블럭 등에 대해 다를 수 있다. 부가적으로, 인코딩 키 및/또는 인코딩 알고리즘은 주기적으로 변경될 수 있다. 예를 들어, 인코딩 키 및/또는 알고리즘은 헤더가 인코딩될 때마다(예를 들어, 매일, 시작할 때 등) 변경될 수 있다. 본 발명의 실시예들이 개인 키 암호화의 형태를 사용하여 블럭 헤더를 인코딩하는 것에 관하여 기술될 것이지만, 블럭 헤더를 인코딩하기 위해 임의의 타입의 인코딩 기술이 사용될 수 있으며, 본원에 제공된 설명은 단지 설명을 위한 것이며, 본 발명의 범위를 제한하는 것으로 읽혀져서는 안 된다는 것을 이해할 것이다.
블럭 헤더를 인코딩하는 것 이외에, 인코딩 이전에 헤더의 필드들이 재배열 될 수 있고, 이에 의해 예측된 값이 작성되어야 하는 위치를 예측하는 것을 더욱 어렵게 할 수 있다. 예를 들어, 필드들을 모든 블럭 헤더에 대해 동일한 순서(예를 들어, 필드 1-6)로 조직하는 대신에, 필드들이 인코딩 이전에 재배열되어 필드 3, 필드 6, 필드 1, 필드 2, 필드 5, 필드 4와 같은 순서로, 또는 임의의 다른 순서로 나타나도록 할 수 있다. 사용된 인코딩 기술과 유사하게, 필드들이 주기적으로 재조직될 수 있고, 각 블럭 헤더에 대해 상이할 수 있다. 예를 들어, 각 헤더가 인코딩될 때마다, 인코딩 이전에 필드들이 재조직될 수 있다. 대안적으로, 필드들이 임의의 다른 시각에 재조직될 수 있고, 임의의 순서로 배열될 수 있다. 블럭 헤더의 필드들을 재조직하는 것은 또한 필드들의 위치를 결정하는 것, 및 필드들의 값을 예측하는 것을 더욱 어렵게 한다.
또한, 블럭 헤더를 인코딩하기 이전에, 블럭 헤더가 디코딩될 때 유효성을 확인하기 위하여 메모리 관리자에 의해 사용되는 식별자가 블럭 헤더에 대해 생성될 수 있다. 예를 들어, 식별자는 체크섬(checksum), 해시 값, 무작위로 할당된 숫자 등일 수 있다. 체크섬 또는 해시 값의 경우에, 메모리 관리자는 블럭 헤더에 대해 공식을 실행하고, 리턴된 값이 그 블럭 헤더에 대한 식별자로서 저장된다. 이러한 식별자는 헤더와 함께 저장될 수 있고 메모리 관리자에 의해 개별적으로 (예를 들어, 테이블에) 인코딩 또는 저장될 수 있으며, 또는 헤더와 함께 저장되는 동시에 메모리 관리자에 의해 개별적으로 인코딩 또는 저장될 수도 있다. 유효성 확인될 때, 새로운 값을 계산하기 위하여 블럭 헤더에 대해 동일한 공식이 실행되고, 저장된 값 및 새로운 값이 비교된다.
난수의 경우에, 난수가 생성되어, 암호화될 때 헤더와 함께 저장되고, 메모리 관리자는 또한 무작위로 생성된 숫자를 포함하는 테이블을 유지한다. 블럭 헤더가 디코딩될 때, 헤더와 함께 저장된 난수가 메모리 관리자에 의해 저장된 숫자와 비교됨으로써 유효성이 확인된다. 블럭 헤더의 유효성을 확인하기 위해 사용된 식별자로서 체크섬, 해시 및 난수가 본원에 기술되었지만, 블럭 헤더의 유효성을 확인하기 위하여 임의의 타입의 식별자가 사용될 수 있음을 이해할 것이다.
블럭 헤더 필드들의 순서를 재배열하는 것, 헤더를 인코딩하는 것, 및 헤더에 대한 식별자를 생성하는 것은 검출되지 않고서 블럭 헤더 메타데이터가 변경되는 것을 더욱 어렵게 하지만, 블럭 헤더의 필드들에 여러 액세스를 수행하려 시도할 때 동기화(락킹(locking))가 복잡해진다. 따라서, 본 발명의 또다른 실시예에 따라, 블럭 헤더의 필드들이 개별적으로 그룹화 및 인코딩될 수 있다.
도 4는 본 발명의 또다른 실시예에 따라 블럭 헤더의 필드들이 개별적으로 그룹화 및 인코딩되는 인코딩된 블럭 헤더의 블럭도이다. 데이터 블럭(402)에 대한 블럭 헤더(403)는 개별적으로 그룹화 및 인코딩된 블럭 헤더의 필드들을 갖는다. 예를 들어, 필드 3(409), 필드 6(415) 및 필드 1(405)은 함께 그룹화 및 인코딩될 수 있지만, 나머지 필드들은 하나 이상의 다른 그룹들로 그룹화 및 인코딩될 수 있다. 도 5에 관하여 하기에 보다 상세히 논의될 것과 같이, 필드들은 액세스 요구사항, 락킹 요구사항에 기초하여 그룹화될 수 있고, 또는 필드들 사이의 임의의 다른 관계에 기초하여 무작위로 그룹화될 수 있다.
도 3에 관하여 기술된 실시예와 유사하게, 본 실시예는 버퍼 오버플로우, 및 메모리 관리자 기능에 관련된 기타 결함을 식별할 것이므로 초기에 개발 단계에서 프로그래밍 에러를 식별하기 위해 사용될 수 있다. 부가적으로, 임의의 수 및/또는 크기의 필드들이 함께 그룹화될 수 있다.
헤더에 대한 식별자를 생성하는 것과 유사하게, 그룹으로 저장되고/거나 메모리 관리자에 의해 저장되는 각 그룹에 대한 식별자가 생성될 수도 있다. 예를 들어, 그룹1(407)이 해싱되어 결과 해시 값이 식별자로서 사용될 수 있다. 그 해시 값은 그룹1(407)과 별도로 메모리 관리자에 의해 저장될 수 있다. 그룹2(410)의 필드들과 함께 저장되는 그룹2(410)에 대한 체크섬이 계산될 수 있다. 블럭 헤더(403)의 나머지 필드들은 제3 그룹인 그룹3(411)에 포함될 수 있다. 그룹3(411)에 대해, 어떠한 식별자도 그 그룹에 할당되지 않는다. 이전에 논의된 바와 같이, 그룹에 대한 식별자를 생성하기 위해 임의의 기술(예를 들어, 체크섬 생성, 해싱 또는 난수 생성)이 사용될 수 있고, 또는 하나 이상의 그룹에 대해 어떠한 식별자도 계산되지 않을 수도 있다.
블럭 헤더(403)의 각 그룹에 식별자를 선택적으로 할당하는 것 이외에, 그룹들은 임의의 타입의 인코딩 기술을 사용하여 개별적으로 인코딩될 수 있다. 각 그룹은 상이한 기술을 사용하여 인코딩될 수 있고, 또는 각 그룹에 대해 동일한 기술의 상이한 값/알고리즘이 사용될 수 있다. 도 4의 예를 계속하면, 그룹들은 각 그룹을 인코딩하기 위해 상이한 알고리즘 및/또는 키를 사용하는 개인 키 암호화를 사용하여 인코딩될 수 있다. 예를 들어, 메모리 관리자는 특정 락킹 요구사항에 대응하는 필드들을 인코딩할 때 사용되는 제1 알고리즘 및 키, 및 또다른 락킹 요 구사항에 대응하는 필드들을 인코딩하기 위한 별도의 알고리즘 및 키를 유지할 수 있다. 부가적으로, 그룹들 모두가 인코딩되어야 하는 것은 아니다. 따라서, 자주 액세스되어 수정되었는지가 쉽게 검출되는 그룹들은 디코딩된 상태를 유지할 수 있는 반면, 다른 그룹들은 인코딩될 수 있다.
메모리 관리 분야에 잘 알려진 바와 같이, 메모리에의 동시적 액세스를 제어하기 위해 여러 락이 사용될 수 있다. 예를 들어, 락이 해제될 때까지 하나의 어플리케이션에 의한 액세스만을 허용하기 위해 배타적 락(exclusive lock)이 사용될 수 있다. 대안적으로, 락이 배타적으로 소유되지 않는 한, 메모리에 여러 실행 스레드에 의한 동시적 액세스를 허용하기 위해 비-배타적 또는 공유 락이 사용될 수 있다. 전형적으로, 데이터 구조에 쓰기 액세스를 허가하기 위해 배타적 락이 사용되는 반면, 공유 락은 일반적으로 데이터에 읽기 액세스는 허용하지만 어떠한 작성자도 데이터를 수정할 수는 없도록 하기 위해 사용된다. 메모리에의 액세스를 제어하기 위해 사용될 수 있는 여러 상이한 락킹 스킴이 존재하고, 본 발명의 실시예들은 임의의 타입의 락킹 스킴과 함께 사용될 수 있기 때문에, 락들, 및 락 요구사항들은 본원에서 일반적으로 락(Lock)이라고 칭해질 것이다. 부가적으로, 락 1, 락 2, 락 3 등이라고 칭함으로써 락들, 및/또는 락킹 요구사항들 사이의 차이가 나타내어질 것이며, 번호매겨진 각 락은 상이한 락 또는 락킹 요구사항을 도시한다.
본 예로 돌아가면, 메모리 관리자는 락 1에 대응하는 제1 키 및 알고리즘을 유지하고, 그 제1 키 및 알고리즘을 사용하여 락 1에 관련된 필드들을 포함하는 그룹1(407)을 인코딩할 수 있다. 유사하게, 메모리 관리자는 락 2에 대응하는 제2 키 및 알고리즘을 유지하고, 그 제2 키 및 알고리즘을 사용하여 그룹2(410)를 인코딩할 수 있다. 락 3에 대응하는 제3 키 및 알고리즘은 그룹3(411)을 인코딩하기 위해 사용될 수 있다. 이것은 락킹 요구사항에 따라 필드들이 그룹화되고, 단일 키 및 알고리즘을 상이한 그룹들에 관련시키는 단순한 예를 설명하지만, 본 발명의 실시예들에 따라 여러 변형이 사용될 수 있다.
예를 들어, 메모리 관리자는 상이한 락킹 요구사항에 대응하는 키 및 알고리즘의 라이브러리를 유지할 수 있고, 블럭 헤더의 특정 그룹을 인코딩하기 위해 사용된 실제 키 및/또는 알고리즘은 그룹이 인코딩될 때마다 라이브러리로부터 무작위로 선택될 수 있다.
부가적으로, 인코딩 이전에, 그룹(407, 409, 411) 내의 필드들이 상이한 순서로 나타나도록 배열될 수도 있다. 예를 들어, 그룹2(410)에 있는 모든 필드들인 필드 1(405), 필드 3(409), 필드 6(415)은, 필드 3(309)이 첫번째, 필드 6(415)이 두번째, 그리고 필드 1(405)이 마지막에 나타나도록 배열될 수 있다. 필드들의 배열은 시스템 기반, 메모리 관리자 기반, 블럭 기반, 사용 기반 등일 수 있다. 예를 들어, 메모리 관리자에 의해 그룹이 액세스될 때마다, 다시 인코딩되기 전에 그 그룹의 필드들이 재조직될 수 있다.
도 5는 본 발명의 실시예에 따라 필드들의 그룹을 인코딩하기 위한 인코딩 루틴을 나타내는 흐름도이다. 도 5-6은 특정 기능을 수행하기 위한 블럭들을 도시한다. 대안적인 실시예에서, 더 많거나 더 적은 블럭들이 사용될 수 있다. 본 발명의 실시예에서, 블럭은 단독으로 또는 조합으로 소프트웨어 프로그램, 소프트웨 어 객체, 소프트웨어 함수, 소프트웨어 서브루틴, 소프트웨어 메소드, 소프트웨어 인스턴스, 코드 프래그먼트, 하드웨어 동작, 또는 사용자 동작일 수 있다. 인코딩 루틴(500)은 블럭(501)에서 시작하여, 블럭(503)에서 메모리 관리자가 인코딩될 블럭 헤더의 필드들을 식별한다. 필드들은 메모리 요청에 응답하여 메모리를 할당하는 메모리 관리자에 의해 생성되었던 블럭 헤더의 모든 필드들일 수 있다. 대안적으로, 필드들은 이전에 디코딩되었고 재-인코딩될 기존의 블럭 헤더의 필드들일 수 있다.
일반적으로 소정 관계에 기초하여 필드들을 그룹화하는 것이 유익하다. 예를 들어, 필드들은 공통 락킹 요구사항, 동시에 액세스되는 것들, 크기 등에 기초하여 그룹화될 수 있다. 예를 들어, 블럭 헤더의 몇몇 필드들은 배타적 락과 같은 특정 락킹 요구사항인 락 1을 사용하여서만 액세스될 수 있고, 또다른 그룹은 일반적으로 락 2 요구사항에 기초하여 액세스될 수 있으며, 또다른 그룹은 락 3 요구사항에 기초하여 액세스될 수 있다. 따라서, 블럭 헤더의 필드들은 3개의 그룹, 즉, 락 1에 의해 액세스된 필드들에 대한 하나의 그룹, 락 2에 의해 액세스된 필드들에 대한 하나의 그룹, 그리고 락 3에 의해 액세스된 필드들에 대한 세번째 그룹으로 나누어질 것이라고 판정될 수 있다.
블럭(507)에서, 필드들은 필드들 사이의 관계에 따라 그룹화된다. 필드들은 원하는 보안, 필드들의 수, 필드들 사이의 관계, 및 임의의 아키텍처-특유 제한에 의존하여 하나 이상의 그룹으로 그룹화될 수 있다. 모든 필드들은 도 3에 관하여 상기 논의된 예를 나타내는 하나의 그룹에 포함될 수 있다. 대안적으로, 필드들은 여러 그룹으로 그룹화될 수 있고, 또는 하나 이상의 필드가 저절로 그룹에 포함될 수 있다.
도 4를 다시 참조하면, 필드 3(409), 필드 6(415) 및 필드 1(405)이 모두 관련되기 때문에 함께 그룹화된다. 블럭(509)에서, 그룹의 필드들은 필드들의 배열 및 값을 더욱 알 수 없게 하고, 값 및 필드 위치에 대한 예측을 더욱 어렵게 하도록 배열된다. 상기 언급된 바와 같이, 그룹의 필드들은 임의의 배열 스킴에 따라 임의의 순서로 배열될 수 있다. 예를 들어, 그룹에서 필드들의 배열은 필드들의 크기, 필드들이 액세스되는 빈도, 필드들에 포함된 값 등에 기초하여 무작위적일 수 있다. 예를 들어, 그룹 2의 필드 1(405), 필드 3(409) 및 필드 6(415)(도 4)은, 필드 3(409)이 첫번째로 나타나고, 필드 6(415)이 두번째, 그리고 필드 1(405)이 마지막에 나타나도록 배열되었다. 필드들을 그룹에 배열하기 위해 임의의 배열 스킴이 사용될 수 있음을 잘 알 것이다. 부가적으로, 상기에 언급된 바와 같이, 그룹 내에서의 필드들의 배열은 주기적으로 변경될 수 있다. 예를 들어, 그룹의 필드들은 필드가 인코딩될 때마다 재배열될 수 있다. 필드들의 그룹화 또는 배열에 영향을 주는 아키텍처-특유 제한이 존재하는 경우, 그 제한들에 따라 필드들이 그룹화 및 배열될 수 있다. 예를 들어, 정렬된 필드들을 액세스하는 것, 또는 필드들의 그룹을 액세스하는 것에 관하여 제약이 부과되는 경우, 필드들은 그러한 제약들을 준수하도록 하는 방식으로 그룹화 및 배열될 수 있다.
결정 블럭(511)에서, 식별자가 생성되어 그룹에 관련될지가 결정된다. 식별자가 생성되어 그룹에 관련되는 것으로 결정되면, 블럭(513)에서 식별자가 생성된 다. 식별자는 임의의 다양한 방식으로 생성될 수 있다. 예를 들어, 식별자는 그룹에 관련되는 무작위로 생성된 숫자, 그룹에 대해 계산된 해시 값, 그룹에 대해 계산된 체크섬 값 등일 수 있지만 이들로 제한되지는 않는다. 부가적으로, 식별자를 그룹에 관련시킬 때, 식별자는 그룹의 필드들과 함께 저장될 수 있고, 그룹에 필드로서 포함될 수 있으며, 메모리 관리자에 의해 그룹과 별도로 유지될 수 있고, 또는 그룹과 함께 저장되고 동시에 메모리 관리자에 의해 그룹과 별도로 유지될 수 있다.
블럭(513)에서 식별자가 생성된 후, 또는 결정 블럭(511)에서 식별자가 계산되지 않을 것이라고 결정된 경우, 블럭(515)에서 그룹(그리고 선택적으로 식별자)이 인코딩된다. 인코딩은 임의의 타입의 인코딩 기술을 사용하여 달성될 수 있다. 예를 들어, 메모리 관리자는 데이터의 그룹을 인코딩하기 위해 사용되는 비밀 키 및 알고리즘의 리스트를 유지할 수 있다. 부가적으로, 블럭 헤더의 각 그룹에 대해, 상이한 인코딩 스킴, 알고리즘 및/또는 키가 사용될 수 있다.
결정 블럭(517)에서, 인코딩될 부가적인 그룹이 존재하는지가 판정된다. 인코딩될 부가적인 블럭이 존재한다고 판정되는 경우, 루틴(500)은 블럭(509)으로 리턴하여 진행된다. 그러나, 인코딩할 더 이상의 그룹이 존재하지 않는다고 판정되는 경우, 루틴(500)은 블럭(519)에 의해 나타내어진 바와 같이 종료한다.
도 6은 본 발명의 실시예에 따라 블럭 헤더의 적어도 일부를 디코딩하기 위한 디코딩 루틴을 나타내는 흐름도이다. 디코딩 루틴은 블럭(601)에서 시작하여, 블럭(603)에서 메모리 관리자가 인코딩된 헤더를 포함하는 메모리 블럭에 대한 액 세스 요청을 수신한다. 블럭(605)에서, 메모리 관리자는 액세스 요청에 기초하여 블럭 헤더의 어떤 암호화된 그룹 또는 그룹들이 디코딩되어야 할지를 결정한다. 예를 들어, 액세스 요청이 배타적 락을 요구하는 경우, 락을 식별하는 필드를 포함하는 인코딩된 그룹이 디코딩되어야 할 것이다.
블럭(605)에서 디코딩할 그룹 또는 그룹들을 결정하면, 블럭(607)에서 결정된 그룹들 중 하나의 그룹이 적합한 디코딩 기술을 사용하여 디코딩된다. 적합한 디코딩 기술은 그룹을 인코딩하기 위해 사용된 기술에 대응한다. 메모리 관리자가 그 그룹을 인코딩했던 프로그램이므로, 그러한 정보는 메모리 관리자에 의해 유지된다. 예를 들어, 비밀 키 및 특정 알고리즘을 사용하여 그룹이 인코딩된 경우, 그 그룹을 디코딩하기 위하여 그 비밀 키 및 대응하는 디코딩 알고리즘이 사용된다. 그룹을 디코딩할 때, 결정 블럭(609)에서, 그룹에 할당된 식별자에 기초하여 그룹이 확인될지가 판정된다. 디코딩된 그룹이 식별자를 포함하는 경우, 또는 식별자가 그룹에 할당되어 메모리 관리자에 의해 유지되는 경우, 블럭(611)에 의해 나타내어진 바와 같이 식별자가 확인된다. 예를 들어, 해시 값이 그룹에 대해 계산되어 인코딩된 그룹에 포함되었던 경우, 그것이 디코딩되어 그룹과 함께 포함된 해시 값에 비교된 후 해시 값이 그룹에 대해 다시 계산될 수 있다. 두 개의 해시 값이 동일한 경우, 그룹은 버퍼 오버런에 의해 수정되지 않은 것이다. 그러나, 해시 값이 동일하지 않은 경우, 그룹은 수정되었고, 메모리 관리자가 요청을 거부하고 어플리케이션을 종료할 수 있으며, 이에 의해 악성 코드가 숨겨진 상태를 유지하고 잠재적으로 제어할 수 있는 가능성을 감소시킨다.
블럭(611)에서, 디코딩된 그룹의 내용이 확인되면, 또는 결정 블럭(609)에서 내용이 확인되지 않을 것이라고 판정된 경우, 결정 블럭(613)에서, 액세스 요청에 응답하여 디코딩될 다른 그룹들이 존재하는지가 판정된다. 디코딩될 부가적인 그룹이 존재한다고 판정되는 경우, 루틴(600)은 블럭(607)으로 리턴하여 진행한다. 그러나, 디코딩할 그룹이 더이상 존재하지 않는다고 판정되는 경우, 블럭(615)에서 루틴이 진행되고, 메모리 관리자는 디코딩된 그룹의 필드에의 액세스를 허용받는다. 부가적으로, 허용된 액세스에 응답하여, 메모리 관리자는 디코딩된 필드들 중 일부 또는 모두를 수정할 수 있다. 적합한 그룹들이 디코딩되어 메모리 관리자에게 액세스가 허가된 후, 블럭(617)에 의해 나타내어진 바와 같이 루틴이 종료된다.
본 발명의 실시예들이 도시되고 기술되었지만, 본 발명의 취지 및 범위로부터 벗어나지 않고서 본 발명에 다양한 변경이 행해질 수 있음을 잘 알 것이다.
컴퓨터를 악성 공격으로부터 보호하는 데에 유익할 뿐 아니라, 성능, 메모리 사용도 등에 영향을 주는 기타 디버깅 방법의 오버헤드를 감수할 필요없이, 어플리케이션 개발 시 초기에 의도하지 않은 프로그램 결함을 검출할 수 있게 된다.

Claims (20)

  1. 다수의 필드들을 갖는 데이터를 안전하게 하기 위한 방법으로서,
    상기 다수의 필드들을 적어도 제1 그룹 및 제2 그룹으로 그룹화하는 단계,
    상기 제1 그룹에 대한 제1 식별자, 및 상기 제2 그룹에 대한 제2 식별자를 생성하는 단계,
    상기 제1 그룹을 인코딩하는 단계, 및
    상기 제2 그룹을 인코딩하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 그룹은 상기 다수의 필드들 중 적어도 두 개의 필드를 포함하며,
    상기 다수의 필드들의 그룹화에 응답하여, 상기 제1 그룹의 상기 적어도 두 개의 필드를 배열(arranging)하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 제1 식별자는 상기 제1 그룹과 함께 인코딩되는 방법.
  4. 제1항에 있어서,
    상기 데이터는 헤더 데이터인 방법.
  5. 제1항에 있어서,
    상기 다수의 필드들은 데이터 블럭 헤더의 필드들인 방법.
  6. 제1항에 있어서,
    상기 다수의 필드들을 그룹화하는 단계는,
    상기 다수의 필드들 사이의 관계를 결정하는 단계, 및
    상기 다수의 필드들 사이의 결정된 관계에 따라 상기 필드들을 그룹화하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 다수의 필드들을 그룹화하는 단계는 상기 필드들을 무작위적 순서로 그룹화하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 제1 식별자는 상기 그룹에 대해 생성된 체크섬(checksum)인 방법.
  9. 다수의 그룹으로 나누어지는 데이터의 적어도 일부에의 액세스를 입증(proving)하는 방법을 수행하기 위한 컴퓨터-실행가능 프로그램을 내부에 포함하는 컴퓨터-판독가능 매체를 갖는 컴퓨터 시스템에서, 상기 방법은,
    상기 데이터의 일부에 대한 액세스 요청을 수신하는 단계,
    상기 데이터의 다수의 그룹 중 상기 액세스 요청에 대응하는 적어도 하나의 그룹을 결정하는 단계 - 상기 결정된 적어도 하나의 그룹은 식별자를 포함함 - ,
    상기 결정된 적어도 하나의 그룹을 디코딩하는 단계,
    상기 디코딩된 적어도 하나의 그룹의 식별자를 확인하는 단계, 및
    상기 디코딩된 적어도 하나의 그룹에의 액세스를 허용하는 단계
    를 포함하는 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 다수의 그룹 중 적어도 하나의 그룹은 다수의 필드들을 포함하며,
    상기 적어도 하나의 그룹을 결정하는 단계는,
    상기 다수의 필드들 중 상기 액세스 요청에 대응하는 하나의 필드를 식별하는 단계, 및
    상기 식별된 필드에 기초하여 적어도 하나의 그룹을 결정하는 단계
    를 포함하는 컴퓨터 시스템.
  11. 제9항에 있어서, 상기 방법은,
    다수의 디코딩 알고리즘 중에서 상기 결정된 적어도 하나의 그룹을 디코딩하기 위한 하나의 디코딩 알고리즘을 선택하는 단계를 더 포함하는 컴퓨터 시스템.
  12. 제9항에 있어서, 상기 방법은,
    다수의 디코딩 키 중에서 상기 결정된 적어도 하나의 그룹을 디코딩하는 데에 사용하기 위한 하나의 디코딩 키를 선택하는 단계를 더 포함하는 컴퓨터 시스템.
  13. 제9항에 있어서,
    상기 디코딩된 적어도 하나의 그룹의 식별자를 확인하는 단계는,
    상기 디코딩된 그룹을 나타내는 식별자를 생성하고, 상기 생성된 식별자를 상기 디코딩된 그룹의 식별자와 비교하는 단계를 포함하는 컴퓨터 시스템.
  14. 제13항에 있어서,
    알려진 식별자가 상기 디코딩된 그룹에 포함되는 컴퓨터 시스템.
  15. 제13항에 있어서,
    상기 생성된 식별자는 체크섬인 컴퓨터 시스템.
  16. 제13항에 있어서,
    알려진 식별자는 상기 그룹에 대해 이전에 생성된 체크섬인 컴퓨터 시스템.
  17. 컴퓨팅 시스템이,
    블럭 헤더의 다수의 필드들을 적어도 두 개의 그룹으로 그룹화하고,
    상기 적어도 두 개의 그룹 중 제1 그룹에 대한 제1 식별자를 생성하며,
    상기 제1 그룹 및 상기 제1 식별자를 인코딩하고,
    제2 그룹을 인코딩하도록 지시하는 명령어들을 저장하고 있는 컴퓨터-액세스가능 매체.
  18. 제17항에 있어서,
    상기 제1 그룹은 적어도 두 개의 필드를 포함하며,
    상기 필드들은 무작위적 순서로 배열되는 컴퓨터-액세스가능 매체.
  19. 제17항에 있어서,
    상기 제1 그룹 및 상기 제1 식별자는 제1 암호화 알고리즘을 사용하여 인코딩되며, 상기 제2 그룹은 제2 알고리즘을 사용하여 인코딩되는 컴퓨터-액세스가능 매체.
  20. 제17항에 있어서,
    상기 제1 그룹 및 상기 제1 식별자는 제1 암호화 키를 사용하여 인코딩되며, 상기 제2 그룹은 제2 암호화 키를 사용하여 인코딩되는 컴퓨터-액세스가능 매체.
KR1020060015573A 2005-03-03 2006-02-17 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법,시스템 및 컴퓨터-액세스가능 매체 KR101183432B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/072,356 US7350040B2 (en) 2005-03-03 2005-03-03 Method and system for securing metadata to detect unauthorized access
US11/072,356 2005-03-03

Publications (2)

Publication Number Publication Date
KR20060096286A true KR20060096286A (ko) 2006-09-11
KR101183432B1 KR101183432B1 (ko) 2012-09-17

Family

ID=36440861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060015573A KR101183432B1 (ko) 2005-03-03 2006-02-17 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법,시스템 및 컴퓨터-액세스가능 매체

Country Status (5)

Country Link
US (1) US7350040B2 (ko)
EP (1) EP1698970B1 (ko)
JP (1) JP4914080B2 (ko)
KR (1) KR101183432B1 (ko)
CN (1) CN1828590B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010008223A3 (ko) * 2008-07-16 2010-05-27 삼성전자 주식회사 사용자 인터페이스에서 보안 서비스를 제공하는 장치 및 방법

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006047694A1 (en) 2004-10-25 2006-05-04 Orsini Rick L Secure data parser method and system
EP1952575B1 (en) * 2005-11-18 2017-12-27 Security First Corp. Secure data parser method and system
US8806439B1 (en) * 2007-04-30 2014-08-12 AT & T Intellectual Property II, LP System and method for program stack security
US20090055346A1 (en) * 2007-08-23 2009-02-26 Yahoo! Inc. Scalable Ticket Generation in a Database System
US8554718B2 (en) * 2008-02-12 2013-10-08 Rockstar Consortium Us Lp Method and system for client context dissemination for web-based applications
US9189363B2 (en) * 2010-10-07 2015-11-17 Mcafee, Inc. System, method, and computer program product for monitoring an execution flow of a function
US9137340B2 (en) 2011-08-02 2015-09-15 Cavium, Inc. Incremental update
US9246882B2 (en) * 2011-08-30 2016-01-26 Nokia Technologies Oy Method and apparatus for providing a structured and partially regenerable identifier
US9948695B2 (en) * 2012-03-16 2018-04-17 Alcatel Lucent Enabling delivery of protected content using unprotected delivery services
CA2900504A1 (en) 2013-02-13 2014-08-21 Security First Corp. Systems and methods for a cryptographic file system layer
CN103684761B (zh) * 2013-12-25 2017-02-01 广西宝恒电子科技有限公司 一种加密解密方法
US9544402B2 (en) * 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
CN104780041B (zh) * 2014-01-15 2017-04-05 江苏南大苏富特科技股份有限公司 一种智能密码保护生成方法
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
KR102652293B1 (ko) 2016-03-03 2024-03-29 에스케이하이닉스 주식회사 메모리 관리방법
KR101780652B1 (ko) * 2016-03-11 2017-09-21 주식회사 이디엄 열-지향 레이아웃 파일 생성 방법
US10268593B1 (en) 2016-12-20 2019-04-23 Amazon Technologies, Inc. Block store managamement using a virtual computing system service
US10921991B1 (en) 2016-12-20 2021-02-16 Amazon Technologies, Inc. Rule invalidation for a block store management system
US10185507B1 (en) * 2016-12-20 2019-01-22 Amazon Technologies, Inc. Stateless block store manager volume reconstruction
US10809920B1 (en) 2016-12-20 2020-10-20 Amazon Technologies, Inc. Block store management for remote storage systems
US11507283B1 (en) 2016-12-20 2022-11-22 Amazon Technologies, Inc. Enabling host computer systems to access logical volumes by dynamic updates to data structure rules
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4028667A (en) * 1975-12-22 1977-06-07 International Business Machines Corporation Asynchronous, hierarchical loop communication system with independent local station control of access to inbound time portions without central control
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
US5559980A (en) * 1993-03-18 1996-09-24 Lucent Technologies Inc. Method and apparatus for detecting references to deallocated memory in a dynamic memory allocation system
US5664095A (en) * 1993-12-08 1997-09-02 Intel Corporation Dynamic scaling of CPU cycle consumption in a computer system
JP3982530B2 (ja) * 1996-01-17 2007-09-26 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法
FR2751104B1 (fr) * 1996-07-11 1998-12-31 Stoffel Laurent Procede de controle de transactions securisees independantes utilisant un dispositif physique unique
US5854891A (en) * 1996-08-09 1998-12-29 Tritheim Technologies, Inc. Smart card reader having multiple data enabling storage compartments
JPH1139158A (ja) * 1997-07-18 1999-02-12 Nippon Telegr & Teleph Corp <Ntt> 実行プログラムの保護方法およびその装置
JP4051510B2 (ja) * 1998-07-16 2008-02-27 ソニー株式会社 データ記憶装置およびデータ記憶方法
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6418242B1 (en) * 1998-11-18 2002-07-09 Tektronix, Inc. Efficient detection of error blocks in a DCT-based compressed video sequence
WO2001041156A1 (en) * 1999-12-01 2001-06-07 Ivast, Inc. Optimized bifs encoder
US7111278B1 (en) * 2000-03-01 2006-09-19 Mindspeed Technologies, Inc. Automated translation of a microprocessor opcode summary table to an architecture description language
JP2002132585A (ja) 2000-10-20 2002-05-10 Sony Corp 情報記録装置、情報再生装置、情報記録媒体、および情報記録方法、情報再生方法、並びにプログラム提供媒体
DE10103799A1 (de) * 2001-01-29 2002-08-08 Siemens Ag Nachrichtenübermittlungsvorrichtung und Verfahren zur Übermittlung von Nachrichten
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
US6832302B1 (en) * 2001-10-24 2004-12-14 At&T Corp. Methods and apparatus for detecting heap smashing
KR100619657B1 (ko) * 2002-06-05 2006-09-08 후지쯔 가부시끼가이샤 메모리 관리 유닛, 코드 검증 장치 및 코드 복호 장치
CN1536807A (zh) * 2003-04-07 2004-10-13 西科姆株式会社 文件安全传送系统及其方法
US7584458B2 (en) * 2003-10-02 2009-09-01 Microsoft Corporation Source code annotation language
US7350045B2 (en) 2003-12-31 2008-03-25 Microsoft Corporation Dynamic memory heap tagging
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
US7716743B2 (en) * 2005-01-14 2010-05-11 Microsoft Corporation Privacy friendly malware quarantines

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010008223A3 (ko) * 2008-07-16 2010-05-27 삼성전자 주식회사 사용자 인터페이스에서 보안 서비스를 제공하는 장치 및 방법
US8930688B2 (en) 2008-07-16 2015-01-06 Samsung Electronics Co., Ltd. Apparatus and method for providing security service of user interface

Also Published As

Publication number Publication date
EP1698970A3 (en) 2016-04-06
US20060200677A1 (en) 2006-09-07
CN1828590B (zh) 2010-06-23
EP1698970A2 (en) 2006-09-06
US7350040B2 (en) 2008-03-25
CN1828590A (zh) 2006-09-06
JP4914080B2 (ja) 2012-04-11
JP2006244496A (ja) 2006-09-14
KR101183432B1 (ko) 2012-09-17
EP1698970B1 (en) 2019-10-09

Similar Documents

Publication Publication Date Title
KR101183432B1 (ko) 다수의 필드를 갖는 데이터를 안전하게 하기 위한 방법,시스템 및 컴퓨터-액세스가능 매체
Ren et al. Design space exploration and optimization of path oblivious ram in secure processors
US7350085B2 (en) Tamper resistant software-mass data encoding
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及系统
JP5175856B2 (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
Liu et al. Memory trace oblivious program execution
KR102532395B1 (ko) 메모리 보안용 카운터 무결성 트리
EP1942431B1 (en) Software or other information integrity verification using variable block length and selection
CN111381879B (zh) 一种数据处理方法及装置
US8225077B2 (en) Obfuscation device for generating a set of obfuscated instructions, processing device, method, program, and integrated circuit thereof
CN109725983B (zh) 一种数据交换方法、装置、相关设备及系统
EP2691861A2 (en) Method of securing memory against malicious attack
US11775177B2 (en) Integrity tree for memory integrity checking
CN112839036B (zh) 基于拟态防御理论的软件运行环境生成方法及系统
CN115510430A (zh) 一种函数指针及其数据依赖的识别与保护方法、装置
Manikyam Program protection using software based hardware abstraction
EP2535832B1 (en) A method for operating a virtual machine over a file system
Haider et al. Revisiting definitional foundations of oblivious RAM for secure processor implementations
EP0438958A2 (en) Byte stream file management using shared and exclusive locks
US20220292182A1 (en) Method for the execution of a binary code of a computer program by a microprocessor
Cirstea et al. Rewrite based specification of access control policies
US20240080193A1 (en) Counter integrity tree
Tsaktsiras Oblivious RAM from theory to practice
Andrikos Securing the dynamic memory management module
CA2405742A1 (en) Tamper resistant software - mass data encoding

Legal Events

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

Payment date: 20150819

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 7