KR101861401B1 - 장치 기능과 애플리케이션의 결합 - Google Patents

장치 기능과 애플리케이션의 결합 Download PDF

Info

Publication number
KR101861401B1
KR101861401B1 KR1020137028934A KR20137028934A KR101861401B1 KR 101861401 B1 KR101861401 B1 KR 101861401B1 KR 1020137028934 A KR1020137028934 A KR 1020137028934A KR 20137028934 A KR20137028934 A KR 20137028934A KR 101861401 B1 KR101861401 B1 KR 101861401B1
Authority
KR
South Korea
Prior art keywords
application
function
access
identifier
hardware device
Prior art date
Application number
KR1020137028934A
Other languages
English (en)
Other versions
KR20140026451A (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 KR20140026451A publication Critical patent/KR20140026451A/ko
Application granted granted Critical
Publication of KR101861401B1 publication Critical patent/KR101861401B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices

Abstract

하드웨어 장치와 연관된 설치 데이터가 획득된다(예컨대, 상기 장치가 컴퓨팅 장치 상에 설치되는 시점에). 하드웨어 장치의 기능을 액세스하도록 허용되어 있는 애플리케이션의 식별자는 설치 데이터로부터 식별되고, 하드웨어 장치의 기능을 액세스하도록 허용되어 있는 것으로서 장치 허가 레코드 내에 저장된다. 후속적으로, 하드웨어 장치의 기능을 액세스하려는 요청이 애플리케이션으로부터 수신된다. 애플리케이션이 하드웨어 장치의 기능을 액세스하도록 허용되어 있는 것으로서 장치 허가 레코드 내에 식별되어 있는지 여부에 대한 체크가 이루어진다. 만약 장치 허가 레코드가 애플리케이션이 하드웨어 장치의 기능을 액세스하도록 허용되어 있음을 나타낸다면 애플리케이션은 하드웨어 장치의 기능을 액세스하도록 허용되고, 그렇지 않다면 애플리케이션으로부터의 요청은 거절된다.

Description

장치 기능과 애플리케이션의 결합{BINDING APPLICATIONS TO DEVICE CAPABILITIES}
통상적으로 컴퓨터는 프로그램이, 예컨대 스토리지 장치, 마이크로폰, 프린터 등과 같은, 다양한 하드웨어 장치들에 액세스하는 것을 허용한다. 비록 이용가능한 그러한 하드웨어 장치가 프로그램으로 하여금 사용자가 원하는 기능을 제공하도록 허용하지만, 서로 다른 프로그램들에 의한 그러한 하드웨어 장치로의 액세스를 컨트롤하는 것에는 문제들이 있을 수 있다. 그러한 문제 중 하나는, 프로그램이 하드웨어 장치에 액세스하기 위하여 사용자의 승인을 구하는 프롬프팅(prompting)이 이루어질 수 있지만, 그러한 프롬프팅은 사용자에게 설명하기 어려울 수 있다. 예를 들어, 사용자에게 승인을 구하는 프롬프팅이 있을 때, 특정한 하드웨어 장치로의 액세스가 정확히 무엇인지 그 액세스를 허용하는 것이 내포하는 의미는 무엇인지를 사용자에게 설명하는 것이 어려울 수 있다. 이것은 사용자 경험을 혼동시킬 수 있으며, 컴퓨터의 사용자 친화도(user friendliness)를 감소시킬 수 있다.
덧붙여서, 지원되는 경우, 사용자들은 그들의 기존 컴퓨터 구성에 새로운 하드웨어 장치를 추가할 수 있다. 이들 새로운 하드웨어 장치의 추가는 프로그램으로 하여금 하드웨어 장치 액세스를 허용하도록 하는 종래의 접근법을 복잡하게 하는데, 왜냐하면 알려져 있는 가능한 하드웨어 장치들과 그 장치들의 기능들의 리스트는 흔히 항상 이용가능하다고 간주되기 때문이다.
이 발명의 요약(Summary)은 아래의 발명을 실시하기 위한 구체적인 내용(Detailed Description)에서 더 기술되는 개념들 중 일부를 단순한 형태로 소개하기 위하여 제공된다. 이 발명의 내용은 청구범위의 발명 주제의 중요한 특징이나 본질적인 특징을 나타내도록 의도된 것은 아니며, 또한 청구범위의 발명 주제의 범위를 제한하기 위하여 사용되도록 의도되지도 않는다.
하나 이상의 양상에 따라, 컴퓨팅 장치 상에 설치된 하드웨어 장치의 기능(capability)에 액세스하려는 요청이 애플리케이션으로부터 수신된다. 애플리케이션이 하드웨어 장치의 기능에 대한 액세스가 허용되어 있는 것으로 장치 허가 레코드(device permisssions record) 내에서 나타나는지에 관하여, 컴퓨팅 장치에 의해 체크가 이루어진다. 만약 장치 허가 레코드가 애플리케이션이 하드웨어 장치의 기능에 액세스하는 것이 허용된다고 가리킨다면 애플리케이션은 하드웨어 장치의 기능에 액세스하도록 허용되고, 그렇지 않다면 애플리케이션으로부터의 요청은 거절된다.
하나 이상의 양상에 따라, 하드웨어 장치와 연관된 설치 데이터가 획득된다. 하드웨어 장치의 기능에 액세스하는 것이 허용된 애플리케이션의 식별자가 설치 데이터에서 나타난다. 애플리케이션의 식별자는 추가적인 사용자 동의 없이 하드웨어 장치의 기능에 액세스하도록 허용되는 것으로서 장치 허가 레코드 내에 저장된다.
동일한 번호가 유사한 특징을 지칭하기 위하여 도면들 전반에 걸쳐 사용된다.
도 1은 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하는 예시적인 컴퓨팅 장치를 도시하는 블록도이다.
도 2는 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하는 예시적인 시스템을 도시하는 블록도이다.
도 3은 하나 이상의 실시예들에 따라 장치 허가 레코드를 변화시키기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 하나 이상의 실시예들에 따라 하드웨어 장치의 기능에 액세스하려는 요청에 대해 응답하는 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
장치 기능과 애플리케이션의 결합이 본 명세서에서 논의된다. 컴퓨팅 장치는 그것 상에 설치된 서로 다른 하드웨어 장치들을 가질 수 있으며, 이들 서로 다른 하드웨어 장치들은 다양한 기능들을 가질 수 있다. 어떤 애플리케이션이 컴퓨팅 장치의 어떤 하드웨어 장치의 어떤 기능에 액세스하도록 허용되어 있는지를 가리키는 장치 허가 레코드가 유지된다. 이 장치 허가 레코드는 동적이어서, 어떤 애플리케이션이 컴퓨팅 장치의 어떤 하드웨어 장치의 어떤 기능에 액세스하도록 허용되는지를 가리키는 다양한 사용자 입력에 응답하여 시간에 따라 변화한다. 비록 일부 실시예들은 장치 허가 레코드의 고정 세트를 가지지만, 그 외 다른 실시예들은 새롭고 이전에는 알려지지 않은 하드웨어 장치가 컴퓨팅 장치에 추가되면 새로운 레코드가 생성되는 것이 가능하게 하는 허가 레코드의 확장가능 세트를 지원한다. 컴퓨팅 장치 상에서 실행되는 애플리케이션은 해당 컴퓨팅 장치 상에 설치되어 있는 하드웨어 장치의 특정 기능에의 액세스를 요청할 수 있다. 이러한 요청에 응답하여, 장치 중개자(device broker)는 그 애플리케이션이 해당 특정 하드웨어 장치의 해당 특정 기능에 액세스하도록 허용되어 있는지 여부를 결정하기 위해 장치 허가 레코드를 체크한다. 만약 장치 허가 레코드가 그 애플리케이션이 그렇게 하도록 허용되어 있음을 나타낸다면 그 애플리케이션이 해당 특정 하드웨어 장치의 해당 특정 기능에 액세스하도록 허용되고; 그렇지 않다면, 그 애플리케이션을 해당 하드웨어 장치를 액세스하는 것이 허용되지 않는다.
본 명세서에서 대칭키 암호 기술, 공개키 암호 기술 및 공개키/개인키 쌍이 참조된다. 비록 이러한 키 암호 기술은 해당 기술 분야에서 지식을 가진 자에게 잘 알려져 있지만, 독자에게 도움이 되도록 하기 위하여 그러한 암호 기술에 대한 간단한 개요가 본 명세서에 포함된다. 공개키 암호 기술에 있어서, 엔터티(사용자, 하드웨어 또는 소프트웨어 컴포넌트, 장치, 도메인 등과 같은)는 그것을 공개키/개인키 쌍과 연관시킨다. 공개키는 공개적으로 이용가능하게 만들어질 수 있지만, 엔터티는 개인키를 비밀로 유지한다. 개인키가 없다면, 공개키를 사용하여 암호화된 데이터를 복호화하는 것이 연산적으로 매우 어렵다. 그러므로, 데이터는 공개키에 의해 임의의 엔터티에 의해 암호화될 수 있으며 대응하는 개인키를 가진 하나의 엔터티에 의해서만 복호화될 수 있다. 덧붙여서, 데이터를 위한 디지털 서명은 해당 데이터 및 개인키를 사용하여 생성될 수 있다. 개인키가 없다면 공개키를 사용하여 검증될 수 있는 서명을 생성하는 것이 연산적으로 매우 어렵다. 공개키를 가진 엔터티는 공개키, 서명, 및 서명된 데이터에 대해 적절한 디지털 서명 검증 알고리즘을 실행함으로써 디지털 서명을 검증하기 위하여 공개키를 사용할 수 있다.
다른 한편으로, 대칭키 암호 기술에 있어서, 공유키(대칭키라고도 함)는 2개의 엔터티에게 알려지고 이들에 의해 비밀로 유지된다. 통상적으로 공유키를 가진 엔터티는 누구나 해당 공유키를 사용하여 암호화된 데이터를 복호화할 수 있다. 공유키가 없다면 공유키를 사용하여 암호화된 데이터를 복호화하는 것이 연산적으로 매우 어렵다. 그러므로, 만약 2개의 엔터티 양자 모두가 공유키를 알고 있다면, 각 엔터티는 타 엔터티에 의해 복호화될 수 있는 데이터를 암호화할 수 있지만, 그 외 다른 엔터티들은 만약 공유키를 알고 있지 않다면 그 데이터를 복호화할 수 없다. 유사하게, 공유키를 가진 엔터티는 동일 엔터티에 의해 복호화될 수 있는 데이터를 암호화할 수 있지만, 그 외 다른 엔터티들이 만약 그 공유키를 알지 못한다면 그 데이터를 복호화할 수 없다. 덧붙여서, 디지털 서명은 공유키 암호 기술에 기초하여, 예컨대 HMAC(keyed-hash message authentication code mechanism)을 사용하여, 생성될 수 있다. 공유키를 가지고 있는 엔터티는 누구나 디지털 서명을 생성 및 검증할 수 있다. 예를 들어, 신뢰받는 제3자는 하나의 특정 엔터티의 아이덴터티에 기초하여 대칭키를 생성할 수 있고, 그런 다음 해당 특정 엔터티를 위해 디지털 서명을 생성하고 검증하는 것 양자 모두를 할 수 있다(예컨대, 대칭키를 사용하여 데이터를 암호화하고 복호화함으로써).
도 1은 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하는 예시적인 컴퓨팅 장치(100)를 도시하는 블록도이다. 컴퓨팅 장치(100)는 다양한 타입의 장치일 수 있다. 예를 들어, 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 넷북 또는 랩탑 컴퓨터, 노트패드 또는 타블렛 컴퓨터, 모바일 스테이션, 오락 기구, 디스플레이 장치에 통신가능하게 연결된 셋-톱 박스, 텔레비전 또는 그 외 다른 디스플레이 장치, 셀룰러 또는 그 외 다른 무선 전화기, 게임 콘솔, 차량용 컴퓨터 등일 수 있다.
컴퓨팅 장치(100)는 운영 시스템(102), 하나 이상의(m) 애플리케이션(104(1), ..., 104(m)) 및 하나 이상의 하드웨어 장치(106(1), ..., 106(n))를 포함한다. 애플리케이션(104)은 예를 들어 게임이나 그 외 다른 오락용 애플리케이션, 유틸리티 애플리케이션, 생산용 애플리케이션(예컨대, 워드 프로세싱 또는 스트레드시트 애플리케이션), 참조 애플리케이션, 통신 애플리케이션 등과 같은 다양한 타입의 애플리케이션들 중 어느 하나일 수 있다. 애플리케이션들(104)은 로컬 소스(예컨대, 로컬 디스크 또는 플래시 메모리 장치로부터 설치된)로부터, 및/또는 원격 소스(예컨대, 인터넷, 셀룰러 또는 그 외 다른 무선 네트워크 등과 같은 네트워크를 통해 다른 장치로부터 획득된)로부터 컴퓨팅 장치(100)에 의하여 획득될 수 있다.
하드웨어 장치(106)는 각각 운영 시스템(102)에 액세스 가능한 다양한 서로 다른 장치들 또는 컴포넌트들 중 임의의 것일 수 있다. 예를 들어, 하드웨어 장치(106)는 카메라, 마이크로폰, 프린터, 스토리지 장치(예컨대, 플래시 메모리, SIM(subscriber identity module) 카드 등), 모바일 광대역 칩셋 또는 카드 등일 수 있다. 하드웨어 장치(106)는 컴퓨팅 장치(100)의 부품으로서 포함(예컨대, 컴퓨팅 장치(100)의 프로세서 및 메모리와 같이 동일한 하우징 내에 포함)될 수 있으며 및/또는 컴퓨팅 장치(100)에 연결된(예컨대, 유선 또는 무선 연결을 통해) 별도의 장치일 수 있다. 하드웨어 장치(106)는 컴퓨팅 장치(100)와 동일한 물리적인 인클로저(enclosure)에 새 하드웨어 장치를 물리적으로 추가함으로써, 또는 그렇지 않은 경우 컴퓨팅 장치(100)에 새 하드웨어 장치를 연결(예컨대, 유선 또는 무선 연결을 사용하여)함으로써, 그리고 관련 소프트웨어 및/또는 펌웨어를 컴퓨팅 장치(100) 상에 설치(만약 이전에 설치되어 있지 않다면)함으로써 컴퓨팅 장치(100) 상에 설치된다. 이 관련 소프트웨어 및/또는 펌웨어는 또한 장치 드라이버라고 지칭되는데, 이 장치 드라이버는 관련 하드웨어 장치와 통신하는 방법을 알고 있으며 또한 컴퓨팅 장치(100) 내의 그 외 다른 애플리케이션, 컴포넌트, 또는 모듈이 관련 하드웨어 장치에 액세스하는 것을 허용한다. 장치 드라이버에 의해 제공되는 정확한 기능은 컴퓨팅 장치(100)가 생성되었던 시점에 운영 시스템(102)에게 알려져 있을 수 있거나 알려져 있지 않을 수 있다.
운영 시스템(102)은, 애플리케이션(104)에 의한 하드웨어 장치(106)로의 액세스를 관리하는 것을 포함하여, 컴퓨팅 장치(100) 상에서 실행되는 애플리케이션(104)을 관리한다. 운영 시스템(102)은 장치 중개자(112) 및 장치 허가 레코드(114)를 포함한다. 하드웨어 장치(106)를 액세스하기 위하여, 애플리케이션(104)은 운영 시스템(102)에게 해당 하드웨어 장치(106)로의 액세스를 요청한다. 장치 중개자(112)는 요청하고 있는 애플리케이션(104)이 해당 하드웨어 장치(106)에 액세스하도록 허용되어 있는지 여부를 결정하기 위하여 장치 허가 레코드(114)를 체크한다. 만약 장치 허가 레코드(114)는 요청하고 있는 애플리케이션(104)이 해당 하드웨어 장치(106)에 액세스하도록 허용되어 있음을 가리킨다면, 장치 중개자(112)는 요청하는 애플리케이션(104)이 해당 하드웨어 장치(106)를 액세스하는 것을 허용한다. 그러나, 만약 장치 허가 레코드(114)는 요청하고 있는 애플리케이션(104)이 해당 하드웨어 장치(106)에 액세스하도록 허용되어 있지 않음을 가리킨다면, 장치 중개자(112)는 요청하는 애플리케이션(104)이 해당 하드웨어 장치(106)를 액세스하는 것을 막는다(또는 그렇지 않은 경우 허용하지 않는다).
도 2는 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하는 예시적인 시스템(200)을 도시하는 블록도이다. 시스템(200)은 도 1의 컴퓨팅 장치(100)와 같은 컴퓨팅 장치 상에서 구현된다. 시스템(200)은 애플리케이션(202)을 포함하며, 이 애플리케이션은 도 1의 애플리케이션(104)일 수 있다. 애플리케이션(202)은, 시스템(200)의 장치 및/또는 그 외 다른 자원(예컨대, 메모리, 그 외 다른 애플리케이션 등)을 액세스하는 애플리케이션(202)의 능력이 제한되는 방식으로 실행될 수 있다. 컴퓨팅 장치의 운영 시스템(또는 대안적으로 그 외 다른 소프트웨어 또는 펌웨어)은 애플리케이션이 애플리케이션(202)에 할당되어 있거나 또는 이용가능하게 되어 있는 컴퓨팅 장치의 메모리에 액세스하는 것을 허용하지만, 애플리케이션(202)이 컴퓨팅 장치의 다른 메모리 또는 컴퓨팅 장치 상에서 실행되고 있는 그 외 다른 애플리케이션을 액세스하는 것은 막는다. 이것은 컴퓨팅 장치 상에서 실행되는 그 외 다른 애플리케이션이 애플리케이션(202)에 의해 간섭되지 않도록 보호하며, 뿐만 아니라 애플리케이션(202)이 컴퓨팅 장치 상에서 실행되는 그 외 다른 애플리케이션에 의해 간섭되지 않도록 보호한다. 하나 이상의 실시예에 있어서, 애플리케이션(202)은 샌드박스(샌드박스(204)로서 점선으로 도시된) 내에서 애플리케이션(202)을 실행함으로써 제한적인 방식으로 실행된다. 비록 하나의 단일 애플리케이션(202)이 시스템(200) 내에 도시되어 있으나, 다수의 애플리케이션들이 시스템(200) 내에서 동시에 실행될 수 있다(각각의 애플리케이션은 통상적으로 그것 자체의 샌드박스 내에서 실행된다)는 점이 주목되어야 한다.
시스템(200)을 구현하는 컴퓨팅 장치 상에 설치된 하드웨어 장치는 다양한 기능을 포함할 수 있으며, 그 기능 중 하나 이상은 하나의 기능 콜렉션 또는 클래스로 함께 그룹화될 수 있다. 한 하드웨어 장치의 기능들은 그 하드웨어 장치에 의해 제공되는 또는 지원되는 또는 허용되는 기능 및/또는 동작을 지칭한다. 하드웨어 장치의 특정 기능 및 그것들이 함께 그룹화되는 방식은 그 하드웨어 장치의 설계자 또는 판매자에 의해, 또는 대안적으로 다른 하나의 컴포넌트 또는 엔터티(예컨대, 컴퓨팅 장치 상의 운영 시스템의 설계자 또는 판매자)에 의하여, 정의될 수 있다. 예를 들어, 프린터 장치는 프틴트 기능(애플리케이션이 프린팅을 위해 프린터로 데이터를 송신하도록 허용하는) 및 관리 기능(애플리케이션이 프린트 헤드를 재조정하도록, 잉크 또는 토너 레벨을 획득하도록, 프린팅과 관련된 통계를 획득하도록 하는 등을 허용하는)을 포함할 수 있다. 다른 하나의 예를 들어 말하자면, 모바일 광대역 장치는 통신 기능(애플리케이션이 텍스트 메시지, 멀티미디어 메시지, 웹 페이지 등과 같은 데이터를 모바일 광대역 연결을 통해 송신 및/또는 수신하도록 허용하는), 제공 기능(provisioning capabilities)(애플리케이션이 특정한 하나의 네트워크 상에서의 사용을 위해 모바일 광대역 장치를 제공 또는 설정하도록 허용하는), 및 관리 기능(애플리케이션이 특정한 하나의 네트워크에 대한 사용을 위해 구성 세팅을 조정하도록, 특정한 하나의 네트워크를 통한 사용과 관련된 정보(송신된 및/또는 수신된 데이터의 양)를 획득하도록 하는 등을 허용하는) 등을 포함할 수 있다. 시스템(200)을 구현하는 컴퓨팅 장치에 연결된 하드웨어 장치의 기능은 애플리케이션(202) 이외의 시스템의 운영 시스템이나 그 외 다른 컴포넌트에게 알려질 필요가 없다(그렇지만 대안적으로는 알려질 수 있다).
하드웨어 장치의 특정한 기능 클래스를 액세스하기 위하여, 애플리케이션(202)은 장치 중개자(206)에게 원하는 기능을 액세스하려는 요청을 제출한다. 장치 중개자(206)는 예컨대 도 1의 장치 중개자(112)일 수 있다. 애플리케이션(202)은 다양한 서로 다른 방식으로 장치 중개자(206)에게 요청을 제출할 수 있다. 하나 이상의 실시예들에 있어서, 애플리케이션(202)은, 애플리케이션(202)이 그들 기능을 액세스하기 위하여 사용할 수 있는, 하드웨어 장치의 원하는 기능들에 대한 핸들(handle)(또는 그 외 다른 식별자)을 오픈(open)하라는 또는 생성하라는 요청을 제출한다. 요청은 예를 들어 장치 인터페이스 클래스에 대한 핸들을 오픈하라는 요청일 수 있다. 이 요청에 대한 응답으로, 장치 중개자(206)는 애플리케이션(202)이 요청된 기능을 액세스하도록 허용되어 있는지 여부를 결정하기 위해 장치 허가 레코드(208)(도 1의 장치 허가 레코드(114)일 수 있다)를 체크한다. 장치 중개자(206)는 오직 장치 허가 레코드(208)가 애플리케이션(202)이 그 요청된 기능을 액세스하도록 허용된다는 것을 가리키는 경우에만 요청된 기능에 대한 요청된 핸들(또는 그 외 다른 식별자)을 리턴한다. 요청된 기능에 대한 이 핸들(또는 그 외 다른 식별자)은, 하드웨어 장치와 연관된 하나 이상의 장치 드라이버(예컨대 소프트웨어 또는 펌웨어)의 식별정보(dientification), 하드웨어 장치와 연관된 하나 이상의 장치 드라이버의 하나 이상의 API(application programming interface)의 식별정보 등과 같은, 다양한 형태를 취할 수 있다. 하나 이상의 실시예들에 있어서, 장치 중개자(206)(또는 적어도 장치 허가 레코드(208)를 체크하는 장치 중개자(206) 부분)는 애플리케이션(202)이 장치 허가 레코드(208)를 체크하는 장치 브로커(206)에 의해 변조(tempering)되지 않도록 막기 위하여 시스템(200)의 신뢰받는 컴포넌트(신뢰받는 코어의 일부 또는 운영 시스템의 신뢰받는 부분과 같은)로서 구현된다.
장치 허가 레코드(208)는 기능 식별자(214), 및 연관된 동의 타입(consent type)(216)을 포함한다. 시스템(200)을 포함하는 컴퓨터 장치 상에 설치된 하드웨어 장치의 각각의 기능 콜렉션 또는 클래스는 대응하는 기능 식별자(214)를 가진다. 각각의 기능 식별자(214)는, 애플리케이션이 기능 식별자(214)에 의해 식별되는 기능 클래스를 액세스하기 위하여, 만약 있다면, 어떤 타입의 동의가 필요한 지를 가리키는 연관된 동의 타입(216)을 가진다. 따라서, 동일 하드웨어 장치에 대한 서로 다른 기능 클래스는, 애플리케이션이 이러한 서로 다른 기능 클래스를 액세스하기 위하여 필요한 서로 다른 타입의 동의를 가리키는, 서로 다른 연관된 동의 타입을 가질 수 있다. 애플리케이션이 기능 식별자(214)에 의해 식별되는 기능 클래스를 액세스하기 위하여 필요한 동의 타입에 따라서, 기능 식별자는 또한 연관된 애플리케이션 식별자(ID, identifier) 리스트(218)를 가질 수 있다. 각각의 애플리케이션 ID 리스트(218)는 연관된 기능 식별자(214)에 의하여 나타나는 기능에 액세스하도록 허용되는 하나 이상의 애플리케이션 식별자의 리스트이다.
하나 이상의 실시예들에 있어서, 각각의 기능 식별자(214)는 특정 타입의 하드웨어 장치의 특정 기능 클래스 또는 콜렉션을 식별하는 장치 인터페이스 클래스이다. 예를 들어, 기능 식별자(214)는 카메라 타입의 장치의 이미지 캡쳐 기능의 식별자, 카메라 타입의 장치의 카메라 구성 기능의 식별자, 모바일 광대역 타입의 장치의 통신 기능의 식별자, 모바일 광대역 타입의 장치의 제공 기능의 식별자 등일 수 있다. 동일한 타입의 다수의 서로 다른 하드웨어 장치(예컨대, 다수의 서로 다른 카메라)는 동일한 장치 인터페이스 클래스의 일부로서 포함될 수 있다. 장치 인터페이스 클래스는 운영 시스템(예컨대, 도 1의 운영 시스템(102))의 일부로서 및/또는 그 외 다른 엔터티(예컨대, 하드웨어 장치 설계자 또는 판매자)에 의하여 정의될 수 있다.
시스템(200)이 동작하는 동안에, 컴퓨팅 장치 상에 설치된 특정 하드웨어 장치와 연관된 장치 드라이버는, 컴퓨팅 장치의 운영 시스템과 함께, 해당 특정 하드웨어 장치를 위한 장치 인터페이스 클래스의 인스턴스(instance)를 등록한다. 운영 시스템은 해당 특정 하드웨어 장치와 해당 장치 인터페이스 클래스의 인스턴스를 연관시키고, 어떻게 애플리케이션(애플리케이션(202)와 같은)이 해당 인스턴스의 기능을 액세스할 수 있는지에 대한 표시물(indication)을 유지한다. 하나 이상의 실시예들에서, 이 표시물은 장치의 인스턴스에 대한 핸들이다. 대안적으로, 이 표시물은 그 외 다른 방식으로, 예컨대 포인터, 링크, 또는 기능에 대한 그 외 다른 식별자로 구현될 수 있다. 비록 본 명세서에서 핸들이 논의되지만, 어떻게 애플리케이션이 인스턴스의 기능을 액세스할 수 있는지에 대한 그 외 다른 표시물이 핸들과 유사한 방식으로 사용될 수 있다. 해당 특정 하드웨어 장치의 기능을 액세스하기 위하여, 애플리케이션(202)은, 장치 중개자(206)로부터, 해당 인스턴스에 대한 핸들을 요청한다. 장치 중개자(206)는 오직 장치 허가 레코드(208)가 해당 애플리케이션(202)이 해당 특정 장치 인터페이스 클래스를 액세스하도록 허용한다는 것을 가리키는 경우에만 특정 장치 인터페이스 클래스의 인스턴스를 위한 핸들을 리턴한다.
대안적으로, 기능 식별자(214)는 장치 인터페이스 클래스 대신 그 외 다른 방식으로 하드웨어 장치 또는 하드웨어 장치의 타입을 나타낼 수 있다. 하나 이상의 실시예들에 있어서, 장치 인터페이스 클래스 대신 그 외 다른 하드웨어 장치의 카테고리 또는 그룹이 유지되며, 각각의 이러한 카테고리 또는 그룹은 동의 타입(216)과 연관된다. 이들 카테고리 또는 그룹은 다른 방식으로, 예컨대, 동일 배포자에 의해 제공된 또는 동일 판매자에 의해 제조된 장치들의 콜렉션, 특정 회사, 그룹, 또는 그 외 다른 엔터티에 의해 평가되었거나 승인된 장치들의 콜렉션 등과 같이 정의될 수 있다. 그 외 다른 실시예들에 있어서, 개별적인 하드웨어 장치는 각각 장치 인터페이스 클래스 대신 동의 타입들과 연관될 수 있다. 개별적인 하드웨어 장치는 다른 방식으로, 예컨대 하드웨어의 배포자 또는 판매자에 의해 할당된 모델 번호 또는 그 외 다른 식별자, 하드웨어 장치와 연관된 장치 드라이버의 식별자 등에 의해 식별될 수 있다.
그러므로, 예를 들어 말하자면, 기능 식별자(214)는 특정 하드웨어 장치에 대한 특정 장치 인터페이스 클래스의 인스턴스를 특정하는 하드웨어 인스턴스 ID 일 수 있다. 다른 하나의 예를 들어 말하자면, 기능 식별자(214)는 특정 하드웨어 장치의 모델 ID일 수 있고, 이 모델 ID는 특정 하드웨어 장치의 다양한 특성을 나타낸다(예컨대, 판매자의 제조 식별자, 클래스 식별자, 개정 식별자, 이들의 조합 등).
각각의 동의 타입(consent type)(216)은, 애플리케이션이 연관된 기능 식별자(214)에 의해 식별되는 기능 클래스를 액세스하기 위하여, 만약 있다면, 어떤 타입의 동의가 필요한지를 가리킨다. 다양한 타입의 동의가 동의 타입(216)으로 식별될 수 있다. 하나 이상의 실시예들에 있어서, 각각의 동의 타입(214)은 허용(allow), 거절(deny), 프롬프트(prompt), 또는 특권적(privileged) 중 하나 이상이다. 허용 동의 타입은 연관된 기능에 대한 액세스가 허용된다(애플리케이션이 하드웨어 장치에 대한 액세스를 요청하는지에 상관없이)는 것을 가리킨다. 거절 동의 타입은 연관된 기능에 대한 액세스가 허용되지 않는다(애플리케이션이 하드웨어 장치에 대한 액세스를 요청하는지에 상관없이)는 것을 가리킨다. 프롬프트 동의 타입은 시스템(200)을 구현하는 컴퓨팅 장치의 사용자에게 애플리케이션이 연관된 기능을 액세스하는 것에 대한 찬성을 구하는 프롬프트가 제공된다는 것을 가리킨다. 특권적 동의 타입은 연관된 기능에 대한 액세스가 특권적인 애플리케이션에 대해서만 허용된다는 것을 가리킨다.
만약 동의 타입(216)이 특정 기능 식별자(214)가 특권적 동의 타입이라는 것을 가리켰다면, 장치 허가 레코드(208)는 또한 그 기능 식별자(214)와 연관된 애플리케이션 ID 리스트(218)를 포함한다. 만약 특정 기능 식별자(214)에서 가리키는 동의 타입(216)이 특권적 동의 타입이 아닌 다른 것이라면(예컨대, 허용, 거절, 또는 프롬프트 동의 타입이라면), 해당 특정 기능 식별자(214)와 연관된 애플리케이션 ID 리스트(218)는 장치 허가 레코드(208) 내에 포함되어야 할 필요가 없다. 각각의 애플리케이션 ID 리스트(218)는 연관 기능 식별자(214)에 의해 식별되는 기능을 액세스하도록 허용된 또는 허가된 하나 이상의 애플리케이션 식별자의 리스트이다(예컨대, 특권적인 애플리케이션). 만약 기능에 대한 동의 타입이 특권적 동의 타입이고 애플리케이션(202)이 애플리케이션(202)이 액세스를 요청한 하드웨어 장치의 기능의 기능 식별자(214)와 연관된 애플리케이션 ID 리스트 내에 포함되어 있지 않다면, 애플리케이션(202)은 그 하드웨어 장치의 기능에 대한 액세스를 거절당한다. 대안적으로, 만약 기능에 대한 동의 타입이 특권적이라면, 특권적 동의 타입의 표시물은 기능 식별자(214)와 연관된 동의 타입(216)과 같이 포함될 필요가 없다. 그 보다는, 기능 식별자(214)와 연관된 애플리케이션 ID 리스트(218)의 존재는 기능 식별자(214)와 연관된 동의 타입이 특권적 동의 타입이라는 것을 내재적으로 가리킬 수 있다.
하드웨어 장치의 기능(또는 하드웨어 장치의 타입) 및 그 기능을 액세스하도록 허용된 애플리케이션 식별자의 이러한 연관은 또한 하드웨어 장치와 애플리케이션의 결합(binding)이라고도 지칭된다. 만약 애플리케이션(202)의 식별자가 기능 식별자(214)와 연관된 애플리케이션 ID 리스트 내에 포함되어 있다면, 애플리케이션(202)은 연관 기능 식별자(214)에 의해 식별되는 기능에 결합된다. 그러나, 만약 애플리케이션(202)의 식별자가 기능 식별자(214)와 연관된 애플리케이션 ID 리스트 내에 포함되어 있지 않다면, 애플리케이션(202)은 연관 기능 식별자(214)에 의해 식별되는 기능에 결합되지 않는다.
애플리케이션(202)을 위한 애플리케이션 식별자는 다양한 서로 다른 방식으로 생성될 수 있다. 하나 이상의 실시예들에 있어서, 애플리케이션(202)을 위한 애플리케이션 식별자는 해시값(hash value)을 생성하도록 애플리케이션(202) 및/또는 애플리케이션(202)의 메타데이터에 암호 기술의 해시 함수를 적용함으로써 생성된다. 다양한 서로 다른 암호 기술의 해시 함수 중 임의의 것, 예컨대 SHA-1(Secure Hash Algorithm 1) 또는 SHA-2, Whirlpool, Tiger, FSB(Fast Syndrome-based hash functions) 등이 사용될 수 있다. 장치 중개자(206), 또는 장치 중개자(202)에 의해 신뢰받는 다른 컴포넌트 또는 모듈은 애플리케이션(202)을 위한 해시값을 생성할 수 있다. 애플리케이션(202)을 위한 해시값은 서로 다른 시점에 생성될 수 있는데, 예를 들어 애플리케이션(202)을 위한 해시값이 미리 생성되었다가 장치 중개자(206)에게 제공될 수 있다(예컨대, 애플리케이션(202)이 시스템(200)을 포함하는 컴퓨팅 장치 상에 설치될 때, 애플리케이션(202)이 실행되기 시작할 때 등에 생성되는). 애플리케이션(202)을 위한 해시값이 미리 생성되는 경우에, 생성된 이후 해시값이 변경되지 않도록(또는 해시값의 변경이 검출되도록)하는 조치가 취해진다. 예를 들어, 해시값은 장치 중개자(206)에 의해 신뢰받는 엔터티에 의해 디지털 서명될 수 있다. 대안적으로, 애플리케이션(202)의 해시값은 그 외 다른 시점에, 예컨대 원하는 하드웨어 장치에 액세스하기 위한 애플리케이션(202)으로부터의 요청에 응답하여 생성될 수 있다.
대안적으로, 애플리케이션(202)을 위한 애플리케이션 식별자는 그 외 다른 방식으로 생성될 수 있다. 예를 들어, 하나의 식별자가 애플리케이션(202)에 할당(예컨대, 애플리케이션(202)의 개발자 또는 배포자에 의해)되고 신뢰받는 엔터티( 장치 중개자(206)에 의해 신뢰받는 컴포넌트, 모듈, 장치, 또는 그 외 다른 엔터티)에 의해 디지털 서명될 수 있다. 장치 중개자(206), 또는 장치 중개자(206)에 의해 신뢰받는 다른 컴포넌트 또는 모듈은, 애플리케이션(202)의 애플리케이션 식별자가 장치 중개자(206)에 의해 신뢰받을 수 있다는 것을 검증하기 위하여 애플리케이션(202)을 위한 디지털 서명을 검증할 수 있다. 디지털 서명은 원하는 하드웨어 장치에 액세스하기 위한 애플리케이션(202)으로부터의 요청에 응답하여, 또는 위에서 논의된 바와 같이 애플리케이션(202)을 위한 해시값의 생성과 유사한 그 외 다른 시점에 검증될 수 있다.
장치 허가 레코드(208)는 다양한 시점에 생성되고 수정될 수 있다. 하나 이상의 실시예들에 있어서, 장치 중개자(206)를 포함하는 운영 시스템(도 1의 운영 시스템(102)과 같은)은 초기 장치 허가 레코드(208)를 포함한다. 시스템(200)을 구현하는 컴퓨팅 장치에 새 하드웨어가 설치되는 때에 추가 장치 인터페이스 클래스 및 연관 허가 엔트리가 장치 허가 레코드(208)에 추가될 수 있다. 장치 인터페이스 클리스 및 연관 허가 엔트리는 또한 시스템(200)에 대한 갱신(update) 중에 추가되거나, 제거되거나, 및/또는 수정될 수도 있다. 그러므로, 특정 하드웨어 장치 및/또는 하드웨어 장치의 특정 기능(및 그들의 기능 식별자)은, 컴퓨팅 장치가 제조되거나 조립될 때 시스템(200)을 구현하는 컴퓨팅 장치의 운영 시스템에게 알려져 있을 필요는 없으며, 그보다 더 나중 시점에 컴퓨팅 장치에 추가될 수 있다. 더 나아가, 하드웨어 장치의 특정 기능 및 그 기능의 기능 식별자는 시스템(200)을 구현하는 컴퓨팅 장치의 운영 시스템에게 정의될 필요가 없거나 또는 그들의 기능이 알려질 필요가 없다. 그보다, 특정 기능과 연관된 기능 식별자는, 그들 기능이 어떤 것인지를 알고 있는 운영 시스템(및 시스템(200)의 그 외 다른 컴포넌트)이 없을 때, 장치 허가 레코드(208) 및, 그들 기능을 액세스하는 것이 허용(장치 허가 레코드(208)에 기초하여)될 수 있는 애플리케이션(202)에게 알려져 있는 기능에 추가될 수 있다.
하나 이상의 실시예들에 있어서, 시스템(200)은 장치 설치 파일 및 데이터(232)를 수신하거나 또는 획득하는 설치 관리자(230)를 포함한다. 장치 설치 파일 및 데이터(232)는 하드웨어 장치를 위한 장치 드라이버로서 시스템(200)을 구현하는 컴퓨팅 장치 상에 설치되는 하나 이상의 파일 및/또는 데이터를 포함한다. 장치 설치 파일 및 데이터(232)는 새로운 하드웨어 장치가 시스템(200)을 구현하는 컴퓨팅 장치 상에 설치되는 때에 설치 관리자(230)에 의해 획득된다. 예를 들어, 장치 설치 파일 및 데이터(232)는 새로운 하드웨어 장치가 시스템(200)을 구현하는 컴퓨팅 장치 상에 설치되는 때에 원격 소스로부터 자동 다운로드될 수 있다. 장치 설치 파일 및 데이터(232)는 다양한 형태, 예컨대 장치 드라이버, 설정 정보 파일(예컨대 INF 파일), 장치 드라이버와 연관된 메타데이터, 매니페스트(manifests) 등의 형태를 취할 수 있다.
설치 관리자(230)는 장치 설치 파일 및 데이터(232) 내에서 허가 정보를 특정하고 그 허가 정보를 장치 허가 레코드(208)에 추가한다. 이 허가 정보는 장치 허가 레코드(208)에 대해 이루어져야 할 변화를 식별한다. 예를 들어, 이 허가 정보는 특정 장치 인터페이스 클래스를 위한 애플리케이션 ID 리스트에 추가되어야 할(또는 제거되어야 할) 하나 이상의 새로운 애플리케이션 식별자를 포함할 수 있다. 다른 하나의 예를 들면, 이 허가 정보는 레코드(208)에 추가되는 하나 이상의 새로운 장치 인터페이스 클래스 및 연관 허가 엔트리를 포함할 수 있다. 또 다른 하나의 예를 들면, 이 허가 정보는 허가의 타입에 있어서의 변화(예컨대, 프롬프트 동의 타입에서 특권적 동의 타입으로 특정 장치 인터페이스 클래스와 연관된 동의 타입을 변화시키는 것, 또는 그 반대의 경우)를 포함할 수 있다. 위에서 논의된 애플리케이션(202)을 위한 해시값과 유사하게, 생성된 이후 장치 설치 파일 및 데이터(232) 내의 허가 정보가 변경되지 않도록(또는 허가 정보의 그러한 변경이 검출될 수 있도록)하는 조치가 취해진다. 예를 들어, 허가 정보는 설치 관리자(230)에 의해 신뢰받는 엔터티에 의해 디지털 서명될 수 있다.
유사하게 설치 관리자(230)는 또한 장치 갱신 파일 및 데이터(234)를 수신하거나 또는 획득할 수 있다. 장치 갱신 파일 및 데이터(234)는 장치 허가 레코드(208)에 대해 이루어져야 할 변화를 식별한다는 점에서 장치 설치 파일 및 데이터(232)와 유사하다. 그러나, 장치 갱신 파일 및 데이터(234)는 시스템(200)을 포함하는 컴퓨팅 장치 상에 이미 설치되어 있는 하드웨어 장치를 위한 장치 드라이버 및/또는 그 외 다른 데이터를 갱신하기 위하여 설치 관리자(230)에 의해 획득된다. 장치 갱신 파일 및 데이터(234)는 다양한 형태, 예컨대 장치 드라이버, 설정 정보 파일(예컨대, INF 파일), 장치 드라이버와 연관된 메타데이터, 매니페스트 등의 형태를 취할 수 있다. 장치 갱신 파일 및 데이터(234)는 장치 설치 파일 및 데이터(232)에 포함되어 있는 허가 정보와 유사하게 설치 관리자(230)가 장치 허가 레코드(208)에 추가하는 다양한 허가 정보를 나타낼 수 있다. 위에서 논의된 장치 설치 파일 및 데이터(232) 내의 허가 정보와 유사하게, 생성된 이후 장치 갱신 파일 및 데이터(234) 내의 허가 정보가 변경되지 않도록(또는 허가 정보의 그러한 변경이 검출될 수 있도록)하는 조치가 취해진다. 예를 들어, 허가 정보는 설치 관리자(230)에 의해 신뢰받는 엔터티에 의해 디지털 서명될 수 있다.
장치 설치 파일 및 데이터(232)(및/또는 장치 갱신 파일 및 데이터(234))는 동일 장치의 서로 다른 기능들에 추가될 서로 다른 애플리케이션 ID들을 포함할 수 있다는 점이 주목되어야 한다. 애플리케이션은 하드웨어 장치의 모든 기능들에 대해 액세스를 허용받을 필요는 없다. 예를 들어, 설치 및/또는 갱신 데이터는 모바일 광대역 장치의 제공 기능을 식별하는 기능 식별자(214)에 추가되어야 할 하나의 애플리케이션 ID, 및 그 모바일 광대역 장치의 관리 기능을 식별하는 기능 식별자(214)에 추가되어야 할 다른 하나의 애플리케이션 ID를 식별할 수 있다.
하나 이상의 실시예들에 있어서, 시스템(200)을 구현하는 컴퓨팅 장치 상에 설치되고 있는 하드웨어 장치는 확장 마크업 언어(XML, eXtensible Markup Language) 파일인 연관 메타데이터 파일 및 INF 파일인 연관 설정 정보 파일을 가진다. 유사하게, 하나 이상의 실시예들에 있어서, 시스템(200)을 구현하는 컴퓨팅 장치 상에 이미 설치되어 있고 갱신되고 있는 하드웨어 장치는 연관 메타데이터 XML 파일 및/또는 INF 파일을 가질 수 있다. INF 파일은 설치 관리자(230)에게 설치될 특정 파일 및 그들 파일이 컴퓨팅 장치 상에서 어느 곳에 설치되어야 할 것인가, 필요한 세팅(예컨대, 운영 시스템 레지스트리와 같은 운영 시스템 스토어 내에) 등을 가리킬 수 있다. INF 파일은 또한 장치의 기능을 액세스하기 위한 특정 장치 인터페이스 클래스(예컨대, GUID(globally unique identifier) 또는 장치 인터페이스 클래스들이 서로 구별될 수 있도록 허용하는 그 외 다른 식별자를 사용하여) 뿐만 아니라 이들 장치 인터페이스 클래스 중 각각과 연관되어 있는 동의 타입을 특정할 수 있다. 메타데이터 XML 파일은, 특권적 동의 타입을 가지는 INF 파일 내에서 특정되는 각각의 장치 인터페이스 클래스에 대하여, 해당 장치 인터페이스 클래스의 기능을 액세스하도록 허용된 하나 이상의 애플리케이션 ID를 포함한다. 그러나, 기능 식별자, 동의 타입, 및/또는 애플리케이션 ID 리스트는 메타데이터 XML 및 INF 파일이 아닌 다른 방식으로 장치 설치 파일 및 데이터(232) 및/또는 장치 갱신 파일 및 데이터(234) 내에 포함될 수 있다는 점이 주목되어야 한다.
또한 장치 허가 레코드(208)는 그 외 다른 시점에 및/또는 그 외 다른 이벤트에 응답하여 수정될 수 있다는 점이 주목되어야 한다. 예를 들어, 시스템(200)의 사용자 또는 관리자는 장치 허가 레코드(208)에 대해 이루어질 특정 변화를 가리키는(예컨대, 특정 기능 식별자와 연관되어질 특정 동의 타입을 식별하는, 특정 기능 식별자와 연관된 애플리케이션 ID 리스트에 추가될 특정 애플리케이션 ID를 식별하는 등) 입력을 제공할 수 있다. 그러한 입력은 시스템(200)의 구성 사용자 인터페이스를 액세스하는 시스템(200)의 사용자 또는 관리자에 의하여, 연관 기능을 액세스하기 위해 애플리케이션을 위한 승인용 프롬프트가 주어졌을 때 "허용" 옵션을 선택하는 시스템(200)의 사용자에 의하여(예컨대, "허용" 옵션의 사용자 선택에 응답하여 애플리케이션의 식별자는 특정 기능 식별자와 연관되어 있는 애플리케이션 ID 리스트에 추가될 수 있다) 등에 의하여 제공될 수 있다.
하나 이상의 실시예들에서, 장치 허가 레코드(208)는 레코드(208)를 갱신하도록 허용되는 컴포넌트 또는 모듈을 제한하는 보안 방식으로 저장된다. 예를 들어, 장치 허가 레코드(208)는, 오직 특정 컴포넌트 또는 모듈(예컨대, 설치 관리자(230)의 모듈 또는 모듈들, 또는 오직 장치 중개자(206)를 포함하는 운영 시스템의 모듈)에 의해서만, 선택적으로 오직 특정 시점(예컨대, 시스템(200)을 포함하는 컴퓨팅 장치를 부팅하는 과정 동안)에서만 예컨대 다양한 종래의 신뢰받는 부팅 기술 또는 보안 부팅 기술을 사용하여 수정될 수 있다. 다른 하나의 예를 들면, 장치 허가 레코드(208)는 디지털 서명될 수 있고(예컨대 설치 관리자(230) 또는 장치 중개자(206)에 의해 신뢰받는 다른 엔터티에 의하여), 레코드(208)에 대한 디지털 서명이 검증된 경우에만 장치 중개자(206)에 의해 사용될 수 있다.
장치 허가 레코드(208)는 다수의 기능 식별자 및 연관 동의 타입 및/또는 애플리케이션 ID 리스트를 포함하는 표로서 도 2에 도시되어 있다. 비록 표로 도시되어 있으나, 장치 허가 레코드(208)는 다양한 서로 다른 데이터 구조 또는 스토리지 기술을 사용하여 구현될 수 있다는 점이 주목되어야 한다. 또한 장치 허가 레코드(208)는 다수의 스토어(store)들 또는 표들로 분리될 수 있다는 점도 주목되어야 한다. 예를 들어, 장치 허가 레코드(208)는 2개의 스토어를 가질 수 있는데, 한 스토어는 기능 식별자(214) 및 연관 동의 타입(216)을 포함하고, 다른 하나의 스토어는 기능 식별자(214) 및 연관 애플리케이션 ID 리스트(218)를 포함할 수 있다.
덧붙여서, 시스템(200)을 구현하는 컴퓨팅 장치에게 알려져 있는 하드웨어 장치의 리스트는 정적일 필요가 없다(비록 대안적으로는 정적일 수 있지만)는 점이 주목되어야 한다. 하드웨어 장치가 시스템(200)을 구현하는 컴퓨팅 장치에 추가될 때, 장치 허가 레코드(208)는 어떻게 동의 타입이 애플리케이션(202)에 의한 액세스를 위한 후속적인 요청에 따라 시스템(200)을 구현하는 컴퓨팅 장치에 추가되는 하드웨어 장치의 새로운 인스턴스에 적용될 것인지를 적절하게 반영하도록 관리된다. 하드웨어 장치의 새로운 인스턴스는 기능 식별자(214)가 이미 장치 허가 레코드(208)에 포함된 기능을 가지고 있는 하드웨어 장치를 지칭한다. 예를 들어, 하나의 특정 카메라(카메라의 한 인스턴스)는 시스템(200)을 구현하는 컴퓨팅 장치에 이미 연결되어 있을 수 있고, 두번째 카메라(카메라의 새로운 인스턴스)가 이 컴퓨팅 장치 상에 설치될 수 있다. 카메라의 기능에 대한 기능 식별자(214)는, 설사 이 두번째 카메라가 컴퓨팅 장치 상에 설치되는 새로운 카메라라 할지라도, 장치 허가 레코드(208) 내에 이미 포함되어 있을 수 있다.
하나 이상의 실시예들에 있어서, 장치 중개자(206)는 하나 이상의 다양한 정책 또는 규칙을 시스템(200)을 구현하는 컴퓨팅 장치 상에 설치된 하드웨어 장치의 새로운 인스턴스에 적용한다. 예를 들어, 장치 중개자(206)는, 장치 허가 레코드(208) 내의 특정 기능 식별자(214)에 의해 특정되는 동의 타입이 하드웨어 장치가 설치된 때와 상관없이 해당 특정 기능 식별자(214)에 의하여 특정되는 기능 클래스를 액세스하려고 요청하는 모든 애플리케이션에 대해 적용가능하다고, 결정할 수 있다. 다른 예를 들면, 장치 중개자(206)는, 하드웨어 장치의 새로운 인스턴스에 있어서 특정 기능 식별자(214)에 의해 식별되는 기능 클래스에 대한 액세스는 적절한 동의가 사용자로부터 획득되지 않는 한 거절된다고, 결정할 수 있다(예컨대, 사용자는 하드웨어 장치의 새로운 인스턴스가 액세스되는 것에 대한 승인용 프롬프트를 제공받거나, 또는 사용자는 하드웨어 장치의 새로운 인스턴스가 컴퓨팅 장치 상에 이미 설치되어 있는 하드웨어 장치의 그 외 다른 인스턴스와 동일한 방식으로 취급되는 것에 대한 승인용 프롬프트를 제공받는다). 대안적으로, 어떻게 동의가 하드웨어 장치의 새로운 인스턴스에 적용되어야 하는가에 대한 더 상세한 결정이 이루어질 수 있다(예컨대, 그것에 대한 액세스가 요청되고 있는 특정 기능 식별자(214) 또는 그 기능 식별자(214)와 연관된 특정 동의 타입(216)에 기초하여).
더 나아가, 하나 이상의 실시예들에 있어서 특정 애플리케이션은 특정 하드웨어 장치의 기능을 액세스하는 것에 있어 제한된다. 그러한 제한은, 예를 들어, 특정 판매자(예컨대, 제조자, 배포자 등)로 하여금 어떤 애플리케이션이 해당 판매자의 하드웨어 장치의 기능을 액세스할 수 있는지 제한하도록 허용한다(그 외 다른 판매자로부터의 그 외 다른 하드웨어 장치가 동일한 기능을 지원하는지 여부와는 상관없이). 그러한 제한은 서로 다른 방식들로 구현될 수 있다. 예를 들어, 서로 다른 기능 식별자(214)들은 서로 다른 하드웨어 장치들에 대해 사용될 수 있다(비록 이들 서로 다른 기능 식별자들에 의해 식별되는 기능들이 동일할 수 있지만). 다른 예를 들면, 하드웨어 장치와 연관된 데이터(예컨대, 운영 시스템에 초기에 포함되어 있는 데이터, 장치 설치 파일 및 데이터(232) 내의 데이터, 장치 갱신 파일 및 데이터(234) 내의 데이터 등)는 특정 애플리케이션 ID를 가지는 애플리케이션에 의해 액세스될 수 있는 특정 하드웨어 장치(예컨대, 하드웨어 장치 판매자, 하드웨어 장치 모델 등에 의해 식별되는)의 표시물을 포함할 수 있다. 이들 하드웨어 장치의 표시물은, 예컨대 장치 허가 레코드(208) 내의 특정 애플리케이션 ID와 이들 하드웨어 장치들의 표시물을 연관시킴으로써, 유지될 수 있다. 이러한 예를 따라, 장치 중개자(206)는 오직 애플리케이션(202)의 애플리케이션 ID가 해당 기능 클래스와 연관된 애플리케이션 ID 리스트(218) 내에 포함되어 있는 경우 및 해당 특정 하드웨어 장치가 해당 기능 클래스를 위한 애플리케이션 ID 리스트(218) 내에서 애플리케이션(202)의 애플리케이션 ID와 연관된 경우에만 애플리케이션(202)이 특정 하드웨어 장치의 기능 클래스를 액세스하도록 허용할 수 있다.
도 3은 하나 이상의 실시예들에 따라 장치 허가 레코드를 변화시키는 예시적인 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)는, 도 1의 컴퓨팅 장치(100)와 같은, 컴퓨팅 장치에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(300)는 한 세트의 단계(act)들로서 도시되는데 다양한 단계의 동작들을 수행하기 위해 도시된 순서만으로 제한되는 것은 아니다. 프로세스(300)는 장치 허가 레코드를 변화시키기 위한 예시적인 프로세스이고; 장치 허가 레코드를 변화시키는 것에 대한 추가적인 논의가 서로 다른 도면들을 참조하여 본 명세서에 포함되어 있다.
프로세스(300)에서, 하드웨어 장치와 연관된 설치 또는 갱신 데이터가 획득된다(단계(302)). 이 데이터는, 컴퓨팅 장치 상에 하드웨어 장치의 설치 중에, 및/또는 컴퓨팅 장치 상에 이미 설치되어 있는 하드웨어 장치를 위한 장치 드라이버 및/또는 그 외 다른 데이터를 갱신하는 중에 사용된다. 데이터는 예를 들어 도 2의 장치 설치 파일 및 데이터(232) 및/또는 장치 갱신 파일 및 데이터(234)에서 얻은 데이터일 수 있다.
설치 또는 갱신 데이터가 새로운 또는 갱신된 동의 타입을 포함하고 있는지 여부에 대하여 체크된다(단계(304)). 새로운 동의 타입은 컴퓨팅 장치 상에 설치되고 있는 새로운 하드웨어 장치의 기능을 위한 동의 타입을 지칭할 뿐만 아니라, 컴퓨팅 장치 상에 이미 설치된 하드웨어 장치의 새로운 기능을 위한 동의 타입도 지칭한다. 갱신된 동의 타입은 컴퓨팅 장치 상에 이미 설치된 하드웨어 장치의 기능을 위한 동의 타입에 있어서의 변화를 지칭한다.
만약 설치 또는 갱신 데이터가 새로운 또는 갱신된 동의 타입을 포함한다면, 장치 허가 레코드는 획득된 설치 또는 갱신 데이터에 기초하여 갱신된다(단계(306)). 장치 허가 레코드의 이러한 갱신은 장치 허가 레코드에 대한 다양한 변화들, 예컨대 장치 허가 레코드에 새로운 동의 타입을 추가하는 것, 컴퓨팅 장치 상에 이미 설치되어 있는 하드웨어 장치의 기능을 위한 동의 타입을 변화시키는 것 등을 포함한다.
덧붙여서, 설치 또는 갱신 데이터가 애플리케이션 ID 리스트에 대한 변화를 포함하고 있는지 여부에 대하여 체크된다(단계(308)). 애플리케이션 ID 리스트에 대한 변화는 컴퓨팅 장치 상에 설치되고 있는 또는 이미 설치되어 있는 하드웨어 장치의 기능을 액세스하도록 허용되어질 하나 이상의 애플리케이션들의 식별자들에 대한 변화(예컨대, 추가하는, 삭제하는 등)를 지칭한다. 애플리케이션 ID 리스트에 대한 변화는, 위에서 논의된 바와 같이, 특권적 동의 타입과 연관된 기능을 위한 설치 또는 갱신 데이터 내에 포함될 수 있다.
이루어져야 할 장치 허가 레코드의 애플리케이션 ID 리스트에 대한 변화는 설치 또는 갱신 데이터로부터 식별된다(단계(310)). 이 식별 단계는 하드웨어 장치의 특정 기능을 액세스하도록 허용되어 있는 애플리케이션의 식별자를 식별하는 것, 또는 하드웨어 장치의 특정 기능을 액세스하도록 허용되어 있지 않은 애플리케이션의 식별자를 식별하는 것일 수 있다.
장치 허가 레코드의 애플리케이션 ID 리스트는 획득된 설치 또는 갱신 데이터에 기초하여 갱신된다(단계(312)). 단계(312)에서의 이러한 갱신은, 추가 사용자 동의 없이 하드웨어 장치의 특정 기능을 액세스하도록 허용되는 것으로서 장치 허가 레코드의 애플리케이션의 식별자를 저장하는 과정(예컨대, 특정 기능과 연관된 애플리케이션 ID 리스트에 식별자를 추가하는 과정), 애플리케이션이 하드웨어 장치의 특정 기능을 액세스하도록 허용되어 있지 않도록 장치 허가 레코드에서 애플리케이션의 식별자를 제거하는 과정(예컨대, 특정 기능과 연관된 애플리케이션 ID 리스트로부터 식별자를 제거하는 과정) 등을 포함할 수 있다.
장치 허가 레코드가 설치 또는 갱신 데이터에 기초하여 임의의 새로운 또는 갱신된 동의 타입을 반영하기 위하여 갱신되거나, 및/또는 애플리케이션의 식별자에 대한 임의의 변화를 반영하기 위하여 갱신된 이후, 단계(302)에서 획득된 데이터에 기초한 설치 또는 갱신은 완료된다(단계(314)). 추가적인 설치 또는 갱신 데이터는 나중 시점에 획득될 수 있고, 프로세스(300)는 반복될 수 있으며, 결과적으로 장치 허가 레코드에 대한 추가 변화들이 추가적인 설치 또는 갱신 데이터에 기초하여 이루어질 수 있다.
대안적으로, 단계(302)에서 획득된 설치 또는 갱신 데이터가 하드웨어 장치의 새로운 인스턴스를 위한 설치 데이터인 경우, 단계(304) 내지 단계(314)는 오직 사용자로부터 적절한 동의가 수신된 이후에만 수행될 수 있다. 그러므로, 장치 허가 레코드의 동의 타입에 대한 변화 및 장치 허가 레코드의 애플리케이션 ID 리스트에 대한 변화는 모두, 그러한 변화가 사용자에 의해 승인되지 않는 한, 하드웨어 장치의 새로운 인스턴스를 위한 설치에 기초하여 이루어지지 않는다.
도 4는 하나 이상의 실시예들에 따라 하드웨어 장치의 기능을 액세스하려는 요청에 응답하기 위한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 도 1의 컴퓨팅 장치(100)와 같은 컴퓨팅 장치에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(400)는 한 세트의 단계들로서 도시되며 다양한 단계들의 동작을 수행하기 위하여 도시된 순서만으로 제한되지 않는다. 프로세스(400)는 하드웨어 장치의 기능에 액세스하려는 요청에 대해 응답하는 예시적인 프로세스이고; 하드웨어 장치의 기능을 액세스하려는 요청에 대한 응답 과정에 대한 추가적인 논의는 서로 다른 도면들을 참조하여 본 명세서에 포함되어 있다.
프로세스(400)에서, 하드웨어 장치의 능력을 액세스하려는 요청이 수신된다(단계(402)). 이러한 요청은 위에서 논의된 바와 같이 장치 중개자에서 수신된다.
장치 허가 레코드가 애플리케이션이 그 기능을 액세스하도록 허용되는 것을 가리키는지 여부에 대하여 체크된다(단계(404)). 이러한 체크는, 예를 들어, 기능과 연관된 동의 타입이 특권적 동의 타입인지 여부를 체크함으로써, 그리고 만약 그렇다면 애플리케이션의 식별자가 하드웨어 장치의 기능과 연간된 애플리케이션 ID 리스트에 포함되어 있는지 여부를 체크함으로써 이루어진다. 이러한 체크는 통상적으로, 위에서 논의된 바와 같이, 애플리케이션이 체크를 부정하게 변경하거나 또는 그렇지 않더라도 간섭하는 것에 대항하여 보호하기 위하여, 프로세스(400)를 구현하는 컴퓨팅 장치의 운영 시스템의 신뢰받는 부분에서 이루어진다.
만약, 단계(404)의 체크에 기초하여, 애플리케이션이 기능에 액세스하도록 허용된다고 결정된다면, 요청은 허용되고 애플리케이션은 기능을 액세스하도록 허용된다(단계(406)). 이러한 허용은, 예를 들어, 위에서 논의된 바와 같이, 애플리케이션에게 핸들 또는 요청된 기능의 그 외 다른 식별자를 리턴하는 것일 수 있다. 그러나, 만약 단계(404)의 체크에 기초하여 애플리케이션이 기능에 액세스하도록 허용되지 않는다고 결정된다면, 요청은 거절되고 애플리케이션은 기능을 액세스하도록 허용되지 않는다(단계(408)). 이러한 거절은, 예를 들어, 위에서 논의된 바와 같이, 애플리케이션에게 핸들 또는 요청된 기능의 그 외 다른 식별자의 리턴을 거부하는 것일 수 있다.
그러므로, 본 명세서에서 논의된 장치 기능과 애플리케이션의 결합 기술은 하드웨어 장치의 서로 다른 기능들이 오직 특정 애플리케이션에게만 액세스가능하도록 허용한다. 예를 들어, 프린터 판매자들은 그들이 배포하는 프린터를 관리하는 애플리케이션을 배포하여, 그들이 개발하거나 승인(및 선택적으로 다른 프린터 판매자들이 개발하거나 또는 승인)한 프린터 관리용 애플리케이션만이 프린터를 관리하도록 허용할 수 있지만 반면 모든 애플리케이션들은 프린터를 사용하여 데이터를 프린트하도록 허용할 수도 있다. 다른 하나의 예를 들면, 판매자는 새로운 하드웨어 장치 및 그 하드웨어 장치를 사용하는 애플리케이션을 개발할 수 있고, 또한 오직 판매자가 개발한 애플리케이션만이 그 하드웨어 장치를 사용하도록 허용할 수 있다.
더 나아가, 본 명세서에서 논의된 장치 기능과 애플리케이션의 결합 기술을 사용하는 시스템은 확장가능하다. 어떤 애플리케이션이 하드웨어 장치를 액세스하도록 허용되는가는 시간에 따라 변할 수 있다. 덧붙여서, 오직 개발자 또는 판매자가 하드웨어 장치를 액세스할 수 있도록 원하는 애플리케이션만이 그 하드웨어 장치에 액세스할 수 있는 새로운 하드웨어 장치(예컨대 하나 이상의 새로운 장치 인터페이스 클래스를 가지는)가 시스템 상에 설치될 수 있다.
도 5는 하나 이상의 실시예들에 따라 장치 기능과 애플리케이션의 결합을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(500)를 도시한다. 컴퓨팅 장치(500)는, 예를 들어, 도 1의 컴퓨팅 장치(100)일 수 있고 및/또는 도 2의 시스템(200)을 구현할 수 있다.
컴퓨팅 장치(500)는 하나 이상의 프로세서 또는 프로세싱 유닛(502), 하나 이상의 메모리 및/또는 스토리지 컴포넌트(506)를 포함할 수 있는 하나 이상의 컴퓨터 판독가능 매체(504), 하나 이상의 입력/출력(I/O) 장치(508), 및 다양한 컴포넌트들과 장치들이 상호 통신할 수 있도록 허용하는 버스(510)를 포함한다. 컴퓨터 판독가능 매체(504) 및/또는 하나 이상의 I/O 장치(508)는 컴퓨팅 장치(500)의 일부로서 포함될 수 있고, 또는 대안적으로 컴퓨팅 장치(500)에 연결될 수 있다. 버스(510)는 하나 이상의 서너개 타입의 버스 구조를 대표하며, 다양한 버스 아키텍처를 사용하는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 가속 그래픽 포트, 프로세서 또는 로컬 버스 등을 포함한다. 버스(510)는 유선 버스 및/또는 무선 버스를 포함할 수 있다.
메모리/스토리지 컴포넌트(506)는 하나 이상의 컴퓨터 스토리지 매체를 대표한다. 컴포넌트(506)는 휘발성 매체(랜덤 액세스 메모리(RAM)과 같은), 및/또는 비휘발성 매체(읽기 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은)를 포함할 수 있다. 컴포넌트(506)는 고정된 매체(예컨대, RAM, ROM, 고정 하드 드라이브 등) 뿐만 아니라 탈거가능 매체(예컨대, 플래시 메모리 드라이브, 탈거가능 하드 드라이브, 광 디스크 등)를 포함할 수 있다.
본 명세서에서 논의된 기술은, 하나 이상의 프로세싱 유닛(502)에 의해 실행되는 인스트럭션(instructions)을 가진, 소프트웨어로 구현될 수 있다. 서로 다른 인스트럭션이 컴퓨팅 장치(500)의 서로 다른 컴포넌트들 내에, 예컨대 프로세싱 유닛(502) 내에, 프로세싱 유닛(502)의 다양한 캐시 메모리 내에, 장치(500)의 그 외 다른 캐시 메모리 내에(미도시), 그 외 다른 컴퓨터 판독가능 매체 내에 등에 저장될 수 있다는 점이 이해되어야 한다. 덧붙여서, 인스트럭션이 컴퓨팅 장치(500) 내에서 저장되는 위치는 시간에 따라 변화할 수 있다는 점이 이해되어야 한다.
하나 이상의 입력/출력 장치(508)는 사용자가 명령 및 정보를 컴퓨팅 장치(500)로 입력하도록 허용하며, 또한 정보가 사용자에게 및/또는 그 외 다른 컴포넌트나 장치에게 제공되도록 허용한다. 입력 장치의 예에는 키보드, 커서 컨트롤 장치(예컨대, 마우스), 마이크로폰, 스캐너 등이 포함된다. 출력 장치의 예에는 디스플레이 장치(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등이 포함된다.
여기서, 다양한 기술들이 소프트웨어 또는 프로그램 모듈의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 소프트웨어는 특정 태스크를 수행하거나 또는 특정 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 애플리케이션, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 이들 모듈 및 기술의 구현은 컴퓨터 판독가능 매체의 몇몇 형태 상에 저장될 수 있거나 또는 컴퓨터 판독가능 매체의 몇몇 형태 사이에 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 장치에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예를 들어 그리고 제한이 아닌 것으로 말하자면, 컴퓨터 판독가능 매체는 "컴퓨터 스토리지 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 스토리지 매체"는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 그 외 다른 데이터와 같은 정보의 저장을 위한 임의의 방법이나 기술로 구현되는 휘발성 및 비휘발성, 탈거가능 및 비-탈거가능 매체를 포함한다. 컴퓨터 스토리지 매체에는 RAM, ROM, EEPROM, 플래시 메모리 또는 그 외 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 그 외 다른 광 스토리지, 자기 카세트, 자기 테잎, 자기 디스크 스토리지 또는 그 외 다른 자기 스토리지 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 그 외 다른 매체가 포함되지만 이것들로 제한되는 것은 아니다.
"통신 매체"는 통상적으로, 반송파 또는 그 외 다른 전송 메커니즘과 같은, 변조 데이터 신호 형태의 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 그 외 다른 데이터를 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조 데이터 신호"란 신호 형태로 정보를 인코드하는 방식으로 변화되거나 하나 이상의 그것의 특성을 가지는 신호를 의미한다. 예를 들어 그리고 제한이 아닌 것으로 말하자면, 통신 매체는 유선 네트워크 또는 직접-유선 연결과 같은 유선 매체, 및 음향, RF, 적외선, 및 그 외 다른 무선 매체와 같은 무선 매체를 포함한다. 위의 것들 중 임의의 조합도 역시 컴퓨터 판독가능 매체의 범위 내에 포함된다.
일반적으로, 본 명세서에서 기술된 임의의 기능이나 기술은 소프트웨어, 펌웨어, 하드웨어(예컨대, 고정된 로직 회로), 수동 프로세싱, 또는 이들 구현들의 조합으로 구현될 수 있다. 본 명세서에서 사용된 바와 같은 용어 "모듈" 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우, 모듈 또는 컴포넌트는 프로세서(예컨대, CPU 또는 CPU들) 상에서 실행되었을 때 특정한 태스크를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 장치에 저장될 수 있으며, 이것에 관한 추가 설명은 도 5를 참조하여 기재되어 있다. 본 명세서에서 기술된 장치 기능과 애플리케이션의 결합 기술의 특징은 플랫폼-독립적인데, 이것의 의미는 그 기술이 다양한 프로세서들을 가지는 다양한 상업적인 컴퓨팅 플랫폼 상에서 구현될 수 있다는 것이다.
비록 본 발명 주제가 구조적인 특징 및/또는 방법론적 단계에 관한 구체적인 언어로 기술되었으나, 첨부된 청구범위에서 한정된 본 발명 주제는 위에서 기술된 구체적인 특징들이나 단계들로 제한될 필요가 없다는 점이 이해되어야 한다. 그보다, 위에서 기술된 구체적인 특징들과 단계들은 청구범위를 구현하는 예시적인 형태로서 개시된다.

Claims (20)

  1. 컴퓨팅 장치에서의 방법으로서,
    애플리케이션으로부터, 상기 컴퓨팅 장치 상에 설치된 하드웨어 장치의 복수의 기능(capabilities) 중 제1 기능을 식별하는 기능 식별자의 인스턴스에 대한 핸들을 오픈(open)하거나 생성(create)하라는 요청을 수신하는 단계 - 상기 컴퓨팅 장치는 상기 기능 식별자의 상기 인스턴스를 상기 제1 기능과 연관시키고, 상기 기능 식별자의 상기 인스턴스에 대한 상기 핸들은 상기 애플리케이션이 다른 복수의 기능을 액세스하는 것을 허용하지 않으면서 상기 제1 기능을 액세스하는 방법의 표시(indication)임 - 와,
    상기 컴퓨팅 장치에 의해, 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용되는 것으로서 장치 허가 레코드 내에서 식별되는지 여부를 체크하는 단계 - 상기 장치 허가 레코드는 상기 기능 식별자와 연관된 상이한 동의 타입(consent type)을 갖는 상기 복수의 기능 각각에 대한 기능 식별자를 유지하고, 상기 기능 식별자와 연관된 상기 동의 타입은 각각의 기능 식별자에 대해, 상기 애플리케이션이 상기 복수의 기능 각각을 액세스하기 위해 필요로 하는 동의 타입을 나타냄 - 와,
    상기 장치 허가 레코드가 상기 애플리케이션이 상기 하드웨어 장치의 기능을 액세스하도록 허용됨을 나타내는 경우 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하게 허용하도록 상기 핸들을 상기 애플리케이션으로 리턴(return)하고, 그렇지 않은 경우 상기 요청을 거절하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 체크하는 단계는 상기 애플리케이션의 식별자를 획득하는 단계 및 상기 애플리케이션의 상기 식별자가 상기 하드웨어 장치의 상기 제1 기능과 연관된 것으로서 상기 장치 허가 레코드 내에 포함되어 있는지 여부를 체크하는 단계를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 요청은 상기 하드웨어 장치의 상기 제1 기능을 식별하는 장치 인터페이스 클래스를 액세스하려는 요청을 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 요청은 특정 판매자로부터의 하드웨어 장치를 액세스하려는 요청을 포함하며, 상기 거절하는 단계는 오직 상기 장치 허가 레코드가 상기 애플리케이션이 상기 특정 판매자로부터 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용됨을 나타내는 경우에만 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 장치 허가 레코드는 각각의 기능 식별자에 대하여 기능의 집합에 액세스하도록 허용된 하나 이상의 애플리케이션 식별자의 연관 리스트를 포함하고,
    상기 방법은 상기 컴퓨팅 장치 상에 새로운 하드웨어 장치를 설치하는 동안 추가 기능 및 상기 추가 기능과 연관된 적어도 하나의 애플리케이션 식별자의 추가적인 리스트를 추가하는 단계를 더 포함하는
    방법.
  6. 컴퓨터 실행가능 인스트럭션(computer-executable instructions)을 포함하는 컴퓨팅 장치로서,
    상기 인스트럭션은 실행될 때 상기 컴퓨팅 장치로 하여금,
    하드웨어 장치와 연관된 설치 데이터를 획득하는 동작과,
    상기 설치 데이터로부터, 상기 하드웨어 장치의 복수의 기능 중 제1 기능 및 상기 복수의 기능 각각에 대한 허가 정보를 액세스하도록 허용된 애플리케이션의 식별자를 식별하는 동작과,
    상기 애플리케이션이 다른 복수의 기능을 액세스하는 것을 허용하지 않으면서 상기 하드웨어 장치의 상기 제1 기능의 인스턴스를 액세스하는 방법의 표시를 유지하는 동작과,
    상기 애플리케이션의 상기 식별자 및 상기 허가 정보를 장치 허가 레코드 내에 저장하는 동작을 포함하는
    오퍼레이션(operations)을 수행하게 하되,
    상기 저장하는 동작은 상기 애플리케이션의 상기 식별자를, 추가적인 사용자 동의 없이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용된 것으로서 저장하는 동작을 포함하고,
    상기 장치 허가 레코드는 상이한 기능 식별자와 연관된 상이한 동의 타입을 갖는 상기 복수의 기능 각각에 대한 기능 식별자를 유지하며,
    기능과 연관된 상기 동의 타입은 각각의 기능 식별자에 대해, 상기 애플리케이션이 상기 복수의 기능 각각을 액세스하기 위해 필요로 하는 동의 타입을 표시하고,
    상기 허가 정보는 상기 장치 허가 레코드에서 행해질 변화를 식별하는
    컴퓨팅 장치.
  7. 제 6 항에 있어서,
    상기 오퍼레이션은 상기 컴퓨팅 장치 상에 상기 하드웨어 장치를 설치하는 동안 상기 식별하는 동작 및 상기 저장하는 동작을 수행하는 것을 포함하는
    컴퓨팅 장치.
  8. 제 6 항에 있어서,
    상기 오퍼레이션은,
    상기 하드웨어 장치와 연관된 갱신 데이터를 획득하는 동작과,
    상기 갱신 데이터로부터, 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용된 추가적인 애플리케이션의 식별자를 식별하는 동작과,
    상기 추가적인 애플리케이션의 상기 식별자를 상기 장치 허가 레코드 내에 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용되어 있는 것으로서 저장하는 동작을 더 포함하는
    컴퓨팅 장치.
  9. 제 6 항에 있어서,
    상기 장치 허가 레코드는 상기 복수의 기능 각각에 대하여, 기능의 집합을 액세스하도록 허용된 하나 이상의 애플리케이션 식별자의 연관 리스트를 포함하고,
    상기 애플리케이션의 식별자를 저장하는 동작은 상기 애플리케이션 식별자를 상기 제1 기능과 연관된 상기 하나 이상의 애플리케이션의 식별자의 리스트에 추가하는 동작을 포함하는
    컴퓨팅 장치.
  10. 제 6 항에 있어서,
    상기 하드웨어 장치의 상기 제1 기능은 상기 하드웨어 장치의 상기 제1 기능에 대한 액세스가 오직 애플리케이션 식별자의 리스트 내에서 식별된 특권적인(priviledged) 애플리케이션과 연관되고,
    상기 하드웨어 장치의 상기 복수의 기능 중 제2 기능은 상기 하드웨어 장치의 상기 제2 기능에 대한 액세스가 어떤 애플리케이션이 상기 하드웨어 장치의 상기 제2 기능에 대한 액세스를 요청하는가에 상관없이 허용된다는 것을 나타내는 동의 타입과 연관되는
    컴퓨팅 장치.
  11. 제 2 항에 있어서,
    상기 애플리케이션의 상기 식별자는 상기 애플리케이션의 메타데이터에 암호화 해시 함수를 적용하여 생성된 해시 값을 포함하고, 상기 해시 값은 상기 체크하는 단계를 수행하는 상기 컴퓨팅 장치의 모듈에 의해 신뢰된 엔티티에 의해 디지털 서명되는
    방법.
  12. 제 3 항에 있어서,
    상기 장치 허가 레코드는 상기 장치 인터페이스 클래스를 액세스하도록 허용된 하나 이상의 애플리케이션 식별자의 리스트를 포함하고,
    상기 체크하는 단계는 상기 애플리케이션의 식별자가 상기 하나 이상의 애플리케이션 식별자의 리스트 내에 포함되었는지 여부를 체크하는 단계를 포함하는
    방법.
  13. 제 1 항에 있어서,
    상기 장치 허가 레코드는 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용된 하나 이상의 애플리케이션 식별자의 리스트를 포함하고,
    상기 방법은 상기 컴퓨팅 장치 상에 새로운 하드웨어 장치를 설치하는 동안 하나 이상의 새로운 애플리케이션 식별자를 상기 하나 이상의 애플리케이션 식별자의 리스트에 추가하는 단계를 더 포함하는
    방법.
  14. 제 5 항에 있어서,
    상기 기능 식별자들 각각은 장치 인터페이스 클래스를 포함하는
    방법.
  15. 제 5 항에 있어서,
    상기 기능 식별자들 각각은 하드웨어 인스턴스 식별자 및 모델 식별자를 포함하는
    방법.
  16. 제 1 항에 있어서,
    상기 상이한 동의 타입은,
    상기 하드웨어 장치에 대한 액세스를 요청하는 애플리케이션에 상관없이 연관 기능에 대한 액세스가 허용됨을 나타내는 허가 동의 타입과,
    상기 하드웨어 장치에 대한 액세스를 요청하는 애플리케이션에 상관없이 상기 연관 기능에 대한 액세스가 허용되지 않음을 나타내는 거절 동의 타입과,
    상기 컴퓨팅 장치의 사용자가 상기 애플리케이션이 상기 연관 기능에 액세스하기 위한 승인이 프롬프트되어야 함을 나타내는 프롬프트 동의 타입과,
    상기 연관 기능에 대한 액세스는 특권적인 애플리케이션에 대해서만 허용됨을 나타내는 특권적 동의 타입을 포함하되,
    상기 특권적 동의 타입은 기능 식별자와 연관된 애플리케이션 ID 리스트를 포함하고, 상기 애플리케이션 ID 리스트는 상기 기능 식별자와 연관된 기능을 액세스하도록 허용된 하나 이상의 애플리케이션의 식별자의 연관 리스트를 포함하는
    방법.
  17. 제 6 항에 있어서,
    상기 장치 허가 레코드는 각각의 기능 식별자에 대하여, 상기 기능 식별자에 의해 식별된 기능을 액세스하도록 허용된 하나 이상의 애플리케이션 식별자의 연관 리스트를 포함하고,
    상기 애플리케이션의 상기 식별자를 저장하는 동작은 상기 기능 식별자들에 상기 하드웨어 장치의 상기 제1 기능을 식별하는 새로운 기능 식별자를 추가하는 동작과,
    상기 새로운 기능 식별자와 연관된 하나 이상의 애플리케이션 식별자의 새로운 리스트를 추가하는 동작을 포함하는
    컴퓨팅 장치.
  18. 제 6 항에 있어서,
    상기 오퍼레이션은,
    상기 애플리케이션으로부터, 상기 하드웨어 장치의 상기 제1 기능을 액세스하려는 요청을 수신하는 동작과,
    상기 컴퓨팅 장치의 신뢰된 컴포넌트에 의하여, 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용되는 것으로서 상기 장치 허가 레코드 내에서 식별되는지 여부를 체크하는 동작과,
    상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용된 것을 나타내는 상기 장치 허가 레코드에 의해 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용하는 동작을 더 포함하는
    컴퓨팅 장치.
  19. 제 6 항에 있어서,
    상기 오퍼레이션은,
    추가적인 애플리케이션으로부터, 상기 하드웨어 장치의 상기 제1 기능에 액세스하려는 요청을 수신하는 동작과,
    상기 추가적인 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용된 것으로서 상기 장치 허가 레코드 내에서 식별되는지 여부를 체크하는 동작과,
    상기 장치 허가 레코드가 상기 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용됨을 나타내는 경우 상기 추가적인 애플리케이션이 상기 하드웨어 장치의 상기 제1 기능을 액세스하도록 허용하고, 그렇지 않은 경우 상기 요청을 거절하는 동작을 더 포함하는
    컴퓨팅 장치.
  20. 컴퓨팅 장치에서의 방법으로서,
    특정 하드웨어 장치 유형의 하드웨어 장치와 연관된 설치 데이터를 획득하는 단계와,
    상기 설치 데이터로부터, 상기 특정 하드웨어 장치 타입의 기능의 복수의 집합 중 특정 기능의 집합과, 상기 특정 기능의 집합을 액세스하도록 허용된 하나 이상의 애플리케이션 각각의 식별자 및 각각의 기능 식별자에 대한 허가 정보를 식별하는 기능 식별자를 식별하는 단계와,
    상기 특정 기능의 집합을 액세스하도록 허용된 상기 하나 이상의 애플리케이션이 다른 복수의 기능의 집합을 액세스하도록 허용하지 않으면서 상기 하드웨어 장치의 기능 식별자의 인스턴스를 액세스하는 방법의 표시인, 상기 기능 식별자의 인스턴스에 대한 핸들을 유지하는 단계와,
    상기 하나 이상의 애플리케이션 및 상기 허가 정보의 상기 식별자 각각을 상기 기능 식별자와 연관된 것으로서 장치 허가 레코드 내에 저장하는 단계 - 상기 장치 허가 레코드는, 기능성(functionality)에 의해 그룹화되고 상기 기능 식별자와 연관된 상이한 동의 타입을 갖는 상기 기능들 각각에 대한 기능 식별자를 유지하고, 상기 기능의 집합과 연관된 동의 타입은 각각의 기능 식별자에 대해, 상기 애플리케이션이 상기 기능의 집합을 액세스하기 위해 필요로 하는 동의 타입을 표시하며, 상기 허가 정보는 상기 장치 허가 레코드에 대해 행해질 변화를 식별하고, 적어도 하나의 기능 식별자는 특정 하드웨어 장치 타입과 동종인 복수의 상이한 하드웨어 장치를 포함함 - 와,
    애플리케이션으로부터, 상기 기능 식별자의 인스턴스에 대한 핸들을 오픈하라는 요청을 수신하는 단계와,
    상기 컴퓨팅 장치에 의해, 상기 애플리케이션의 식별자는 상기 기능 식별자와 연관되는 것으로서 상기 장치 허가 레코드 내에 저장된 식별자인지 여부를 체크하는 단계와,
    상기 애플리케이션의 상기 식별자가 상기 기능 식별자와 연관되는 것으로서 상기 장치 허가 레코드 내에 저장된 식별자인 경우 상기 핸들을 상기 애플리케이션으로 리턴하고, 그렇지 않으면 상기 요청을 거절하는 단계를 포함하는
    방법.
KR1020137028934A 2011-05-02 2011-10-10 장치 기능과 애플리케이션의 결합 KR101861401B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/099,260 US20120284702A1 (en) 2011-05-02 2011-05-02 Binding applications to device capabilities
US13/099,260 2011-05-02
PCT/US2011/055629 WO2012150955A1 (en) 2011-05-02 2011-10-10 Binding applications to device capabilities

Publications (2)

Publication Number Publication Date
KR20140026451A KR20140026451A (ko) 2014-03-05
KR101861401B1 true KR101861401B1 (ko) 2018-06-29

Family

ID=47091151

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137028934A KR101861401B1 (ko) 2011-05-02 2011-10-10 장치 기능과 애플리케이션의 결합

Country Status (6)

Country Link
US (1) US20120284702A1 (ko)
EP (1) EP2705425A4 (ko)
JP (1) JP6147731B2 (ko)
KR (1) KR101861401B1 (ko)
CN (1) CN103620556A (ko)
WO (1) WO2012150955A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639688B2 (en) 2010-05-27 2017-05-02 Ford Global Technologies, Llc Methods and systems for implementing and enforcing security and resource policies for a vehicle
US8732697B2 (en) 2010-08-04 2014-05-20 Premkumar Jonnala System, method and apparatus for managing applications on a device
US9452735B2 (en) 2011-02-10 2016-09-27 Ford Global Technologies, Llc System and method for controlling a restricted mode in a vehicle
US8522320B2 (en) 2011-04-01 2013-08-27 Ford Global Technologies, Llc Methods and systems for authenticating one or more users of a vehicle communications and information system
US9635064B2 (en) * 2011-05-31 2017-04-25 Amx Llc Apparatus, method, and computer program for streaming media peripheral address and capability configuration
US8788113B2 (en) 2011-06-13 2014-07-22 Ford Global Technologies, Llc Vehicle driver advisory system and method
US10097993B2 (en) * 2011-07-25 2018-10-09 Ford Global Technologies, Llc Method and apparatus for remote authentication
US8849519B2 (en) 2011-08-09 2014-09-30 Ford Global Technologies, Llc Method and apparatus for vehicle hardware theft prevention
US9569403B2 (en) 2012-05-03 2017-02-14 Ford Global Technologies, Llc Methods and systems for authenticating one or more users of a vehicle communications and information system
JP2014123311A (ja) * 2012-12-21 2014-07-03 International Business Maschines Corporation 入力デバイスからの入力を対応するアプリケーションプログラムへと提供する装置、方法、プログラム
US8866604B2 (en) 2013-02-14 2014-10-21 Ford Global Technologies, Llc System and method for a human machine interface
US9688246B2 (en) 2013-02-25 2017-06-27 Ford Global Technologies, Llc Method and apparatus for in-vehicle alarm activation and response handling
US8947221B2 (en) 2013-02-26 2015-02-03 Ford Global Technologies, Llc Method and apparatus for tracking device connection and state change
US9141583B2 (en) 2013-03-13 2015-09-22 Ford Global Technologies, Llc Method and system for supervising information communication based on occupant and vehicle environment
US9002536B2 (en) 2013-03-14 2015-04-07 Ford Global Technologies, Llc Key fob security copy to a mobile phone
GB2514546A (en) * 2013-05-23 2014-12-03 Nec Corp Communication system
US9547607B2 (en) * 2013-06-27 2017-01-17 Microsoft Technology Licensing, Llc Brokering application access for peripheral devices
JP2015035169A (ja) * 2013-08-09 2015-02-19 ソニー株式会社 電子機器、サーバ、電子機器の制御方法、情報処理方法および記録媒体
US9473562B2 (en) * 2013-09-12 2016-10-18 Apple Inc. Mediated data exchange for sandboxed applications
US9836587B2 (en) 2014-05-20 2017-12-05 2236008 Ontario Inc. System and method for granting permission for a machine action
US9489524B2 (en) * 2014-05-23 2016-11-08 Blackberry Limited Intra-application permissions on an electronic device
US10437742B2 (en) * 2014-10-10 2019-10-08 Microsoft Technology Licensing, Llc Vendor-specific peripheral device class identifiers
US9626304B2 (en) * 2014-10-21 2017-04-18 Sandisk Technologies Llc Storage module, host, and method for securing data with application information
US9729785B2 (en) 2015-01-19 2017-08-08 Microsoft Technology Licensing, Llc Profiles identifying camera capabilities that are usable concurrently
US9930050B2 (en) * 2015-04-01 2018-03-27 Hand Held Products, Inc. Device management proxy for secure devices
US10249123B2 (en) 2015-04-09 2019-04-02 Ford Global Technologies, Llc Systems and methods for mobile phone key fob management
US10459722B2 (en) * 2015-11-24 2019-10-29 Wind River Systems, Inc. Device, system, and method for secure supervisor system calls
US10243963B1 (en) * 2015-12-18 2019-03-26 Symantec Corporation Systems and methods for generating device-specific security policies for applications
CN106528231B (zh) * 2016-11-07 2019-08-20 青岛海信移动通信技术股份有限公司 一种启动应用程序的方法和装置
US10956615B2 (en) 2017-02-17 2021-03-23 Microsoft Technology Licensing, Llc Securely defining operating system composition without multiple authoring
US10924508B2 (en) * 2017-12-21 2021-02-16 Sonicwall Inc. Providing access to data in a secure communication
CN108985088A (zh) * 2018-07-25 2018-12-11 江阴嘉恒软件技术有限公司 一种控制计算机数据访问的方法
CN109543470A (zh) * 2018-11-01 2019-03-29 郑州云海信息技术有限公司 一种存储设备安全访问方法及系统
JP7199949B2 (ja) * 2018-12-12 2023-01-06 キヤノン株式会社 情報処理装置、システム、情報処理装置の制御方法、システムの制御方法及びプログラム
CN111436047B (zh) * 2019-02-03 2022-02-18 维沃移动通信有限公司 终端能力标识的操作方法和通信设备
US11182086B2 (en) * 2019-07-19 2021-11-23 Cignet Technology, Inc. Method and system for application-based management of user data storage rights
CN116056076B (zh) * 2022-07-21 2023-10-20 荣耀终端有限公司 通信系统、方法及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070169129A1 (en) * 2006-01-18 2007-07-19 Microsoft Corporation Automated application configuration using device-provided data
US20090089463A1 (en) * 2004-11-30 2009-04-02 Nec Corporation Information Processing Device, Device Access Control Method, and Device Access Control Program

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ531131A (en) * 2001-08-13 2005-12-23 Qualcomm Inc Using permissions to allocate device resources to an application
KR100464349B1 (ko) * 2002-08-08 2005-01-03 삼성전자주식회사 디바이스 드라이버 제어 공통화 방법
US20040098591A1 (en) * 2002-11-15 2004-05-20 Fahrny James W. Secure hardware device authentication method
JP2004192100A (ja) * 2002-12-09 2004-07-08 Alps Electric Co Ltd デバイスドライバのプロテクト方法およびデバイス
US9197668B2 (en) * 2003-02-28 2015-11-24 Novell, Inc. Access control to files based on source information
JP4380198B2 (ja) * 2003-03-31 2009-12-09 株式会社日立製作所 ストレージ装置でアクセス制御を行う計算機システム
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US7546956B2 (en) * 2004-04-30 2009-06-16 Research In Motion Limited System and method of operation control on an electronic device
WO2006001524A1 (ja) * 2004-06-25 2006-01-05 Nec Corporation 移動端末、移動端末のリソースアクセス制御システムおよび移動端末におけるリソースアクセス制御方法
US20060259674A1 (en) * 2005-05-12 2006-11-16 Robert Dunstan Apparatus and method for granting access to a hardware interface shared between multiple software entities
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
JP4624942B2 (ja) * 2006-03-07 2011-02-02 日本電信電話株式会社 ホームゲートウェイソフトウェアパーミッション管理システム
US20080022376A1 (en) * 2006-06-23 2008-01-24 Lenovo (Beijing) Limited System and method for hardware access control
JP4889575B2 (ja) * 2007-06-11 2012-03-07 日本電信電話株式会社 アクセス許可設定方法、アクセス許可設定装置およびアクセス許可設定プログラム
JP2009043055A (ja) * 2007-08-09 2009-02-26 Hitachi Ltd 計算機システム、ストレージ装置及びデータ管理方法
JP5000457B2 (ja) * 2007-10-31 2012-08-15 株式会社日立製作所 ファイル共有システム及びファイル共有方法
US8176499B2 (en) * 2008-05-30 2012-05-08 Microsoft Corporation Defining, distributing and presenting device experiences
US8533797B2 (en) * 2008-06-12 2013-09-10 Microsoft Corporation Using windows authentication in a workgroup to manage application users
US8850549B2 (en) * 2009-05-01 2014-09-30 Beyondtrust Software, Inc. Methods and systems for controlling access to resources and privileges per process

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089463A1 (en) * 2004-11-30 2009-04-02 Nec Corporation Information Processing Device, Device Access Control Method, and Device Access Control Program
US20070169129A1 (en) * 2006-01-18 2007-07-19 Microsoft Corporation Automated application configuration using device-provided data

Also Published As

Publication number Publication date
US20120284702A1 (en) 2012-11-08
EP2705425A1 (en) 2014-03-12
WO2012150955A1 (en) 2012-11-08
JP2014517383A (ja) 2014-07-17
CN103620556A (zh) 2014-03-05
EP2705425A4 (en) 2015-04-08
KR20140026451A (ko) 2014-03-05
JP6147731B2 (ja) 2017-06-14

Similar Documents

Publication Publication Date Title
KR101861401B1 (ko) 장치 기능과 애플리케이션의 결합
CN107408183B (zh) 通过安全硬化管理代理进行的设备证实
CN109416720B (zh) 跨重置维护操作系统秘密
US9515832B2 (en) Process authentication and resource permissions
CN107077574B (zh) 用于客户端设备的信任服务
JP5992457B2 (ja) オペレーティングシステムのコンフィグレーション値の保護
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
EP3047375B1 (en) Virtual machine manager facilitated selective code integrity enforcement
US10878066B2 (en) System and method for controlled access to application programming interfaces
JP5314016B2 (ja) 情報処理装置、暗号鍵の管理方法、コンピュータプログラム及び集積回路
US10423791B2 (en) Enabling offline restart of shielded virtual machines using key caching
US8131997B2 (en) Method of mutually authenticating between software mobility device and local host and a method of forming input/output (I/O) channel
CN109313690A (zh) 自包含的加密引导策略验证
KR102030858B1 (ko) 디지털 서명 권한자 의존형 플랫폼 기밀 생성 기법
KR20050085678A (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
JP2004118327A (ja) コンテンツ使用制御装置及びコンテンツ使用制御方法、並びにコンピュータ・プログラム
US9910997B1 (en) Secure credential storage
US20240022418A1 (en) Cryptographic processing
EP3143749B1 (en) Restricted code signing

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant