KR20080034118A - 사용자 계정 내에서의 애플리케이션 특정 데이터의 분리 - Google Patents

사용자 계정 내에서의 애플리케이션 특정 데이터의 분리 Download PDF

Info

Publication number
KR20080034118A
KR20080034118A KR1020087000387A KR20087000387A KR20080034118A KR 20080034118 A KR20080034118 A KR 20080034118A KR 1020087000387 A KR1020087000387 A KR 1020087000387A KR 20087000387 A KR20087000387 A KR 20087000387A KR 20080034118 A KR20080034118 A KR 20080034118A
Authority
KR
South Korea
Prior art keywords
data
application
handle
access
counter
Prior art date
Application number
KR1020087000387A
Other languages
English (en)
Other versions
KR101279671B1 (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 KR20080034118A publication Critical patent/KR20080034118A/ko
Application granted granted Critical
Publication of KR101279671B1 publication Critical patent/KR101279671B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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/2147Locking files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

복수의 애플리케이션들이 동일 사용자 계정을 공유하는 환경에서 애플리케이션 특정 데이터를 분리하기 위한 메커니즘이 제공된다. 이 메커니즘은 애플리케이션에 특정한 데이터가 애플리케이션에 의해서만 액세스되도록 한다. 애플리케이션이 애플리케이션 특정 데이터를 요청하는 경우, 데이터가 로드되고 데이터로의 핸들이 애플리케이션에 리턴된다. 데이터에 대한 액세스는 핸들을 통해서만 허용된다. 따라서, 상기 핸들을 소유하는 애플리케이션만 상기 데이터에 액세스할 수 있다. 카운터는 로드된 데이터와 연관될 수 있다. 카운터의 값은 데이터에 대한 핸들이 생성될 때마다 증분되고 데이터에 대한 핸들이 종료될 때마다 감분된다. 카운터의 값이 0에 도달하는 경우, 데이터는 자동으로 언로드된다.
Figure P1020087000387
애플리케이션, 사용자 계정, 액세스, 핸들, 카운터, 데이터

Description

사용자 계정 내에서의 애플리케이션 특정 데이터의 분리{ISOLATION OF APPLICATION-SPECIFIC DATA WITHIN A USER ACCOUNT}
통상적으로, 운영 체제는 사용자 계정의 입도(granularity)로 애플리케이션 특정 데이터를 분리한다. 즉, 상이한 사용자 계정들로 실행 중인 애플리케이션들이 서로 분리된다. 결과적으로, 하나의 사용자 계정으로 실행 중인 하나의 애플리케이션은 다른 사용자 계정으로 실행 중인 동일한 애플리케이션에 대한 데이터를 액세스할 수 없다. 그러나, 동일한 사용자 계정으로 실행 중인 애플리케이션들에 대한 데이터는 서로 분리되지 않는다. 그 결과, 하나의 사용자 계정으로 실행 중인 하나의 애플리케이션은 동일한 사용자 계정으로 실행 중인 다른 애플리케이션에 대한 데이터를 액세스하고 심지어 수정할 수 있다. 이것은 잠재적인 안정성, 보안성 및 관리 문제들을 발생시킬 수 있다. 따라서, 동일한 사용자 계정을 공유하는 애플리케이션들 사이에서 애플리케이션 특정 데이터를 분리하기 위한 메커니즘을 제공하는 것이 바람직할 수 있다.
발명의 개요
본 개요는 이하 상세한 설명부에서 더 설명되는 간략화된 형태의 개념들의 선택을 도입하기 위한 것이다. 본 개요는 청구된 본 발명의 주제의 주요 특징들을 식별하기 위한 것이 아니며, 청구된 본 발명의 주제의 범위를 결정하는 것을 돕기 위하여 사용되는 것도 아니다.
본 발명은 복수의 애플리케이션들이 동일한 사용자 계정과 연관되는 환경에서 한 애플리케이션에 특정한 데이터를 다른 애플리케이션들로부터 분리시키는 것을 가능하게 한다. 예를 들면, 본 발명은 데이터를 액세스하기 위한 핸들 기반 접근법을 이용한다. 애플리케이션은 데이터로의 핸들을 소유하고 있다면 데이터에 액세스할 수 있다. 데이터가 애플리케이션 특정인 것이라면, 데이터에 대하여 하나의 핸들만이 생성될 수 있다. 핸들은 데이터를 식별하는 애플리케이션에 보내진다. 핸들을 소유한 애플리케이션만이 데이터를 액세스할 수 있다. 상기 애플리케이션과 동일한 사용자 계정을 공유하는 다른 애플리케이션들로부터의 액세스 요청들은 거부된다.
본 발명의 일 양태에 따르면, 애플리케이션이 데이터를 액세스할 필요가 있고 데이터가 로드되지 않은 경우, 먼저 데이터가 로드된다. 바람직하게는, 상기 데이터에 대하여 고유 ID가 생성된다. 그 후 고유 ID는 데이터에 대한 액세스 경로를 형성하는 데 이용된다. 액세스 경로는 데이터가 로드될 수 있는 위치를 나타낸다. 데이터는 상기 위치에서 로드된다. 로드된 데이터에 대한 핸들이 생성되어 애플리케이션에 보내진다. 애플리케이션은 핸들을 통하여 데이터를 액세스할 수 있다. 해당 애플리케이션만이 데이터를 액세스할 수 있어야 한다면, 데이터는 애플리케이션 특정인 것으로 간주된다. 상기 애플리케이션과 동일한 사용자 계정을 공유하는 다른 애플리케이션들은 로드된 데이터로의 핸들을 생성하거나 핸들을 통하여 데이터에 액세스할 수 없다. 한편, 데이터가 애플리케이션 특정적이지 않다면, 다른 애플리케이션들이 데이터로의 핸들들을 생성하고 그들을 통해 데이터에 액세스할 수 있다.
본 발명의 다른 양태에 따르면, 데이터가 로드되는 경우 데이터에 대하여 카운터가 생성된다. 카운터의 값은 데이터에 대하여 핸들이 생성될 때마다 증분되고 데이터에 대한 핸들이 종료될 때마다 감분된다. 데이터는 카운터의 값이 0에 도달할 때 자동으로 언로드된다.
본 발명의 다른 양태에 따르면, 애플리케이션 특정 데이터 액세스를 위하여 애플리케이션 프로그래밍 인터페이스가 제공된다. 애플리케이션 프로그래밍 인터페이스는, 복수의 애플리케이션들이 동일한 사용자 계정을 공유하는 환경에서, 한 컴퓨팅 처리, 즉 애플리케이션으로부터 액세스 요청을 수신한 때에 데이터 개체에 대한 액세스를 제공하는 펑션(function)을 포함한다. 상기 펑션은 액세스를 요청하는 컴퓨팅 처리에 의해서만 데이터 개체가 액세스될 수 있도록 구성될 수 있다. 즉, 다른 컴퓨팅 처리들은 데이터 개체를 액세스할 수 없다. 바람직하게는, 상기 펑션은 현재 그것을 호출하는 컴퓨팅 처리만이 데이터 개체를 액세스할 수 있도록 구성될 수 있는 파라미터를 포함한다. 파라미터는 또한 데이터 개체를 액세스하기 위한 펑션을 호출하는 임의의 컴퓨팅 처리가 데이터 개체를 액세스할 수 있도록 구성될 수 있다.
특히, 데이터 개체로의 액세스를 요청하는 컴퓨팅 처리에 의해 호출된 때, 펑션은 데이터 개체에 대한 고유 ID를 생성한다. 고유 ID는 그 후 데이터 개체를 로드할 위치를 나타내는 경로를 생성하는 데 이용될 수 있다. 펑션은 그에 따라 데이터 개체를 로드한다. 펑션은 그 후 로드된 데이터 개체로의 핸들을 컴퓨팅 처리에 리턴한다. 컴퓨팅 처리가 액세스 요청을 완료할 때마다, 대응하는 핸들이 종료된다. 데이터 개체와 연관된 핸들이 존재하지 않는 경우, 펑션은 데이터 개체를 언로드한다.
요컨대, 본 발명은 애플리케이션에 특정한 데이터가 그 애플리케이션과 동일한 사용자 계정을 공유하는 다른 애플리케이션들에 의해 액세스되는 것을 방지한다. 본 발명은 애플리케이션에 특정한 데이터가 그 애플리케이션에 의해서만 액세스되게 한다. 따라서, 상기 애플리케이션과 동일한 사용자 계정을 공유하는 다른 애플리케이션들은 애플리케이션 특정 데이터의 무결성(integrity)을 간섭할 수 없다.
본 발명의 이전의 양태들 및 많은 부수적인 장점들은, 첨부도면들과 함께 고려되는 경우, 이하의 상세한 설명부를 참조하여 더 잘 이해됨에 따라 더 쉽게 이해될 것이다.
도 1은, 동일한 사용자 계정을 갖는 복수의 애플리케이션들에 대한 애플리케이션 특정 데이터가 분리되는, 본 발명의 양태들을 구현하기 위한 예시적인 컴퓨팅 시스템을 예시하는 블럭도;
도 2는 본 발명의 양태들을 구현하기 위한 예시적인 WINDOWS® API를 예시하 는 블럭도; 및
도 3a-3b는 하나의 사용자 계정 내에서 애플리케이션 특정 데이터를 분리하기 위한 예시적인 처리를 예시하는 흐름도.
일반적으로, 본 발명의 실시예들은 동일한 사용자 계정과 연관된 애플리케이션들 사이에서 애플리케이션 특정 데이터를 분리한다. 특히, 본 발명의 실시예들은 복수의 애플리케이션들이 동일한 사용자 계정과 연관되는 환경에서 데이터를 액세스하기 위하여 핸들 기반 접근을 채택한다. 애플리케이션이 그것에 특정한 데이터를 액세스할 필요가 있을 때, 데이터가 로드되고; 데이터에 대한 핸들이 생성되어 애플리케이션에 보내진다. 애플리케이션은 핸들을 통하여 데이터를 액세스한다. 다른 애플리케이션들은 데이터에 대한 핸들들을 생성할 수 없으므로 데이터에 대한 액세스가 거부된다. 본 발명의 실시예들에서, 데이터는 동일한 사용자 계정을 공유하는 애플리케이션들에 의해 이용될 수 있는 임의의 데이터를 포함할 수 있다.
도 1은 사용자(101)에 대한 복수의 애플리케이션들을 호스팅하는 컴퓨팅 시스템(100)을 예시한다. 복수의 애플리케이션들은 애플리케이션 A(102A) 및 애플리케이션 B(102B)를 포함한다. 예시된 본 예에서, 애플리케이션 데이터 A(104A)는 애플리케이션 A(102A)에 특정된 것인 한편 애플리케이션 데이터 B(104B)는 애플리케이션 B(102B)에 특정된 것이다. 본 발명의 실시예들에서, 애플리케이션에 특정한 데이터 개체에 대하여 애플리케이션으로부터 액세스 요청을 수신한 때에, "UID(unique identifier)"가 동적으로 생성된다. UID는 데이터 개체에 대한 액세스 경로를 생성하는 데 이용된다. 예를 들면, 애플리케이션 A(102A)가 애플리케이션 데이터 A(104A)를 요청하면, UID A(106A)가 동적으로 생성된다. UID A(106A)는 그 후 /root/app/UID A/Application data A와 같은 액세스 경로를 생성하는 데 이용되며, 이것은 상기 액세스 경로에 의해 지정된 위치에 애플리케이션 데이터 A(104A)를 로드하기 위하여 이용될 수 있다. 유사하게, 애플리케이션 B(102B)가 애플리케이션 데이터 B(104B)를 액세스하기를 원할 때, 컴퓨팅 시스템(100)은 동적으로 UID B(106B)를 생성하며, 이것은 애플리케이션 데이터 B(104B)를 위한 액세스 경로를 형성하는 데 이용된다. 그러한 액세스 경로는 예를 들면 /root/app/UID B/Application data B일 수 있다. 애플리케이션 데이터 B(104B)는 액세스 경로에 의해 지정된 위치에 로드될 수 있다.
본 발명의 실시예들에서, 애플리케이션 특정 데이터 개체에 대한 UID 및 대응 액세스 경로를 생성한 후, 컴퓨팅 시스템(100)은 액세스 경로에 의해 지정된 위치에서 데이터 개체를 로드한다. 컴퓨팅 시스템(100)은 그 후 로드된 데이터 개체로의 핸들을 생성하고 데이터 개체를 요청하는 애플리케이션에 상기 핸들을 보낸다. 예를 들면, 도 1에 도시된 바와 같이, 애플리케이션 A(102A)는 애플리케이션 데이터 A(104A)로의 핸들 A(110A)를 수신하며; 애플리케이션 B(102B)는 애플리케이션 데이터 B(104B)로의 핸들 B(110B)를 수신한다. 본 발명의 실시예들에서, 하나의 데이터 개체로의 하나의 핸들을 소유하는 애플리케이션만이 데이터 개체를 처리할 수 있으며 데이터 개체를 특정하게 식별하는 애플리케이션만이 데이터 개체로의 핸들을 소유할 수 있다. 따라서, 도 1의 예에서는, 애플리케이션 A(102A)만이 애플리케이션 데이터 A(104A)를 액세스할 수 있으며; 애플리케이션 B(102B)만이 애플리케이션 데이터 B(104B)를 액세스할 수 있다.
이론적으로는, 다른 애플리케이션들이 그 액세스 경로를 통해 데이터 개체를 액세스할 수 있다. 본 발명의 실시예들에서, 애플리케이션이 그 액세스 경로를 통해 데이터 개체를 액세스하려고 시도하면, 그러한 액세스는 거부될 것이다. 예를 들면, 전술된 바와 같이, 애플리케이션 데이터 A(104A)에 대한 액세스 경로는 /root/app/UID A/Application Data A이다. 이론적으로는, 애플리케이션 B(102B)는 그 액세스 경로를 통해 애플리케이션 데이터 A(104A)를 액세스할 수 있다. 본 발명의 실시예들은 그러한 액세스를 거부하며 핸들 A(110A)를 통해 애플리케이션 데이터 A(104A)로의 액세스만 허용한다. 따라서, 애플리케이션 A(102A)만이 애플리케이션 데이터 A(104A)를 액세스할 수 있다.
본 발명의 실시예들은 또한 로드된 데이터 개체에 대한 카운터를 제공한다. 로드된 데이터 개체에 대하여 핸들이 생성될 때마다, 카운터의 값은 증분된다. 로드된 데이터 개체로의 핸들이 종료될 때마다, 카운터의 값은 감분된다. 본 발명의 실시예들에서, 카운터의 값이 0에 도달할 때, 대응하는 데이터 개체가 언로드된다. 예를 들면, 도 1에 도시된 바와 같이, 로드된 애플리케이션 데이터 A(104A)는 카운터(112A)와 연관되고, 로드된 애플리케이션 데이터 B(104B)는 카운터(112B)와 연관된다. 본 발명의 실시예들에서는, 데이터 개체가 로드될 때, 다른 애플리케이션은 로드된 데이터 개체를 다른 데이터 개체로 대체할 수 없다.
본 발명의 예시적인 실시예에서, 컴퓨팅 시스템(100)은 MICROSOFT® WINDOWS® 운영체제를 사용한다. 당업자에게 공지된 바와 같이, MICROSOFT® WINDOWS® 운영체제는 시스템- 및 사용자- 관련 데이터를 위한 중앙 저장소로서 WINDOWS® 레지스트리를 이용한다. 디스크에서, WINDOWS® 레지스트리는 이산 파일들, 데이터 개체들, 소위 하이브들(hives)의 세트로서 구성된다. 각각의 하이브는 데이터의 계층을 포함한다. 하이브가 컴퓨터 시스템의 파일 시스템에 로드될 때, 하이브로의 액세스 경로는 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/hivelist 아래에 기록된다. 액세스 경로는 하이브가 언로드되면 제거된다.
현재, MICROSOFT® WINDOWS® 운영체제가 시작할 때, WINDOWS® 레지스트리는 디폴트로 소정의 하이브들을 로드한다. 종래에는, 사용자들이 필요시 특정한 하이브들을 로드하게 하는 RegLoadKey API가 사용되었다. RegLoadKey API를 사용하여 하이브가 로드될 때, 하이브는 시스템 전반에 걸쳐 가시적이다. 결과적으로, 하이브 내의 데이터는 충분한 액세스 권리들을 갖는 누구라도 액세스할 수 있다. 그러나, RegLoadKey API는 특정한 특권들을 요구하지 않고 정상적인 사용자들이 하이브들을 로드하는 것을 가능하게 하지 않는다. RegLoadKey API는 또한 동일한 사용자 계정으로 실행 중인 다른 애플리케이션들이 하이브 내의 데이터를 조작하는 것을 방지하지 않는다.
RegLoadKey API에 의해 취해진 제한들을 처리하기 위하여, 본 발명의 예시적 인 실시예는 새로운 하이브 로드 API(예를 들면, RegLoadAppKey로 호칭됨)를 제공한다. RegLoadAppKey API는 특정한 특권을 요구하지 않고 사용자가 하이브들을 로드하게 한다. RegLoadAppKey API는 또한 이 API를 이용하여 로드된 하이브들의 애플리케이션 레벨 분리를 고려한다. 시스템 전반에 걸친 가시성(system-wide visibility)으로 하이브들을 로드하는 기존의 RegLoadKey API와는 달리, RegLoadAppKey API는 처리 전반에 걸친 가시성(process-wide visibility)만으로 하이브들을 로드한다. 즉, RegLoadAppKey API를 호출하는 처리만이 하이브로의 핸들을 얻을 것이다. RegLoadAppKey API는 성공적으로 하이브를 로드하는 첫 번째 처리에만 하이브를 노출한다. 따라서, RegLoadAppKey API를 사용하여, 애플리케이션은 그것에만 관련 있는 설정들을 포함하는 하이브를 로드할 수 있고 동일하거나 상이한 사용자 계정 하에 실행 중인 어떤 다른 애플리케이션들은 이 하이브를 액세스할 수 없는 것이 보장될 수 있다. 애플리케이션의 종료시, 또는 하이브와 연관된 핸들에 대한 최종 참조가 클로즈될 때, 하이브는 자동적으로 언로드된다.
도 2는 RegLoadAppKey API(200)의 예시적인 사용을 예시한다. 애플리케이션(202)이 특정한 하이브를 로드하기 위하여 RegLoadAppKey API(200)를 호출할 때, 애플리케이션(202)은 로드될 하이브의 파일명을 RegLoadAppKey API(200)에 제공한다. RegLoadAppKey API(200)는 제공된 파일명에 따라 특정한 하이브를 로드하고 하이브에 대한 핸들(204)을 다시 애플리케이션(202)에 제공한다. 애플리케이션(202)은 그 후 핸들(204)을 통하여 상기 로드된 하이브에 대하여 작용할 수 있다.
RegLoadAppKey API(200)의 예시적인 구현에서, 로드될 하이브의 파일명을 수신한 때에, RegLoadAppKey API(200)는 UID(206)를 생성한다. 하이브가 이미 로드되었다면, UID(206)가 무시된다. 그렇지 않다면, UID(206)는 하이브가 로드될 수 있는 위치를 나타내는 "로드할 장소로의 경로(path to place to load)"(208)를 형성하는 데 이용된다. 예를 들면, 하이브가 /registry/app/UID에 로드될 수 있다.
본 발명의 예시적인 실시예에서, RegLoadAppKey(200)는 그 후 하이브를 로드하기 위하여 NtLoadKeyEx API(210)를 호출할 수 있다. NtLoadKeyEx API(210)는 "로드할 장소로의 경로"(208)에 의해 지정된 위치에 하이브를 로드하고 하이브에 대한 핸들(204)을 리턴한다. 바람직하게는, 애플리케이션(202)이 하이브를 액세스하기 위하여 RegLoadAppKey API(200)를 호출할 때마다, 하이브에 대한 핸들(204)이 생성된다. 애플리케이션(202)이 액세스를 그만둘 때, 대응하는 핸들이 클로즈된다. 하이브에 대한 핸들들이 모두 클로즈될 때, 하이브는 자동으로 언로드된다.
작용적으로, RegLoadAppKey API(200)는 하이브로의 액세스가 호출하는 애플리케이션(202)에 한정되는 것을 지정하기 위한 파라미터를 포함할 수 있다. 파라미터가 지정될 때, 동일한 하이브를 로드하기 위한 다른 애플리케이션들의 후속 시도들이 실패할 것이므로, 하이브는 그것을 로드한 애플리케이션(202)만이 액세스 가능하게 된다. 파라미터가 지정되지 않으면, 복수의 애플리케이션들, 즉 처리들은 동일한 하이브를 로드할 수 있다. 더욱이, RegLoadAppKey API(200)는, 액세스 요청이 하이브에 대한 핸들(204)로부터 대신, "로드할 장소로의 경로"(208)를 통해 하이브에 액세스하려고 시도하면 그러한 액세스 요청을 거부한다.
도 3a 및 3b는 애플리케이션과 동일한 사용자 계정을 공유하는 다른 애플리케이션들로부터 애플리케이션에 특정한 데이터를 분리하기 위한 예시적인 처리(300)를 예시한다. 본질적으로, 처리(300)는 데이터가 언로드되면 요청된 데이터를 로드하고, 로드된 데이터로의 핸들을 생성하며, 데이터를 요청하는 애플리케이션에 핸들을 보낸다. 처리(300)는 또한 데이터와 연관된 핸들의 수를 추적하기 위하여 카운터를 이용한다. 카운터의 값은 데이터에 대한 핸들이 생성될 때마다 증분되고 애플리케이션이 데이터와 연관된 핸들을 종료할 때마다 감분된다. 카운터의 값이 0에 도달할 때, 데이터는 자동으로 언로드된다. 특히, 애플리케이션은 다른 애플리케이션들이 데이터에 액세스할 수 없는 것을 지정하여 데이터를 로드할 수 있다. 그런 경우, 다른 애플리케이션으로부터의 액세스 요청은 거부될 것이다.
특히, 도 3a에 도시된 바와 같이, 애플리케이션 A가 어떤 데이터에 액세스하는 것을 요청할 때 처리(300)가 개시된다. 결정 블럭(301)을 참조한다. 본 발명의 예시적인 실시예들에서, 그런 요청을 수신한 때에, 처리(300)는 데이터에 대한 고유 ID를 생성한다. 블럭(302)을 참조한다. 처리(300)는 그 후, 고유 ID를 이용하여, 데이터에 대한 액세스 경로를 생성한다. 블럭(304)을 참조한다. 예를 들면, 전술된 바와 같이, UID A(106A)를 갖는 애플리케이션 데이터 A(104A)에 대한 액세스 경로는 /Root/App/UIDA/ApplicationDataA이다.
그 후, 처리(300)가 진행되어 데이터가 다른 애플리케이션에 의해 이미 로드되었는지 여부를 결정한다. 결정 블럭(305)을 참조한다. 결정 블럭(305)에 대한 응답이 예(YES)라면, 처리(300)가 진행되어 로드된 데이터가 애플리케이션 특정적( 즉 데이터를 로드한 애플리케이션만이 그 데이터를 액세스할 수 있음)인지 여부를 결정한다. 결정 블럭(306)을 참조한다. 결정 블럭(306)에 대한 응답이 예(YES)라면(데이터가 애플리케이션 특정적이며 다른 애플리케이션에 의해 로드된것을 의미함), 처리(300)는 종료한다. 애플리케이션 A로부터의 액세스 요청이 거부된다.
결정 블럭(306)에 대한 응답이 아니오(NO)라면(복수의 애플리케이션들에 의하여 데이터가 액세스될 수 있는 것을 의미함), 처리(300)가 진행되어 로드된 데이터로의 핸들을 생성한다. 블럭(308)을 참조한다.
한편, 결정 블럭(305)에 대한 응답이 아니오(NO)라면(임의의 애플리케이션에 의하여 데이터가 로드되지 않는 것을 의미함), 처리(300)는 생성된 액세스 경로에 의해 식별된 위치에서 데이터를 로드한다. 블럭(307)을 참조한다. 처리(300)는 그 후 로드된 데이터와 연관된 카운터를 생성한다. 블럭(308)을 참조한다. 카운터의 초기값은 0으로 설정된다. 처리(300)는 그 후 데이터로의 핸들을 생성한다. 블럭(309)을 참조한다. 처리(300)는 핸들을 애플리케이션에 보낸다. 블럭(310)을 참조한다. 블럭(310)으로부터, 처리(300)는 연속 터미널 A로 진행한다.
본 발명의 실시예들에서, 데이터가 애플리케이션 특정적이라면, 데이터에 대하여 오직 하나의 핸들만 생성되고 상기 핸들을 소유하는 애플리케이션만이 데이터를 액세스할 수 있다. 다른 애플리케이션들은, 데이터로의 핸들을 갖지 않으므로, 데이터를 액세스할 수 없다. 전술된 바와 같이, 이론적으로는, 다른 애플리케이션들은 생성된 액세스 경로를 통해 데이터를 액세스할 수 있다. 그러나, 본 발명의 실시예들은 액세스 경로를 통한 데이터로의 액세스를 거부한다. 따라서, 데이터로 의 핸들을 소유하는 애플리케이션만이 데이터를 액세스할 수 있다.
본 발명의 실시예들에서, 얼마나 많은 핸들들이 로드된 데이터와 연관되는 지를 추적하기 위하여 카운터가 이용된다. 카운터의 값은 로드된 데이터에 대하여 핸들이 생성될 때마다 증분되고, 데이터로의 핸들이 종료될 때마다 감분된다. 카운터의 값이 0에 도달할 때 데이터는 자동으로 언로드된다. 결과적으로, 도 3b에 예시된 바와 같이, 연속 터미널 A로부터, 데이터에 대하여 핸들이 생성될 때 카운터가 증분된다. 블럭(314)을 참조한다. 또한, 카운터의 값은 데이터로의 핸들이 종료될 때 감분된다. 블럭(316)을 참조한다. 본 발명의 실시예들에서, 처리(300)는 카운터의 값을 주기적으로 점검하여 그것이 0에 도달하였는지 여부를 결정한다. 결정 블럭(318)을 참조한다. 카운터의 값이 0에 도달할 때(데이터와 연관된 핸들이 없음을 의미함), 처리(300)는 데이터를 언로드한다. 블럭(320)을 참조한다. 결정 블럭(318)에 대한 응답이 아니오(NO)라면(카운터의 값이 0이 아닌 것을 의미함), 처리(300)는 다시 블럭(314)으로 복귀하여 카운터의 값의 임의의 조정을 대기한다. 데이터가 언로드되면, 처리(300)가 종료한다.
따라서, 본 발명의 실시예들은 동일한 사용자 계정하에 실행 중인 애플리케이션 특정 데이터를 분리한다. 본 발명의 실시예들은 또한 데이터 개체로의 최종 참조가 클로즈되면 데이터 개체를 자동으로 언로드한다.
본 발명이 예시적인 실시예들이 예시되고 기술되었지만, 본 발명의 취지 및 범위로부터 벗어나지 않고 다양한 변화들이 이루어질 수 있는 것이 이해될 것이다.

Claims (14)

  1. 복수의 애플리케이션들을 동일 사용자 계정(101A)과 연관시키는 컴퓨팅 시스템에서, 제1 애플리케이션에 특정한 데이터를 제2 애플리케이션으로부터 분리하는 방법으로서, 상기 제1 애플리케이션 및 상기 제2 애플리케이션은 상기 동일 사용자 계정을 공유하며,
    상기 제1 애플리케이션으로부터 데이터에 대한 요청을 수신한 때에 상기 데이터를 로드하는 단계;
    상기 데이터로의 핸들을 생성하는 단계;
    상기 핸들을 상기 제1 애플리케이션에 보내는 단계; 및
    상기 제2 애플리케이션으로부터의 상기 데이터에 대한 액세스 요청을 거부하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 데이터를 로드하는 단계는,
    상기 데이터에 대한 고유 ID를 생성하는 단계;
    상기 고유 ID를 사용하여, 상기 데이터에 대한 액세스 경로를 생성하는 단계; 및
    상기 액세스 경로에 의해 지정된 위치에 상기 데이터를 로드하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 데이터를 로드하는 단계 이후에 상기 데이터에 대한 카운터를 생성하는 단계 - 상기 카운터의 값은 0으로 초기화됨 - ;
    상기 데이터에 대하여 상기 핸들이 생성될 때 상기 카운터의 값을 증분하는 단계; 및
    상기 핸들이 종료될 때 상기 카운터의 값을 감분하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 카운터의 값이 0에 도달할 때 상기 데이터를 언로드하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 컴퓨팅 시스템은 MICROSOFT WINDOWS® 레지스트리를 포함하며, 상기 데이터는 상기 WINDOWS® 레지스트리의 하나 이상의 하이브들인 방법.
  6. 하나 이상의 컴퓨터 판독 가능 매체 상에 구현된 애플리케이션 프로그래밍 인터페이스로서,
    복수의 애플리케이션들이 동일 사용자 계정을 공유하는 환경에서 애플리케이션 특정 데이터 액세스를 제공하는 것과 관련된 펑션을 포함하며, 상기 펑션은 컴퓨팅 처리로부터 액세스 요청을 수신한 때에 데이터 개체에 대한 액세스를 제공하고, 상기 펑션은 상기 데이터 개체가 상기 컴퓨팅 처리(202)에 의해서만 액세스될 수 있도록 구성될 수 있는 애플리케이션 프로그래밍 인터페이스.
  7. 제6항에 있어서, 상기 펑션은, 상기 데이터 개체에 대한 액세스가 상기 펑션을 호출하는 컴퓨팅 처리에 한정되는지 여부를 나타내는 구성 가능 파라미터를 포함하는 애플리케이션 프로그래밍 인터페이스.
  8. 제6항에 있어서, 상기 컴퓨팅 처리에 의해 호출된 때, 상기 펑션은,
    상기 데이터 개체에 대한 고유 ID를 생성하고;
    상기 고유 ID를 이용하여 경로를 생성하며;
    상기 경로가 나타내는 위치에 상기 데이터 개체를 로드하는 애플리케이션 프로그래밍 인터페이스.
  9. 제8항에 있어서, 상기 펑션은 상기 컴퓨팅 처리에 상기 데이터 개체로의 핸들을 리턴하는 애플리케이션 프로그래밍 인터페이스.
  10. 제9항에 있어서, 상기 펑션은,
    상기 컴퓨팅 처리가 상기 핸들의 사용을 종료할 때 상기 핸들을 클로즈하며;
    상기 데이터 개체와 연관된 핸들이 없을 때 상기 데이터 개체를 언로드하는 애플리케이션 프로그래밍 인터페이스.
  11. 한 애플리케이션에 특정한 데이터를 상기 애플리케이션과 동일 사용자 계정을 공유하는 다른 애플리케이션들로부터 분리하기 위한 컴퓨터 구현 방법으로서,
    상기 데이터에 대하여 상기 애플리케이션으로부터 액세스 요청을 수신한 때, 상기 데이터를 로드하는 단계;
    상기 데이터로의 핸들을 생성하는 단계;
    상기 애플리케이션에 상기 핸들을 보내는 단계; 및
    상기 다른 애플리케이션들로부터의 상기 데이터에 대한 임의의 액세스 요청을 거부하는 단계
    를 포함하는 컴퓨터 구현 방법.
  12. 제11항에 있어서, 상기 데이터를 로드하는 단계는,
    상기 데이터에 대한 고유 ID를 생성하는 단계;
    상기 고유 ID를 이용하여 상기 데이터에 대한 액세스 경로를 생성하는 단계; 및
    상기 액세스 경로에 의하여 지정된 위치에 상기 데이터를 로드하는 단계
    를 포함하는 컴퓨터 구현 방법.
  13. 제11항에 있어서,
    상기 데이터를 로드한 때, 상기 데이터에 대한 카운터를 생성하는 단계 - 상기 카운터의 값은 0으로 초기화됨 - ;
    상기 데이터에 대한 핸들이 생성될 때마다 상기 카운터의 값을 증분하는 단계; 및
    상기 핸들이 종료될 때마다 상기 카운터의 값을 감분하는 단계
    를 포함하는 컴퓨터 구현 방법.
  14. 제13항에 있어서, 상기 카운터의 값이 0에 도달할 때 상기 데이터를 언로드하는 단계를 더 포함하는 컴퓨터 구현 방법.
KR1020087000387A 2005-07-15 2006-07-13 사용자 계정 내에서의 애플리케이션 특정 데이터의 분리 KR101279671B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US69996305P 2005-07-15 2005-07-15
US60/699,963 2005-07-15
US11/274,023 US8074288B2 (en) 2005-07-15 2005-11-15 Isolation of application-specific data within a user account
US11/274,023 2005-11-15
PCT/US2006/027523 WO2007011800A2 (en) 2005-07-15 2006-07-13 Isolation of application-specific data within a user account

Publications (2)

Publication Number Publication Date
KR20080034118A true KR20080034118A (ko) 2008-04-18
KR101279671B1 KR101279671B1 (ko) 2013-06-28

Family

ID=37669429

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087000387A KR101279671B1 (ko) 2005-07-15 2006-07-13 사용자 계정 내에서의 애플리케이션 특정 데이터의 분리

Country Status (6)

Country Link
US (1) US8074288B2 (ko)
EP (1) EP1905190B1 (ko)
JP (1) JP5118638B2 (ko)
KR (1) KR101279671B1 (ko)
CN (1) CN101502042B (ko)
WO (1) WO2007011800A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650658B2 (en) 2010-10-25 2014-02-11 Openpeak Inc. Creating distinct user spaces through user identifiers
US20170060112A1 (en) * 2015-08-24 2017-03-02 Katrina Danielle PIRNER Control program for accessing browser data and for controlling appliance
US10241776B2 (en) 2016-04-08 2019-03-26 Microsoft Technology Licensing, Llc User settings across programs
US10325116B2 (en) * 2017-06-30 2019-06-18 Vmware, Inc. Dynamic privilege management in a computer system
US11675902B2 (en) 2018-12-05 2023-06-13 Vmware, Inc. Security detection system with privilege management
CN113626212A (zh) * 2021-07-12 2021-11-09 广州致远电子有限公司 一种基于句柄结构的对象管理方法及装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02195453A (ja) * 1989-01-25 1990-08-02 Toshiba Corp ファイルアクセス制御方式
JPH1021097A (ja) * 1996-07-02 1998-01-23 Canon Inc プログラムの起動方法および記憶媒体およびコンピュータ装置
US5842015A (en) * 1996-07-26 1998-11-24 Hewlett-Packard Company System and method for real-time control of hardware in a multiprocessing environment
JPH10240589A (ja) * 1997-02-21 1998-09-11 Hitachi Ltd 実データ遅延取出しを行うデータベース処理方法
US6085030A (en) * 1997-05-02 2000-07-04 Novell, Inc. Network component server
US6032216A (en) * 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
US6148336A (en) * 1998-03-13 2000-11-14 Deterministic Networks, Inc. Ordering of multiple plugin applications using extensible layered service provider with network traffic filtering
DE19839847A1 (de) * 1998-09-02 2000-03-09 Ibm Speichern von Datenobjekten im Speicher einer Chipkarte
FR2784479B1 (fr) * 1998-10-09 2000-11-17 Bull Cp8 Protocole d'echange interne de donnees entre applications d'un objet portatif multi-applications et objet portatif multi-applications correspondant
KR20010080427A (ko) * 1998-11-12 2001-08-22 매클린토크 샤운 엘 사용자 관리를 위한 어플리케이션 프로그래밍인터페이스를 갖춘 디지털 텔레비전 수신기
US6578045B1 (en) * 1999-04-20 2003-06-10 Microsoft Corporation System and method for retrieving registry data
US6347331B1 (en) * 1999-04-26 2002-02-12 International Business Machines Corporation Method and apparatus to update a windows registry from a hetrogeneous server
US6513107B1 (en) * 1999-08-17 2003-01-28 Nec Electronics, Inc. Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US6779179B1 (en) * 2000-03-20 2004-08-17 Exent Technologies, Inc. Registry emulation
US6651123B1 (en) * 2000-03-30 2003-11-18 International Business Machines Corporation File system locking
US7039801B2 (en) * 2000-06-30 2006-05-02 Microsoft Corporation System and method for integrating secure and non-secure software objects
US20020055923A1 (en) 2000-11-01 2002-05-09 Sun Microsystems, Inc. Mandatory locking mechanisms for UNIX file systems
US20020066021A1 (en) * 2000-11-29 2002-05-30 Chien Andrew A. Method and process for securing an application program to execute in a remote environment
US7246135B2 (en) * 2001-01-08 2007-07-17 Intel Corporation Sharing classes between programs
US7461148B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
US7620731B1 (en) * 2001-02-21 2009-11-17 Microsoft Corporation Isolated persistent storage
US20020172363A1 (en) * 2001-05-15 2002-11-21 Dierks Timothy M. Data security on a mobile device
JP3932838B2 (ja) * 2001-08-06 2007-06-20 ヤマハ株式会社 パーソナルコンピュータにおける著作権保護装置および保護方法
JP2005500608A (ja) * 2001-08-13 2005-01-06 クゥアルコム・インコーポレイテッド コンピュータ装置上の記憶領域へのアプリケーションレベルのアクセス特権
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US20030118188A1 (en) * 2001-12-26 2003-06-26 Collier David C. Apparatus and method for accessing material using an entity locked secure registry
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US20030115476A1 (en) * 2001-10-31 2003-06-19 Mckee Bret Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms
FR2833374A1 (fr) * 2001-12-12 2003-06-13 Cp8 Procede et dispositif de controle d'acces dans un systeme embarque
US7844994B2 (en) * 2002-03-22 2010-11-30 The Directv Group, Inc. System and method for persistent storage of common user information for interactive television using a centrally located repository
US7062764B2 (en) * 2002-06-17 2006-06-13 Microsoft Corporation System and method for manipulating offline software
US20040107199A1 (en) * 2002-08-22 2004-06-03 Mdt Inc. Computer application backup method and system
US7020653B2 (en) * 2002-11-06 2006-03-28 Oracle International Corporation Techniques for supporting application-specific access controls with a separate server
JP4322021B2 (ja) * 2003-02-06 2009-08-26 株式会社ルネサステクノロジ メモリカード
US20040162807A1 (en) * 2003-02-14 2004-08-19 Montagne Michael D. Cooperative, simultaneous operation on data by many processes, with concurrent retention of process status, resumed processing, and minimal consumption of inter-nodal throughput
WO2005003969A1 (en) * 2003-06-27 2005-01-13 Sun Microsystems, Inc. Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same
JP4490917B2 (ja) * 2003-07-24 2010-06-30 パナソニック株式会社 ファイル管理方法及び情報処理装置
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
CN1867883A (zh) * 2003-10-13 2006-11-22 皇家飞利浦电子股份有限公司 按应用程序进行存储分配
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US20050160276A1 (en) * 2004-01-16 2005-07-21 Capital One Financial Corporation System and method for a directory secured user account
US7610322B2 (en) * 2004-05-25 2009-10-27 Microsoft Corporation Safe handle
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7765548B2 (en) * 2005-02-17 2010-07-27 Red Hat, Inc. System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock

Also Published As

Publication number Publication date
EP1905190A2 (en) 2008-04-02
JP5118638B2 (ja) 2013-01-16
US8074288B2 (en) 2011-12-06
CN101502042A (zh) 2009-08-05
WO2007011800A2 (en) 2007-01-25
WO2007011800A3 (en) 2009-04-16
US20070033638A1 (en) 2007-02-08
KR101279671B1 (ko) 2013-06-28
EP1905190B1 (en) 2015-12-09
EP1905190A4 (en) 2010-12-08
CN101502042B (zh) 2012-03-07
JP2009503633A (ja) 2009-01-29

Similar Documents

Publication Publication Date Title
US9684785B2 (en) Providing multiple isolated execution environments for securely accessing untrusted content
JP4907603B2 (ja) アクセス制御システムおよびアクセス制御方法
US9654474B2 (en) Methods and systems for network-based management of application security
RU2501082C2 (ru) Управление доступом к документам с использованием блокировок файла
US6606711B2 (en) Object security boundaries
US7096491B2 (en) Mobile code security architecture in an application service provider environment
US8359467B2 (en) Access control system and method
US20110047613A1 (en) Systems and methods for providing an isolated execution environment for accessing untrusted content
EP1571526A1 (en) Metered execution of code
US20120216285A1 (en) Systems and methods for inhibitng denial-of-service attacks using group controls
KR101279671B1 (ko) 사용자 계정 내에서의 애플리케이션 특정 데이터의 분리
US20060193467A1 (en) Access control in a computer system
US9202080B2 (en) Method and system for policy driven data distribution
US9516032B2 (en) Methods and systems for using derived user accounts
US7979865B2 (en) Identifying separate threads executing within a single process
US8938786B2 (en) System and method for using a declarative approach to enforce instance based security in a distributed environment
WO2011057876A1 (en) Network system security management
US7664752B2 (en) Authorization over a distributed and partitioned management system
CA2854540C (en) Managing cross perimeter access

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 7