KR20060048474A - 애플리케이션에 보안을 제공하기 위한 시스템 및 방법 - Google Patents

애플리케이션에 보안을 제공하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20060048474A
KR20060048474A KR1020050053896A KR20050053896A KR20060048474A KR 20060048474 A KR20060048474 A KR 20060048474A KR 1020050053896 A KR1020050053896 A KR 1020050053896A KR 20050053896 A KR20050053896 A KR 20050053896A KR 20060048474 A KR20060048474 A KR 20060048474A
Authority
KR
South Korea
Prior art keywords
application
token
access
account
secure object
Prior art date
Application number
KR1020050053896A
Other languages
English (en)
Other versions
KR101076911B1 (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 KR20060048474A publication Critical patent/KR20060048474A/ko
Application granted granted Critical
Publication of KR101076911B1 publication Critical patent/KR101076911B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 효율적인 애플리케이션 지향 보안 모델을 제공한다. 실행 전에, 애플리케이션이 인증되고, 애플리케이션과 관련된 보안 정보가 검색된다. 보안 정보는 그 후 애플리케이션에 첨부되는 토큰을 생성하는데 사용된다. 보안 정보는 애플리케이션과 관련된 원리 어카운트, 그룹 어카운트 리스트 및 대응 특권 리스트를 포함할 수도 있다.
증명서 스토어, 보안 로더, 토큰 제너레이터, 어카운트 데이터베이스 서버, 어카운트 데이터베이스

Description

애플리케이션에 보안을 제공하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING SECURITY TO AN APPLICATION}
도 1은 종래 기술의 사용자 토큰을 도시한 도면.
도 2는 종래 기술의 임의의 액세스 제어 리스트를 도시한 도면.
도 3은 본 발명에 따른 일례의 애플리케이션 토큰을 도시한 도면.
도 4는 본 발명에 따른 애플리케이션에 보안을 제공하기 위한 시스템의 일례를 도시한 블록도.
도 5는 본 발명에 따른 애플리케이션에 보안을 제공하기 위한 예시적인 방법의 플로우챠트.
도 6은 본 발명에 따라 애플리케이션이 리소스에 액세스하도록 허가하기 위한 일례의 방법의 플로우챠트.
도 7은 본 발명에 따라 애플리케이션이 안전 객체에 액세스하도록 허가하기 위한 일례의 방법의 플로우챠트.
도 8은 본 발명이 구현될 수도 있는 다양한 컴퓨팅 디바이스들을 갖는 일례의 네트워크 환경을 도시한 블록도.
도 9는 본 발명이 구현될 수도 있는 일례의 컴퓨팅 디바이스를 도시한 블록도.
<도면의 주요 부분에 대한 부호의 설명>
100, 300 : 토큰 200 : 안전 객체
302 : 원리 어카운트 엔트리 304 : 그룹 어카운트 리스트
306 : 특권 리스트 410 : 증명서 스토어
412 : 어카운트 데이터베이스 414 : 어카운트 데이터베이스 서버
416 : 토큰 제너레이터 418 : 보안 로더
본 발명은 전자 보안 분야에 관한 것으로, 보다 구체적으로는, 애플리케이션 지향 보안 모델에 관한 것이다.
개인 및 기업들이 전자 컴퓨팅 디바이스 사용에 더욱 의존함에 따라, 전자 애플리케이션 및 데이터 보안이 보다 더 필요해지고 있다. 컴퓨팅 디바이스 사용자는 자신의 프라이비트 데이터가 허가 받지 않은 다른 사람 또는 그룹에게 노출되지 않음을 확신할 수 있어야만 한다. 또한, 전자 서비스 프로바이더들은 서비스와 관련해서 사용된 애플리케이션이 다른 프로바이더로부터의 다른 애플리케이션에 의해 손상되지 않음을 확신할 수 있어야만 한다. 상기 손상은 저조한 서비스 품질 또는 완전한 서비스 제공 실패를 야기할 수도 있으며, 따라서, 고객에게 불편을 끼치고 서비스 프로바이더의 평판을 더럽힌다.
전형적인 데스크탑 컴퓨팅 환경에서, 대부분의 애플리케이션은 단독 개발자 에 의해 제공되거나, 또는 다른 개발자의 애플리케이션과 협동하도록 특별히 설계된다. 예를 들어, 데스크탑 환경에서, 워드 프로세서, 스프레드시트, 전자 메일 애플리케이션 및 인터넷 브라우저와 같은 공통 애플리케이션들은 종종 단독 개발자에 의해 설계된다. 또한, 상이한 개발자들에 의해 설계되더라도, 일반적으로 데스크탑 애플리케이션들이 서로 효율적으로 작용한다는 상호 신뢰성이 있다. 따라서, 데스크탑 보안 관계들은 일반적으로 시스템 내의 신뢰할 수 없는 애플리케이션이 아닌 시스템에 액세스하는 신뢰할 수 없는 사용자들에게 주로 집중된다. 따라서, 데스크탑 보안 시스템은 일반적으로 사용자 지향 보안 모델을 희망한다.
일례의 데스크탑 보안 모델에서, 각각의 사용자 또는 사용자 그룹은 대응 보안 어카운트를 갖는다. 사용자가 컴퓨팅 디바이스 또는 컴퓨팅 디바이스 네트워크에 로그온할 때, 사용자는 아이덴티티 인증을 위해 패스워드를 입력한다. 사용자의 대응 어카운트 및 특권을 포함하는 토큰이 사용자를 위해 생성된다. 특권은 예를 들어, 시스템 셧다운, 디바이스 드라이버 로드 및 시스템 타임 변경과 같은 다양한 시스템 관련 오퍼레이션들을 실행하기 위한 어카운트 권리이다. 종래 기술의 일례의 토큰(100)이 도 1에 도시되어 있다. 토큰(100)은 사용자 어카운트를 포함하는 사용자 어카운트 엔트리(102), 및 사용자가 멤버인 모든 그룹의 어카운트들을 포함하는 그룹 어카운트 리스트(104)를 포함한다. 토큰(100)은 또한 사용자의 관련 특권들 각각을 열거하는 특권 리스트(106)를 포함한다.
대응 사용자가 시스템 내의 안전 객체들에 액세스하도록 허가받았는지를 결정하는데 토큰이 사용된다. 구체적으로 말하자면, 시스템 내의 각각의 안전 객체 는 안전 객체에 대하여 각각의 어카운트의 액세스 권리를 식별하는 DACL(discretionary access control list)을 갖는다. DACL은 ACE(access control entry)라고 하는 다수의 엔트리들을 갖는데, 각각은 특정 어카운트의 액세스 권리를 지정한다. 종래 기술의 일례의 DACL(210)이 도 2에 도시되어 있다. DACL(210)은 ACE(212-216)를 포함한다. 사용자 토큰들(100 및 101)은 둘 다 안전 객체(200)에 액세스하고자 시도 중이다. 사용자 토큰(100)은 안전 객체(200)로의 액세스를 거부당했다. ACE(212)에 의해 도시된 바와 같이, 앤드류가 안전 객체에 대한 액세스를 갖지 않기 때문이다. 토큰(100)의 거부된 액세스는 도 2에 도시된 점선으로 도시되어 있다. 대조적으로, 사용자 토큰(101)은 ACE(214)에 의해 도시된 바와 같이, 그룹 A가 안전 객체(200)에 대한 기록 액세스를 갖기 때문에 안전 객체(200)에 대한 액세스를 승인받았다.
데스크탑 컴퓨터와 달리, 예를 들어, 휴대폰 및 PDA(personal data assistants)와 같은 휴대형 컴퓨팅 디바이스들은 일반적으로 다수의 상이한 서비스 프로바이더들로부터의 다수의 상이한 애플리케이션들을 포함한다. 예를 들어, 단일 휴대폰은 전화 서비스 프로바이더, 소프트웨어 프로바이더, 및 피고용인에게 전화를 배급하는 회사로부터의 애플리케이션들을 포함할 수도 있다. 서비스 프로바이더들 및 회사들은 자신의 기업 시스템에 연결되어 있거나 네트워크되어 있는 디바이스들에서의 신뢰할 수 없는 애플리케이션들의 실행이 허용되는 것에 관심을 갖는 경향이 있다. 따라서, 상술된 바와 같은 사용자 지향 보안 모델은 시스템에서 실행중인 다른 애플리케이션들로부터 애플리케이션 및 데이터를 보호하지 못하기 때문에 휴대형 디바이스에는 이상적이지 않다. 따라서, 본 기술 분야에는 효율적인 애플리케이션 지향 보안 모델이 필요하다. 본 발명은 여타 요구 사항들을 만족시킨다.
본 발명은 애플리케이션에 보안을 제공하기 위한 시스템 및 방법에 관한 것이다. 애플리케이션 실행 전에, 애플리케이션은 애플리케이션과 관련된 인증 정보를 근거로 인증된다. 인증 정보는 예를 들면, 디지털 서명일 수도 있다. 애플리케이션이 인증되면, 애플리케이션과 관련된 보안 정보가 검색된다. 보안 정보는 애플리케이션이 액세스하도록 허가받은 글로벌 리소스들을 식별하는 특권 리스트를 포함할 수도 있다. 보안 정보는 또한 애플리케이션과 관련된 원리 어카운트를 포함할 수도 있다. 보안 정보는 애플리케이션이 멤버인 그룹 어카운트 리스트를 포함할 수도 있다. 식별되면, 보안 정보는 애플리케이션을 위해 생성된 토큰에 포함된다. 애플리케이션은 그 후 론치되고 대응 토큰이 첨부된다.
본 발명의 한 양상에 따라, 첨부된 토큰은 시스템에서 리소스에 액세스하도록 애플리케이션이 허가받았는지의 여부를 결정하는데 사용될 수도 있다. 리소스 액세스 요청을 수신할 때, 토큰 내의 특권 리스트가 검사된다. 선택된 리소스가 특권 리스트 내에 포함되면, 애플리케이션은 그 후 리소스에 액세스하도록 허가받는다.
본 발명의 다른 양상에 따라, 첨부된 토큰은 시스템에서 안전 객체에 액세스 하도록 애플리케이션이 허가받았는지의 여부를 결정하는데 사용될 수도 있다. 객체 액세스 요청을 수신할 때, 토큰 내의 원리 어카운트 및 그룹 어카운트 리스트가 검색된다. 그 후 검색된 어카운트들은 객체에 액세스하도록 애플리케이션이 허가받았는지의 여부를 결정하기 위해 객체의 액세스 제어 리스트에 대해 참조된다.
본 발명의 추가 특징들 및 장점들은 첨부된 도면들을 참조해서 기술된 본 실시예의 이하의 상세한 설명으로부터 명백해질 것이다.
<실시예>
예시적인 실시예는 첨부된 도면을 참조하여 이하의 상세한 설명을 읽음으로써 보다 잘 이해될 것이다.
본 발명의 주제는 요구 사항들을 만족시키기 위해 한정적으로 기술된다. 그러나, 설명 자체가 본 특허의 범위를 제한하려는 것은 아니다. 발명인들은 현재 또는 미래의 다른 기술들과 관련해서 본 문서에 기술된 바와 유사한 상이한 액션들 또는 요소들을 포함하도록 청구된 주제가 다른 방법들로 구체화될 수 있다고 생각하고 있다.
상술된 바와 같이, 본 발명은 사용자 지향 보안 모델이 아닌 애플리케이션 지향 보안 모델을 제공한다. 따라서, 본 발명은 예를 들어, 휴대폰 및 PDA와 같은 휴대형 컴퓨팅 디바이스들의 내장형 시스템에 적합하지만, 이러한 것에만 제한되지는 않는다. 상기 디바이스들은 다수의 상이한 프로바이더들로부터의 다수의 상이한 애플리케이션들을 특징으로 하는 경향이 있다. 본 발명에 따라, 시스템 내의 각각의 참여 애플리케이션은 원리 보안 어카운트를 할당받는다. 원리 보안 어카운 트는 사용자 지향 모델의 개별 사용자 어카운트들과 유사하다. 또한, 개별 사용자들이 다수의 그룹 어카운트들의 멤버들일 수 있는 것처럼, 각각의 애플리케이션은 하나 이상의 그룹 어카운트들의 멤버일 수도 있다.
실행 전에, 애플리케이션은 애플리케이션과 관련된 인증 정보를 사용해서 인증된다. 인증되면, 애플리케이션 토큰이 생성되어 애플리케이션에 첨부된다. 애플리케이션은 그 후 첨부된 토큰으로 론치된다(launched). 토큰은 애플리케이션의 보안 정보를 갖는데, 보안 정보는 애플리케이션의 대응 어카운트들 및 특권들을 포함할 수도 있다. 애플리케이션 지향 문맥에서, 특권은, 예를 들어, 네트워크 액세스, 디스크 드라이브 등에 대한 액세스와 같은 글로벌 리소스들에 액세스하는 애플리케이션의 권리이다. 본 발명에 따른 일례의 애플리케이션 토큰(300)이 도 3에 도시되어 있다. 토큰(300)은 애플리케이션의 원리 어카운트를 포함하는 원리 어카운트 엔트리(302), 애플리케이션이 멤버인 모든 그룹의 어카운트들을 포함하는 그룹 어카운트 리스트(304)를 포함한다. 토큰(300)은 또한 어카운트의 관련 특권들 각각을 열거하는 특권 리스트(306)를 포함한다. 토큰(300)은 후술되는 바와 같이, 대응 애플리케이션 보안에 사용된다.
본 발명에 따른 일례의 애플리케이션 보안 시스템의 블록도가 도 4에 도시되어 있다. 일반적으로, 증명서 스토어(410)는 애플리케이션의 아이덴티티를 인증하는데 사용되는 사인 권한 증명서를 저장한다. 어카운트 데이터베이스(412)는 애플리케이션 및 대응 원리 어카운트, 그룹 어카운트, 및 특권 리스트를 포함할 수도 있는 보안 정보를 저장한다. 어카운트 데이터베이스 서버(414)는 어카운트 데이터 베이스(412)에 대한 인터페이스를 제공한다. 토큰 제너레이터(416)는 어카운트 데이터베이스(412)에 저장된 애플리케이션 보안 정보를 포함하는 애플리케이션 토큰들을 생성한다. 보안 로더(418)는 대응 애플리케이션에 토큰들을 첨부한다.
본 발명에 따른 일례의 애플리케이션 보안 방법의 플로우챠트가 도 5에 도시되어 있다. 단계(510)에서, 애플리케이션 실행 요청이 수신된다. 단계(512)에서, 애플리케이션 실행 전에, 애플리케이션의 아이덴티티가 애플리케이션과 관련된 인증 정보를 근거로 인증된다. 예를 들어, 애플리케이션은 관련 디지털 서명을 가질 수도 있다. 토큰 제너레이터(416)는 애플리케이션으로부터 디지털 서명을 검색할 수도 있으며 증명서 스토어(410)로부터의 대응 디지털 증명서를 검색할 수도 있다. 디지털 증명서는 허가받은 증명서 권한으로부터 온 것이며 디지털 서명을 인증하는데 사용된다.
단계(514)에서, 토큰 제너레이터(416)는 애플리케이션의 대응 보안 정보를 검색한다. 보안 정보는 어카운트 데이터베이스 서버(414)를 통해 어카운트 데이터베이스(412)로부터 검색될 수도 있다. 상술된 바와 같이, 보안 정보는 원리 어카운트, 그룹 어카운트 리스트, 및 관련 특권 리스트를 포함할 수도 있다. 단계(516)에서, 애플리케이션 토큰이 생성된다. 애플리케이션 토큰은 애플리케이션의 대응 보안 정보를 포함한다. 단계(518)에서, 보안 로더(418)는 애플리케이션에 토큰을 첨부한다. 단계(520)에서, 애플리케이션은 첨부된 토큰으로 론치된다.
시스템 내의 모든 애플리케이션들이 특정 대응 토큰을 가질 필요는 없으며, 반드시 도 4의 방법을 사용해야 하는 것도 아님을 알 것이다. 예를 들어, 실행중 인 애플리케이션이 모듈 섹션에 있으면, 디폴트 토큰이 생성되어 애플리케이션에 할당될 수도 있다. 디폴트 토큰은 예를 들면, 시스템 레벨 보안 그룹에 대응하는 그룹 어카운트를 포함할 수도 있다.
본 발명에 따른 애플리케이션의 리소스에 대한 액세스를 허가하기 위한 일례의 방법의 플로우챠트가 도 6에 도시되어 있다. 단계(610)에서, 애플리케이션의 글로벌 리소스 액세스 요청이 수신된다. 예를 들어, 애플리케이션이 휴대폰에서 실행되면, 애플리케이션은 접속된 전화 네트워크에 액세스하고자 시도할 수도 있다. 단계(612)에서, 애플리케이션의 대응 토큰이 검색된다.
단계(614)에서, 토큰에 포함된 특권 리스트는 애플리케이션이 액세스하고자 시도중인 리소스를 열거하는지를 결정하기 위해 검사된다. 리소스가 특권 리스트에 포함되면, 애플리케이션은 리소스 액세스를 허가받고, 단계(616)에서, 애플리케이션은 리소스 액세스를 승인받는다. 리소스가 특권 리스트에 포함되지 않으면, 애플리케이션은 리소스 액세스를 허가받지 못하고, 단계(618)에서, 애플리케이션의 리소스 액세스가 거부된다.
본 발명에 따른 애플리케이션의 안전 객체에 대한 액세스를 허가하기 위한 일례의 방법의 플로우챠트가 도 7에 도시되어 있다. 단계(710)에서, 애플리케이션의 안전 객체 액세스 요청이 수신된다. 예를 들어, 파일이 안전 객체인 경우, 인터넷 브라우저 애플리케이션은 저장된 패스워드들을 포함하는 파일에 액세스하기를 희망할 수도 있다. 단계(712)에서, 애플리케이션의 대응 토큰이 검색된다.
단계(714)에서, 토큰에 리스트되어 있는 어카운트들이 식별된다. 상술된 바 와 같이, 토큰은 원리 어카운트 및 애플리케이션이 멤버인 그룹 어카운트들의 리스트를 포함할 수도 있다. 단계(716)에서, 토큰에 리스트되어 있는 어카운트들은 어카운트들의 안전 객체 액세스가 허가받았는지를 결정하기 위해 안전 객체에 대한 액세스 제어 리스트에 대해 참조된다. 안전 객체에 대한 액세스 제어 리스트는 ACE(access control entry)라고 하는 다수의 엔트리들을 갖는 DACL(discretionary access control list)일 수도 있으며, 상기 각각의 엔트리는 특정 어카운트의 액세스 권리를 지정한다.
어카운트들이 액세스 제어 리스트의 허가받은 어카운트들로서 참조되면, 단계(718)에서, 애플리케이션의 안전 객체에 대한 액세스가 승인된다. 어카운트들이 액세스 제어 리스트의 허가받은 어카운트들로서 참조되지 않으면, 단계(720)에서, 애플리케이션의 안전 객체에 대한 액세스가 거부된다.
본 발명은 한 애플리케이션이 다른 애플리케이션의 보안 증명서를 구현할 수 있게 해줄 수도 있다. 이러한 구현 프로시져는 서버 애플리케이션이 클라이언트의 안전 객체 액세스를 허용하기 전에 클라이언트의 액세스를 검증해야만 할 때 특히 유용하다. 구현을 가능케 하기 위해, 서버는 클라이언트의 보안 증명서를 구현하는 구현 토큰을 생성할 수도 있다. 도 7을 참조해서 상술된 바와 같이, 구현 토큰 내의 어카운트들이 식별되고 안전 객체의 액세스 제어 리스트에 대해 참조된다.
본 발명은 또한 다수의 기능들이 애플리케이션 토큰들에 대해 사용되게 해줄 수도 있다. 이러한 기능은 데스크탑 보안 시스템에서 생성된 사용자 토큰들에 대해 유효한 기능들의 부집합과 유사할 수도 있다. 예를 들어, 상기 기능들은 토큰 의 그룹 어카운트 정보 변경, 액세스 토큰의 특권 리스트 내의 선택된 특권들의 인에이블 또는 디스에이블, 및 현존 토큰의 제한된 버전인 새로운 토큰 생성을 포함할 수도 있지만, 이러한 것에만 제한되지는 않는다.
상술된 바로부터 명백한 바와 같이, 본 발명의 다양한 시스템들, 방법들 및 양상들 전부 또는 일부가 하드웨어, 소프트웨어 또는 두 결합으로 구현될 수도 있다. 소프트웨어로 구현될 때, 본 발명의 방법들 및 장치들, 또는 특정 양상들 또는 일부분들이 프로그램 코드(즉, 명령) 형태로 구현될 수도 있다. 상기 프로그램 코드는 플로피 디스켓, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, 자기 테이프 플래시 메모리, 하드 디스크 드라이브 또는 임의의 다른 기계 판독 가능 기억 매체를 포함하지만, 이들로만 제한되지 않는 자기, 전기 또는 광 기억 매체와 같은 컴퓨터 판독 가능 매체에 저장될 수도 있다. 프로그램 코드가 컴퓨터 또는 서버와 같은 기계에 로드되어 실행될 때, 기계는 본 발명을 실행하기 위한 장치가 된다. 프로그램 코드가 실행되는 컴퓨터는 일반적으로 프로세서, 프로세서에 의해 판독 가능한 기억 매체(휘발성 및 비휘발성 메모리 및/또는 기억 소자들 포함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 프로그램 코드는 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수도 있다. 대안으로, 프로그램 코드는 어셈블리어 또는 기계어로 구현될 수 있다. 임의의 경우에, 언어는 컴파일 또는 해석 언어일 수도 있다.
본 발명은 전기 배선 또는 케이블, 광섬유, 근거리 통신망, 광역 통신망, 인터넷 또는 인트라넷을 포함하는 네트워크, 또는 임의의 다른 형태의 전송 매체와 같은 몇몇 전송 매체를 통해 송신되는 프로그램 코드 형태로 구현될 수도 있다. 프로그램 코드가 수신되어 컴퓨터와 같은 기계에 로드되어 실행될 때, 기계는 본 발명을 실행하기 위한 장치가 된다.
범용 프로세서에서 구현될 때, 프로그램 코드는 특정 논리 회로들과 유사하게 동작하는 유일한 장치를 제공하기 위해 프로세서와 결합할 수도 있다.
본 발명은 컴퓨터 네트워크의 파트로서 또는 분산 컴퓨팅 환경에서 전개될 수 있는 임의의 컴퓨터 또는 다른 클라이언트 또는 서버 디바이스와 결합해서 구현될 수 있다. 이점에 있어서, 본 발명은 임의의 수의 메모리 또는 기억 장치들을 갖는 임의의 컴퓨터 시스템 또는 환경, 및 본 발명에 따라 데이터베이스 스토어에 객체들을 보존하기 위한 프로세스들과 관련해서 사용될 수도 있는 임의의 수의 기억 장치들 또는 볼륨들에 걸쳐 발생하는 임의의 수의 애플리케이션들 및 프로세스들에 속한다. 본 발명은 원격 또는 로컬 스토리지를 갖는 네트워크 환경 또는 분산 컴퓨팅 환경에서 전개되는 서버 컴퓨터 및 클라이언트 컴퓨터를 갖는 환경에 적용될 수도 있다. 본 발명은 또한 프로그래밍 언어 기능, 원격 또는 로컬 서비스와 관련해서 정보를 생성, 수신 및 전송하기 위한 해석 및 실행 자격을 갖는 독립형 컴퓨팅 디바이스에도 적용될 수 있다.
분산 컴퓨팅은 컴퓨팅 디바이스들과 시스템들 간의 교환에 의해 컴퓨터 리소스 및 서비스 공유를 용이하게 한다. 상기 리소스 및 서비스는 정보 교환, 캐시 스토리지, 및 파일을 위한 디스크 스토리지를 포함하지만, 이러한 것에만 제한되지는 않는다. 분산 컴퓨팅은 네트워크 연결성의 장점을 취함으로써, 클라이언트가 수집력을 이용해서 전체 기업에 이익이 되게 한다. 이점에 있어서, 다양한 디바이스들은 본 발명의 객체 영속 방법들과 관련해서 실행되는 프로세싱을 포함할 수도 있는 애플리케이션들, 객체들 또는 리소스들을 가질 수도 있다.
도 8은 일례의 네트워크 또는 분산 컴퓨팅 환경의 개략도를 제공한다. 분산 컴퓨팅 환경은 컴퓨팅 객체들(10a, 10b 등) 및 컴퓨팅 객체들 또는 디바이스들(110a, 110b, 110c 등)을 포함한다. 상기 객체들은 프로그램, 방법, 데이터 스토어, 프로그래머블 로직 등을 포함할 수도 있다. 객체들은 PDA, 텔레비전, MP3 플레이어, 퍼스널 컴퓨터 등과 같은 동일하거나 상이한 디바이스들의 부분들을 포함할 수도 있다. 각각의 객체는 통신 네트워크(14)를 통해 다른 객체와 통신할 수 있다. 이러한 네트워크는 자체적으로 도 8의 시스템에 서비스들을 제공하는 다른 컴퓨팅 객체들 및 컴퓨팅 디바이스들을 포함할 수도 있으며, 자체적으로 다수의 상호 연결 네트워크들을 나타낼 수도 있다. 본 발명의 한 양상에 따라, 각각의 객체(10a, 10b 등 또는 110a, 110b, 110c 등)는 본 발명의 객체 영속 방법들을 구현하는데 사용되는 프로세스들의 사용을 요청하기 위해, API를 사용할 수도 있는 애플리케이션, 다른 객체, 소프트웨어, 펌웨어 및/또는 하드웨어를 포함할 수도 있다.
또한, 객체(110c)와 같은 객체가 다른 컴퓨팅 디바이스(10a, 10b 등 또는 110a, 110b 등)에서 호스트될 수도 있다. 따라서, 도시된 물리적 환경이 컴퓨터들로서 연결된 디바이스들을 도시할 수 있더라도, 상기 도시는 단지 일례이며 물리적 환경은 대안으로 PDA, 텔레비전, MP3 플레이어 등과 같은 다양한 디지털 디바이스들, 인터페이스, COM 객체들 등과 같은 소프트웨어 객체들을 포함하는 것으로 도시 될 수도 있다.
분산 컴퓨팅 환경을 지원하는 다양한 시스템들, 컴포넌트들 및 네트워크 구성들이 있다. 예를 들어, 컴퓨팅 시스템들은 유무선 시스템들에 의해 로컬 네트워크 또는 광역 분산 네트워크에 의해 함께 연결될 수도 있다. 현재, 다수의 네트워크들이 인터넷에 결합되어 있는데, 이는 광역 분산 컴퓨팅을 위한 기본 시스템을 제공하며 다수의 상이한 네트워크들을 포함한다. 임의의 기본 시스템들이 본 발명에 부수적인 일례의 통신을 위해 사용될 수도 있다.
인터넷은 통상 컴퓨터 네트워크 분야에 널리 공지된 프로토콜들의 TCP/IP 수트를 사용하는 네트워크 및 게이트웨이의 집합을 말한다. TCP/IP는 "Transmission Control Protocol/Internet Protocol"의 약어이다. 인터넷은 사용자들이 네트워크(들)을 통해 정보를 상호작용 및 공유할 수 있게 해주는 네트워크 프로토콜들을 실행하는 컴퓨터들에 의해 상호 연결된 지리적으로 분산된 원격 컴퓨터 네트워크들의 시스템으로서 기술될 수 있다. 널리 확산된 정보 공유로 인해, 인터넷과 같은 원격 네트워크들은 개발자들이 특별한 제한 없이 특별 오퍼레이션 또는 서비스를 실행하기 위한 소프트웨어 애플리케이션들을 개발할 수 있는 개방형 시스템으로 일반적으로 전개되고 있다.
따라서, 네트워크 기본 시스템은 클라이언트/서버, 피어-투-피어, 또는 하이브리드 아키텍처들과 같은 네트워크 위상의 호스트를 인에이블한다. "클라이언트"는 관련되지 않은 다른 클래스 또는 그룹의 서비스들을 사용하는 클래스 또는 그룹의 멤버이다. 따라서, 컴퓨팅시, 클라이언트는 다른 프로그램에 의해 제공된 서비 스를 요청하는 프로세스, 즉, 대략 명령 또는 태스크 집합이다. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 대한 임의의 작업 세부 사항을 "알(know)" 필요 없이 요청된 서비스를 사용한다. 클라이언트/서버 아키텍처에서, 특히, 네트워크 시스템에서, 클라이언트는 통상 다른 컴퓨터, 예를 들어, 서버에 의해 제공된 공유 네트워크 리소스들에 액세스하는 컴퓨터이다. 도 8의 일례에서, 임의의 컴퓨터가 상황에 따라 클라이언트, 서버 또는 둘 다로 생각될 수 있더라도, 컴퓨터들(110a, 110b 등)은 클라이언트로 생각될 수 있으며, 컴퓨터들(10a, 10b 등)은 서버로 생각될 수 있다. 임의의 컴퓨팅 디바이스들은 본 발명의 객체 영속 기술들을 함축하는 방식의 프로세싱 데이터일 수도 있다.
서버는 통상 인터넷과 같은 원격 또는 로컬 네트워크를 통해 액세스 가능한 원격 컴퓨터 시스템이다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 액티브일 수 있으며, 서버 프로세스는 제2 컴퓨터 시스템에서 액티브일 수 있고, 통신 매체를 통해 서로 통신해서, 분산 기능을 제공하며, 다수의 클라이언트들이 서버의 정보 수집 기능들을 이용할 수 있다. 본 발명의 영속 메카니즘에 따라 사용되는 임의의 소프트웨어 객체들은 다수의 컴퓨팅 디바이스들에 걸쳐 분산될 수도 있다.
클라이언트(들) 및 서버(들)은 프로토콜 층에 의해 제공된 기능을 사용해서 서로 통신할 수도 있다. 예를 들어, HTTP(Hypertext Transfer Protocol)는 WWW(World Wide Web) 또는 "웹"과 관련해서 사용되는 공통 프로토콜이다. 통상, 인터넷 프로토콜(IP)과 같은 컴퓨터 네트워크 어드레스 또는 URL(Universal Resource Locator)와 같은 다른 기준이 서로에 대해 서버 또는 클라이언트 컴퓨터 들을 식별하는데 사용될 수 있다. 네트워크 어드레스는 URL 어드레스라고 할 수 있다. 통신은 임의의 유효 통신 매체를 통해 달성될 수 있다.
따라서, 도 8은 본 발명이 사용될 수도 있는 네트워크/버스를 통해 서버가 클라이언트 컴퓨터들과 통신하는 일례의 네트워크 또는 분산 환경을 도시한다. 네트워크/버스(14)는 본 발명에 따라 휴대형 컴퓨터, 핸드헬드 컴퓨터, 씬 클라이언트(thin client), 네트워크 어플라이언스와 같은 다수의 클라이언트 또는 원격 컴퓨팅 디바이스들(110a, 110b, 110c, 110d, 110e 등), 또는 VCR, TV, 오븐, 라이트, 히터 등과 같은 다른 디바이스를 갖는 LAN, WAN, 인트라넷, 인터넷 또는 동일한 다른 네트워크 매체일 수도 있다. 따라서, 본 발명은 존속 객체를 유지하는 것이 바람직하다는 것과 관련해서 임의의 컴퓨팅 디바이스에 적용될 수도 있다고 생각된다.
통신 네트워크/버스(14)가 인터넷인 네트워크 환경에서, 예를 들어, 서버들(10a, 10b 등)은 클라이언트들(110a, 110b, 110c, 110d, 110e 등)이 HTTP와 같은 다수의 공지된 프로토콜들 중 임의의 프로토콜을 통해 통신하는 서버들일 수 있다. 서버들(10a, 10b 등)은 또한 분산 컴퓨팅 환경을 특징으로 할 수 있기에 클라이언트들(110a, 110b, 110c, 110d, 110e 등)로서 작용할 수도 있다.
통신은 적합하게 유선 또는 무선일 수도 있다. 클라이언트 디바이스들(110a, 110b, 110c, 110d, 110e 등)은 통신 네트워크/버스(14)를 통해 통신할 수도 통신하지 않을 수도 있으며, 그와 관련된 독립 통신을 가질 수도 있다. 예를 들어, TV 또는 VCR인 경우, 제어를 위해 네트워크 양상이 있을 수도 없을 수도 있다. 각각의 클라이언트 컴퓨터(110a, 110b, 110c, 110d, 110e 등) 및 서버 컴퓨터(10a, 10b 등)는 다양한 애플리케이션 프로그램 모듈들 또는 객체들(135)이 장치되어 있을 수 있으며, 또한, 파일들 또는 데이터 스트림들이 저장되거나 파일들 또는 데이터 스트림들의 일부분(들)이 다운로드, 송신 또는 이동될 수도 있는 다양한 타입들의 스토리지 소자들 또는 객체들에 대한 커넥션 또는 액세스가 장치되어 있을 수도 있다. 임의의 컴퓨터(10a, 10b, 110a, 110b 등)는 본 발명에 따라 처리된 데이터를 저장하기 위한 데이터베이스, 메모리 또는 다른 기억 소자(20)의 유지 및 갱신 책임이 있을 수도 있다. 따라서, 본 발명은 컴퓨터 네트워크/버스(14)와 액세스 및 상호 작용할 수 있는 클라이언트 컴퓨터들(110a, 110b 등) 및 클라이언트 컴퓨터들(110a, 110b 등) 및 다른 유사 디바이스들과 상호 작용할 수 있는 서버 컴퓨터들(10a, 10b 등) 및 데이터베이스(20)를 갖는 컴퓨터 네트워크 환경에서 사용될 수 있다.
도 8 및 이하의 설명은 본 발명이 구현될 수도 있다는 점과 관련해서 적합한 컴퓨팅 디바이스의 간단하고 일반적인 설명을 제공하려는 것이다. 예를 들어, 도 8에 도시된 클라이언트 및 서버 컴퓨터들 또는 디바이스들 중 임의의 디바이스가 상기 형태를 취할 수도 있다. 그러나, 핸드헬드, 포터블 및 다른 컴퓨팅 디바이스들 및 컴퓨팅 객체들이 본 발명과 관련해서 사용될 수 있다고 생각되며, 즉, 상기 임의의 디바이스 및 객체에서 컴퓨터 환경에서 데이터가 생성, 프로세스, 수신 및/또는 송신될 수도 있음을 알아야만 한다. 범용 컴퓨터가 후술되지만, 단지 하나의 일례이며, 본 발명은 네트워크/버스 상호 운용성 및 상호 작용성을 갖는 씬 클라이 언트로 구현될 수도 있다. 따라서, 본 발명은 매우 적은 또는 최소한의 클라이언트 리소스들이 함축되는 네트워크 호스트 서비스 환경에서, 예를 들어, 클라이언트 디바이스가 어플라이언스에 배치된 객체와 같이 네트워크/버스에 대한 인터페이스로서 단지 작용하는 네트워크 환경에서 구현될 수도 있다. 본래, 데이터가 저장되거나 검색 또는 다른 컴퓨터로 송신될 수 있는 임의의 장소, 또는, 본 발명의 객체 영속 방법들의 오퍼레이션을 위한 적합한 환경이 바람직하다.
요구되지 않더라도, 본 발명은 운영 체제를 통해, 디바이스 또는 객체를 위한 서비스 개발자가 사용하기 위해, 및/또는 본 발명에 따라 동작하는 애플리케이션 또는 서버 소프트웨어 내에 포함되어 구현될 수 있다. 소프트웨어는 클라이언트 워크스테이션, 서버 또는 다른 디바이스와 같은 하나 이상의 컴퓨터들에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령들의 일반적인 문맥으로 기술될 수도 있다. 일반적으로, 프로그램 모듈들은 특정 태스크들을 실행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상, 프로그램 모듈들의 기능은 다양한 실시예들에서 요구되는 대로 결합 또는 분산될 수도 있다. 또한, 다른 컴퓨터 시스템 구성 및 프로토콜로 구현될 수도 있다. 본 발명에 의해 사용되기에 적합할 수도 있는 공지된 컴퓨팅 시스템들, 환경들 및/또는 구성들은 퍼스널 컴퓨터(PC), 자동 텔러 머신, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-베이스 시스템, 프로그래머블 소비자 가전, 네트워크 PC, 가전, 조명, 환경 제어 소자들, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는데, 이들로만 제한되지 않는 다.
도 9는 본 발명이 구현될 수도 있는 일례의 적합한 컴퓨팅 시스템 환경(100)을 도시한다. 명백하게 상술되었지만, 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 일례로서, 본 발명의 기능 또는 용도의 범위에 임의의 제한을 가하려는 의도가 아니다. 컴퓨팅 환경(100)은 일례의 운영 환경(100)에 도시된 컴포넌트들 중 임의의 한 컴포넌트 또는 그 결합물과 관련해서 임의의 종속성 또는 요구 사항을 갖는 것으로 해석되어서는 안된다.
도 9를 참조해서, 본 발명을 구현하기 위한 일례의 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 결합시키는 시스템 버스(121)를 포함할 수도 있지만, 이러한 것에만 제한되지는 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처들 중 임의의 아키텍처를 사용하는 로컬 버스를 포함하는 수개의 타입들의 버스 구조들 중 임의의 버스 구조일 수 있다. 예를 들어, 버스 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 (메저닌 버스로 공지된) PCI(Peripheral Component Interconnect) 버스를 포함하지만, 이러한 것에만 제한되지는 않는다.
컴퓨터(110)는 통상 다양한 컴퓨터 판독 가능 매체들을 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 유용한 매체들일 수 있으며, 휘발성 및 비휘발성 매체들, 분리형(removable) 및 비분리형(non-removable) 매체들을 모두 포함한다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 기억 매체 및 통신 매체를 포함할 수 있지만, 이러한 것에만 제한되지는 않는다. 컴퓨터 기억 매체는 컴퓨터 판독 가능 명령들, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보를 기억하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체들을 모두 포함한다. 컴퓨터 기억 매체들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광 디스크 스토리지, 자기 카셋트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 기억 장치들, 또는 희망 정보를 기억하는데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체들을 포함하지만, 이러한 것에만 제한되지는 않는다. 통신 매체는 통상 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파 또는 다른 전송 메카니즘과 같이 변조된 데이터 신호로 된 다른 데이터를 포함하며, 임의의 정보 전달 매체들을 포함한다. 용어 "변조된 데이터 신호"는 정보를 신호로 인코드하는 방식으로 설정되거나 변경된 특징들 중 하나 이상의 특징을 갖는 신호를 의미한다. 예를 들어, 통신 매체는, 유선 네트워크 또는 다이렉트-와이어드 커넥션과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체를 포함하지만, 이러한 것에만 제한되지는 않는다. 상술된 바들의 임의의 결합도 컴퓨터 판독 가능 매체 범위 내에 포함된다.
시스템 메모리(130)는 판독 전용 메모리(ROM; 131) 및 랜덤 액세스 메모리(RAM; 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 기억 매체들을 포함한다. 예를 들어, 시동 중과 같이, 컴퓨터(110) 내의 소자들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS; 133)은 통상 ROM(131)에 기억된다. RAM(132)은 통상 즉시 액세스될 수 있으며 및/또는 프로세싱 유닛(120)에 의해 현재 동작 중인 데이터 및/또는 프로그램 모듈들을 포함한다. 도 8은 예를 들어, 운영 체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만, 이러한 것에만 제한되지는 않는다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체들을 포함할 수도 있다. 도 7은 단지 일례로서, 비분리형 비휘발성 자기 매체 판독 또는 기록용 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152) 판독 또는 기록용 자기 디스크 드라이브(151), 및 CD-RW, DVD-RW 또는 다른 광 매체들과 같은 분리형 비휘발성 광 디스크(156) 판독 또는 기록용 광 디스크 드라이브(155)를 도시한다. 일례의 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체는 자기 테이프 카셋트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이러한 것에만 제한되지는 않는다. 하드 디스크 드라이브(141)는 통상 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 연결된다.
상술되고 도 9에 도시된 드라이브들 및 관련 컴퓨터 기억 매체들은 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(110)용 다른 데이터를 위한 스토리지를 제공한다. 도 9에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)를 기억하는 것으로 도시되어 있다. 상기 컴포넌트들은 운영 체제(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일할 수도 상이할 수도 있음에 주지하여야 한다. 운영 체제(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146) 및 프로그램 데이터(147)는 최소한 상이한 복사본들임을 설명하기 위해 상이한 번호들이 주어진다. 사용자는 키보드(162) 및 포인팅 디바이스(161)와 같은 입력 장치들을 통해 컴퓨터(110)에 커맨드 및 정보를 입력할 수도 있다. 포인팅 디바이스(161)는 통상 마우스, 트랙볼, 또는 터치 패드이다. 다른 입력 장치들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수도 있다. 여타 입력 장치들은 종종 시스템 버스(121)에 결합된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조들에 의해 연결될 수도 있다. 그래픽스 인터페이스(182)는 시스템 버스(121)에 접속될 수도 있다. 하나 이상의 그래픽스 프로세싱 유닛들(GPU; 184)은 그래픽스 인터페이스(182)와 통신할 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 디바이스가 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 비디오 인터페이스(190)는 비디오 메모리(186)와 통신할 수도 있다. 모니터(191) 외에, 컴퓨터들은 종종 출력 주변 인터페이스(195)를 통해 연결될 수도 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치들을 포함할 수도 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터들로의 로지컬 커넥션들을 사용해서 네트워크 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 루터, 네트워크 PC, 피어 디바이스, 또는 다른 공통 네트워크 노드일 수 있으며, 메모리 기억 장치(181)만이 도 9에 도시되어 있지만, 컴퓨터(110)와 관련해서 상술된 소자들 중 다수 또는 전부를 통상 포함한다. 도 9에 도시된 논리 접속들은 근거리 통신망(LAN; 171) 및 광역 통신망(WAN; 173)을 포함하는데, 다른 네트워크/버스들을 포함할 수도 있다. 이러한 네트워크 환경은 가정간, 사무실간, 기업간 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(110)는 인터넷과 같은 WAN(173)을 통한 통신 설정을 위해 모뎀(172) 또는 다른 수단을 통상 포함한다. 내부 또는 외부에 있을 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적합한 메카니즘을 통해 시스템 버스(121)에 접속될 수도 있다. 네트워크 환경에서, 컴퓨터(110)와 관련해서 도시된 프로그램 모듈들, 또는 그 일부들은 원격 메모리 기억 장치에 기억될 수도 있다. 예를 들어, 도 9는 메모리 디바이스(181)에 상주하는 것으로 원격 애플리케이션 프로그램들(185)을 도시하고 있지만, 이러한 것에만 제한되지는 않는다. 도시된 네트워크 커넥션들은 단지 설명을 목적으로 한 것으로, 컴퓨터들 간에 통신 링크를 설정하는 다른 수단이 사용될 수도 있음을 알 것이다.
결론
애플리케이션 보안 시스템 및 방법이 기술되었다. 애플리케이션은 인증되고, 애플리케이션과 관련된 보안 정보가 검색된다. 보안 정보는 그 후 애플리케이션에 첨부되는 토큰을 생성하는데 사용된다. 보안 정보는 원리 어카운트, 그룹 어카운트 리스트 및 대응 특권 리스트를 포함할 수도 있다.
본 발명이 다양한 도면들의 바람직한 실시예들과 관련해서 기술되었지만, 다른 유사 실시예들이 사용될 수도 있으며, 또는, 본 발명의 동일한 기능을 실행하기 위한 상술된 실시예에 대한 변경 및 추가가 본 발명의 범위 내에서 이루어질 수도 있음을 이해할 것이다. 따라서, 본 발명은 임의의 단일 실시예로 제한되는 것이 아니며, 첨부된 청구항들에 따른 범위내에서 해석돼야만 한다.
본 발명에 따라, 효율적인 애플리케이션 지향 보안 모델이 제공됨으로써 본 분야의 종래 기술의 단점들이 극복된다.

Claims (21)

  1. 애플리케이션에 보안을 제공하는 방법으로서,
    애플리케이션과 관련된 인증 정보를 근거로 상기 애플리케이션을 인증하는 단계;
    상기 애플리케이션과 관련된 보안 정보를 검색하는 단계; 및
    상기 보안 정보를 포함하는 상기 애플리케이션에 대한 토큰을 생성하는 단계
    를 포함하는 것을 특징으로 하는 보안 제공 방법.
  2. 제1항에 있어서,
    휴대형 컴퓨팅 디바이스에서의 실행을 위해 상기 애플리케이션을 인증하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  3. 제1항에 있어서,
    상기 애플리케이션과 관련된 디지털 서명을 근거로 상기 애플리케이션을 인증하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  4. 제3항에 있어서,
    상기 애플리케이션이 실행되는 휴대형 컴퓨팅 디바이스에 의해 액세스 가능한 증명서 스토어에 저장된 디지털 증명서를 사용해서 상기 디지털 서명을 인증하 는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  5. 제1항에 있어서,
    상기 보안 정보를 검색하는 단계는 상기 애플리케이션이 액세스하도록 허가된 리소스들을 포함하는 특권 리스트를 식별하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  6. 제1항에 있어서,
    상기 보안 정보를 검색하는 단계는 상기 애플리케이션과 관련된 원리 어카운트를 식별하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  7. 제1항에 있어서,
    상기 보안 정보를 검색하는 단계는 상기 애플리케이션과 관련된 그룹 어카운트 리스트를 식별하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  8. 제1항에 있어서,
    상기 애플리케이션에 상기 토큰을 첨부하는 단계; 및
    상기 첨부된 토큰으로 상기 애플리케이션을 론치하는 단계
    를 더 포함하는 것을 특징으로 하는 보안 제공 방법.
  9. 제8항에 있어서,
    보안 로더를 사용해서 상기 토큰을 첨부하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  10. 제1항에 있어서,
    다른 애플리케이션에 대응하는 보안 정보를 포함하는 상기 애플리케이션에 대한 구현 토큰(impersonation token)을 생성하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  11. 제1항에 있어서,
    어카운트 데이터베이스로부터 상기 보안 정보를 검색하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  12. 제11항에 있어서,
    상기 어카운트 데이터베이스와 관련해서 토큰 제너레이터를 사용해서 상기 토큰을 생성하는 단계를 포함하는 것을 특징으로 하는 보안 제공 방법.
  13. 애플리케이션이 리소스에 액세스하도록 허가하는 방법으로서,
    애플리케이션에 첨부된 토큰을 검색하는 단계;
    상기 토큰 내의 특권 리스트에 상기 리소스가 포함되어 있는지를 판정하는 단계; 및
    상기 선택된 리소스가 상기 특권 리스트에 포함되어 있으면, 상기 애플리케이션이 상기 리소스에 액세스하도록 허가하는 단계
    를 포함하는 것을 특징으로 하는 액세스 허가 방법.
  14. 제13항에 있어서,
    상기 선택된 리소스가 상기 특권 리스트에 포함되지 않으면, 상기 애플리케이션이 상기 리소스에 액세스하는 것을 거부하는 단계를 더 포함하는 것을 특징으로 하는 액세스 허가 방법.
  15. 제13항에 있어서,
    상기 애플리케이션 실행 전에 상기 토큰을 생성하는 단계를 더 포함하는 것을 특징으로 하는 액세스 허가 방법.
  16. 제15항에 있어서,
    상기 토큰 생성 전에 상기 애플리케이션을 인증하는 단계를 더 포함하는 것을 특징으로 하는 액세스 허가 방법.
  17. 애플리케이션이 안전 객체에 액세스하도록 허가하는 방법으로서,
    애플리케이션에 첨부된 토큰을 검색하는 단계;
    상기 토큰 내에 리스트되어 있는 원리 어카운트를 식별하는 단계; 및
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 원리 어카운트를 허가하는 지를 결정하는 단계; 및
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 원리 어카운트를 허가하면, 상기 애플리케이션이 안전 객체에 액세스하도록 승인하는 단계
    를 포함하는 것을 특징으로 하는 액세스 허가 방법.
  18. 제17항에 있어서,
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 원리 어카운트를 허가하지 않으면, 상기 애플리케이션이 안전 객체에 액세스하는 것을 거부하는 단계를 포함하는 것을 특징으로 하는 액세스 허가 방법.
  19. 제17항에 있어서,
    상기 토큰 내에 리스트되어 있는 그룹 어카운트들을 식별하는 단계; 및
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 그룹 어카운트들을 허가하는 지를 판정하는 단계;
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 그룹 어카운트들을 허가하면, 상기 애플리케이션이 상기 안전 객체에 액세스하도록 승인하는 단계; 및
    상기 안전 객체에 대한 어카운트 제어 리스트가 상기 그룹 어카운트들을 허가하지 않으면, 상기 애플리케이션이 상기 안전 객체에 액세스하는 것을 거부하는 단계
    를 포함하는 것을 특징으로 하는 액세스 허가 방법.
  20. 제17항에 있어서,
    상기 애플리케이션 실행 전에 상기 토큰을 생성하는 단계를 더 포함하는 것을 특징으로 하는 액세스 허가 방법.
  21. 제20항에 있어서,
    상기 토큰 생성 전에 상기 애플리케이션을 인증하는 단계를 더 포함하는 것을 특징으로 하는 액세스 허가 방법.
KR1020050053896A 2004-06-23 2005-06-22 애플리케이션에 보안을 제공하기 위한 시스템 및 방법 KR101076911B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/874,830 2004-06-23
US10/874,830 US7509497B2 (en) 2004-06-23 2004-06-23 System and method for providing security to an application

Publications (2)

Publication Number Publication Date
KR20060048474A true KR20060048474A (ko) 2006-05-18
KR101076911B1 KR101076911B1 (ko) 2011-10-25

Family

ID=34940157

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050053896A KR101076911B1 (ko) 2004-06-23 2005-06-22 애플리케이션에 보안을 제공하기 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US7509497B2 (ko)
EP (1) EP1610201A3 (ko)
JP (1) JP4916136B2 (ko)
KR (1) KR101076911B1 (ko)
CN (1) CN1713106B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8243300B2 (en) 2008-02-20 2012-08-14 Canon Kabushiki Kaisha Printing system, printing method and printer which facilitate print management using authorization tokens

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587755B2 (en) * 2004-07-02 2009-09-08 Citrix Systems, Inc. System and method for executing interactive applications with minimal privileges
US8656268B2 (en) * 2005-07-01 2014-02-18 Microsoft Corporation Queueing events in an interactive media environment
US8305398B2 (en) * 2005-07-01 2012-11-06 Microsoft Corporation Rendering and compositing multiple applications in an interactive media environment
US20070006079A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation State-based timing for interactive multimedia presentations
US8108787B2 (en) 2005-07-01 2012-01-31 Microsoft Corporation Distributing input events to multiple applications in an interactive media environment
US7721308B2 (en) * 2005-07-01 2010-05-18 Microsoft Corproation Synchronization aspects of interactive multimedia presentation management
US20070006238A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Managing application states in an interactive media environment
US8799757B2 (en) * 2005-07-01 2014-08-05 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US7941522B2 (en) * 2005-07-01 2011-05-10 Microsoft Corporation Application security in an interactive media environment
US20070006062A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8020084B2 (en) * 2005-07-01 2011-09-13 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006078A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
US20080082626A1 (en) * 2006-09-29 2008-04-03 Microsoft Corporation Typed authorization data
US8327428B2 (en) 2006-11-30 2012-12-04 Microsoft Corporation Authenticating linked accounts
US9183377B1 (en) * 2008-06-18 2015-11-10 Symantec Corporation Unauthorized account monitoring system and method
US8788809B2 (en) * 2009-04-27 2014-07-22 Qualcomm Incorporated Method and apparatus to create a secure web-browsing environment with privilege signing
US20120079278A1 (en) * 2010-09-28 2012-03-29 Microsoft Corporation Object security over network
US8650550B2 (en) 2011-06-07 2014-02-11 Blackberry Limited Methods and devices for controlling access to computing resources
US8763080B2 (en) 2011-06-07 2014-06-24 Blackberry Limited Method and devices for managing permission requests to allow access to a computing resource
US9053337B2 (en) 2011-06-07 2015-06-09 Blackberry Limited Methods and devices for controlling access to a computing resource by applications executable on a computing device
JP5357927B2 (ja) * 2011-06-14 2013-12-04 ドコモ・システムズ株式会社 通信装置、データアクセス方法、およびデータアクセスプログラム
US9225538B2 (en) * 2011-09-01 2015-12-29 Microsoft Technology Licensing, Llc Stateless application notifications
US9118686B2 (en) * 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US9183361B2 (en) * 2011-09-12 2015-11-10 Microsoft Technology Licensing, Llc Resource access authorization
JP2013065114A (ja) * 2011-09-15 2013-04-11 Fujitsu Ltd 情報処理システムの制御方法、中継装置の制御プログラム及びクライアント装置の制御プログラム
US9098726B2 (en) * 2012-04-24 2015-08-04 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
KR101451870B1 (ko) * 2012-08-20 2014-10-16 네이버 주식회사 인증 공유에 의한 애플리케이션 로그인 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
JP2014199634A (ja) * 2013-03-12 2014-10-23 株式会社デンソー 情報端末装置
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
US9838424B2 (en) * 2014-03-20 2017-12-05 Microsoft Technology Licensing, Llc Techniques to provide network security through just-in-time provisioned accounts
CN106599676A (zh) * 2016-12-22 2017-04-26 北京元心科技有限公司 可信进程识别方法及装置
US10652227B2 (en) 2017-05-17 2020-05-12 Microsoft Technology Licensing, Llc Impersonating target account via account redirection
US20190392137A1 (en) * 2018-06-21 2019-12-26 Cyberark Software Ltd. Security annotation of application services
US11070540B1 (en) 2018-12-28 2021-07-20 Juniper Networks, Inc. Dynamic provisioning of user groups within computer networks based on user attributes
US11516220B1 (en) * 2018-12-28 2022-11-29 Juniper Networks, Inc. Creating roles and controlling access within a computer network
US11516254B2 (en) 2019-06-20 2022-11-29 Juniper Networks, Inc. Controlling access to microservices within a multi-tenancy framework

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US6466783B2 (en) * 1995-12-11 2002-10-15 Openwave Systems Inc. Visual interface to mobile subscriber account services
US6151590A (en) * 1995-12-19 2000-11-21 Pitney Bowes Inc. Network open metering system
JPH10320287A (ja) * 1997-05-16 1998-12-04 Nippon Telegr & Teleph Corp <Ntt> 計算機資源へのアクセス管理システム及びその方法
US6965999B2 (en) 1998-05-01 2005-11-15 Microsoft Corporation Intelligent trust management method and system
JP2000049766A (ja) * 1998-07-27 2000-02-18 Hitachi Ltd 鍵管理サーバシステム
GB2342195A (en) * 1998-09-30 2000-04-05 Xerox Corp Secure token-based document server
US6571335B1 (en) * 1999-04-01 2003-05-27 Intel Corporation System and method for authentication of off-chip processor firmware code
US6810525B1 (en) * 1999-08-17 2004-10-26 General Instrument Corporation Impulse pay per use method and system for data and multimedia services
DE10000826A1 (de) 2000-01-12 2001-07-19 Alcatel Sa Verfahren, Diensterechner, Vermittlungsstelle, Endgeräte und Programm-Module zur Behandlung ankommender Telefonanrufe während einer eine Teilnehmeranschlussleitung blockierenden Online-Datennetzwerk-Sitzung
AU2823601A (en) * 2000-01-27 2001-08-07 Hummingbird Ltd. A method and system for implementing a common user logon to multiple applications
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
JP2002041170A (ja) * 2000-07-27 2002-02-08 Matsushita Electric Ind Co Ltd プログラム実行制御装置
US20020026578A1 (en) * 2000-08-22 2002-02-28 International Business Machines Corporation Secure usage of digital certificates and related keys on a security token
US20020124170A1 (en) * 2001-03-02 2002-09-05 Johnson William S. Secure content system and method
US7010600B1 (en) * 2001-06-29 2006-03-07 Cisco Technology, Inc. Method and apparatus for managing network resources for externally authenticated users
JP4209131B2 (ja) * 2002-04-23 2009-01-14 株式会社エヌ・ティ・ティ・ドコモ 携帯端末、及びアクセス制御方法
JP2003337630A (ja) * 2002-05-17 2003-11-28 Ntt Docomo Inc 通信端末、プログラム、記録媒体、通信端末のアクセス制御方法およびコンテンツの提供方法
US20040064708A1 (en) * 2002-09-30 2004-04-01 Compaq Information Technologies Group, L.P. Zero administrative interventions accounts
AU2002364902A1 (en) * 2002-10-18 2004-05-13 American Express Travel Related Services Company, Inc. Device independent authentication system and method
US7024689B2 (en) * 2002-12-13 2006-04-04 Intuit, Inc. Granting access rights to unattended software
US7194664B1 (en) * 2003-09-08 2007-03-20 Poon Fung Method for tracing application execution path in a distributed data processing system
US20050138388A1 (en) * 2003-12-19 2005-06-23 Robert Paganetti System and method for managing cross-certificates copyright notice

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8243300B2 (en) 2008-02-20 2012-08-14 Canon Kabushiki Kaisha Printing system, printing method and printer which facilitate print management using authorization tokens

Also Published As

Publication number Publication date
KR101076911B1 (ko) 2011-10-25
CN1713106B (zh) 2012-02-08
US20050289348A1 (en) 2005-12-29
CN1713106A (zh) 2005-12-28
US7509497B2 (en) 2009-03-24
EP1610201A2 (en) 2005-12-28
EP1610201A3 (en) 2012-03-14
JP4916136B2 (ja) 2012-04-11
JP2006024205A (ja) 2006-01-26

Similar Documents

Publication Publication Date Title
KR101076911B1 (ko) 애플리케이션에 보안을 제공하기 위한 시스템 및 방법
CN108293045B (zh) 本地和远程系统之间的单点登录身份管理
KR100920871B1 (ko) 네트워크 위치의 하위 위치에 대한 사용자의 인증을 위한방법 및 시스템
JP4880331B2 (ja) アクセス管理システム等におけるリソース等にアクセスする権限の委任
RU2337399C2 (ru) Контекст устойчивой авторизации на основе внешней аутентификации
US7783891B2 (en) System and method facilitating secure credential management
US20070005961A1 (en) Providing user on computer operating system with full privileges token and limited privileges token
US20100058435A1 (en) System and method for virtual information cards
EP2239677A1 (en) Integration of a non-token-based relying party into a token-based information card system
US10642664B2 (en) System and method for securing an inter-process communication via a named pipe
KR20140068964A (ko) 자원 액세스 허가 기법
CN113711563A (zh) 基于细粒度令牌的访问控制
US7895645B2 (en) Multiple user credentials
US20240146724A1 (en) Systems and methods of application single sign on
JP2016519828A (ja) アクセス制御方法、装置、プログラム、及び記録媒体
US20080229396A1 (en) Issuing a command and multiple user credentials to a remote system
KR20230027241A (ko) 공유 자원 식별
US9075996B2 (en) Evaluating a security stack in response to a request to access a service
US20090204544A1 (en) Activation by trust delegation
US9479492B1 (en) Authored injections of context that are resolved at authentication time
KR20050009945A (ko) 이동식 저장장치를 이용한 가상 저장 공간의 관리 방법 및시스템
EP3036674B1 (en) Proof of possession for web browser cookie based security tokens
US20220150277A1 (en) Malware detonation
Forsyth et al. Clark-Wilson Policies in ACP: Controlling Information Flow Between Solid Apps
KR101066729B1 (ko) 네트워크 위치의 하위 위치에 대한 사용자의 인증을 위한 방법 및 시스템

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 8