KR20080034118A - 사용자 계정 내에서의 애플리케이션 특정 데이터의 분리 - Google Patents
사용자 계정 내에서의 애플리케이션 특정 데이터의 분리 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6227—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2147—Locking 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에 도달하는 경우, 데이터는 자동으로 언로드된다.
애플리케이션, 사용자 계정, 액세스, 핸들, 카운터, 데이터
Description
통상적으로, 운영 체제는 사용자 계정의 입도(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)
- 복수의 애플리케이션들을 동일 사용자 계정(101A)과 연관시키는 컴퓨팅 시스템에서, 제1 애플리케이션에 특정한 데이터를 제2 애플리케이션으로부터 분리하는 방법으로서, 상기 제1 애플리케이션 및 상기 제2 애플리케이션은 상기 동일 사용자 계정을 공유하며,상기 제1 애플리케이션으로부터 데이터에 대한 요청을 수신한 때에 상기 데이터를 로드하는 단계;상기 데이터로의 핸들을 생성하는 단계;상기 핸들을 상기 제1 애플리케이션에 보내는 단계; 및상기 제2 애플리케이션으로부터의 상기 데이터에 대한 액세스 요청을 거부하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 데이터를 로드하는 단계는,상기 데이터에 대한 고유 ID를 생성하는 단계;상기 고유 ID를 사용하여, 상기 데이터에 대한 액세스 경로를 생성하는 단계; 및상기 액세스 경로에 의해 지정된 위치에 상기 데이터를 로드하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 데이터를 로드하는 단계 이후에 상기 데이터에 대한 카운터를 생성하는 단계 - 상기 카운터의 값은 0으로 초기화됨 - ;상기 데이터에 대하여 상기 핸들이 생성될 때 상기 카운터의 값을 증분하는 단계; 및상기 핸들이 종료될 때 상기 카운터의 값을 감분하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 카운터의 값이 0에 도달할 때 상기 데이터를 언로드하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 컴퓨팅 시스템은 MICROSOFT WINDOWS® 레지스트리를 포함하며, 상기 데이터는 상기 WINDOWS® 레지스트리의 하나 이상의 하이브들인 방법.
- 하나 이상의 컴퓨터 판독 가능 매체 상에 구현된 애플리케이션 프로그래밍 인터페이스로서,복수의 애플리케이션들이 동일 사용자 계정을 공유하는 환경에서 애플리케이션 특정 데이터 액세스를 제공하는 것과 관련된 펑션을 포함하며, 상기 펑션은 컴퓨팅 처리로부터 액세스 요청을 수신한 때에 데이터 개체에 대한 액세스를 제공하고, 상기 펑션은 상기 데이터 개체가 상기 컴퓨팅 처리(202)에 의해서만 액세스될 수 있도록 구성될 수 있는 애플리케이션 프로그래밍 인터페이스.
- 제6항에 있어서, 상기 펑션은, 상기 데이터 개체에 대한 액세스가 상기 펑션을 호출하는 컴퓨팅 처리에 한정되는지 여부를 나타내는 구성 가능 파라미터를 포함하는 애플리케이션 프로그래밍 인터페이스.
- 제6항에 있어서, 상기 컴퓨팅 처리에 의해 호출된 때, 상기 펑션은,상기 데이터 개체에 대한 고유 ID를 생성하고;상기 고유 ID를 이용하여 경로를 생성하며;상기 경로가 나타내는 위치에 상기 데이터 개체를 로드하는 애플리케이션 프로그래밍 인터페이스.
- 제8항에 있어서, 상기 펑션은 상기 컴퓨팅 처리에 상기 데이터 개체로의 핸들을 리턴하는 애플리케이션 프로그래밍 인터페이스.
- 제9항에 있어서, 상기 펑션은,상기 컴퓨팅 처리가 상기 핸들의 사용을 종료할 때 상기 핸들을 클로즈하며;상기 데이터 개체와 연관된 핸들이 없을 때 상기 데이터 개체를 언로드하는 애플리케이션 프로그래밍 인터페이스.
- 한 애플리케이션에 특정한 데이터를 상기 애플리케이션과 동일 사용자 계정을 공유하는 다른 애플리케이션들로부터 분리하기 위한 컴퓨터 구현 방법으로서,상기 데이터에 대하여 상기 애플리케이션으로부터 액세스 요청을 수신한 때, 상기 데이터를 로드하는 단계;상기 데이터로의 핸들을 생성하는 단계;상기 애플리케이션에 상기 핸들을 보내는 단계; 및상기 다른 애플리케이션들로부터의 상기 데이터에 대한 임의의 액세스 요청을 거부하는 단계를 포함하는 컴퓨터 구현 방법.
- 제11항에 있어서, 상기 데이터를 로드하는 단계는,상기 데이터에 대한 고유 ID를 생성하는 단계;상기 고유 ID를 이용하여 상기 데이터에 대한 액세스 경로를 생성하는 단계; 및상기 액세스 경로에 의하여 지정된 위치에 상기 데이터를 로드하는 단계를 포함하는 컴퓨터 구현 방법.
- 제11항에 있어서,상기 데이터를 로드한 때, 상기 데이터에 대한 카운터를 생성하는 단계 - 상기 카운터의 값은 0으로 초기화됨 - ;상기 데이터에 대한 핸들이 생성될 때마다 상기 카운터의 값을 증분하는 단계; 및상기 핸들이 종료될 때마다 상기 카운터의 값을 감분하는 단계를 포함하는 컴퓨터 구현 방법.
- 제13항에 있어서, 상기 카운터의 값이 0에 도달할 때 상기 데이터를 언로드하는 단계를 더 포함하는 컴퓨터 구현 방법.
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)
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)
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 |
-
2005
- 2005-11-15 US US11/274,023 patent/US8074288B2/en active Active
-
2006
- 2006-07-13 CN CN2006800256844A patent/CN101502042B/zh active Active
- 2006-07-13 JP JP2008521680A patent/JP5118638B2/ja not_active Expired - Fee Related
- 2006-07-13 WO PCT/US2006/027523 patent/WO2007011800A2/en active Application Filing
- 2006-07-13 EP EP06787434.7A patent/EP1905190B1/en active Active
- 2006-07-13 KR KR1020087000387A patent/KR101279671B1/ko active IP Right Grant
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 |