KR101120779B1 - 시스템 페이징 파일의 암호화 - Google Patents

시스템 페이징 파일의 암호화 Download PDF

Info

Publication number
KR101120779B1
KR101120779B1 KR1020040080342A KR20040080342A KR101120779B1 KR 101120779 B1 KR101120779 B1 KR 101120779B1 KR 1020040080342 A KR1020040080342 A KR 1020040080342A KR 20040080342 A KR20040080342 A KR 20040080342A KR 101120779 B1 KR101120779 B1 KR 101120779B1
Authority
KR
South Korea
Prior art keywords
key
file
encryption
data
paging
Prior art date
Application number
KR1020040080342A
Other languages
English (en)
Other versions
KR20050050530A (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 KR20050050530A publication Critical patent/KR20050050530A/ko
Application granted granted Critical
Publication of KR101120779B1 publication Critical patent/KR101120779B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • 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
    • G06F21/80Protecting 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 in storage media based on magnetic or optical technology, e.g. disks with sectors
    • 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/2143Clearing memory, e.g. to prevent the data from being stolen

Abstract

메모리의 공간을 비우기 위해, 오퍼레이팅 시스템은 메모리 페이지(page)로부터 디스크 상의 페이징 파일 내에 데이터를 복사한다. 데이터는 페이징 파일에 복사시킬 때 그 데이터를 암호화함으로써, 허가되지 않은 (또는 원하지 않은) 관찰로부터 페이징된 데이터를 보호하는 메카니즘이 개시된다. 페이징 파일에 저장되는 데이터는 세션키(session key)로 암호화되는데, 이 세션키는 그 페이징 파일이 존재하는 기기가 시동된 직후에 생성된다. 페이징 파일 데이터의 암호화 및 복호화 모두에 이용되는 세션키는 휘발성 메모리에 저장되어, 기기의 매 부팅(boot)마다 영속되지는 않는다. 매 부팅마다 키가 영속되는 것은 아니므로, 가장 최근 부팅 이전에 저장되었던 이전의 페이징 파일 데이터는 평문(clear text)으로 복원될 수 없으므로, 관찰로부터 데이터를 보호한다.
오퍼레이팅 시스템, 페이징 파일, 암호화, 복호화, 세션키

Description

시스템 페이징 파일의 암호화{ENCRYPTION OF SYSTEM PAGING FILE}
도 1은 본 발명의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경의 블럭도.
도 2는 컴퓨터 메모리 및 그것의 파일 시스템과의 관계의 블럭도.
도 3은 파일을 암호화하는 메카니즘의 블럭도.
도 4는 페이징 파일 암호화를 위한 시스템을 준비하는 프로세스의 흐름도.
도 5는 페이징 파일에 저장될 메모리 데이터를 암호화하는 프로세스의 흐름도.
도 6은 암호화된 페이징 파일로부터 페이지를 검색하는, 메모리 관리자의 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
134: 오퍼레이팅 시스템
135: 애플리케이션 프로그램
147: 프로그램 데이터
206: 페이징 파일
208: 파일 시스템
302: 키
304: 암호화 컴포넌트
602: 메모리 관리자
본 발명은 일반적으로 컴퓨팅의 파일에 관한 것으로, 보다 상세히는, 가상 메모리 페이징 파일을 암호화하고 복호화하는 메카니즘에 관한 것이다.
물리적 RAM의 크기 보다 큰 메모리 용량을 이용할 수 있게 하기 위하여 현대 컴퓨터 시스템은 통상적으로 가상 메모리 시설을 제공한다. 가상 메모리 시스템은 가상 주소 공간을 제공하는데, 이 가상 주소 공간은 물리적 주소 공간보다 더 클 수 있다. 가상 메모리로부터 물리적 주소 공간의 내용이 오버플로우(overflow)되는 것을 방지하기 위하여, 물리적 메모리에 더 많은 공간이 필요할 때는 페이지가 물리적 메모리 외부에서 복사되고, 프로그램이 이들 페이지를 액세스 할 필요가 있을 때는 페이지가 물리적 메모리 내에 복사된다. 페이지가 물리적 메모리 외부에서 복사되면, 페이지의 내용은 "페이징 파일"이라 불리는 파일로 디스크에 저장된다.
일시적이나마, 디스크에 메모리 페이지의 이미지를 저장하는데 따른 문제점은 권한이 없는 관찰로부터 이들 페이지의 내용을 보호하기가 어렵다는 점이다. 물리적 메모리는 일반적으로 시스템으로의 전력 공급이 중단되면, 메모리의 내용이 없어지는 휘발성 메모리이다. 그러므로, 휘발성 메모리에 저장된 임의의 기밀 데이터는 시스템이 꺼지거나, 고장나거나, 재부팅되면 권한이 없는 관찰자에 의해 복 구될 수 없음이 보장된다. 그러나, 그 휘발성 메모리로부터 데이터가 페이징 파일에 복사되었을 경우, 이러한 데이터는 디스크로의 엑세스를 가지는 임의의 누군가에 의해 관찰될 수 있고, 전원이 꺼지는 일, 고장, 또는 재부팅 이후에도 데이터는 여전히 디스크에 존재할 것이다. 데이터가 기밀이거나, 민감한 경우에, 공격자들이 디스크로부터 이러한 데이터를 획득할 수 있기 때문에, 이러한 잠재적 가능성은 보안 위험을 나타낸다.
전술한 관점에서, 페이징 파일을 보호하여 종래의 기술의 단점을 극복하는 메카니즘이 개시된다.
본 발명은 페이징 파일에 저장된 데이터를 암호화함으로써 페이징 파일을 보호한다. 본 발명에 따르면, 페이징 파일에 암호화가 표시된다. 페이징 파일은 파일 암호화 시설을 구비한 파일 시스템에 저장된다. 파일 암호화를 제공하는 파일 시스템은 본 명세서에서 참조로서 포함되는 미국 특허 제6,249,866호에 기술된다. 가상 메모리 관리자가 파일 시스템으로 페이징 파일에 저장될 데이터를 보낼 때, 파일 시스템은 페이징 파일에 암호화가 표시되었는지 보고 페이징 파일에 데이터를 저장하기 이전에 데이터를 암호화시킨다. 파일 시스템은 실제 암호화를 수행하기 위하여 암호화 컴포넌트과 통신할 수 있다. 암호화 컴포넌트는 파일 시스템으로부터 평문(clear text)을 수신하고, 암호화 키를 적용시켜 암호문(ciphertext)을 생성하며, 페이징 파일에 저장될 암호문을 파일 시스템으로 되돌려 보낸다.
현존하는 파일 암호화 시스템은 일반적으로 파일을 암호화하고, 파일의 복호 화에 필요한 키의 사본을 영속시킨다. 일반적인 파일인 경우에는, 이들 파일이 장기간 저장을 의도하고, 일반적으로 기기의 매 부팅마다 이들 파일을 복호화할 수 있을 필요가 있기 때문에 영속적인 키 저장이 적당하다. 페이징 파일이 컴퓨팅 환경의 단일 인스턴스화에(예를 들면, 기기의 부팅 간에) 관련할 때에만 의미 있는 데이터에 대한 일시적인 저장소라는 점에서 페이징 파일은 일반적인 파일과는 다르다. 그러므로, 페이징 파일 데이터는 시스템이 재부팅된 이후에는 거의 값을 가지지 않고, 이용가능한 형태로 이러한 데이터를 저장하는 것은 보안 위험을 짊어져야 하는 점에서 불리하다. 그러므로, 페이징 파일 데이터를 복호화하는 데에 필요한 키를 영속하는 것은 몇몇의 예측할 수 없는 환경(예를 들면, 하드 디스크가 그것의 의도된 기기에서 제거되었고 해커의 기기에 설치된 이후에)에서 - 기밀의 또는 민감한 데이터를 포함하는 - 데이터를 복호화 시킬 수 있기 때문에, 바람직하지 않을 수 있다. 본 발명의 한 특징에 따르면, 세션키는 한번 부팅할 때 마다 한번 생성되고, 그 시스템의 단일 실행 중에(예를 들면, 시동과 종료 사이에)만 페이징 파일의 내용을 암호화 하고 복호화 하는 데에 이용된다. 이 세션 키는 기기의 모든 부팅에 걸쳐 영속되지는 않는다.
부팅 이후에 언제든지 물리적 메모리의 페이지를 페이징 파일에 복사할 필요가 있을 수 있기 때문에, 세션키가 페이징 파일을 기록하라는 임의의 요청을 서비스할 준비가 되었다는 것을 보장하기 위해서 그 키는 기기가 부팅된 직후에 생성되는 것이 바람직하다. 바람직하게는, 키를 생성하는 컴포넌트는 시동 직후에 물리적 메모리의 블럭을 예약한다. 이들 예약된 메모리는 페이지 파일에 도착할 데이 터를 암호화하는 암호화 컴포넌트를 위한 작업공간으로 및/또는 파일 시스템과 암호화 컴포넌트 간에서 데이터를 전송하는 버퍼로 이용될 수 있다.
본 발명의 다른 특징은 이하 기술된다.
전술한 발명이 이루고자하는 기술적 과제 및 후술될 바람직한 실시예의 상세한 기술은, 첨부된 도면에 관련하여 읽을 때 보다 잘 이해될 수 있다. 본 발명을 설명하기 위하여, 본 발명의 예시적인 구조가 도면에 도시되지만, 본 발명은 개시된 특정한 방법 및 수단에 제한되지 않는다.
개관
가상 메모리 관리자는 기기의 물리적 휘발성 메모리보다 클 수 있는 가상 주소 공간을 제공한다. 가상 메모리 관리자는 필요에 따라 휘발성 메모리의 안팎으로 데이터를 복사함으로써 이러한 태스크를 수행한다. 데이터가 휘발성 메모리 외부에서 복사될 때, 데이터는 페이징 파일로 디스크에 저장된다. 본 발명은 암호화된 형태로 페이징 파일 데이터를 저장함으로써, 페이징 파일에 저장된 데이터가 허가되지 않은 관찰로부터 보호될 수 있는 메카니즘을 제공한다.
예시적인 컴퓨팅 배열
도 1은 본 발명의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 톱 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 임베디드 시스템(embeded systems) 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함되지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 그외 데이터는 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세 싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 프로세싱 유닛(120)은 멀티-스레드된(multi-threaded) 프로세서에서 지원되는 복수의 논리적 프로세싱 유닛들을 나타낼 수 있다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 또한 통신 장치들 간에, 포인트 투 포인트(point-to-point) 접속, 스위칭 파이버(switching fabric), 등으로 구현될 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기 타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있음을 인식할 것이다.
도 2는 컴퓨터 메모리 및 메모리의 페이지가 저장될 수 있는 파일 시스템을 도시한다. 컴퓨터 시스템은 RAM(132)과 같은 메모리를 포함한다. RAM(132)은 페이지로 편성될 수 있는 메모리의 바이트들로 구성된다. 각 페이지는 지정된 크기 - 예를 들면, 통상적인 시스템은 4 킬로바이트, 또는 4 메가바이트, 또는 동시에 이 두가지 크기를 지원할 수 있다 - 의 메모리의 연속된 블럭이다. 도 2의 예에 서, RAM(132)은 페이지(202(1), 202(2), 202(3), 202(4), 202(5), ..., 202(n))를 포함한다.
파일 시스템(208)은 파일의 형태로 디스크에 데이터를 저장하고, (예를 들면, 파일의 디렉토리를 보유함으로써) 파일을 구성하고, 파일의 저장 및 검색을 수행하며, 파일의 보유에 관련된 그 외의 태스크를 수행하는 데에 필요한 소프트웨어 및/또는 하드웨어 또한 포함한다. 도 2의 예에서, 파일 시스템(208)은 파일(204(1), 204(2), ..., 204(m))을 저장한다. 또한, 파일 시스템(208)은 페이징 파일(206)과 같은, 하나 이상의 페이징 파일을 저장할 수 있다. 페이징 파일(206)은 디스크로부터의 페이지의 사본을 저장하는 데에 이용되는 파일이다. 임의의 프로그램으로 페이징 파일을 보유할 수 있지만, (예를 들면, 도 1의 오퍼레이팅 시스템(134)인) 오퍼레이팅 시스템이 공유하는 모든 애플리케이션 및 프로세스를 위하여 페이징 파일을 보유하는 것은 가장 일반적이다. 이 예에서는, 페이징 파일(206)은 오퍼레이팅 시스템(134)에 의해 보유되는 페이징 파일이다. 마이크로소프트 윈도우즈 오퍼레이팅 시스템은 이러한 페이징 파일을 보유하는 오퍼레이팅 시스템의 예이다. 오퍼레이팅 시스템(134)은 메모리 공간을 비워야 할 필요가 있을 때, 메모리의 페이지를 페이징 파일(206)로 복사한다. 예를 들면, 오퍼레이팅 시스템(134)은 페이지(202(4))의 내용을 페이징 파일(206) 내로 복사하여 다른 데이터의 저장을 위하여 페이지(202(4))의 물리적 메모리를 재할당함으로써 RAM(132) 내의 공간을 비울 것을 결정할 수 있다. 반대로, 오퍼레이팅 시스템(134)이 페이징 파일(206)에 이미 복사된 페이지에 위치되어 있으므로 RAM(132)에 저장되지 않은 데이 터를 액세스하라는 요청을 수신할 때(예를 들면, 가상 주소 변환 테이블 상에 "존재하지 않음"이라 표시된 페이지를 액세스하려는 시도에 기반하여 페이지 결함 예외(page fault exception)가 생성될 때), 오퍼레이팅 시스템(134)은 페이징 파일(206)의 밖에서 찾는 페이지의 내용을 복사하고 그것을 RAM(132)의 물리적 페이지 프레임 내로 위치시킨다(그리고 새로운 페이지의 위치를 가리키도록 주소 변환 테이블 또한 조정한다).
도 3에 도시된 바와 같이, 파일 시스템(208)에 의해 제공될 수 있는 하나의 특징이 파일 암호화 컴포넌트이다. 이전에 도 2와 관련하여 도시되고 논의된 바와 같이, 파일 시스템(208)은 복수의 파일(예를 들면, 파일(204(1), 204(2), 204(3))을 저장한다. 암호화 컴포넌트(304)는 키(302)를 이용하여 파일을 암호화하고 복호화하는 기능을 제공한다. 바람직하게는, 파일 시스템(208)은 암호화된 형태 또는 본래의 형태로 임의의 파일을 저장할 수 있다. 이러한 경우에, 파일 시스템(208)에 저장된 각 파일은 이 파일을 암호화된 형태로 보유해야 할지 여부에 따라, 설정되거나 설정되지 않을 수 있는 플래그와 관련된다. 도 3의 예에서, (파일(204(2))과 관련된) 플래그(310)가 설정되어, 파일(204(2))이 암호화된 것을 표시한다.
암호화 컴포넌트(304)는 파일을 암호화하고 복호화하는 기능을 제공한다. 그러므로, 파일 시스템(208)이 파일(204(2)) (또는 플래그에 암호화가 표시된 임의의 다른 파일)에 데이터를 저장하라는 요청을 수신할 때, 파일 시스템(208)은 암호화 컴포넌트(304)를 호출하고, 암호화 컴포넌트(304)에게 저장될 평문(306)을 전달 한다. 그 다음 암호화 컴포넌트(304)는 키(302)를 이용하여 평문(306)을 암호화하고, 암호문(308)을 파일 시스템(208)으로 되돌려 보낸다. 그러면 암호문은 파일(204(2))에 저장된다. 파일 시스템(208)이 파일(204(2))로부터 정보를 검색하라는 요청을 수신하면, 파일 시스템(208)은 그 시점에서 파일(204(2))에 암호화가 표시되었는지 볼 것이고, 그 파일로부터 암호화된 암호문을 암호화 컴포넌트(304)에게 전달할 것이다. 그 다음 암호화 컴포넌트(304)는 키(302)를 이용하여 암호문을 복호화할 것이고 평문을 반환할 것이다; 그러면 파일 시스템(208)은 요청자에게 평문을 되돌려 보낼 것이다. 바람직한 실시예에서, 암호화 컴포넌트(304)는 데이터 암호화 표준(Data Encryption Standard: DES), 3DES(Triple-DES), 또는 확장된 암호화 표준(Advanced Encryption Standare :AES)과 같은 대칭 키 알고리즘을 이용하여 암호화 또는 복호화를 수행한다.
바람직한 실시예에서, 암호화 컴포넌트(304)는 키(302)를 생성하는 기능을 포함하고, 파일 시스템(208)을 관리하는 소프트웨어에게 키(302)를 제공한다. 도 4와 관련하여 후술될 바와 같이, 키(302)는 시스템이 시동된 바로 직후에 생성되고 비휘발성 저장 장치에 존속되지 않는다.
바람직하게는, 파일 시스템은 생성될 페이징 파일에 암호화 플래그가 설정되어야 하는지 설정되지 않아야 하는지 여부를 결정하는 보안 정책을 국부적으로 또는 중앙 집중식으로 구성하였을 수 있다. 예를 들면, 페이징 파일의 암호화가 수행될지 여부를 나타내는 레지스트리 엔트리가 존재할 수 있다. 시동 중에 - 시스템이 소정의 세션동안 페이징 파일을 생성할 때 - 시스템은 레지스트리를 검사하여 그 페이징 파일에 암호화 플래그를 설정할지 설정하지 않을지 여부를 판정할 수 있다.
페이징 파일 암호화를 위한 시스템의 준비
도 4는 시스템이 페이징 파일 암호화를 준비하는 프로세스의 흐름도이다. 초기에는, 암호화된 페이징 파일을 사용할 시스템이 부팅된다(402). 부팅 이후, 메모리의 블럭이 특정 이용을 위해 예약된다(404). 상세히 기술하자면, 메모리의 예약된 블럭은 다음과 같이 이용될 수 있다: 첫째로, 예약된 메모리의 얼마간은 버퍼로 이용될 수 있는데, 이 버퍼를 통해 데이터가 파일 시스템과 암호화 컴포넌트 간에 앞 뒤 방향으로 기록될 수 있다. (파일 시스템과 암호화 컴포넌트 간에 데이터를 기록하려는 시도가 이루어지고, 예약된 메모리가 부족하다면, 그 기록은 복수의 단계로 나뉘어질 수 있거나, 메모리를 더 할당하려는 시도가 이루어질 수 있다.) 둘째로, 예약된 메모리의 얼마간은 암호화 컴포넌트를 위한 작업공간으로 이용될 수 있다.
다음에는, 페이징 파일을 암호화하는 데에 이용될 세션키가 생성되어, 디스크 등에 페이징되지 않을 수 있는 휘발성 메모리에 저장된다(406). 세션키는 모든 부팅에 걸쳐 키를 존속할 수 있는 방식으로 저장되지 않는 것이 바람직하다; 그러므로, 한번 부팅되었을 때 생성된 암호화된 페이징 파일 데이터는 현재 세션 외에는 복호화될 수 없고, 그로 인하여 그 데이터의 보안을 보호한다(예를 들면, 하드 디스크가 컴퓨터에서 제거되고 도난당했다면, 그 디스크가 다른 기기에 설치되었을 때 이 디스크는 페이징 파일 데이터가 복호화 되도록 할 세션키의 사본을 포함해선 안된다). 바람직하게는, 세션키가 디스크에 페이징된 상태로 종료되지 않도록 넌-페이징 메모리에 저장된다. (디스크에 키를 페이징하는 것은 보안 문제를 야기시킬 수 있을 뿐만 아니라, 키가 저장되어 있을 페이징 파일을 복호화 하는 데에 그 키가 필요할 수 있기 때문에 데드락(deadlock)을 초래할 수도 있다.) 도 4는 메모리의 블럭이 예약된 후에 세션키가 생성되는 것으로 도시하지만, 이러한 순서는 본 발명에서 필수적이지는 않음을 유의한다.
그 다음, 페이징 파일이 파일 상의 암호화 플래그가 설정되면서 생성된다(408). 이 시점에서, 페이징 파일 암호화를 위한 시스템이 준비된다. 메모리 관리자가 메모리와 페이징 파일 간에 앞뒤 방향으로 데이터를 이동시킬 때, 데이터는 세션키로 암호화/복호화된다(410). 메모리와 암호화된 페이징 파일 간의 데이터를 이동시키는 프로세스는 도 5와 관련하여 보다 상세히 기술된다.
도 5는 암호화된 데이터가 페이징 파일에 저장되는 프로세스를 도시한다. 시스템의 동작 중에 몇몇의 시점에서, 메모리 관리자는 메모리에 저장된 데이터가 (예를 들면, 메모리의 공간을 비워두기 위하여) 디스크로 이동될 필요가 있는지 판정한다. 그 다음 메모리 관리자는 메모리 페이지의 내용을 페이징 파일에 그 내용을 기록하라는 명령어와 함께 파일 시스템으로 전달한다(502). 그러면 파일 시스템은 페이징 파일 상의 암호화 플래그가 설정되었는지 여부를 검사한다(504). 암호화 플래그가 설정되지 않았다면, 메모리 관리자에 의해 제공된 데이터는 평문으로 페이징 파일에 기록된다(506).
페이징 파일에 대한 암호화 플래그가 설정되었다면, 파일 시스템은 데이터를 암호화하는 암호화 컴포넌트를 호출한다(508). 그 다음, 암호화 컴포넌트는 세션키를 이용하여 데이터를 암호화하여(510), 암호문을 생성한다. 그러면 암호문은 파일 시스템으로 다시 전달되고(512), 파일 시스템은 페이징 파일에 암호문을 저장한다(514). 적용가능한 대칭 암호화 알고리즘(예를 들면, DES, 3DES, AES, 등)은 통상적으로 지정된 크기의 블럭으로 데이터를 암호화하는 블럭 암호임을 유의한다. ; 그러므로, 생성되고 (페이징 파일에 기록된) 암호문은 적어도 암호화 알고리즘에 의해 이용된 블럭의 크기이다.
암호화된 페이징 파일로부터 데이터를 검색하는 프로세스는 도 5에서 기술된 저장 프로세스와 유사하다: 페이징 파일로부터 데이터를 검색하라는 요청이 메모리 관리자로부터 들어올 때, 페이징 파일에 암호화가 표시되었다면, 파일 시스템은 페이징 파일에 저장된 암호문을 암호화 컴포넌트에 제공하는데, 이 암호화 컴포넌트가 세션키로 암호문을 복호화하여 평문을 반환한다. 이러한 프로세스가 수행되는 시스템 예가 도 6에 도시된다. 메모리의 특정 페이지를 액세스하라는 요청이 수신되고, 메모리 관리자는 (페이지 맵에 기반하여) 요청된 페이지가 메모리에 존재하지 않는 것을 판정한다. 페이지의 부재로 인해 페이지 결함(page fault)이 발생된다. 페이지 결함 처리기는 페이징 파일로부터 요청된 페이지를 검색하기 위하여 파일 액세스 요청을 한다. 파일 시스템(208)은 이러한 액세스 요청을 수신하고, 페이징 파일에 암호화가 표시되었는지 본다. 그렇다면, 파일 시스템(208)은 암호화 컴포넌트(304)를 호출하여 세션키로 요청된 페이지를 복호화한다. 그 다음 암호화 컴포넌트(304)는 파일 시스템에 복호화된 페이지를 되돌려 보내는데, 이 파일 시스템은 메모리 관리자(602)에게 복호화된 페이지를 반환한다. 메모리 관리자(602)는 검색된 페이지의 내용을 물리적 메모리 페이지 프레임에 기록하고, 물리적 메모리에 페이지의 존재 (및 새로운 위치)를 반영하도록 페이지 맵을 조정한다. 바람직하게는, 페이징 파일 데이터를 암호화하고 복호화하는 프로세스는 메모리 관리자가 데이터를 암호화할 것인지 여부에 관계 없이 데이터를 저장하고 검색하는 요청을 할 수 있도록 메모리 관리자에게 투명해야한다.
전술된 예는 단지 설명을 목적으로 제공된 것이고 어떠한 방법으로 본 발명의 제한한다고 해석되지 않음을 유의한다. 본 발명은 다양한 실시예를 참조하여 기술되었지만, 본 명세서에서 사용된 단어들은 제한적인 단어라기 보다는 설명과 예시를 위한 단어이다. 또한, 본 명세서에서는 본 발명이 특정 수단, 도구 및 실시예들을 참조하여 기술되었지만, 본 발명은 본 명세서에서 개시된 특정물에 제한된다고 의도되지 않는다; 오히려, 본 발명은 특허 청구 범위 내에서의 모든 기능적으로 동등한 구조, 방법 및 사용으로 확장된다. 이러한 명세서의 설명의 이점을 가지는, 본 발명에서 숙련된 기술을 가진 자라면, 그것으로의 방대한 수정본에 영향을 줄 수 있고 본 발명의 범위와 사상을 벗어나지 않고 본 발명의 양상에서 변형이 이루어질 수 있다.
본 발명은 페이징 파일에 저장된 데이터를 암호화함으로써 페이징 파일을 보호한다. 본 발명에 따르면, 페이징 파일에 암호화가 표시된다. 페이징 파일은 파일 암호화 시설을 구비한 파일 시스템에 저장된다. 파일 암호화를 제공하는 파일 시스템은 본 명세서에서 참조로서 포함되는 미국 특허 제6,249,866호에 기술된다. 가상 메모리 관리자가 파일 시스템으로 페이징 파일에 저장될 데이터를 보낼 때, 파일 시스템은 페이징 파일에 암호화가 표시되었는지 보고 페이징 파일에 데이터를 저장하기 이전에 데이터를 암호화시킨다. 파일 시스템은 실제 암호화를 수행하기 위하여 암호화 컴포넌트과 통신할 수 있다. 암호화 컴포넌트는 파일 시스템으로부터 평문(clear text)을 수신하고, 암호화 키를 적용시켜 암호문(ciphertext)을 생성하며, 페이징 파일에 저장될 암호문을 파일 시스템으로 되돌려 보낸다.

Claims (23)

  1. 가상 메모리를 보호하는 방법에 있어서,
    휘발성 메모리의 복수의 페이지에 데이터를 저장하는 단계;
    상기 복수의 페이지의 제1 페이지의 내용을 상기 휘발성 메모리에서 디스크에 저장된 페이징 파일로 이동시킬지 여부를 판정하는 단계;
    페이징 파일에 상기 내용을 저장하라는 명령어와 함께 파일 시스템에 상기 내용을 제공하는 단계 - 상기 페이징 파일에 암호화가 표시되고, 상기 파일 시스템은 상기 페이징 파일에 상기 내용을 저장시키기 이전에 상기 내용이 키로 암호화 되도록 하고, 상기 키는 상기 페이징 파일에 포함된 정보를 복호화하는 데에 필요하고, 상기 키는 상기 키가 저장된 기기를 재부팅하면 상기 키가 상실되게 하는 방식으로 저장됨 -; 및
    상기 키의 생성 이전에, 상기 휘발성 메모리의 블럭을 작업공간으로 이용하기 위하여 예약하는 단계를 포함하고,
    상기 작업공간의 이용으로 상기 키의 생성 이전에 휘발성 메모리 내용을 디스크로 복사할 필요성이 없어지는, 방법.
  2. 제1항에 있어서,
    상기 기기의 부팅 시에 상기 키를 생성하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 파일 시스템은 암호화 컴포넌트와 통신함으로써 상기 내용이 암호화되도록 하고, 상기 암호화 컴포넌트는 상기 파일 시스템에 의하여 암호화가 표시된 파일을 암호화하는, 방법.
  4. 제1항에 있어서,
    상기 내용의 암호화는 하나 이상의 알고리즘에 따라 수행되고,
    상기 알고리즘은
    데이터 암호화 표준(Data Encryption Standare: DES);
    3DES(Triple-DES); 또는
    확장된 암호화 표준(Advanced Encryption Standard: AES)을 포함하는, 방법.
  5. 가상 메모리를 보호하는 방법에 있어서,
    휘발성 메모리의 복수의 페이지에 데이터를 저장하는 단계;
    상기 복수의 페이지의 제1 페이지의 내용을 상기 휘발성 메모리로부터 디스크에 저장된 페이징 파일로 이동시킬지 여부를 판정하는 단계;
    페이징 파일에 상기 내용을 저장하라는 명령어와 함께 파일 시스템에 상기 내용을 제공하는 단계 - 상기 페이징 파일에 암호화가 표시되고, 상기 파일 시스템은 상기 페이징 파일에 상기 내용을 저장시키기 이전에 상기 내용이 키로 암호화 되도록 하고, 상기 키는 상기 페이징 파일에 포함된 정보를 복호화하는 데에 필요하며, 상기 키는 상기 키가 저장된 기기를 재부팅하면 상기 키가 상실되게 하는 방식으로 저장되며, 상기 파일 시스템은 암호화 컴포넌트와 통신함으로써 상기 내용이 암호화되도록 하고, 상기 암호화 컴포넌트는 상기 파일 시스템에 의하여 암호화가 표시된 파일을 암호화함 - ; 및
    상기 파일 시스템과 상기 암호화 컴포넌트 사이에 양쪽으로 데이터가 전달될 수 있는 상기 휘발성 메모리의 블럭을 예약하는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 기기의 부팅 시에 상기 키를 생성하는 단계를 더 포함하는 방법.
  7. 제5항에 있어서,
    상기 내용의 암호화는 하나 이상의 알고리즘에 따라 수행되고,
    상기 알고리즘은
    데이터 암호화 표준(DES);
    3DES; 또는
    확장된 암호화 표준(AES)을 포함하는, 방법.
  8. 컴퓨터의 가상 메모리 데이터를 저장하는 암호화된 페이징 파일을 보유하는 시스템에 있어서,
    데이터를 수신하고 키를 이용하여 상기 데이터에 대해 암호화 및 복호화 동작을 수행하는 암호화 컴포넌트;
    상기 키를 생성하는 메카니즘;
    상기 컴퓨터의 부팅시 상기 키가 영속되지 않는 방식으로 상기 키를 저장하는 상기 컴퓨터 내의 저장 위치; 및
    파일 시스템에게 페이징 파일에 복사되거나 이동된 데이터를 저장하라고 요청함으로써 상기 데이터를 휘발성 메모리로부터 디스크로 복사하거나 이동시키는 가상 메모리 관리자 - 상기 파일 시스템은 상기 암호화 컴포넌트를 호출하여 상기 복사되거나 이동된 데이터를 상기 키로 암호화함 - 를 포함하고,
    상기 암호화 컴포넌트는 시동 시에 메모리의 블럭을 예약하는, 시스템.
  9. 제8항에 있어서,
    상기 메모리의 블럭은 상기 키의 생성 이전에 상기 암호화 컴포넌트를 위한 작업공간으로서 이용되고, 그로 인하여 상기 암호화 컴포넌트의 작동 데이터의 저장을 위한 충분한 공간이 상기 키의 생성 이전에 상기 휘발성 메모리에 존재하는, 시스템.
  10. 제8항에 있어서,
    상기 메모리의 블럭은 상기 파일 시스템과 상기 암호화 컴포넌트 간에 정보를 전달하는 버퍼로서 이용되는 시스템.
  11. 제8항에 있어서,
    상기 키는 상기 가상 메모리 관리자가 상기 페이징 파일로의 상기 데이터의 저장을 지시하기 이전에 생성되는, 시스템.
  12. 제8항에 있어서,
    상기 키는 상기 휘발성 메모리에 저장되고, 상기 컴퓨터의 어떠한 비휘발성 메모리 또는 저장 장치에도 상기 키의 사본이 저장되지 않는, 시스템.
  13. 제8항에 있어서,
    상기 암호화 컴포넌트의 암호화는 하나 이상의 알고리즘에 따라 상기 데이터를 암호화하며,
    상기 알고리즘은
    데이터 암호화 표준(DES);
    3DES; 또는
    확장된 암호화 표준(AES)을 포함하는, 시스템.
  14. 컴퓨터의 시동 시에 수행되는 방법을 수행하는 컴퓨터 실행가능 명령어가 인코딩된 컴퓨터 판독가능 저장 매체에 있어서,
    상기 방법은
    세션키를 생성하는 단계;
    기기의 부팅시 존속하지 않는 비영속적 방식으로 상기 세션키를 저장하는 단계;
    디스크에 저장된 가상 메모리 데이터를 암호화해야 하는 것을 지시하는 정보를 검색하는(retrieving) 단계;
    페이징 파일이 암호화된 파일이라고 표시하는 단계;
    디스크에 저장될 휘발성 저장 장치로부터의 데이터를 메모리 관리자로부터 상기 페이징 파일에 수신하는 단계;
    상기 페이징 파일에 상기 데이터를 저장하기 이전에 세션키로 상기 수신된 데이터를 암호화함으로써 상기 수신된 데이터를 관찰로부터 보호하는 단계; 및
    상기 세션키의 생성 이전에 메모리의 블럭을 예약하는 단계를 포함하고,
    상기 메모리의 블럭은
    상기 페이징 파일을 보유하는 파일 시스템과 상기 세션키로 상기 데이터의 암호화 및 복호화를 수행하는 암호화 컴포넌트 간에 데이터를 전달하는 버퍼; 및
    상기 세션키의 생성 이전에 상기 암호화 컴포넌트에 의해 이용가능한 작업공간 중 하나로 사용되는,
    컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 세션키는 상기 휘발성 저장 장치에 저장되고, 상기 세션키의 사본은 디스크에 저장되지 않는, 컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서,
    상기 암호화 컴포넌트는 하나 이상의 알고리즘에 따라 암호화를 수행하고,
    상기 알고리즘은
    데이터 암호화 표준(DES);
    3DES; 또는
    확장된 암호화 표준(AES)을 포함하는, 컴퓨터 판독가능 저장 매체.
  17. 가상 메모리를 보호하는 방법을 수행하는 실행가능 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 방법은,
    휘발성 메모리의 복수의 페이지에 데이터를 저장하는 단계;
    상기 복수의 페이지의 제1 페이지의 내용을 상기 휘발성 메모리에서 디스크에 저장된 페이징 파일로 이동시킬지 여부를 판정하는 단계;
    페이징 파일에 상기 내용을 저장하라는 명령어와 함께 파일 시스템에 상기 내용을 제공하는 단계 - 상기 페이징 파일에 암호화가 표시되고, 상기 파일 시스템은 상기 페이징 파일에 상기 내용을 저장시키기 이전에 상기 내용이 키로 암호화 되도록 하고, 상기 키는 상기 페이징 파일에 포함된 정보를 복호화하는 데에 필요로 하고, 상기 키는 상기 키가 저장된 기기를 재부팅하면 상기 키가 상실되게 하는 방식으로 저장되며, 상기 파일 시스템은 암호화 컴포넌트와 통신함으로써 상기 내용이 암호화되도록 하고, 상기 암호화 컴포넌트는 상기 파일 시스템에 의해 암호화가 표시된 파일을 암호화함 -; 및
    상기 파일 시스템과 상기 암호화 컴포넌트 사이에서 양쪽 방향으로 데이터가 전달될 수 있는 상기 휘발성 메모리의 블럭을 예약하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서,
    상기 기기의 부팅 시에 상기 키를 생성하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  19. 제17항에 있어서,
    상기 내용의 암호화는 하나 이상의 알고리즘에 따라 수행되고,
    상기 알고리즘은
    데이터 암호화 표준(DES);
    3DES; 또는
    확장된 암호화 표준(AES)을 포함하는, 컴퓨터 판독가능 저장 매체.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
KR1020040080342A 2003-11-25 2004-10-08 시스템 페이징 파일의 암호화 KR101120779B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/721,562 2003-11-25
US10/721,562 US7325115B2 (en) 2003-11-25 2003-11-25 Encryption of system paging file

Publications (2)

Publication Number Publication Date
KR20050050530A KR20050050530A (ko) 2005-05-31
KR101120779B1 true KR101120779B1 (ko) 2012-03-23

Family

ID=34465670

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040080342A KR101120779B1 (ko) 2003-11-25 2004-10-08 시스템 페이징 파일의 암호화

Country Status (5)

Country Link
US (1) US7325115B2 (ko)
EP (1) EP1536307B1 (ko)
JP (1) JP2005158043A (ko)
KR (1) KR101120779B1 (ko)
CN (1) CN100495364C (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108693B2 (en) 2005-04-01 2012-01-31 Ged-I Ltd. Method for data storage protection and encryption
EP1870813B1 (en) * 2006-06-19 2013-01-30 Texas Instruments France Page processing circuits, devices, methods and systems for secure demand paging and other operations
KR100969758B1 (ko) * 2007-01-22 2010-07-13 삼성전자주식회사 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치
JP4994903B2 (ja) * 2007-03-16 2012-08-08 株式会社リコー 暗号鍵復旧方法、情報処理装置及び暗号鍵復旧プログラム
US8290159B2 (en) 2007-03-16 2012-10-16 Ricoh Company, Ltd. Data recovery method, image processing apparatus, controller board, and data recovery program
US8886963B2 (en) * 2011-09-15 2014-11-11 Apple Inc. Secure relocation of encrypted files
CN103605933A (zh) * 2012-12-13 2014-02-26 深圳市证通电子股份有限公司 基于标准单元技术的关键信息存储方法及存储装置
US9367699B2 (en) * 2013-02-07 2016-06-14 Steelcloud, Llc Automating the creation and maintenance of policy compliant environments
US9294266B2 (en) 2013-06-27 2016-03-22 Qualcomm Incorporated Method and apparatus to encrypt plaintext data
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
JP6399821B2 (ja) * 2014-06-23 2018-10-03 キヤノン株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
US10445233B2 (en) 2014-06-23 2019-10-15 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and storage medium
KR101571377B1 (ko) * 2015-05-12 2015-11-24 주식회사 기가레인 비콘 데이터 처리 시스템 및 방법
US9710401B2 (en) * 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
CN106203109B (zh) * 2016-06-29 2019-08-27 珠海豹趣科技有限公司 一种安全保护处理方法、装置及电子设备
US10924508B2 (en) * 2017-12-21 2021-02-16 Sonicwall Inc. Providing access to data in a secure communication
US11824895B2 (en) 2017-12-27 2023-11-21 Steelcloud, LLC. System for processing content in scan and remediation processing
US11496519B1 (en) * 2019-11-29 2022-11-08 Amazon Technologies, Inc. Managing security in isolated network environments
US11494523B2 (en) * 2020-08-14 2022-11-08 Intel Corporation Direct memory access mechanism

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825878A (en) * 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US6003117A (en) 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
US20020099946A1 (en) * 1998-04-30 2002-07-25 Howard C. Herbert Cryptographically protected paging subsystem
US20030133574A1 (en) 2002-01-16 2003-07-17 Sun Microsystems, Inc. Secure CPU and memory management unit with cryptographic extensions

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2932919B2 (ja) * 1993-11-30 1999-08-09 富士ゼロックス株式会社 仮想記憶システム
US5920895A (en) 1995-04-24 1999-07-06 Microsoft Corporation Mapped file input/output with delayed zeroing
JPH09204360A (ja) * 1996-01-24 1997-08-05 Toshiba Corp 機密データの保護方法
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5931947A (en) 1997-09-11 1999-08-03 International Business Machines Corporation Secure array of remotely encrypted storage devices
US6405315B1 (en) 1997-09-11 2002-06-11 International Business Machines Corporation Decentralized remotely encrypted file system
US6249866B1 (en) 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
JP2002529815A (ja) * 1998-11-05 2002-09-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 複数の暗号化アルゴリズムを用いるセキュアメモリ管理ユニット
US6442654B1 (en) 1999-12-10 2002-08-27 International Business Machines Corporation Operating system support for in-server caching of documents
AU2001271996A1 (en) * 2000-07-18 2002-01-30 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US7343493B2 (en) * 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
AU2003298560A1 (en) * 2002-08-23 2004-05-04 Exit-Cube, Inc. Encrypting operating system
JP4655452B2 (ja) * 2003-03-24 2011-03-23 富士ゼロックス株式会社 情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825878A (en) * 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US6003117A (en) 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
US20020099946A1 (en) * 1998-04-30 2002-07-25 Howard C. Herbert Cryptographically protected paging subsystem
US20030133574A1 (en) 2002-01-16 2003-07-17 Sun Microsystems, Inc. Secure CPU and memory management unit with cryptographic extensions

Also Published As

Publication number Publication date
US20050114688A1 (en) 2005-05-26
US7325115B2 (en) 2008-01-29
KR20050050530A (ko) 2005-05-31
JP2005158043A (ja) 2005-06-16
EP1536307B1 (en) 2018-10-10
CN100495364C (zh) 2009-06-03
CN1622061A (zh) 2005-06-01
EP1536307A1 (en) 2005-06-01

Similar Documents

Publication Publication Date Title
KR101120779B1 (ko) 시스템 페이징 파일의 암호화
US7278016B1 (en) Encryption/decryption of stored data using non-accessible, unique encryption key
US4847902A (en) Digital computer system for executing encrypted programs
JP4643427B2 (ja) 暗号化機能内蔵ストレージシステム
KR101081118B1 (ko) 보안되는 프로그램을 복원하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US7293173B2 (en) Methods and systems for protecting information in paging operating systems
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
KR101054981B1 (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US6895506B1 (en) Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism
JP4851200B2 (ja) アイテムに対する使用権をアクセス権に基づいて生成する方法およびコンピュータ読取り可能媒体
US11194920B2 (en) File system metadata protection
EP3103048B1 (en) Content item encryption on mobile devices
JPWO2009044461A1 (ja) デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置
JP2008527532A (ja) 非セキュリティ領域にセキュリティ領域を割り当てる方法及び携帯用保存装置
US10733306B2 (en) Write-only limited-read filesystem
CN115758420A (zh) 文件访问控制方法、装置、设备及介质
TWI362207B (en) Key cache management through multiple localities
JPH05233460A (ja) ファイル保護方式
US20160357470A1 (en) Computer readable medium, information processing apparatus, and method
JPH08509087A (ja) ファイル暗号構造

Legal Events

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

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9