KR101384085B1 - 보안 브라우저 기반 애플리케이션 - Google Patents

보안 브라우저 기반 애플리케이션 Download PDF

Info

Publication number
KR101384085B1
KR101384085B1 KR1020127031925A KR20127031925A KR101384085B1 KR 101384085 B1 KR101384085 B1 KR 101384085B1 KR 1020127031925 A KR1020127031925 A KR 1020127031925A KR 20127031925 A KR20127031925 A KR 20127031925A KR 101384085 B1 KR101384085 B1 KR 101384085B1
Authority
KR
South Korea
Prior art keywords
component
program code
computer program
computer
user
Prior art date
Application number
KR1020127031925A
Other languages
English (en)
Other versions
KR20130008634A (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 KR20130008634A publication Critical patent/KR20130008634A/ko
Application granted granted Critical
Publication of KR101384085B1 publication Critical patent/KR101384085B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

웹 브라우저에서 암시적 또는 명시적 동의가 수신되면 제한된 작업을 발동하도록 허가된 컴퓨터 프로그램 코드에 의한 제한된 작업의 실행 기술이 제공된다. 이 기술은 적어도 하나의 제한된 시스템 작업을 실행시키기 위한 적어도 하나의 성분 작업을 포함하는 컴퓨터 프로그램 코드 성분에 대한 위험 등급을 생성하는 단계; 및 사용자에게 상기 적어도 하나의 제한된 시스템 작업을 실행하는 허가에 대한 프롬프트를 제시하는 단계를 포함하고, 상기 프롬프트는 상기 위험 등급과 상기 성분 작업의 설명을 포함한다. 이 프로그램 코드는 웹 브라우저 플러그인을 발동시키는 웹 페이지와 연관된 스크립트 코드를 포함할 수 있고, 이어서 이 스크립트 코드는 상기 제한된 시스템 작업을 발동시킨다. 이 코드는 상기 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동시킬 수 있고, 상기 입력은 상기 작업 수행과 연관된 동작을 야기하고, 상기 동작은 상기 작업 수행에 대한 동의를 암시적으로 부여한다.

Description

보안 브라우저 기반 애플리케이션{SECURE BROWSER-BASED APPLICATIONS}
<관련 출원의 상호 인용>
본 출원은 미국출원 제61/067,872호[출원일: 2008년 3월 2일, 발명의 명칭: "네이티브 운영 체제 피처에의 보안 액세스권을 가진 브라우저 기반 애플리케이션 및 인터페이스(Browser-Based Applications and Interfaces Having Secure Access to Native Operating Features)"]의 우선권을 주장하며, 이 선출원은 그 전체 내용이 본 명세서에 포함된다.
본 발명은 일반적으로 제한된 실행 환경에서 사용자 제공 컴퓨터 프로그램 코드를 실행하는 것에 관한 것으로, 특히 웹 브라우저와 같은 보안 제한 실행 환경에서 사용자 제공 컴퓨터 프로그램 성분의 유포와 실행을 가능하게 하는 것에 관한 것이다.
웹 브라우저에서 컴퓨터 코드를 실행하는 기술은 잘 알려져 있다. 웹 페이지는 이 페이지가 Microsoft®Internet Explorer™ 브라우저, Mozilla®Firefox® 브라우저 등과 같은 브라우저에서 사용자에게 표시되는 경우에 실행될 JavaScript™와 같은 언어로 작성된 코드를 포함할 수 있다. Java® 언어, Microsoft®Jscript® 언어 및 Microsoft®C#® 언어와 같은 프로그래밍 언어로 작성된 코드는 웹 브라우저에 의해 실행되는 인터넷 서버(예컨대, 웹 사이트)로부터 다운로드될 수 있다. 어떤 타입의 코드나 데이터, 예컨대 Adobe®Flash®script나 Portable Document Format(PDF) 문서와 같은 것은 브라우저 자신이 지원, 즉 실행할 수 없지만, 브라우저는 그러한 특수한 파일 타입을 지원하는 플러그인을 이용하여 확장될 수 있다. 플러그인은 예컨대 브라우저(또는 기타 다른 애플리케이션)가 불러내는 컴퓨터 프로그램 코드 모듈로서, 브라우저의 피처(feature)를 이용하여 정보를 표시하고, 입력을 수신하고, 네트워크를 통해 데이터를 전송하는 등의 작업을 수행할 수 있는 것이다. 플러그인은 특수 피처를 제공하며, 보통은 플러그인과 연관된 소정 타입의 웹 콘텐츠의 수신에 응답하여, 예컨대 디스크로부터 로드되고 브라우저에 의해 초기화되는 것과 같이 작동된다. 플러그인은 예컨대 C나 C++과 같은 프로그래밍 언어로 작성되는데, 이를 위해 브라우저는 플러그인 Application Programming Interface(API)를 제공한다. 인터넷에서 다운로드받은 코드가 파일에 액세스하거나 원격 컴퓨터에의 네트워크 접속을 열어보는 것과 같은 기밀을 요하는 시스템 작업을 수행하지 못하도록 하는 보안 환경에서 브라우저가 실행하는 JavaScript와 같은 스크립트 코드와는 달리, 플러그인을 구현하는 코드는 보통은 컴퓨터 프로세서에 의해 실행될 수 있는 네이티브 코드(native code)이다. 이와 같은 네이티브 코드는 브라우저 실행 스크립트 코드와 동일한 수준의 보안 제한을 받지 않고 기밀을 요하는 시스템 작업을 수행할 수가 있으며, 이렇게 되면 무단으로 데이터에 액세스하거나 시스템 보안을 파괴할 수도 있다. 그러므로 알지못하거나 믿을 수 없는 소스로부터의 플러그인의 이용은 꺼려지게 되고 사용자는 잘 알지 못하는 판매처가 제공하는 플러그인은 잘 이용하지 않을 것이다. 더욱이 브라우저 플러그인을 만드는 일은 몇 가지 이유로 비교적 어렵고 비용이 많이 드는 일이다. 예컨대 보안 문제를 찾아내어 해결해야 한다. 또한 플러그인 개발에 있어 많은 브라우저는 비교적 사용하기 어려운 플랫폼 특정 프로그래밍 언어를 사용하고, 플랫폼이 지원할 플랫폼의 각 유형(예컨대 Microsoft Windows® 운영 체제, Apple® Mac OS 운영 체제, Linux® 운영 체제 등)에 대해 플러그인의 플랫폼 특정 버전을 작성하여 배포하고, 각 플랫폼이 지원하는 예컨대 Windows상의 Internet Explorer, Windows상의 FireFox, Mac OS상의 FireFox, 및 Mac OS상의 Safari® 브라우저와 같은 각 브라우저 유형에 대해 플러그인의 브라우저 특정 버전을 작성하여 배포할 필요가 있을 수 있다.
전술한 바와 같이, 컴퓨터 자원에 무단 접속하는 프로그램 코드가 일으킬 수 있는 해악 때문에 웹 브라우저가 실행하는 코드에, 특히 이 코드가 알지 못하거나 신뢰할 수 없는 서버에서 오는 코드라면, 보안 제한을 부과한다. 예컨대 대부분의 웹 브라우저는 다운로드된 코드가 파일, 네트워크, 운영 체제 인터페이스, 저장 장치 및 기타 여러 가지 다른 자원에 액세스하는 것에 제한을 두고 있다. 다운로드된 코드와 같이, 클라이언트 컴퓨터상에서 브라우저가 실행하는 코드는 파일을 삭제하고, 시스템 자원을 부당하게 사용하고, 컴퓨터에 저장된 정보를 검색하고, 보안이 취약한 컴퓨터를 찾아내고, 사용자에게 기밀 정보를 요구하고(피싱(phishing)), 컴퓨터에 바이러스를 심고, 컴퓨터를 이용하여 다른 컴퓨터를 공격하거나 이들에 바이러스를 확산시키기거나 하는 등등을 할 수 있기 때문에 이러한 코드에 대해서는 보안을 더욱 철저하게 한다. 그러므로 인터넷 익스플로어(Internet Explorer)와 같은 웹 브리우저는 사용자가 허락하지 않는 한 신뢰할 수 없는 서버로부터의 코드가 실행될 수 없도록 하고 있다.
Java 애플릿(applet), ActiveX™ 컨트롤(control) 및 Firefox 익스텐션(extension)과 같은 다운로드된 코드를 실행하는 기존의 많은 브라우저 기반 런타임 환경은 사용자에게 시스템 자원을 실행하고 이에 액세스할 수 있는 포괄적 허락을 요청한다. ActiveX control은 웹 페이지에 삽입되어 이 웹 페이지에 액세스될 때에, 즉 이 웹 페이지가 웹 서버(100)로부터 다운로드될 때에 Internet Explorer에 의해 실행될 수 있는 컴퓨터 프로그램 모듈이다. ActiveX control과 같은 코드가 웹 페이지의 일부로서 다운로드되어 Internet Explorer에서 실행하려고 하면 이 브라우저는 사용자에게 경고 메시지를 표시하여, 사용자가 이 control의 실행을 명시적으로 허락 또는 승인하지 않은 한, 또는 다른 예에서 사용자가 그 서버 또는 그 서버의 네트워크 도메인으로부터의 코드의 실행을 명시적으로 허락하지 않는 한, 전체 control의 실행을 막는다. 사용자가 이 control의 실행을 승인하면 이 control은 다양한 시스템 자원에 액세스할 수 있다.
Microsoft Windows Vista® 운영 체제와 같은 다른 기존의 런타임 환경은 예컨대 최종 사용자에게 파일 열람 허가를 요청함으로써 이 사용자에게는 별 의미가 없는 보안 정밀도(level of security granularity)를 제공한다. Java와 같은 프로그래밍 언어는 다운로드된 코드 스크립트가 보안 크리덴셜(credential) 정보, 예컨대 디지털 서명 인증서를 이용하여 컴퓨터상의 제한된 자원에 액세스하는 것을 가능하게 한다. 그러나 다운로드된 코드의 보안 크리덴셜은 노출되어 있으며, 사용자는 대개는 그 크리덴셜을 유지하는데 대해, 예컨대 크리덴셜 만료시 크리덴셜을 갱신하고 이들을 기밀로 유지하는데 대해 책임이 있다. 더욱이 사용되고 있는 (JavaScript 또는 Java와 같은) 웹 프로그래밍 언어로 작성된 프로그램은, 비록 허락이 있더라도, 이 언어가 이들 자원에 대한 인터페이스가 없기 때문에, 특수 디바이스와 같은 특정 시스템 자원을 이용할 수가 없을 수 있다. 그와 같은 자원은 C++과 같은 "네이티브" 프로그래밍 언어를 통해 액세스될 수 있지만, 네이티브 언어와 웹 프로그래밍 언어 간의 통신이 복잡할 뿐만 아니라 기존의 프로그래밍 체계는 네이티브 프로그래을 브라우저 기반 웹 애플리케이션과 통합하는 피처를 제공하지 못한다.
이와 같은 보안 제한 때문에 기존의 웹 프로그래밍 체계에서 개발된 애플리케이션은 시스템 자원 액세스와 기타 다른 퍼처 면에서 네이티브 애플리케이션이 제공하는 사용자 인터페이스와 부합하는 사용자 인터페이스를 풍부하게 제공할 능력이 떨어진다. 기존의 체계는 애플리케이션 개발자에게 보안을 보장해야 한다는 부담을 지우는 초보적인 복잡한 보안 피처를 제공할 뿐이다. 그러므로 프로그래머가 고도의 보안을 요하는 시스템 자원에 안전하게 액세스할 수 있는 웹 애플리케이션을 빠르고 쉽게 개발할 수 있도록 해주는 프로그래밍 체계를 갖출 필요가 있다.
<개요>
일반적으로, 제1 양상에서, 본 발명은, 적어도 하나의 제한된 시스템 작업을 실행시키도록 동작하는 적어도 하나의 성분 작업을 포함하는 컴퓨터 프로그램 코드 성분에 대한 위험 등급으로서, 상기 성분 또는 상기 성분과 연관된 설명이 서명된 디지털 인증서에 기초한 위험 등급을 생성하는 단계; 상기 성분 작업의 설명을 생성하는 단계; 및 사용자에게 상기 적어도 하나의 제한된 시스템 작업을 실행하는 허가에 대한 프롬프트를 제시하는 단계를 포함하고, 상기 프롬프트는 상기 위험 등급과 상기 성분 작업의 설명을 포함하는 컴퓨터 구현 방법을 제공한다.
본 발명의 실시예들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 상기 위험 등급 생성 단계는 상기 컴퓨터 프로그램 코드 성분을 실행시키는 컴퓨터 프로그램 스크립트 코드를 포함하는 웹 페이지를 수신하는 것에 응답할 수 있다. 상기 위험 등급은 최고 위험도와 최저 위험도를 포함하여 적어도 2개의 위험도 중 하나일 수 있다. 상기 사용자에게 허가에 대한 프롬프트를 제시하는 단계는 컴퓨터 프로그램 스크립트 코드와 연관된 웹 페이지를 수신하는 웹 브라우저에 응답하여 실행되는 상기 스크립트 코드에 의한 상기 성분의 제1 참조에 응답하여 발생할 수 있다. 상기 컴퓨터 프로그램 코드 성분은 컴퓨터 프로그램 스크립트 코드와 연관된 웹 페이지를 수신하는 웹 브라우저에 응답하여 실행되는 상기 스크립트 코드에 의해 상기 웹 브라우저에서 실행되는 플러그인의 발동에 응답하여 실행될 수 있다. 상기 사용자에게 허가에 대한 프롬프트를 제시하는 단계는 상기 적어도 하나의 제한된 시스템 작업에 대응하는 소정의 지정된 허가를 표시하는 단계를 포함할 수 있고, 상기 지정된 허가는 최종 사용자에 의해 상기 제한된 시스템 작업의 실행에 대한 전제 조건으로 부여될 수 있다.
일반적으로, 제2 양상에서, 본 발명은 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있도록 하는 컴퓨터 구현 방법을 제공한다. 이 방법은 서버 컴퓨터에서, 상기 제한된 시스템 작업을 발동시키는 적어도 하나의 성분 작업을 가진 적어도 하나의 성분을 포함하는 컴퓨터 프로그램 코드를 상기 클라이언트 컴퓨터에 제공하는 단계를 포함하고, 상기 컴퓨터 프로그램 코드는 상기 성분의 임플리멘테이션(implementation)을 더 포함하고, 상기 임플리멘테이션은 사용자로부터 상기 제한된 시스템 작업을 수행하는 허가를 요구하는 프롬프트를 표시하고, 추가로 상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동하고, 상기 프롬프트는 상기 성분과 연관된 위험 등급과 상기 성분 작업에 기초한다. 상기 프롬프트는 상기 성분과 연관된 상기 위험 등급을 포함할 수 있다. 상기 프로그램 코드는 웹 브라우저 플러그인일 수 있다. 상기 성분은 복수의 위험 계층 중에서 선택된 위험 계층과 연관될 수 있고, 상기 위험 등급은 상기 위험 계층에 기초한 간단한 문구일 수 있다. 상기 위험 표시자는 상기 성분이 제공하는 적어도 하나의 작업에 기초한 문구를 포함할 수 있다. 상기 성분은 임플리멘테이션 기능과 상기 임플리멘테이션 기능을 기술하는 인터페이스 정의를 포함할 수 있다. 상기 프롬프트는 상기 컴퓨터의 출력 장치상에 허가 요구를 표시할 수 있다. 상기 사용자로부터 허가를 수신하는 것은 상기 클라이언트 컴퓨터의 입력 장치를 통해 상기 사용자로부터 긍정 응답을 수신하는 것을 포함할 수 있다. 본 방법은 상기 성분과 연관된 서명 기관의 인증서를 수신하는 단계를 더 포함할 수 있고, 상기 위험 등급은 상기 인증서에 더 기초할 수 있다. 상기 제한된 시스템 작업은 파일에 액세스하는 것, 네트워크에 액세스하는 것, 디스플레이 장치에 액세스하는 것, 또는 이들의 조합을 포함할 수 있다.
일반적으로, 제3 양상에서, 본 발명은 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있도록 하는 컴퓨터 구현 방법을 제공한다. 이 방법은 서버 컴퓨터에서, 상기 제한된 시스템 작업을 발동시키는 적어도 하나의 성분 작업을 가진 적어도 하나의 성분을 포함하는 컴퓨터 프로그램 코드를 상기 클라이언트 컴퓨터에 제공하는 단계를 포함하고, 상기 코드는 웹 문서와 연관된 스크립트 코드에 의한 상기 성분의 발동에 응답하여 상기 웹 브라우저에 의해 실행되고, 상기 코드는 상기 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동하도록 동작하고, 상기 입력은 상기 작업을 수행하는 것과 연관된 동작을 야기하고, 상기 동작은 상기 작업을 수행하는 동의를 암시적으로 부여한다. 상기 동작은 상기 작업을 수행하는데 있어 적어도 하나의 단계를 포함할 수 있다.
일반적으로, 제4 양상에서, 본 발명은 웹 브라우저에 의한 웹 페이지의 수신에 응답하여 실행되는 컴퓨터 프로그램 스크립트 코드로부터 성분 작업 - 상기 성분은 제한된 시스템 작업을 실행시키도록 동작하는 적어도 하나의 작업을 포함함 -의 발동을 수신하는 단계; 및 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 성분 작업이 상기 제한된 시스템 작업을 실행시키도록 하는 단계를 포함하고, 상기 입력은 상기 작업을 수행하는 것과 연관된 동작을 야기하고, 상기 동작은 상기 작업을 수행하는 허가의 명시적 부여가 아니고, 상기 동작은 상기 작업을 수행하는 허가를 암시적으로 부여한다.
일반적으로, 제5 양상에서, 본 발명은 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있도록 하는 컴퓨터 구현 방법을 제공한다. 이 방법은 성분 작업의 발동에 응답하여 제한된 시스템 작업을 수행하는 사용자로부터의 허가를 요구하는 프롬프트를 표시하는 단계; 및 상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동하는 단계를 포함하고, 상기 프롬프트는 상기 성분 작업이 동작하는 객체 또는 서비스를 말한다.
일반적으로, 제6 양상에서, 본 발명은, 컴퓨터 프로그램 코드가 보안 제한 작업을 수행하기 위해 웹 브라우저에서 실행되도록 하는 컴퓨터 실행 명령어를 포함하는 컴퓨터 판독 매체에 있어서, 상기 명령어는 인터페이스와 상기 인터페이스의 적어도 일부를 구현하는 네이티브 언어 임플리멘테이션을 포함하는 성분을 컴퓨터 네트워크를 통해 상기 웹 브라우저에 제공하고, 상기 임플리멘테이션은 상기 웹 브라우저에서 플러그인 코드에 의한 상기 인터페이스의 발동에 응답하여 상기 네이티브 언어 임플리멘테이션을 발동하도록 동작하고, 상기 네이티브 임플리멘테이션은 상기 작업 수행 허가에 대한 프롬프트를 사용자에게 제시하도록 동작하고 상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 작업을 발동시키도록 더 동작하고, 상기 프롬프트는 상기 성분과 연관된 위험 표시자에 기초하고, 상기 프롬프트는 상기 성분과 연관된 적어도 하나의 허가 요건에 더 기초하고, 상기 프롬프트는 상기 허가 요건과 연관된 작업의 설명을 포함하고, 상기 설명은 상기 성분의 적어도 하나의 애플리케이션 특정 피처를 말한다.
본 발명의 실시예들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 컴퓨터 판독 매체는 상기 성분과 연관된 서명 기관의 인증서를 수신하는 컴퓨터 실행 명령을 더 포함할 수 있고, 상기 위험 표시자는 상기 인증서와 상기 작업에 기초한다. 상기 보안 제한된 네이티브 운영 체제 작업은 파일에 액세스하는 것, 네트워크에 액세스하는 것, 디스플레이 장치에 액세스하는 것, 또는 이들의 조합일 수 있다.
일반적으로, 제7 양상에서, 본 발명은 웹 페이지와 연관된 브라우저 기반 프로그램 코드가 브라우저 호스트 컴퓨터의 네이티브 운영 체제 자원에 선택적으로 액세스할 수 있도록 하는 컴퓨터 실행 명령어를 포함하는 컴퓨터 판독 매체를 제공한다. 상기 명령어는, 상기 브라우저 호스트 컴퓨터의 사용자로부터 상기 제한된 시스템 작업에 액세스하는 허가를 수신하는 것에 응답하여 상기 브라우저 호스트 컴퓨터상에서 제한된 시스템 작업을 수행하도록 동작하는 임플리멘테이션 기능과, 상기 브라우저 기반 프로그램 코드가 상기 임플리멘테이션 기능을 발동시킬 수 있도록 하는 인터페이스를 포함하는 성분을 수신하는 것; 상기 브라우저 기반 프로그램 코드에 의한 상기 인터페이스의 발동에 응답하여, 상기 사용자에게 상기 제한된 시스템 작업을 수행하는 허가에 대한 프롬프트를 제시하는 것; 및 상기 사용자로부터 긍정 응답을 수신하는 것에 응답하여 상기 제한된 시스템 작업을 수행하도록 상기 임플리멘테이션 기능을 발동하는 것을 포함한다.
일반적으로, 제8 양상에서, 본 발명은, 컴퓨터 실행 코드를 포함하는 컴퓨터 판독 매체에 있어서, 상기 컴퓨터 실행 코드는, 상기 컴퓨터 실행 코드의 성분을 실행하는 허가에 대한 프롬프트 - 상기 프롬프트는 상기 성분과 연관된 위험 표시자에 기초하고, 상기 프롬프트는 상기 성분과 연관된 적어도 하나의 허가 요건에 더 기초하고, 상기 프롬프트는 허가 요건과 연관된 작업의 설명을 포함하고, 상기 설명은 적어도 하나의 애플리케이션 특정 피처를 말함 -를 표시하고; 그리고 상기 사용자부터 상기 프롬프트에 대한 긍정 응답을 수신하는 것에 응답하여, 상기 허가 요건에 의해 규정된 작업을 실행하는 허가를 상기 성분에 부여하는 컴퓨터 판독 매체를 제공한다.
일반적으로, 제9 양상에서, 본 발명은, 프로세서; 상기 프로세서에 연결된 메모리; 및 상기 메모리에 제공되며, 서버 컴퓨터에서 컴퓨터 프로그램 코드를 클라이언트 컴퓨터에 제공하도록 상기 프로세서에 의해 실행될 수 있는 프로그램 명령어를 포함하고, 상기 컴퓨터 코드는 제한된 시스템 작업을 발동시키는 적어도 하나의 성분 작업을 가진 적어도 하나의 성분을 포함하고, 상기 코드는 웹 문서와 연관된 스크립트 코드에 의한 상기 성분의 발동에 응답하여 상기 웹 브라우저에 의해 실행되고, 상기 코드는 상기 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동하도록 동작하고, 상기 입력은 상기 작업을 수행하는 것과 연관된 동작을 야기하고, 상기 동작은 상기 작업을 수행하는 동의를 암시적으로 부여하는 시스템을 제공한다.
프로그래머가 고도의 보안을 요하는 시스템 자원에 안전하게 액세스할 수 있는 웹 애플리케이션을 빠르고 쉽게 개발할 수 있도록 해주는 프로그래밍 체계를 갖추도록 할 수 있다.
본 출원은 첨부도면을 참조한 하기의 상세한 설명을 통해 가장 잘 이해될 수 있다. 도면에서 동일 구성요소에 대해서는 동일 도면부호를 병기한다.
도 1a 내지 1e는 본 발명의 실시예에 따른 웹 브라우저의 성분을 실행하는 시스템의 예시도.
도 2는 본 발명의 실시예에 따른 어떤 성분에 대한 정보의 예시도.
도 3은 본 발명의 실시예에 따른 어떤 성분을 실행할 수 있는 허락을 요구하는 프롬프트의 예시도.
도 4 및 5는 본 발명의 실시예에 따른 파일 업로드 성분의 예시도.
도 6은 본 발명의 실시예에 따른 처리 기능을 구현하는데 이용될 수 있는 대표적인 컴퓨팅 시스템을 도시한 도.
하기의 상세한 설명은 당업자가 본 발명을 완성하여 이용할 수 있도록 하기 위헤 제시된 것이며 특정의 응용와 그 필요 요건과 관련하여 제공된다. 당업자라면 실시예들을 여러 가지로 쉽게 변형할 수 있을 것이며, 본 명세서에서 설명된 일반적인 원리들은 본 발명의 본질과 범위로부터 벗어남이 없이 다른 실시예와 응용에 적용될 수 있다. 더욱이 하기의 상세한 설명에서는 설명 목적상 많은 세부사항이 기재된다. 그러나 당업자라면 이러한 특정 세부사항을 이용하지 않더라도 본 발명을 실시할 수 있음을 잘 알 것이다. 여러 경우에 있어서 본 발명의 설명을 불필요하게 자세하게 하여 불명료하게 하지 않도록 하기 위해 주지의 구조와 장치는 블록도 형태로 나타낸다. 따라서 본 발명은 보여진 실시예에 한정되는 것이 아니라 본 발명의 원리와 특성에 따른 가장 넓은 범위에 따라야 하는 것이다.
본 발명은 특정 실시예와 예시적인 도면으로 설명하지만 당업자라면 본 발명이 그러한 실시예나 도면에 한정되는 것이 아님을 잘 알 것이다. 당업자라면 여러 가지 실시예의 동작은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 적당하게 이용하여 구현될 수 있음을 잘 알 것이다. 예컨대 어떤 프로세스들은 소프트웨어, 펌웨어 또는 하드 와이어드(hard-wired) 로직의 제어 하에 프로세서나 기타 다른 디지털 회로를 이용하여 실시될 수 있다. (여기서 용어 "로직"은 설명된 기능들을 실시하는 당업자라면 잘 알겠지만 고정 하드웨어, 프로그래머블 로직 및/또는 이들의 적당한 조합을 말하는 것이다.) 소프트웨어와 펌웨어는 컴퓨터 판독 매체에 저장될 수 있다. 다른 어떤 프로세스는 당업자에게 잘 알려져 있는 아날로그 회로를 이용하여 구현될 수 있다. 그 외에도 본 발명의 실시예들에서는 메모리나 기타 다른 저장 장치는 물론 통신 성분도 사용될 수 있다.
도 1a 내지 1e는 본 발명의 실시예에 따른 웹 브라우저(104)의 성분(148)을 실행하는 플랫폼의 예시도이다. 도 1a는 플랫폼의 기능 유닛 전체를 보여주며, 도 1b 내지 1e는 특정 기능 유닛의 세부를 보여준다. 성분(148)은 예컨대 웹 브라우저(104)에서 JavaScript™와 같은 웹 기반 코드에는 통상적으로 이용되지 않는 서비스들을 제공하는 컴퓨터 프로그램 코드 모듈일 수 있다. 이들 서비스는 예컨대 끌어놓기(drag-and-drop) 작업, 텍스트-음성 변환 작업, 및 기타 다른 제한된 또는 네이티브 시스템 작업과 자원(130)을 포함한다. 소프트웨어 개발자는 성분이 제공하는 하나 이상의 동작을 명시하는 인터페이스(162)와 작업들의 임플리멘테이션(implementation)(164)을 정의하여 추가 성분(148)을 추가할 수 있다. 성분의 예로는 사용자의 컴퓨터로부터의 파일을 FlickrUploader 성분에 의해 웹 브라우저(104)에 제공되는 사용자 인터페이스 영역 내로 끌어 놓음으로써 Flickr® 온라인 포토 쉐어링(photo-sharing) 서비스에 이미지를 업로드하기 위한 끌어놓기 사용자 인터페이스를 제공하는 FlickrUploader 성분을 포함한다. 다른 예시적인 성분은 텍스트-음성 변환 성분과 이미지 처리 성분(ImageAlter라 부름)을 포함한다. 성분(148)은 사용자 제공 브라우저 기반 프로그램 코드(107), 예컨대 웹 서버로부터 웹 페이지의 일부로서 다운로드된 JavaScript 코드에 이용될 수 있다. 플러그인 인터페이스(108)와 데몬(daemon)(140)을 포함하는 도 1a의 예시적인 플랫폼에 따라 그와 같은 브라우저 기반 프로그램 코드은 성분(148)을 이용할 수 있게 된다. 성분(148)은 웹 브라우저(104)에는 있지 않은 피처를 제공하기 때문에 성분(148)은 웹 페이지(106)에 이용될 수 있는 최종 사용자 머신(102)의 피처 세트를 확장한다. 성분이 제공하는 피처는 대개는 악용될 소지가 있는 제한된 시스템 작업과 자원을 이용하므로 성분이 그 제한된 작업과 자원을 최종 사용자가 명시적으로 또는 암시적으로 승인하는 방식으로 이용할 수 있도록 하는 효과적인 보안책이 필요하다.
시스템(102)은 코어 서비스(142)와, C 프로바이더 인터페이스와 Ruby™ 인터프리티드(interpreted) 프로그래밍 언어 프로바이더 인터페이스와 같은 성분 프로바이더 인터페이스(146)를 제공하는 성분 실행 로직(140)을 포함한다. 여기서는 C와 Ruby가 예시되었지만 이 성분 프로바이더 인터페이스(146)는 C++, Java 등과 같은 다른 언어도 지원할 수 있다. 성분 실행 로직(140)은 적어도 하나의 성분(160)을 포함하는 성분 세트(148)를 포함한다. 각 성분은 임플리멘테이션 기능(들)(164)과 이 임플리멘테이션 기능(들)(164)을 기술하는 인터페이스 정의(들)(162)을 포함한다. 인터페이스 정의는 예컨대 성분(160)이 제공하고 임플리멘테이션(164)에 의해 구현되는 작업(들)의 이름과 파라미터를 기술하는 JSON 매니페스트(manifest) 파일일 수 있다. 일례로서 임플리멘테이션 기능(들)(164)은, 브라우저 호스트 컴퓨터 사용자로부터 제한된 시스템 작업(들)에 대한 허가를 수신한다면, 그 작업(들)을 브라우저 호스트 컴퓨터(102) 상에서 실행한다. 즉 임플리멘테이션 기능은 사용자에게 그 기능이 실행된다면 수행할 특정의 제한된 또는 기밀을 요하는 작업(예컨대, 파일이나 네트워크 접속을 열람하는 것, 네트워크 접속을 통해 통신하는 것, 또는 프린터, 음성 합성기 또는 저장 장치 등과 같은 시스템 자원에 액세스하는 것과 같은 것)을 승인하도록 촉구한다. 각 임플리멘테이션 기능은 이 보안 프롬프트(prompt)에 대한 적당한 정밀도를 선택할 수 있다. 예컨대 임플리멘테이션 기능은 사용자에게 각 파일 액세스, 모든 파일 액세스, 웹 브라우저 세션(session) 기간동안의 파일 액세스 등을 촉구할 수 있다. 임플리멘테이션 기능(들) 중 적어도 일부는 당업자에게 잘 알려져 있는 바와 같이 네이티브 코드를 이용하여 구현될 수 있다.
제한된 시스템 작업은 예컨대 네이티브 기능(즉, C나 C++과 같은 언어로부터 불러낼 수 있으나(callable), 통상적으로 성분(148)이 Ruby와 같은 네이티브 기능에 직접 액세스하지 않는 언어로 작성될 수 있기 때문에 이 성분(148)에 직접 이용될 수는 없는 기능)일 수 있다. 이 네이티브 기능은 사용자 또는 최종 사용자 머신(102)과 연관된 사용자의 로그인 크리덴셜 또는 디지털 인증서를 제공하여 사용자의 신원과 액세스 허가를 설정함으로써 시스템 자원에 액세스한다. 네이티브 기능은 예컨대 출력 장치에 정보를 표시하고 그리고/또는 입력 장치로부터 정보를 수신하거나, 끌어놓기, 텍스트-음성 변환, 파일 브라우징 등과 같은 운영 체제 특정 기능을 수행할 수 있다. 네이티브 기능은 자기 디스크, 광 디스크, 반도체 기반 메모리 등에 저장된 데이터에 액세스할 수 있다.
그와 같은 제한된 시스템 작업은 네이티브 코드, 예컨대 머신 레벨 명령어로 컴파일되는 C나 C++과 같은 언어로 작성된 코드에 의해서만 액세스될 수 있다. Java, JavaScript 및 Ruby와 같이 웹 브라우저에서 흔히 지원되는 프로그래밍 언어는 특정 네이티브 운영 체제에 액세스하는 피처 또는 하드웨어 피처를 갖고 있지 않으며, 또는, 이 언어가 그러한 피처를 갖고 있지 않더라도, 이 피처는 대개는 이러한 피처에의 무제한적 액세스에 의해 제기되는 보안 위험 때문에 웹 브라우저(104)에 의해 작동불능으로 된다. 플러그인 인터페이스(108)는 브라우저 기반 코드(107)(예컨대 웹 서버(100)로부터 다운로드된 사용자 제공 JavaScript 코드)가, 개발자가 특정의 공용 피처을 위해 자신이 제공하는 성분 임플리멘테이션(164)의 네이티브 코드 부분을 통해 또는 내장(built-in) 네이티브 코드를 통해 그와 같은 피처에 액세스하는 성분(148)을 구현할 수 있도록 해주는 성분 실행 로직(140)을 제공함으로써, 그와 같은 제한된 피처에 액세스할 수 있도록 해준다. 일례로서 플러그인 인터페이스(108)는 ActiveX 또는 NPAPI와 같은 브라우저 플러그인 API(Application Programming Interface)를 통해 웹 브라우저(104)와 상호작용하는 브라우저 플러그인이다. (네이티브와 논네이티브 코드 부분 모두를 포함하는) 성분(148)은 물론 브라우저 기반 프로그램 코드(107)는, 최종 사용자가 제한된 작업의 발동(invocation)을 승인하는 것을 확인하는 보안 사용자 프롬프팅과 같은 보안 체크를 성분 임플리멘테이션(164)에 포함시킴으로서 또는 성분 임플리멘테이션(164) 및/또는 플러그인 공통 라이브러리(common library)(117)가 특정 타입의 허락(예컨대 IRC 접속 열람 허락)이 그 제한된 피처를 발동하기 전에 최종 사용자에게 이용될 수 있을 것을 요구함으로써, 제한된 시스템 작업을 무단 사용하지 못하게 된다.
코어 인터페이스(144)는 사용자 인터페이스 끌어놓기, 파일 액세스, 보안 사용자 프롬프팅, 텍스트-음성 변환 및 GPS 인터페이스와 같이, 운영 체제 또는 하드웨어 피처에 액세스하는 네이티브 임플리멘테이션을 포함한다. JavaScript 및 Ruby와 같은 공통 언어로부터 이들 미리 정해진 네이티브 임플리멘테이션에 액세스하는 내장 성분, 즉 미리 정해진 성분이 제공된다. 성분(148)은 끌어놓기, 파일 액세스, 보안 사용자 프롬프팅, 텍스트-음성 변환 GPS 등을 위한 성분과 같은 미리 정해진 성분을 포함한다.
일례로서, 플러그인 인터페이스(108), 코어 서비스(142) 및 성분(148)을 포함하는 시스템 모듈은, 인터넷과 같은 컴퓨터 네트워크를 통해 분배 서버(150)로부터 모듈들을 수신하는 설치 데몬(170)에 의해 최종 사용자 머신(102)에 설치된다(즉, 실행을 위해 이용된다). 설치 데몬(170)은 사용자가 설치하며 이 데몬(170)이 사용자 머신(102)에 시스템 모듈을 설치하는데 이용하는 사용자의 액세스 크리덴셜을 물려받는다. 시스템 모듈은 이 사용자 액세스 크레덴셜을 물려받고 이 크리덴셜을 이용하여 네이티브 코드를 실행하여 제한된 시스템 작업에 액세스한다.
웹 브라우저(104)는 웹 서버(100)로부터 수신된 웹 페이지(106)를 포함한다. 웹 페이지는 사용자 제공 JavaScript 코드(107)를 포함하거나 참조할 수 있다. 이 JavaScript 코드(107)는 웹 브라우저(104)가 불러낼 수 있는, 즉 발동할 수 있는 컴퓨터 프로그램 코드일 수 있는 브라우저 기반 코드의 일례이다. 또한 웹 브라우저(104)는 범용의 브라우저 플러그인 API(114)를 이용하여 브라우저 특정 플러그인 API(116)과 상호작용하는 플러그인 인터페이스(108)를 포함하고, 이 브라우저 특정 플러그인 API(116)는 다시 브라우저 코어(118)와 상호작용하여 범용 브라우저 플러그인 API(114)를 브라우저(104)와 인터페이스시킨다. 플러그인 어댑터 계층(112)은 사용자 제공 스크립트 코드(107)(예컨대 JavaScript)와, 통상적으로 웹 브라우저(104)가 웹 페이지(106)에 제공하는 스크립팅 언어 코드 실행 환경에서 이용될 수 없는 제한된 시스템 작업을 발동시킬 수 있는 네이티브 코드 플러그인 공통 라이브러리(117)(예컨대 C 또는 C++)와 상호작용하는 범용 브라우저 플러그인 API(예컨대 JavaScript) 간의 인터페이스를 제공한다. 플러그인 어댑터(112)는 예컨대 브라우저 기반 프로그램 코드(107)로부터의 성분 발동 명령에 응답하여 발동된다. 반대로 플러그인 어댑터(112)는 범용 브라우저 플러그인 API(114)에 의해, 예컨대 사용자 JavaScrip(107)에 결과문과 통지문를 제공하는 콜백(callback) 발동 형태로 발동될 수 있다.
코어 로직(140)은 전술한 바와 같은 하나 이상의 언어 특정 성분 프로바이더 인터페이스(146)를 포함한다. 성분 실행 로직(140)은 데몬, 즉 백그라운드에서 및/또는 특정 사용자와 무관하게 실행되는 프로세스로서 구현될 수 있으며, 하나 이상의 플러그인 인터페이스(108)와 통신한다. 코어 로직 데몬(140)은, 예컨대 이 데몬이 초기화될 때에 또는 성분(160)으로부터 어떤 요구가 수신될 때에, 성분들(148) 각각에 대한 인터페이스 및 임플리멘테이션을 로드한다. 이 성분 임플리멘테이션은 성분(164)이 그 언어에 대해 적당한 것으로 보는 동작 로딩 또는 링킹(linking) 프로세스(예컨대 C-언어 성분에 대해서는 동적 라이브러리 오픈 콜(open call) 또는 Ruby 성분에 대해서는 적당한 Ruby 로드 작업)을 이용하여 로드된다. 각 성분 프로바이더 인터페이스(146)는 플러그인 어댑터(112)로부터 성분 발동 요구를 수신한다. 이 성분 발동 요구는 일례로서 브라우저 프로세스의 일부인 플러그인 어댑터(112)로부터 코어 로직 데몬 프로세스(140)의 일부인 코어 서비스(142)의 코어 인터페이스(144)로의 프로세스간(interprocess) 통신을 통해 전송하는데 적합한 성분 발동 명령의 연속 버전(serialized version)이다. 코어 인터페이스(144)는 이 연속 발동 명령을 대응 성분(160)의 적당한 임플리멘테이션 기능을 발동하는 성분 프로바이더 인터페이스(146)로 전송하는데, 이 경우에 이 기능과 이 대응 성분은 성분 발동 요구에 명시되어 있다. 일례로서 프로바이더 인터페이스 로직(146)은 작업 완료에 응답하여 브라우저 호스트 컴퓨터의 사용자로부터 허가를 철회할 수 있다. 다른 예로서 프로바이더 인터페이스 로직은 브라우저 기반 프로그램 코드와 연관된 네트워크 세션의 종료에 응답하여 브라우저 호스트 컴퓨터의 사용자로부터의 허가를 철회할 수 있다.
프로바이더 인터페이스(146)는 인터페이스 정의를 플러그인 어댑터 로직에 전달할 수 있다. 타입의 인트로스펙션(introspection of types)을 제공하는 Ruby와 같은 언어에서는 이 인터페이스 정의는 사용자가 제공하는 성분 임플리멘테이션으로부터 자동적으로 도출될 수 있다. 플러그인 어댑터(112)는 그 성분으로부터 인터페이스 정의를 수신할 수 있다.
프로바이더 인터페이스(146)는 분배 서버(150), 저장 장치 또는 기타 다른 데이터 소스로부터 성분(들)(148)을 로드할 수 있다. 성분(들)(148)은 예컨대 공유 라이브러리일 수 있으며, 인터페이스 정의, 이 인터페이스의 임플리멘테이션 및 이 인터멘테이션의 도큐멘테이션(documentation)을 포함하는 패키지일 수 있다. 성분(들)(148)은 임의의 신뢰된 엔티티에 의해 제공될 수 있다. 각 성분(148)의 작업은, 이 임플리멘테이션이 사용자 허가가 요구된 뒤 어떤 시스템 자원 상에서 어떤 작업을 수행하기 전에 수신되는 것을 보장한다면, 실질적으로 안전하다(즉, 보안 파괴가 일어날 수 있는 시스템 자원에 액세스하지 못한다). 사용자 제공 JavaScript는, 사용자가 프롬프트되는 한에는 통상적으로 이 사용자 제공 JavaScript가 이 프롬프트에 어떠한 응답도 보낼 수가 없기 때문에, 컴퓨터(102)에 악의적인 행위를 할 수가 없을 것이다.
임플리멘테이션 기능은 어떤 결과물을 제공할 수 있는데, 이 경우에 프로바이더 인터페이스 로직과 플러그인 어댑터 로직은 그 결과물을 브라우저 기반 프로그램 코드에 전달, 즉 전송한다. 즉 성분(들)(148)로부터 사용자 제공 JavaScript로 소정의 응답이 반송될 수 있다.
특정 성분에 서명한 인증서와 이 성분에 대한 모든 관련 정보에 따라서는 최종 사용자가 성분 실행 허가의 위험성을 잘 이해할 수 있도록 할 수 있다. 웹 페이지가 성분을 요구하는 경우에 시스템은 성분 설명(description)을 얻는다. 이러한 설명은 서명이 있거나 없을 수 있다. 서명이 없는 성분은 "익명"이며 "모래상자형(sand-boxed)" 성분으로서 실행된다. 서명이 있는 성분의 위험도는 이 성분이 서명된 인증서에 기초하여 동적으로 그리고 안전하게 결정된다. 이러한 계층적 방식에 따라서 보안 성분의 분산적 개발이 가능해진다. 사용자에게는 성분이 제공하는 작업을 실행하는 허가를 요구하는 프롬프트가 제시된다. 사용자에게 제시된 이 프롬프트의 타입과 특성은 성분과 특정 성분 작업의 위험도에 기초한다.
전술한 바와 같이 어떤 성분에 대해서 사용자가 그 성분이 사용자의 컴퓨터에서 실행될 수 있는지 여부를 판단할 수 있도록 하는 "위험 등급(risk rating)"이 생성될 수 있다. 이 위험 등급은 그 성분에 서명한 인증서와 그 성분에 대한 기타 다른 정보에 기초한다. 이 성분에 서명한 인증서는 이 성분의 제공자를 신뢰할 수 있는 권위있는 실체(이 경우에 이 성분은 공식(official) 성분으로 생각됨)이거나, 제3자 성분(이 경우에는 인증 기관(trusted authority)이 이 성분 제공자(예컨대 발행자)의 신원이 정확하다는 것을 보증함), 또는 독립된 성분(이 경우에는 이 성분 제공자는 인증 기관에 알려짐), 또는 익명의 성분(이 경우에는 인증 기관은 이 성분의 설치나 실행에 대해서 경고함)인 것으로 인식한다. 이 위험 등급은 사용자가 그 성분의 실행 허가를 요청받은 경우에 사용자에게 전달된다. 일례로서 성분이 제공하는 하나 이상의 작업이 발동되는 경우에 이 성분이 수행할 특정의 제한된 시스템 작업을 실행하는 허가에 대한 요청이 있을 때에 사용자에게 위험 등급이 표시된다. 일례로서 이 허가 요청은 이 성분의 초기화에 응답하여 표시되는데, 이 경우에 초기화는 스크립트 코드를 포함하는 웹 페이지를 수신하는 브라우저에 응답하여 발생할 수 있고, 이 스크립트 코드는 이 성분의 작업(예컨대 방법, 절차 또는 기능)을 발동하는 진술문을 포함한다. 다른 예로서 이 허가 요청은 이 성분 실행 전에 이 스크립트 코드에 의한 특정 작업의 발동에 응답하여 표시된다.
일례로서 위험 등급들은 높은 위험에서 낮은 위험에 이르는 복수의 위험도 계층 중의 계층들에 대응한다. 계층적 위험 등급 체계는 사용자가 특정 성분 이용 시에 이용해야 하는 주의 수준을 나타낸다. 일례로서 복수 계층 각각은 전술한 위험 등급에 대응한다. 즉, 위험도는 그 성분에 서명한 인증서에 기초한다. 특정 자원에의 액세스를 필요로 하는 성분은 사용자에게 파일 열람과 같은 제한된 작업을 수행하라는 프롬프트를 제시한다. 이 프롬프트는 성분의 위험도에 따라 변한다. 이 위험도는 사용자에게 이 위험도에 기초한 간단한 문구(예컨대 "위험도 매우 낮음") 또는 이 위험도와 이 성분이 발동할 것으로 예상하는 작업에 기초한 더 구체적인 문구(예컨대 "컴퓨터에 저장된 그림을 삭제하거나 겹쳐 쓸 위험도 매우 낮음")로 제시될 수 있다.
일례로서 4가지 위험도 계층이 제공되며, 성분은 이러한 위험도 계층들 중 어느 하나와 연관될 수 있다. 위험 등급은 이러한 위험도 계층 각각과 연관될 수 있다.
계층 위험도
공식 성분 신뢰할 수 있는 귄위있는 실체가 이 성분의 진정성(integrity)을 보증함.
위험도 매우 낮음
제3자 성분 신뢰할 수 있는 권위있는 실체가 발행자의 신원이 정확함을 보증함.
위험도 낮음
독립 성분 성분의 발행자가 신뢰할 수 있는 권위있는 실체에 알려져 있음.
위험도 중간
익명 성분 신뢰할 수 있는 권위있는 실체가 이 성분의 설치에 대해 경고함.
위험도 높음
이 체계는 성분의 안전한 외부 오쏘링(authoring)을 제공한다. 인증 기관은 "문지기(gate-keeper)"로서 기능하며 이들 여러 가지 실체들에게 서명 인증서를 발행한다. 특정 성분에 서명한 인증서와 이 성분을 기술하는 관련 정보에 따라서 이 성분의 위험도에 대한 의미있는 설명이 생성되어 사용자에게 제시될 수 있다. 즉, 위험도는 이 인증서의 신뢰도에 기초하는데, 인증서 신뢰도가 높은 것이 위험도가 가장 낮다.
일례로서 성분 이용 시에, 예컨대 웹 페이지 상의 스크립트 코드가 성분을 발동할 때에 성분 설명문이 얻어진다. 이 설명문은 서명이 있거나 없을 수 있다. 서명이 없는 성분은 "익명"이며 보호된 "모래상자" 환경에서 실행된다. 서명이 있는 성분의 위험도는 이 성분이 서명된 인증서에 기초하여 동적으로 그리고 안전하게 결정된다. 이러한 계층적 방식에 따라서 분산적 성분 개발이 가능해진다. 더욱이 고위험도 부류에 속하는 성분의 실행은 디폴트로서 금지될 수 있으며, 이에 따라서 성분 개발자는 평균 사용자에 대한 위험도를 최소로 하면서 대부분의 시스템 자원 종류를 이용할 수가 있게 된다.
일례로서 성분 허가 객체(permission object)는 이 허가 객체와 연관된 특정 작업 실행 허가를 나타낸다. 성분 허가는 이름과 설명을 포함한다. 예컨대 채팅 서버에 연결되는 허가를 나타내는 허가 ConnectToChatServer는 관련 설명문 "IRC(채팅) 호스트와 접속하라"를 가질 수 있다. 이러한 성분 허가는 사용자에게 중요한 작업, 예컨대 채팅 서버에의 접속과 같은 애플리케이션 특정 작업을 나타낸다. 마찬가지로 성분 허가의 설명문은 사용자에게 주요한 용어들로 이 허가를 기술한다. 예컨대 "IRC(채팅) 호스트와 접속하라"는 "네트워크 접속을 공개하라" 또는 "범위 6667-7002에 있는 포트에서 네트워크 접속을 공개하라"보다 더 중요하다. 이 설명문의 일부인 "IRC(채팅) 호스트"는 애플리케이션 특정 피처, 예컨대 IRC 또는 채팅 호스트를 말한다. 애플리케이션을 명시하지 않고 포트 6667-7002을 수록한 설명문은 특정 애플리케이션을 말하는 것이 아니며, 따라서 애플리케이션 특정 피처를 말하는 것이 아니다.
일례로서 허가 객체에 대한 요건은 보안 기밀을 요하는 성분 작업과 연관될 수 있으며, 이 성분은 이 성분의 초기화 또는 초기 처리 중에 대응 허가 객체, 예컨대 전술한 ConnectToChatServer 허가를 얻을 것을 요구할 수 있다. 어떤 성분이 실행되어야 한다고 하면 이는 어떤 작업을 발동할 허가를 요청하고 있는 것이다. 어떤 작업에 필요한 허가 객체는 여기서 그 밖의 다른 곳에서 설명된 보안 사용자 프롬프팅을 이용하여 사용자에게 촉구함으로써 얻어질 수 있다. 사용자가 발생할 동작을 기술하는 프롬프트에 대해 긍정 "예"로 응답하면, 사용자에게 그 작업을 발동하라는 허가가 부여된다. 다른 예로서 사용자는 보안 사용자 프롬프팅을 대체할 수 있는 관련 디지털 인증서를 가질 수 있으며, 이에 따라서 사용자에게 그 작업을 발동하는 허락을 제공할 수 있다. 이 작업은 요구되는 최대 위험도와 연관될 수 있으며, 이에 따라서 이 작업의 요구되는 최대 위험도보다 낮거나 이와 같은 위험도를 가진 인증서를 가진 사용자가 이 작업을 실행할 수가 있다.
예컨대 채팅 성분은 네트워크 접속을 채팅 서버에 개방하는 "접속"이라는 이름의 작업을 포함할 수 있다. 이 채팅 성분은 일부는 예컨대 Ruby와 같은 한 언어로, 다른 일부는 예컨대 C와 같은 다른 네이티브 언어로 작성될 수 있다. 이 네이티브 언어 임플리멘테이션은 운영 체제 네트워크 접속 기능의 직접적인 발동을 포함할 수 있으며, 이 경우에 이 네이티브 언어 임플리멘테이션은 사용자와 연관된 허가의 존부를 체크하는데, 이 경우에 이 허가는 수행될 작업, 예컨대 ConnectToChatServer 허가와 같은 네트워크 접속 기능에 대응한다. 이 허가가 있으면(예컨대 사용자와 연관된다면) 이 네이티브 임플리멘테이션은 운영 체제 네트워크 접속 기능을 발동한다. 이 허가가 없으면 사용자에게 예컨대 "귀하는 이 네트워크를 통해 채팅 서버와 통신할 허가를 주겠는가? 이 동작의 위험도는 낮다."와 같은 어떤 프롬프트를 제시하는 보안 사용자 프롬프팅 사용자 인터페이스를 발동한다. 이 프롬프트는 수행될 동작을 기술하는 문구를 포함하며, 이 동작은 상기 예에서 채팅 서버에의 네트워크 접속을 설정하는 "접속" 작업인 성분 작업으로 기술된다. 이 프롬프트는 요구되고 있는 허가를 예컨대 채팅 서버와의 통신과 같은 성분 작업으로 기술한다. 이 프롬프트는 또한 예컨대 낮음과 같은 위험도를 기술한다. 이 프롬프트는 이 작업을 예컨대 그 성분의 사용자에게 그 다지 중요하지 않은 서버 "a.b.com"의 포트 7000에의 접속과 같은 기본 운영 체제 기능의 의미와는 다른 성분 작업의 의미(semantic meaning)로 기술한다.
도 2는 본 발명의 실시예에 따른 어떤 성분에 대한 메타데이터 정보의 예시도이다. 도 2는 성분 명칭(202)(ImageAlter), 타입(204)(standalone), 버전(206)(1.0.1), 코어렛(corelet)(즉, 성분) API 버전(208)(93), 설명문(210)("이미지를 국소적으로 변경하고 이를 HTTP를 통해 제공하는 ImageMagick에 기초한 코어렛"), 및 작업 명세(214)와 도큐멘테이션(216)을 포함하는 인터페이스 사양(212)을 포함하는, 예시적인 성분(200)의 특성들을 보여준다. 도 1a의 성분 실행 로직(140)은 인터페이스 사양(212)을 이용하여 (인터페이스 사양(212)에 의해 규정된) 인터페이스와 임플리멘테이션을 성분(148)으로서 등록한다. 성분 실행 로직(140)은 일례로서 인터페이스 사양(212)으로부터 각 작업의 명칭과 파라미터 타입을 추출함으로써 이 성분의 인터페이스를 결정할 수 있다. 임플리멘테이션은 예컨대 네이티브 운영 체제 기능에 액세스하는 부분에 대한 (C++과 같은 언어로 작성된) 네이티브 임플리멘테이션을 포함하는, Ruby와 같은 언어로 작성된 소스, 객체 또는 바이트 코드 형태의 프로그램 코드를 포함할 수 있다. 등록되고 나면, 브라우저 기반 코드(107)는 그 성분의 인터페이스가 제공하는 작업을 이용할 수 있다. 이 예에서 인터페이스(212)는 텍스트 형태로 규정되며 Alter라는 이름의 단일 작업을 포함한다. 이 예시적인 인터페이스 사양은 Alter(<path>file, <integer>maxwidth, <integer>maxheight, <integer>rotation, <string>quality, <list>effects, <string>format이다.
메타데이터에 추가 엔트리를 인터페이스 사양(212)의 형태로 추가함으로써 인터페이스에 추가 작업이 포함될 수 있다. 도큐멘테이션(214)은 예시적인 Alter 작업의 설명문, 즉 "이미지를 변경하여 그 결과에 액세스할 수 있는 로컬호스트(localhost) URL로 되돌아가라"를 제공한다. 이 도큐멘테이션(214)은 집적 개발 환경과 같은 개발 툴에서의 사용을 위해 자동적으로 변환될 수 있다.
도 3은 본 발명의 실시예에 따른 어떤 성분을 실행할 수 있는 허락을 요구하기 위한, 웹 브라우저에 표시된 프롬프트의 예시도이다. 도 3은 호스트 컴퓨터가 사용자 컴퓨터상에서 새로운 서비스(예컨대 성분)을 사용하고 작동시키는 허락을 요구하고 있는 것을 나타내는 프롬프트를 표시하는 프롬프트 대화상자(300)를 보여준다. 이 프롬프트는 사용자에게 요구된 허가 리스트(302)를 승인 전에 주의 깊게 검토할 것을 요청한다. 요구된 허가(302)는 디스플레이 데스크탑 통지 허가(304)와 다운로드 및 작동 서비스 허가(306)를 포함한다. 디스플레이 데스크탑 통지 허가는 허가(304)의 설명문에 옆에 표시된 체크부호로 나타낸 바와 같이 사용자가 이미 허락하였다. 다운로드 및 작동 서비스 허가(306)는 통지 서비스가 데스크탑 통지문을 전달하는 서비스임을 나타내는 통지 서비스 설명문(308)을 포함하는, 다운로드 및 작동될 서비스에 대한 상세를 더 포함한다. 사용자는 거부(Deny) 버튼(310)을 선택하여 다운로드 및 작동 허가를 거부할 수 있다. 허락 버튼(312)을 선택하여 다운로드 및 작동 서비스 실행을 허락할 수 있다. 사용자 정의 성분에 대해서는 이 성분이 브라우저 기반 코드에 의해 발동될 때에 유사한 프롬프트가 표시될 수 있다.
도 4 및 5는 본 발명의 실시예에 따른 파일 업로드 성분의 예시도이다. 파일 업로드 성분(400)은 그림 파일이 소정 영역(410)으로 끌어놓을 수 있도록 해준다. 그러면 이 파일은 이 성분에 의해 Flickr®로 업로드된다. 도 5는 픽처 디렉토리로부터 업로드된 그림(510)을 보여준다. 이 인터페이스는 변환 적용 성분(520)과 그림 크기 조정 성분(530)도 포함한다. 이들 성분은 사용자 컴퓨터상의 로컬 작업(예컨대 ImageMagick 라이브러리)을 발동하여 웹 브라우저 내로부터 그 그림을 처리한다.
일례로서, 어떤 성분이 누락되면, 성분 실행 로직(140)은 임의 수의 분배 서버에게 종속성을 해소하는 것을 포함하여 그 성분을 찾고 검색할 것을 질의한다. 성분(148)은 버저닝(versioned), 즉 버전 번호와 연관되며, 다른 성분이, 또는 최종 사용자 머신(102)의 레벨에서 플러그인 인터페이스(108)가 성분 버전을 요구할 수 있다. 일례로서 성분(148)은 버전, 예컨대 2.0.1을 구성하는 주 버전 번호, 부 버전 번호, 및 마이크로 버전 번호를 포함하는 버전과 연관된다. 성분은 예컨대 성분 그 자체를 기술하는 명칭과 조합된 성분 프로바이더의 인터넷 도메인 명칭으로 규정된 고유 명칭을 갖고 있다. 따라서 예시적인 성분 명칭은 "com.vendor.ImageAlter"이다. 버전 규정자(version specifier)는 주 및 부 번호, 또는 주, 부 및 마이크로 번호를 포함할 수 있다. 성분 버전은, 버전 규정자에 존재하는 모든 번호가 성분 버전의 대응 번호와 똑같으면, 버전 규정자와 일치한다. 일례로서 어떤 성분에 대한 요구를 만족하는 방법을 결정할 때에 3가지 리스트, 즉 최종 사용자 머신(102)에 대해서는 어떤 갱신이 이용가능한가(우선순위 1), 설치되는 성분(우선순위 2), 및 네트워크, 예컨대 분배 서버(150)로부터 얻을 수 있는 성분(우선순위 3)을 고려한다.
본 발명의 실시예들에 따라서 보안 메커니즘이 제공된다. 보안 메커니즘은 보안 사용자 프롬프팅, 암시적 동의 및 보안 자원 표시를 포함한다. 보안 사용자 프롬프팅은, 일 양상으로서, 수행될 특정 작업을 기술하는 프롬프트를 가진 대화상자를 표시하는 것을 포함한다. 이 프롬프트는 성분이 동작하는 객체 또는 서비스의 유형을 말하는 적어도 하나의 성분 특정 용어를 이용하는 작업을 기술한다. 예컨대 "사진에의 액세스 허락"이라는 프롬프트는 사진에의 액세스를 허락하는 성분이 동작하는 객체 유형인 용어 "사진"을 말한다. 다른 예로서 "인스턴트 메시징을 통한 액세스 허락"이라는 프롬프트는 인스턴트 메시징에의 액세스를 허락하는 성분이 동작하는 서비스 유형인 용어 "인스턴트 메시징"을 말한다. 성분 특정 용어는 일례로서 성분이 발동하는 기본 운영 체제 기능(들)의 설명보다 더 구체적이다. 예컨대 열람 허가를 부여하는 운영 체제 레벨 작업은 특정 애플리케이션 또는 성분 객체나 서비스와 무관하게 열람 허가에 관련된 일반적인 설명을 가질 것이다.
본 발명의 실시예들에 따라서, 암시적 동의 보안 피처는 작업 수행 허가에 대한 명시적 요구에 대한 응답이 아닌 사용자 행위에 응답하여 작업을 수행하는 사용자의 긍정 동의를 암시한다. 암시적 동의의 예로서, 잠재적으로 위험한 작업에 대한 출발점인 어떤 파일을 특정하기 위하여 사용자는 컴퓨터와 대화한다. 성분은 이러한 대화를 그 파일 상에서 어떤 작업, 예컨대 제한된 시스템 작업을 수행하는 사용자에 의한 동의로 해석할 수 있다. 마찬가지로 다른 자원 타입에 대해서는 어떤 자원 타입에의 액세스를 규제하는 성분은 사용자가 이 성분의 사용자 인터페이스와 특정 방식으로 대화하는 것에 응답하여 그 사용자가 그 자원 타입 상에서 어떤 작업을 수행할 수 있도록 해줄 수 있다. 예컨대 사용자 인터페이스 성분과의 사용자 대화는 이 사용자가 작업 수행 허가를 암시적으로 부여하는 것을 의미한다. 예컨대 파일을 웹 페이지를 표시하는 브라우저 애플리케이션으로 끄는 사용자 동작은 그 웹 페이지와 연관된 코드가 그 특정된 파일 상에서 작업(예컨대 읽거나 쓰는 것)할 수 있는 암시적 동의를 주는 것이 된다.
다른 예로서 시스템은 예컨대 어떤 성분이 요구하는 사용자 이름과 로그인 크리덴셜을 제공하는 인 컨텍스트 다이얼로그(in-context dialog)를 제시할 수 있다. 이 입력은 신뢰할 수 없는 웹 페이지(106)의 제어 밖에 있는 플러그인 공통 라이브러리(117)가 제시할 것이며, 이 경우에, 사용자에게 작업 수행 허가, 예컨대 "Flickr로의 로그인" 작업 수행 허가를 촉구하는 것이 아니라, 크리덴셜 취득을 플로우 속에 통합시킬 수 있다. 이 경우에 사용자는 특정 웹사이트를 이용하는 동안에는 Flickr 크리덴셜을 주는 것을 거절할 수 있으며, 최종 사용자는 지적 비용(intellectual expenditure)을 덜 쓰게 된다. 그러나 궁극적인 결과가 같더라도 사용자는 웹 페이지의 제어 밖에서 어떤 동작을 승인해 줄 것을 직접 요청하였다.
암시적 동의는 복수의 사용자 대화 단계의 단일 단계로의 통합을 가능하게 한다. 암시적 동의를 이용하면 사용자는 작업 수행 허가를 명시적으로 요청받지 않는다. 그 대신에 사용자의 동작으로부터 사용자의 작업 수행 허가 부여가 추론된다. 암시적 동의는 웹 대화 이용의 보안성과 용이성을 개선한다. Flickr 업로드 예에서는 예컨대 흐름은 다음과 같다. 암시적 동의가 없으면, (1) 사용자는 Flickr로 업로드하지만 Flickr의 결과물이 아닌 페이지를 방문한다; (2) 사용자는 Flickr에 권한을 주는 Flickr 페이트(pate)로 다시 보낸진다; (3) 사용자는 Flickr에의 권한 부여를 완료한다; (4) 사용자는 Flickr 페이지 창을 닫고, 원 페이지로 되돌아가서 어떤 버튼을 눌러 인증을 완료한다.
임시적 동의가 있으면, 동일한 인증 흐름이 다음과 같이 더 적은 수의 단계로 수행된다. (1) 사용자는 Flickr로 업로드하지만 Flickr의 결과물이 아닌 페이지를 방문한다; (2) "보안 다이얼로그"가 그 페이지 위에 놓인다; 이 보안 다이얼로그는 원 페이지의 제어 밖에 있는 Flickr에의 권한 부여를 처리한다; (3) 사용자는 크리덴셜로 들어가서 ok를 클릭한다; 그리고 (4) 원 페이지가 자동 통지된다. 첫번 흐름의 마지막 단계에서 인증이 완료되었음을 나타내기 위해 원 페이지 상에서 버튼을 클릭하는 것은 암시적 동의에서 반드시 필요한 것은 아니다. 더욱이 Flickr 서비스의 다음번 액세스는 로그인이 만료되더라도 사용자가 다시 크리덴셜을 제공할 필요가 없도록 사용자 크리덴셜을 Flickr로 자동으로 제공할 수 있다. 이 그리덴셜은 Flickr 성분에 의해 안전하고 기밀로 유지된다.
Flickr 로그인 예에서 어떤 성분은 로그인 크리덴셜을 요구하는 작업, 예컨대 Flickr로의 로그인의 실행 허가를 요청한다. 웹 페이지는 Flickr에 권한을 부여하는 기능을 호출한다. 코어 서비스(142)는 웹 페이지의 제어 밖에서 Flicker 액세스 성분(예컨대 성분(148)에서 보인 FlickerUploadr)의 방향에서 크리덴셜에 대한 프롬프팅과 인증 요구의 전송이 수행된다. 인증 요구가 완료되면 웹 페이지는 "권한 부여됨", "사용자가 권한 부여를 거절함" 또는 "인증 실패(부당(bad) 크리덴셜)"일 수 있는 반환값을 수신한다. 웹 페이지는 인증이 수행되는 사이트에 대한 사용자 크리덴셜(예컨대 로그인 이름과 비밀번호)에 액세스하지 않기 때문에 보안이 향상된다.
다른 예로서 웹 액세스가능 카메라(웹캠(webcam))과 대화하기 위해, 명시적 동의를 이용하여, (1) 사용자는 웹캠 피처를 제공하는 웹 페이지를 방문한다; (2) 사용자는 "웹캠에서 그림을 택함" 버튼을 클릭한다; (3) 사용자는 웹 페이지의 제어 밖에서 사진 찍기 허가를 하도록 촉구된다; 그리고 (4) 사용자는 사진을 찍도록 "캡처" 버튼을 클릭한다. 암시적 동의가 있으면, 동일한 웹캠 대화가 다음과 같이 더 적은 단계로 수행된다. (1) 사용자는 웹캠 페이지를 방문한다; (2) 사용자에게 현재 웹캠 그림을 표시하는 다이얼로그(이 다이얼로그는 웹 페이지의 제어 밖에 있음)가 제시된다; (3) 사용자는 "캡처" 버튼을 클릭하여 웹 사이트에 웹캠을 이용할 암시적 동의를 부여한다. 본 발명의 실시예들에 따라서, 그 사용자 대화에 의해 보안 자원 표시가 발생되고 이 표시는 보안 자원 식별자로서 JavaScript 코드에서 액세스될 수 있다. 이 식별자는 특정 자원, 예컨대 파일에 결부되어 있으며 브라우저 기반(예컨대 JavaScript) 코드에 의해 변경되지 않는다. 일 양상에서 이 식별자는 참조는 가능하나 다른 파일 또는 자원을 지칭하도록 변경되지는 않는 임의의 고유 번호이다. 파일 선택 유효 기간은 페이지 존속 기간에 따르며, 따라서 이 식별자는 브라우저가 이 페이지를 닫은 후에 유효하게 된다.
성분 임플리멘테이션은 웹 페이지 상에서 브라우저 기반 코드(예컨대 JavaScript)와 무관하게 최종 사용자에게 촉구한다. 그러므로 성분 코드는 사용자가 제공한 응답, 예컨대 허가 부여(긍정) 또는 거부(부정)에 구속된다. 일 양상에서 보안에 민감할 수 있는, 예컨대 저장된 정보에 액세스하거나 이를 삭제할 수 있거나 네트워크 접속을 이용할 수 있는 작업은 잠재적인 보안 위험이며 보안 사용자 프롬프팅에 의해, 또는 일례로서 그 작업에 대응하는 인증서 확인 허가 객체에 의해 보호되어야 한다.
일례로서 특정 웹 사이트상에서 특정 성분 또는 그 특정 버전의 실행을 가능하게 하거나 가능하지 못하게 하는 화이트 리스트(white-list) 피처가 제공될 수 있다. 화이트 리스트 엔트리는 어떤 사이트가 특정 성분을 이용하는 것을 허용한다. 분배 서버(150)는 성분을 이용하도록 허용된 도메인의 화이트 리스트를 포함하는 서명된 분배 파일, 제거될(예컨대 삭제될) 성분의 블랙리스트, 및 제거될 플랫폼 버전의 블랙리스트를 분배한다. 예컨대 어떤 성분의 버전 1.0.1이 버그를 갖는 것으로 알려져 있다면 블랙리스트 피처를 이용하여 버전 1.0.1의 장래 실행을 막을 수 있다. 화이트 리스트 피처는 사용자가 제어해도 된다. 예컨대 뮤직 사이트는 어떤 성분을 이용하여 노래를 사용자의 Apple iTunes® 뮤직 플레이어 디렉토리로 불러올 수 있다. 이 성분은 불러오기를 사용자에게 한 번 또는 매번 허락하도록 요청하거나 절대로 허락하지 못하도록 요청할 수 있다.
일례로서 도 1a의 플러그인 인터페이스 플랫폼(108)을 이용하는 클라이언트는 성분을 제거하기 위한 블랙리스트 피처 및/또는 그 특정 버전을 포함한다. 클라이언트는 허가 번들(bundle)을 포함하는 디지털 서명 번들을 다운로드받는다. 이 다운로드는 서버로부터 수신된 메시지에 응답하여 특정 시각들에서 또는 주기적으로 또는 다른 임의의 시각들에서 일어날 수 있다. 허가 번들은 제거될 하나 이상의 성분과 이에 대응하는 버전을 수록한 철회 리스트를 포함한다. 철회 리스트상에 있는 설치된 성분은 제거되며, 다음에 이 제거된 성분을 재설치하려고 해도 성공하지 못한다. 플러그인 인터페이스 플랫폼(108) 자체는 철회 리스트 내의 지정된 엔트리에 의해 원격적으로 작동중지될 수 있다.
새로운 버전의 성분도 가끔 이용될 수 있다. 최종 사용자 머신(102)에 설치될 수 있는 성분은 많기 때문에 그 설치된 성분 전부를 계속 유지하는 것은 성능에 부정적인 영향을 미치고 그리고/또는 자원을 과도하게 소모할 수 있다. 사용자가 성분을 이용하는 사이트를 방문하면, 이 사이트는 성분 요건을 요건 진술문, 예컨대 성분 이름, 버전 및 부 버전 트리플릿(triplet)으로 표현한다. 전체 요건은 요구되는 마지막 이름을 갖고서 저장된다. 갱신 체크는 구식(outdated) 요건 진술문을 주기적으로 제거하고, 나머지 현재 요건을 충족하고 머신(102)에 현재 설치된 성분의 더 새로운 버전인 성분들에 대해 분배 서버를 체크한다. 이러한 더 새로운 버전은 예컨대 실행하고 있는 성분을 멈추지 않고 백그라운드로서 다운로드되어 갱신 캐시에 저장된다. 이어서, 웹 브라우저(104)가 가용 캐시된 갱신에 더 잘 제공할 수 있는 요건을 표현하는 사이트를 방문하면, 사용자는 그 다운로드된 갱신의 설치를 허가하도록 촉구된다. 구식 성분은 예컨대 현재 요건을 충족시키는데 이용되지 않는 그리고 오랜 기간 동안 사용되지 않은 성분을 찾아냄으로써 확인하여 삭제될 수 있다. 이러한 성분은 부정적인 영향을 거의 받지 않고 머신(102)에서 제거될 수 있다.
도 6은 본 발명의 실시예에 따른 처리 기능을 구현하는데 이용될 수 있는 대표적인 컴퓨팅 시스템(600)을 도시한 것이다. 이런 유형의 컴퓨팅 시스템은 예컨대 클라이언트와 서버에서 사용될 수 있다. 당업자라면 다른 컴퓨팅 시스템 또는 아키텍처를 이용하여 본 발명을 구현하는 방법을 잘 알 것이다. 컴퓨팅 시스템(600)은 예컨대 데스크탑, 랩탑 또는 노트북 컴퓨터, 핸드헬드 컴퓨팅 장치(PDA, 셀폰, 팜탑 등), 메인 프레임, 서버, 클라이언트, 또는 특정 응용이나 환경에 바람직하거나 적합할 수 있는 기타 다른 유형의 전용 또는 범용의 컴퓨팅 장치일 수 있다. 컴퓨팅 시스템(600)은 프로세서(604)와 같은 하나 이상의 프로세서를 포함할 수 있다. 프로세서(604)는 예컨대 마이크로프로세서, 마이크로컨트롤러 또는 기타 다른 컨트롤 로직과 같은 범용 또는 전용 처리 엔진을 이용하여 구현될 수 있다. 이 예에서 프로세서(604)는 버스(602) 또는 기타 다른 통신 매체에 연결된다.
컴퓨팅 시스템(600)은 정보와, 프로세서(604)에 의해 실행될 명령어를 저장하는 RAM(random access memory) 또는 기타 다른 다이나믹 메모리와 같은 메인 메모리(608)도 포함할 수 있다. 메인 메모리(608)는 프로세서(604)에 의해 실행될 명령어의 실행 중에 임시 변수나 기타 다른 중간 정보를 저장하는데도 사용될 수 있다. 컴퓨팅 시스템(600)은 마찬가지로 프로세서(604)를 위한 정적 정보와 명령어를 저장하기 위해 버스(602)에 연결된 ROM(read only memory) 또는 기타 다른 정적 저장 장치를 포함할 수 있다.
컴퓨팅 시스템(600)은 예컨대 매체 드라이브(612)과 착탈식 저장 인터페이스(620)를 포함할 수 있는 정보 저장 시스템(610)도 포함할 수 있다. 매체 드라이브(612)는 하드 디스크 드라이브, 플로피 디스크 드라이브, 자기 테이프 드라이브, 광 디스크 드라이브, CD 또는 DVD 드라이브(R 또는 RW), 또는 기타 다른 착탈식 또는 고정식 매체 드라이브와 같은 고정식 또는 착탈식 저장 매체를 지원하는 드라이브 또는 기타 다른 기구를 포함할 수 있다. 저장 매체(618)는 예컨대 하드 디스크, 플로피 디스크, 자기 테이프, 광 디스크, CD 또는 DVD, 또는 매체 드라이브(612)에 의해 읽어지거나 써지는 기타 다른 고정식 또는 착탈식 매체를 포함할 수 있다. 이들 예들이 설명하는 바와 같이 저장 매체(618)는 특정 컴퓨터 소프트웨어나 데이터가 저장된 컴퓨터 판독 저장 매체를 포함할 수 있다.
다른 실시예에서 정보 저장 시스템(610)은 컴퓨터 프로그램 또는 기타 다른 명령어나 데이터를 컴퓨팅 시스템(600)에 로드시킬 수 있는 다른 유사한 성분을 포함할 수 있다. 그와 같은 성분은 예컨대 착탈식 저장 유닛(622), 프로그램 카트리지 및 카트리지 인터페이스와 같은 인터페이스(620), 착탈식 메모리(예컨대 플래시 메모리나 기타 다른 착탈식 메모리 모듈), 메모리 슬롯, 그리고 소프트웨어와 데이터를 착탈식 저장 유닛(618)에서 컴퓨팅 시스템(600)으로 전송할 수 있는 기타 다른 착탈식 저장 유닛(622)과 인터페이스(620)를 포함할 수 있다.
컴퓨팅 시스템(600)은 통신 인터페이스(624)도 포함할 수 있다. 통신 인터페이스(624)는 소프트웨어와 데이터를 컴퓨팅 시스템(600)과 외부 장치 간에 전송하는데 사용될 수 있다. 통신 인터페이스(624)의 예로는 모뎀, (이더넷이나 기타 다른 NIC 카드와 같은) 네트워크 인터페이스, (예컨대 USB 포트와 같은) 통신 포트, PCMCIA 슬롯과 카드 등을 들 수 있다. 통신 인터페이스(624)를 통해 전송되는 소프트웨어와 데이터는 전자적, 전자기적, 광학적일 수 있는 신호 형태, 또는 통신 인터페이스(624)가 수신할 수 있는 기타 다른 신호 형태로 되어 있다. 이들 신호는 채널(628)을 통해 통신 인터페이스(624)에 제공된다. 이 채널(628)은 신호를 전달할 수 있으며 무선 매체, 유선 또는 케이블, 광파이버 또는 기타 다른 통신 매체를 이용하여 구현될 수 있다. 채널의 몇 가지 예로는 전화선, 셀룰러폰 회선, RF 회선, 네트워크 인터페이스, LAN(local area network) 또는 WAN(wide area network), 기타 다른 통신 채널이 있다.
본 명세서에서 용어 "컴퓨터 프로그램 제품", "컴퓨터 판독 매체" 등은 일반적으로 예컨대 메모리(608), 저장 장치(618) 또는 저장 유닛(622)을 말할 수 있다. 이들 및 기타 다른 형태의 컴퓨터 판독 매체는 프로세서(604)에게 특정 작업을 수행시킬 수 있는, 프로세서가 사용하는 하나 이상의 명령어를 저장할 수 있다. 그와 같은 명령어는 일반적으로 "컴퓨터 프로그램 코드"라고 하는데, 실행 시에 컴퓨팅 시스템(600)은 본 발명의 실시예들의 피처나 기능을 수행할 수 있게 된다. 이 코드는 프로세서가 특정 작업을 바로 수행할 수 있도록 해 줄 수 있으며, 그렇게 하도록 컴파일되고 그리고/또는 그렇게 하도록 다른 소프트웨어, 하드웨어 및/또는 펌웨어 구성 요소(예컨대 표준 기능을 수행하는 라이브러리)와 조합될 수 있음에 유의한다.
구성요소들이 소프트웨어를 이용하여 구현되는 실시예에서는 이 소프트웨어는 컴퓨터 판독 매체에 저장되고, 예컨대 착탈식 저장 드라이브(614), 드라이브(612) 또는 통신 인터페이스(624)를 이용하여 컴퓨팅 시스템(600)에 로드될 수 있다. 컨트롤 로직(이 예에서는 소프트웨어 명령어 또는 컴퓨터 프로그램 코드)은 프로세서(604)에 의해 실행될 때에 프로세서(604)가 전술한 본 발명의 기능을 수행하도록 한다.
명확하게 하기 위해 상기 상세한 설명에서는 여러 가지 기능 유닛과 프로세서와 관련하여 본 발명의 실시예를 설명하였다는 것을 잘 알 것이다. 그러나 본 발명으로부터 벗어남이 없이 다른 여러 가지 기능 유닛들, 프로세서들 또는 도메인들 간의 적당한 기능 분배도 이용될 수 있음을 잘 알 것이다. 예컨대 별개의 프로세서들 또는 컨트롤러에 의해 수행되는 것으로 설명된 기능은 동일한 하나의 프로세서 또는 컨트롤러에 의해 수행될 수도 있다. 그러므로 특정 기능 유닛에 대한 설명은 엄격한 논리적 또는 물리적 구조나 구성을 나타내는 것이 아니라 상기 설명된 기능을 제공하는 적당한 수단에 대한 설명으로서만 보아야 한다.
본 발명은 몇 가지 실시예들과 관련하여 설명하였지만, 여기서 설명된 특정 형태에 한정하려는 것은 아니다. 본 발명의 범위는 청구범위에 의해서만 한정된다. 그 외에도 특정 피처는 특정 실시예와 관련하여 설명되는 것으로 보일 수 있지만, 당업자라면 설명된 실시예의 여러 가지 피처들은 본 발명에 따라서 조합될 수 있음을 잘 알 것이다.
더욱이 개별적으로 열거하여 설명하였지만, 복수의 수단, 구성요소 또는 방법 단계는 예컨대 하나의 유닛 또는 프로세서에 의해 구현될 수 있다. 게다가 개별적인 피처들은 서로 다른 청구항에 포함될 수 있지만, 이들 피처는 양호하게는 서로 조합될 수도 있으며, 이들을 서로 다른 청구항에 포함시킨다고 해서 피처 조합이 실시불가능하고 및/또는 양호하지 않다는 것을 의미하는 것은 아니다. 또한 피처를 청구범위의 한 카테고리에 포함시킨다고 해서 이것이 이 카테고리에 한정됨을 의미하는 것은 아니고, 이 피처는 다른 청구범위 카테고리에도 적절하게 똑같이 적용될 수 있다.
더욱이 당업자라면 본 발명의 본질과 범위로부터 벗어남이 없이 본 발명을 여러 가지로 변형 및 수정할 수 있음을 잘 알 것이다. 본 발명은 상기 상세한 설명에 의해 한정되는 것이 아니라 청구범위에 따라서 한정되는 것이다.
지금까지 특정 실시예들에 대해서만 설명하였지만 당업자라면 본 발명의 새로운 교시와 이점으로부터 실질적으로 벗어남이 없이 그 예시적인 실시예에서 여러 가지 변형이 가능함을 잘 알 것이다. 따라서 그와 같은 변형 모두도 본 발명의 범위 내에 있다고 할 것이다.

Claims (24)

  1. 컴퓨터가, 브러우저 기반 코드로 하여금 사용자 머신의 네이티브 시스템 자원들에 액세스하는 제한된 시스템 작업들을 실행할 수 있도록 하는 플러그인 인터페이스를 제공하는 단계 - 상기 제한된 시스템 작업들은 상기 사용자 머신에 저장되는 복수의 컴퓨터 프로그램 코드 성분에 의해 실행되고, 상기 컴퓨터 프로그램 코드 성분들 각각은 네이티브 코드 영역을 포함하고, 상기 플러그인 인터페이스는 각각의 상기 컴퓨터 프로그램 코드 성분들에 연관되는 각 사용자 허가 타입을 수신하면 상기 컴퓨터 프로그램 코드 성분들의 발동(invocation)을 가능하게하는 네이티브 코드 공통 라이브러리를 포함함 - ;
    상기 컴퓨터가, 상기 컴퓨터 프로그램 코드 성분들 중 하나에 대한 제1 참조를 상기 사용자 머신 상의 웹 브라우저에서 실행되는 컴퓨터 프로그램 스크립트 코드 성분에 포함시키는 단계;
    상기 컴퓨터가, 상기 제1 참조에 대응하여 참조되는 컴퓨터 프로그램 코드 성분과 연관되는 적어도 하나의 성분 작업에 관한 설명을 수신하도록 상기 플러그인 인터페이스를 구성하는 단계 - 상기 적어도 하나의 성분 작업은 상기 제한된 시스템 동작들 중 적어도 하나를 실행시키도록 동작 가능함 - ;
    상기 컴퓨터가, 상기 사용자 머신에 의해 실행되는 상기 참조되는 컴퓨터 프로그램 코드 성분에 대한 위험 등급의 생성을 가능하게하는 단계 - 상기 위험 등급은, 상기 사용자 머신이 상기 참조되는 컴퓨터 프로그램 코드 성분을 실행할 경우 상기 참조되는 컴퓨터 프로그램 코드 성분에 의해 상기 사용자 머신에 가해질(posed to) 위험을 나타내고, 상기 위험 등급은, 상기 적어도 하나의 성분 작업 및 위험도에 기초하고, 상기 위험도는 상기 참조되는 컴퓨터 프로그램 코드 성분과 연관되는 서명된 디지털 인증서에 기초하여 적어도 두 개의 위험도 중에서 선택된 것임 -;
    상기 컴퓨터가, 인터페이스 정의에 기초하여 상기 적어도 하나의 성분 작업의 설명을 수신하는 단계; 및
    상기 컴퓨터가 상기 플러그인 인터페이스를 통하여, 적어도 하나의 상기 제한된 시스템 작업과 연관되는 상기 각 사용자 허가 타입에 대해 사용자에게 프롬프트하는(prompting) 단계 - 상기 프롬프트는 상기 위험 등급과 상기 성분 작업의 설명을 포함하고, 상기 설명은 상기 참조되는 컴퓨터 프로그램 코드 성분에 특유한 적어도 하나의 용어를 포함함 - 를 포함하는 방법.
  2. 제1항에 있어서,
    상기 위험 등급을 생성하는 단계는, 상기 컴퓨터 프로그램 코드 성분을 참조하는 상기 컴퓨터 프로그램 스크립트 코드를 포함하는 웹 페이지를 수신하는 것에 응답하는 것인, 방법.
  3. 제1항에 있어서,
    상기 적어도 두 개의 위험도는 최고 위험도와 최저 위험도를 포함하는 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 컴퓨터 프로그램 코드 성분들은, 상기 웹 브라우저가 상기 컴퓨터 프로그램 스크립트 코드와 연관된 웹 페이지를 수신하는 것에 응답하여 실행되는 상기 컴퓨터 프로그램 스크립트 코드에 의해, 상기 웹 브라우저에서 실행되는 상기 플러그인 인터페이스의 발동에 응답하여 실행되는, 방법.
  6. 제1항에 있어서,
    상기 사용자에게 허가를 프롬프트하는 단계는 하나의 지명된 허가(a named permission)를 표시하는 단계를 포함하고, 상기 지명된 허가는 상기 적어도 하나의 제한된 시스템 작업에 대응하고, 상기 지명된 허가는 최종 사용자에 의해 상기 적어도 하나의 제한된 시스템 작업의 실행에 대한 전제 조건으로 부여(grant)되는 방법.
  7. 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있도록 해주는 방법으로서,
    서버 컴퓨터가, 상기 클라이언트 컴퓨터에 컴퓨터 프로그램 코드를 전송하는 단계 - 상기 코드는 상기 클라이언트 컴퓨터의 네이티브 자원들을 액세스하는 제한된 시스템 작업들을 발동(invoking)시키기 위한 플러그인 인터페이스를 포함하고, 상기 제한된 시스템 작업들은 상기 클라이언트 컴퓨터에 저장되는 복수의 컴퓨터 프로그램 코드 성분에 의해 실행되고, 상기 컴퓨터 프로그램 코드 성분들 각각은 네이티브 코드 영역을 포함하고, 상기 플러그인 인터페이스는 각각의 상기 컴퓨터 프로그램 코드 성분들에 연관되는 각 사용자 허가 타입을 수신하면 상기 컴퓨터 프로그램 코드 성분들의 발동(invocation)을 가능하게하는 네이티브 코드 공통 라이브러리를 포함함 - ;
    상기 서버 컴퓨터가, 상기 컴퓨터 프로그램 코드 성분들 중 하나에 대한 제1 참조를 클라이언트 컴퓨터 상의 웹 브라우저에서 실행되는 상기 전송된 컴퓨터 프로그램 코드에 포함시키는 단계;
    상기 서버 컴퓨터가, 상기 제1 참조에 대응하여 참조된 컴퓨터 프로그램 코드 성분과 연관되는 적어도 하나의 성분 작업의 설명을 상기 클라이언트 컴퓨터에서 수신하도록 상기 플러그인 인터페이스를 구성하는 단계 - 상기 적어도 하나의 성분 작업은 상기 제한된 시스템 작업들 중 적어도 하나를 실행시키도록 동작 가능함 -;
    상기 서버 컴퓨터가, 상기 네이티브 코드 공통 라이브러리를 통해, 상기 클라이언트 컴퓨터에서 프롬프트의 표시가 발생되도록 하는 단계 - 상기 프롬프트는, 상기 적어도 하나의 제한된 시스템 작업을 수행하기 위해 사용자로부터 허가의 타입을 요구하기 위한 것이며, 상기 서버 컴퓨터로 하여금 상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 적어도 하나의 제한된 시스템 작업을 발동하게 함 -;
    상기 프롬프트는 상기 참조된 컴퓨터 프로그램 코드 성분과 연관된 위험 등급과 상기 성분 작업의 설명을 포함하고, 상기 설명은 상기 참조된 컴퓨터 프로그램 코드 성분에 특유한 적어도 하나의 용어를 포함하고, 상기 위험 등급은, 상기 클라이언트 컴퓨터가 상기 참조된 컴퓨터 프로그램 코드 성분을 실행할 경우 상기 참조된 컴퓨터 프로그램 코드 성분에 의해 상기 클라이언트 컴퓨터에 가해질 위험을 나타내며, 상기 위험 등급은, 상기 참조된 컴퓨터 프로그램 코드 성분과 연관된 서명된 디지털 인증서에 기초하여 적어도 두 개의 위험도 중에서 선택된 하나의 위험도 및 상기 성분 작업에 기초하는, 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 제7항에 있어서,
    상기 프롬프트는 상기 클라이언트 컴퓨터의 출력 장치상에 허가 요구를 표시하는, 방법.
  12. 제7항에 있어서,
    상기 사용자로부터 허가를 수신하는 것은 상기 클라이언트 컴퓨터의 입력 장치를 통해 상기 사용자로부터 긍정 응답을 수신하는 것을 포함하는 방법.
  13. 제7항에 있어서,
    상기 참조된 컴퓨터 프로그램 코드 성분과 연관된 서명 기관의 인증서를 수신하는 단계를 더 포함하는 방법.
  14. 제7항에 있어서,
    상기 제한된 시스템 작업들은 파일에 액세스하는 것, 네트워크에 액세스하는 것, 디스플레이 장치에 액세스하는 것, 또는 이들의 조합을 포함하는 방법.
  15. 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있도록 해주는 방법으로서,
    서버 컴퓨터가, 컴퓨터 프로그램 코드를 상기 클라이언트 컴퓨터로 전송하는 단계 - 상기 전송되는 컴퓨터 프로그램 코드는 상기 클라이언트 컴퓨터 상의 브라우저 기반 코드가 상기 클라이언트 컴퓨터의 네이티브 시스템 자원들에 액세스하는 제한된 시스템 작업들을 실행할 수 있도록 하는 플러그인 인터페이스를 포함하고, 상기 제한된 시스템 작업들은 상기 클라이언트 컴퓨터에 저장되는 복수의 컴퓨터 프로그램 코드 성분들에 의해 실행되며, 상기 컴퓨터 프로그램 코드 성분들 각각은 네이티브 코드 영역을 포함하고, 상기 플러그인 인터페이스는 각각의 상기 컴퓨터 프로그램 코드 성분들에 연관되는 각 사용자 허가 타입을 암시적으로 수신할 경우 상기 컴퓨터 프로그램 코드 성분들의 발동(invocation)을 가능하게하는 네이티브 코드 공통 라이브러리를 포함함 - ;
    상기 서버 컴퓨터가, 상기 컴퓨터 프로그램 코드 성분들 중 적어도 하나에 대한 제1 참조를 상기 전송되는 컴퓨터 프로그램 코드에 포함시키는 단계 - 상기 전송되는 컴퓨터 프로그램 코드가 웹 브라우저에 의해 실행되는 경우, 상기 제1 참조에 응답하여 상기 플러그인 인터페이스를 포함하는 웹 문서와 연관된 스크립트 코드에 의해 상기 컴퓨터 프로그램 코드 성분들 중 하나가 발동됨 - ;
    상기 서버 컴퓨터가, 명시적인 허가 요구가 없더라도, 상기 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 제한된 시스템 작업들 중 적어도 하나의 자동 실행을 가능하게 하는 단계 - 상기 입력은 상기 발동되는 성분과 연관되는 성분 작업 및 상기 적어도 하나의 제한된 시스템 작업의 실행을 야기하고, 상기 입력은 상기 적어도 하나의 제한된 시스템 작업을 수행하기 위해 상기 발동하는 성분과 연관되는 각각의 동의 타입을 암시적으로 부여하는 것인, 방법.
  16. 삭제
  17. 웹 브라우저 기반 코드가 클라이언트 컴퓨터상에서 제한된 시스템 작업을 실행할 수 있게 해주는 방법으로서,
    상기 클라이언트 컴퓨터가, 상기 웹 브라우저 기반 코드 및 플러그인 인터페이스를 포함하는 웹 페이지를 수신하는 단계 - 상기 플러그인 인터페이스는 상기 웹 브라우저 기반 코드가 상기 클라이언트 컴퓨터에 저장되는 복수의 컴퓨터 프로그램 코드 성분에 액세스하는 것 및 상기 클라이언트 컴퓨터의 네이티브 시스템 자원들에 액세스하는 제한된 시스템 작업들을 실행하는 것을 용이하게 하고, 상기 컴퓨터 프로그램 코드 성분들 각각은 네이티브 코드 영역을 포함하고, 상기 플러그인 인터페이스는 각각의 상기 컴퓨터 프로그램 코드 성분들에 연관되는 각 허가 타입을 수신하면 상기 컴퓨터 프로그램 코드 성분들의 발동(invocation)을 허가하는 네이티브 코드 공통 라이브러리를 포함함 -;
    상기 클라이언트 컴퓨터가, 웹 브라우저에서 컴퓨터 프로그램 스크립트 코드를 통해 상기 컴퓨터 프로그램 코드 성분들 중 하나에 대한 제1 참조를 실행하는 단계;
    상기 클라이언트 컴퓨터가, 상기 제1 참조에 응답하여 상기 제한된 시스템 작업들 중 적어도 하나를 발동시키는 컴퓨터 프로그램 코드 성분의 작업에 대한 설명에 액세스하는 단계;
    상기 클라이언트 컴퓨터가, 상기 설명을 상기 플러그인 인터페이스로 전송하는 단계;
    상기 클라이언트 컴퓨터가, 상기 웹 브라우저 기반 코드에 의한 상기 컴퓨터 프로그램 코드 성분에 대한 상기 제1 참조에 응답하여 제한된 시스템 작업을 수행하기 위해 사용자로부터의 허가를 요구하는 프롬프트를 표시하는 단계; 및
    상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 제한된 시스템 작업을 발동하는 단계를 포함하고,
    상기 프롬프트는 상기 성분 작업이 상기 제1 참조와 연관되는 참조된 컴퓨터 프로그램 코드 성분에 특유한 적어도 하나의 용어를 포함하는 성분 작업에 대한 설명을 통해 동작하는 객체 또는 서비스를 참조하고(refer to), 상기 프롬프트는 상기 성분 작업을 수행하는 성분에 연관된 위험 등급과 성분 허가(component permission)의 설명을 포함하며, 상기 위험 등급은, 상기 참조된 컴퓨터 프로그램 코드 성분이 상기 클라이언트 컴퓨터에 의해 발동될 경우 상기 참조된 컴퓨터 프로그램 코드 성분에 의해 상기 클라이언트 컴퓨터에 가해질 위험을 나타내며, 상기 위험 등급은, 상기 참조된 컴퓨터 프로그램 코드 성분과 연관되는 서명 기관의 인증서에 기초하여 적어도 두 개의 위험도 중에서 선택된 하나의 위험도 및 상기 성분 작업에 기초하는 방법.
  18. 보안 제한 작업들을 수행하기 위해 웹 브라우저에서 컴퓨터 프로그램 코드가 실행되게 해주는 컴퓨터 실행 가능 명령어들을 포함하는 비-일시적(non-transitory) 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어들은,
    서버 컴퓨터가, 컴퓨터 네트워크를 통해 상기 웹 브라우저에 복수의 성분에 대한 브라우저 기반 코드 액세스를 제공하는 플러그인 인터페이스를 제공하는 명령어 - 상기 성분들 각각은 인터페이스, 및 상기 인터페이스의 적어도 일부를 구현하는 네이티브 언어 임플리멘테이션(implementation)을 포함하고, 상기 플러그인 인터페이스는 상기 성분들 각각과 연관되는 각 사용자 허가 타입을 수신하면 상기 복수의 성분 중 적어도 하나의 발동을 통해 상기 웹 브라우저에서 실행되는 상기 컴퓨터 프로그램 코드가 상기 보안 제한 작업들 중 적어도 하나를 수행하는 것을 가능하게하는 네이티브 코드 공통 라이브러리를 포함함 - ; 및
    상기 서버 컴퓨터가 상기 보안 제한 작업을 발동시키는 상기 적어도 하나의 성분의 작업에 대한 설명을 생성하는 명령어를 포함하고,
    상기 컴퓨터 프로그램 코드는 상기 웹 브라우저에서 상기 플러그인 인터페이스의 발동에 응답하여 상기 네이티브 언어 임플리멘테이션을 발동하도록 동작가능하고,
    상기 네이티브 언어 임플리멘테이션은 상기 보안 제한 작업을 수행하기 위해상기 각각의 허가 타입을 사용자에게 프롬프트하도록 동작가능하고 상기 사용자로부터 허가를 수신하는 것에 응답하여 상기 보안 제한 작업을 발동시키도록 또한 동작가능하고,
    상기 프롬프트는 상기 적어도 하나의 성분과 연관된 위험 표시자에 기초하고, 상기 위험 표시자는 상기 웹 브라우저를 실행하는 컴퓨터가 상기 적어도 하나의 성분을 임플리먼트(implement)할 경우 상기 적어도 하나의 성분에 의해 상기 웹 브라우저를 실행하는 컴퓨터에 가해질 위험을 나타내고, 상기 위험 표시자는 상기 적어도 하나의 성분과 연관된 서명 기관의 인증서에 기초하여 적어도 두 개의 위험도 중에서 선택된 하나의 위험도 및 상기 보안 제한 작업에 기초하고, 상기 프롬프트는 상기 적어도 하나의 성분과 연관된 적어도 하나의 허가 요건에 기초하며, 상기 프롬프트는 상기 허가 요건과 연관된 작업의 설명 및 상기 위험도를 포함하고, 상기 설명은 상기 적어도 하나의 성분에 특유한 적어도 하나의 용어를 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  19. 제18항에 있어서,
    상기 명령어들은, 상기 적어도 하나의 성분과 연관된 서명 기관의 상기 인증서를 수신하는 명령어를 더 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  20. 제18항에 있어서,
    상기 보안 제한 작업들은 파일에 액세스하는 것, 네트워크에 액세스하는 것, 디스플레이 장치에 액세스하는 것, 또는 이들의 조합을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  21. 웹 페이지와 연관된 브라우저 기반 프로그램 코드가 브라우저 호스트 컴퓨터의 네이티브 운영 체제 자원들에 선택적으로 액세스할 수 있게 해주는 컴퓨터 실행 가능 명령어들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어들은,
    상기 브라우저 호스트 컴퓨터에 의해, 상기 브라우저 호스트 컴퓨터에 저장된 복수의 성분에 대해 상기 브라우저 기반 프로그램 코드가 액세스 가능하도록하는 플러그인 인터페이스를 수신하는 명령어 - 상기 플러그인 인터페이스는 상기 복수의 성분의 발동을 허가하는 네이티브 코드 공통 라이브러리를 포함하고, 상기 브라우저 호스트 컴퓨터의 네이티브 시스템 자원들에 액세스하는 제한된 시스템 작업들을, 상기 제한된 시스템 작업들에 액세스하기 위한 각각의 허가 타입을 상기 브라우저 호스트 컴퓨터의 사용자로부터 수신하는 것에 응답하여 수행하기 위해 상기 복수의 성분 각각은 임플리멘테이션 기능 및 네이티브 코드 인터페이스를 포함함 - ;
    상기 브라우저 호스트 컴퓨터에 의해, 상기 브라우저 기반 프로그램 코드에 포함된 상기 복수의 성분 중 적어도 하나에 대한 제1 참조를 실행하는 명령어;
    상기 브라우저 호스트 컴퓨터에 의해, 상기 제1 참조에 응답하여 상기 적어도 하나의 성분의 임플리멘테이션 기능에 대한 설명을 수신하는 명령어;
    상기 제한된 시스템 작업들 중 적어도 하나를 수행하기 위한 상기 각각의 허가 타입을 상기 사용자에게 프롬프트하는 명령어 - 상기 프롬프트는 각각의 허가 타입 요건과 연관된 작업에 대한 설명을 포함하고, 상기 설명은 상기 적어도 하나의 성분에 특유한 적어도 하나의 용어를 포함하고, 상기 프롬프트는 상기 적어도 하나의 성분과 연관된 위험 표시자 및 상기 임플리멘테이션 기능의 설명에 기초하고, 상기 위험 표시자는, 상기 브라우저 호스트 컴퓨터가 상기 적어도 하나의 성분의 상기 임플리멘테이션 기능을 실행할 경우 상기 브라우저 호스트 컴퓨터에 가해질 위험을 나타내며, 상기 위험 표시자는 상기 적어도 하나의 성분과 연관된 서명 기관의 인증서에 기초하여 적어도 두 개의 위험도 중에서 선택된 하나의 위험도 및 상기 임플리멘테이션 기능에 기초함 - ; 및
    상기 사용자로부터 긍정 응답을 수신하는 것에 응답하여 상기 적어도 하나의 제한된 시스템 작업을 수행하도록 상기 적어도 하나의 성분의 상기 임플리멘테이션 기능을 발동하는 명령어
    를 포함하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  22. 삭제
  23. 프로세서;
    상기 프로세서에 연결된 메모리; 및
    상기 메모리에 제공되는 프로그램 명령어들을 포함하고,
    상기 프로그램 명령어들은 컴퓨터 프로그램 코드를 클라이언트 컴퓨터에 전송하도록 상기 프로세서에 의해 실행 가능하며,
    상기 컴퓨터 프로그램 코드는 브라우저 기반 코드가 상기 클라이언트 컴퓨터의 네이티브 시스템 자원들에 액세스하는 제한된 시스템 작업들을 실행할 수 있도록 하는 플러그인 인터페이스를 포함하고, 상기 제한된 시스템 작업들은 상기 클라이언트 컴퓨터에 저장되는 복수의 컴퓨터 프로그램 코드 성분에 의해 실행되고, 상기 컴퓨터 프로그램 코드 성분들 각각은 네이티브 코드 영역을 가지며, 상기 플러그인 인터페이스는 상기 컴퓨터 프로그램 코드 성분들 각각과 연관된 각 사용자 허가 타입을 암시적으로 수신하면 상기 컴퓨터 프로그램 코드 성분들의 발동을 허가하는 네이티브 코드 공통 라이브러리를 포함하고,
    상기 클라이언트 컴퓨터 상의 웹 브라우저에 의해 실행되기 위한 상기 전송된 코드는 상기 제한된 시스템 작업들 중 적어도 하나를 실행하는 상기 컴퓨터 프로그램 코드 성분들 중 적어도 하나에 대한 제1 참조를 포함하고,
    상기 전송된 코드는 상기 웹 브라우저를 통해 사용자로부터 입력을 수신하는 것에 응답하여 상기 적어도 하나의 컴퓨터 프로그램 코드 성분에 의해 실행되는 상기 적어도 하나의 제한된 시스템 작업을 발동하도록 더 동작 가능하고, 상기 입력은, 상기 적어도 하나의 제한된 시스템 작업을 수행하기 위한 허가에 대한 명시적인 요구가 없더라도 상기 적어도 하나의 컴퓨터 프로그램 코드 성분과 연관된 동작을 야기하고, 상기 동작은 상기 적어도 하나의 제한된 시스템 작업을 수행하기 위해 상기 적어도 하나의 컴퓨터 프로그램 코드 성분과 연관된 각 타입의 사용자 동의를 암시적으로 부여하는, 시스템.
  24. 제23항에 있어서,
    상기 동작은 상기 적어도 하나의 컴퓨터 프로그램 코드 성분과 연관되는 작업을 수행하는데 있어 적어도 하나의 단계를 포함하는 시스템.
KR1020127031925A 2008-03-02 2009-02-23 보안 브라우저 기반 애플리케이션 KR101384085B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US6787208P 2008-03-02 2008-03-02
US61/067,872 2008-03-02
US12/350,177 US8635701B2 (en) 2008-03-02 2009-01-07 Secure browser-based applications
US12/350,177 2009-01-07
PCT/US2009/034833 WO2009111195A2 (en) 2008-03-02 2009-02-23 Secure browser-based applications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020107022030A Division KR20100127807A (ko) 2008-03-02 2009-02-23 보안 브라우저 기반 애플리케이션

Publications (2)

Publication Number Publication Date
KR20130008634A KR20130008634A (ko) 2013-01-22
KR101384085B1 true KR101384085B1 (ko) 2014-04-17

Family

ID=41014269

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127031925A KR101384085B1 (ko) 2008-03-02 2009-02-23 보안 브라우저 기반 애플리케이션
KR1020107022030A KR20100127807A (ko) 2008-03-02 2009-02-23 보안 브라우저 기반 애플리케이션

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107022030A KR20100127807A (ko) 2008-03-02 2009-02-23 보안 브라우저 기반 애플리케이션

Country Status (10)

Country Link
US (1) US8635701B2 (ko)
EP (1) EP2250577A4 (ko)
JP (2) JP5296106B2 (ko)
KR (2) KR101384085B1 (ko)
CN (1) CN101960446B (ko)
AU (1) AU2009220439B2 (ko)
HK (1) HK1153011A1 (ko)
SG (1) SG188169A1 (ko)
TW (1) TWI420338B (ko)
WO (1) WO2009111195A2 (ko)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US9258136B2 (en) * 2009-01-19 2016-02-09 Koninklijke Philips N.V. Browser with dual scripting engine for privacy protection
US20100192193A1 (en) * 2009-01-23 2010-07-29 Microsoft Corporation Security restriction techniques for browser-based applications
US8966374B1 (en) * 2009-03-30 2015-02-24 Glance Networks, Inc. Method and apparatus for enabling participants to assume control over a presentation in a remote viewing session
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8706801B2 (en) * 2009-07-20 2014-04-22 Facebook, Inc. Rendering a web page using content communicated to a browser application from a process running on a client
CN102025761B (zh) * 2009-09-21 2013-07-17 腾讯科技(深圳)有限公司 实现Web装置与Flash装置协同工作的方法与系统
US8990698B2 (en) * 2009-09-23 2015-03-24 Microsoft Technology Licensing, Llc Social network service synchronization
US9137319B2 (en) * 2009-11-13 2015-09-15 Adobe Systems Incorporated Browser privacy mode support
CN102081709B (zh) * 2009-12-01 2017-05-24 联想(北京)有限公司 一种浏览器插件的禁用方法、装置和终端
CN101854359B (zh) * 2010-05-19 2012-10-31 南京联创科技集团股份有限公司 基于虚拟化计算的权限控制方法
US20110307831A1 (en) * 2010-06-10 2011-12-15 Microsoft Corporation User-Controlled Application Access to Resources
US20120030760A1 (en) * 2010-08-02 2012-02-02 Long Lu Method and apparatus for combating web-based surreptitious binary installations
US9294479B1 (en) * 2010-12-01 2016-03-22 Google Inc. Client-side authentication
US8689235B2 (en) 2011-01-18 2014-04-01 Gbc Industries System and method for enabling interaction between a cloud application and a local application
WO2012112323A2 (en) 2011-02-15 2012-08-23 Korrelate, Inc. A dual blind method and system for attributing activity to a user
CN102111417A (zh) * 2011-03-01 2011-06-29 中国工商银行股份有限公司 网上银行数据的认证方法、装置、服务器及系统
CN102682014A (zh) * 2011-03-14 2012-09-19 腾讯科技(深圳)有限公司 在浏览器上实现的开放式插件管理平台及插件管理方法
US9141360B1 (en) 2011-03-16 2015-09-22 Google Inc. Web application module translation service
US9210209B2 (en) * 2011-05-03 2015-12-08 Google Inc. Extensible browser plugin interface
US8646100B2 (en) * 2011-06-03 2014-02-04 Apple Inc. Method for executing an application in a restricted operating environment
JP5820258B2 (ja) * 2011-06-09 2015-11-24 キヤノン株式会社 管理装置、管理方法、およびプログラム
US9147199B2 (en) * 2011-06-17 2015-09-29 Google Inc. Advertisements in view
JP2013065114A (ja) * 2011-09-15 2013-04-11 Fujitsu Ltd 情報処理システムの制御方法、中継装置の制御プログラム及びクライアント装置の制御プログラム
US9106650B2 (en) 2011-11-09 2015-08-11 Microsoft Technology Licensing, Llc User-driven access control
CN102436508B (zh) * 2011-12-28 2013-08-14 奇智软件(北京)有限公司 基于沙箱技术浏览网页的方法及装置
US8935755B1 (en) * 2012-02-06 2015-01-13 Google Inc. Managing permissions and capabilities of web applications and browser extensions based on install location
US9767259B2 (en) * 2012-05-07 2017-09-19 Google Inc. Detection of unauthorized content in live multiuser composite streams
US9407443B2 (en) 2012-06-05 2016-08-02 Lookout, Inc. Component analysis of software applications on computing devices
US10592978B1 (en) * 2012-06-29 2020-03-17 EMC IP Holding Company LLC Methods and apparatus for risk-based authentication between two servers on behalf of a user
CN103593370B (zh) * 2012-08-16 2017-08-22 腾讯科技(深圳)有限公司 在浏览器中实现扩展应用的方法及浏览器
US9563424B2 (en) * 2012-08-17 2017-02-07 Google Inc. Native code instruction selection
US9213827B2 (en) * 2012-09-27 2015-12-15 Intel Corporation Security data aggregation and business intelligence for web applications
CN103002019B (zh) * 2012-11-14 2016-01-13 北京奇虎科技有限公司 浏览器及浏览器发送页游消息的方法
US9420031B2 (en) * 2013-01-15 2016-08-16 Microsoft Technology Licensing, Llc Systems and methods for building and using hybrid mobile applications
CN104036160B (zh) * 2013-03-07 2019-03-15 腾讯科技(深圳)有限公司 一种网页浏览方法、装置及浏览器
US20140337424A1 (en) * 2013-05-10 2014-11-13 Apple Inc. Authorizing Push Notifications for Websites
CN104253805B (zh) * 2013-06-28 2018-07-06 腾讯科技(深圳)有限公司 一种浏览器的数据保护方法及浏览器
JP2015075902A (ja) * 2013-10-08 2015-04-20 キヤノン株式会社 画像形成装置、その制御方法とプログラム
CN103761114B (zh) * 2013-10-18 2017-10-17 北京奇虎科技有限公司 一种浏览器侧加载扩展和/或插件的方法及装置
JP6352140B2 (ja) 2013-10-22 2018-07-04 キヤノン電子株式会社 ウェブシステム、サーバ切替装置、サーバ切替方法およびプログラム
GB2514716A (en) * 2013-10-25 2014-12-03 Univ Stellenbosch System and method for monitoring third party access to a restricted item
CN105917320B (zh) * 2013-12-03 2019-12-20 本田技研工业株式会社 一种移动电子装置协同系统
US9710566B2 (en) * 2013-12-16 2017-07-18 Google Inc. User interface for webpage permission requests
US10104081B2 (en) * 2013-12-19 2018-10-16 Google Llc Privileged static hosted web applications
KR102198751B1 (ko) * 2014-01-06 2021-01-05 십일번가 주식회사 모바일 결제 처리 시스템 및 그 방법, 그리고 이에 적용되는 장치
CN103745156B (zh) * 2014-01-07 2017-05-03 北京奇虎科技有限公司 一种在搜索引擎中提示风险信息的方法和装置
CN104601639A (zh) * 2014-03-13 2015-05-06 腾讯科技(深圳)有限公司 网页应用消息推送方法、客户端、服务器及系统
JP6424440B2 (ja) * 2014-03-14 2018-11-21 株式会社リコー 情報処理装置、機器、情報処理システム、情報処理方法及び表示制御プログラム
CN104077179B (zh) * 2014-06-16 2017-06-06 武汉理工大学 一种面向Web浏览器的本地API调用方法
KR102086731B1 (ko) * 2014-06-25 2020-04-14 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템, 그리고 이를 위한 클라우드 스트리밍용 스크립트 코드를 기록한 컴퓨터 판독 가능한 기록매체
CN104123353B (zh) * 2014-07-14 2017-11-28 可牛网络技术(北京)有限公司 一种提高浏览器安全性的方法及系统
CN105471824A (zh) * 2014-09-03 2016-04-06 阿里巴巴集团控股有限公司 实现浏览器调用本地业务组件的方法、装置及系统
US20160119147A1 (en) * 2014-10-24 2016-04-28 Mohammed Mustafa Saidalavi Method and System of Online Content Review, Authentication, and Certification
JP2016119029A (ja) * 2014-12-24 2016-06-30 株式会社リコー 情報処理装置、機器、情報処理システム、情報処理方法、プログラム、及びインストール方法
CN107851130A (zh) 2015-07-07 2018-03-27 简单保有限责任公司 用于在网页上识别和呈现相关联的物品的集成插件
GB201522315D0 (en) * 2015-12-17 2016-02-03 Irdeto Bv Securing webpages, webapps and applications
US9954894B2 (en) 2016-03-04 2018-04-24 Microsoft Technology Licensing, Llc Webpage security
US10728274B2 (en) * 2016-09-22 2020-07-28 Check Point Software Technologies Ltd. Method and system for injecting javascript into a web page
US10362049B2 (en) * 2016-10-12 2019-07-23 International Business Machines Corporation Security-risk plugin to help targeted users interact with web pages and applications
US10681105B2 (en) 2016-12-30 2020-06-09 Facebook, Inc. Decision engine for dynamically selecting media streams
US10218697B2 (en) 2017-06-09 2019-02-26 Lookout, Inc. Use of device risk evaluation to manage access to services
US10496810B2 (en) * 2017-09-26 2019-12-03 Google Llc Methods and systems of performing preemptive generation of second factor authentication
GB201805429D0 (en) * 2018-04-03 2018-05-16 Palantir Technologies Inc Security system and method
US10931675B2 (en) * 2018-04-10 2021-02-23 Microsoft Technology Licensing, Llc Local API access authorization
US10866845B2 (en) * 2018-05-16 2020-12-15 Microsoft Technology Licensing, Llc Exposing native OS APIS in a web browser
RU2728505C1 (ru) * 2019-02-07 2020-07-29 Акционерное общество "Лаборатория Касперского" Система и способ обеспечения информационной безопасности на основании антропной защиты
TWI776215B (zh) * 2020-08-24 2022-09-01 奇蹟行動科技有限公司 產生使用者介面的描述碼之方法、系統及非暫態電腦可讀取儲存媒體
US20220191177A1 (en) * 2020-12-10 2022-06-16 Kalibro Technologies Ltd. System and method for securing messages
CN112612515B (zh) * 2021-03-05 2021-05-25 四川数康致远医疗信息技术有限公司 医疗健康物联网产品标准化与应用场景展示方法和系统
US20220311776A1 (en) * 2021-03-25 2022-09-29 International Business Machines Corporation Injecting risk assessment in user authentication
CN113836097A (zh) * 2021-09-29 2021-12-24 上海掌门科技有限公司 本地文件的安全保护方法和设备
US12034874B2 (en) * 2021-10-10 2024-07-09 International Business Machines Corporation Validating certificates
US20230214235A1 (en) * 2022-01-04 2023-07-06 Citrix Systems, Inc. Control over application plugins

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030145316A1 (en) * 2002-01-25 2003-07-31 Mckinlay Eric System, method and computer program product for initiating a software download
US20040103309A1 (en) * 2002-11-27 2004-05-27 Tracy Richard P. Enhanced system, method and medium for certifying and accrediting requirements compliance utilizing threat vulnerability feed

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US6968539B1 (en) 1999-09-30 2005-11-22 International Business Machines Corporation Methods and apparatus for a web application processing system
EP1113361A1 (en) * 2000-01-03 2001-07-04 Wimba.Com S.A. Process of communication between an applet and a local agent using a socket communication channel
US7233942B2 (en) * 2000-10-10 2007-06-19 Truelocal Inc. Method and apparatus for providing geographically authenticated electronic documents
US7801944B2 (en) * 2001-05-18 2010-09-21 Gary Stephen Shuster Distributed computing using agent embedded in content unrelated to agents processing function
EP1265143A1 (en) * 2001-06-08 2002-12-11 Hewlett-Packard Company, A Delaware Corporation Data processing system and method
US20040083474A1 (en) 2001-10-18 2004-04-29 Mckinlay Eric System, method and computer program product for initiating a software download
EP1315066A1 (en) * 2001-11-21 2003-05-28 BRITISH TELECOMMUNICATIONS public limited company Computer security system
US7287277B2 (en) * 2001-12-21 2007-10-23 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling execution of a computer operation
US20030233483A1 (en) * 2002-04-23 2003-12-18 Secure Resolutions, Inc. Executing software in a network environment
JP2003337630A (ja) 2002-05-17 2003-11-28 Ntt Docomo Inc 通信端末、プログラム、記録媒体、通信端末のアクセス制御方法およびコンテンツの提供方法
JP2003337716A (ja) 2002-05-20 2003-11-28 Ntt Docomo Inc 電子機器、データ共用方法、プログラム及び記憶媒体
JP2004070716A (ja) 2002-08-07 2004-03-04 Sharp Corp コンテンツ提示方法、コンテンツ提示プログラム、コンテンツ提示装置、および該プログラムを記録する記録媒体
US7509679B2 (en) 2002-08-30 2009-03-24 Symantec Corporation Method, system and computer program product for security in a global computer network transaction
US7434259B2 (en) * 2002-10-21 2008-10-07 Microsoft Corporation Method for prompting a user to install and execute an unauthenticated computer application
US8042178B1 (en) * 2003-03-13 2011-10-18 Mcafee, Inc. Alert message control of security mechanisms in data processing systems
US7490332B2 (en) * 2003-04-04 2009-02-10 Sesma Systems, Inc. System and method for accessing ActiveX objects in a platform dependent environment from objects in a platform independent environment
US7478408B2 (en) * 2003-04-04 2009-01-13 Sesma Systems, Inc. System and method for accessing objects in a platform dependent environment from a platform independent environment
US8880893B2 (en) * 2003-09-26 2014-11-04 Ibm International Group B.V. Enterprise information asset protection through insider attack specification, monitoring and mitigation
JP2005104098A (ja) * 2003-10-02 2005-04-21 Ricoh Co Ltd 画像形成装置
US20050138416A1 (en) 2003-12-19 2005-06-23 Microsoft Corporation Object model for managing firewall services
US8332943B2 (en) * 2004-02-17 2012-12-11 Microsoft Corporation Tiered object-related trust decisions
US8108902B2 (en) 2004-04-30 2012-01-31 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US20050268112A1 (en) * 2004-05-28 2005-12-01 Microsoft Corporation Managing spyware and unwanted software through auto-start extensibility points
CN100385852C (zh) * 2004-06-22 2008-04-30 腾讯科技(深圳)有限公司 一种网页插件选择下载的实现方法及其装置
US20060156400A1 (en) * 2005-01-06 2006-07-13 Gbs Laboratories Llc System and method for preventing unauthorized access to computer devices
KR20060082353A (ko) * 2005-01-12 2006-07-18 와이더댄 주식회사 실행가능 웹 컨텐트 제공 및 처리 시스템 및 방법
US7610273B2 (en) 2005-03-22 2009-10-27 Microsoft Corporation Application identity and rating service
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US8074272B2 (en) * 2005-07-07 2011-12-06 Microsoft Corporation Browser security notification
US7774846B2 (en) * 2005-08-10 2010-08-10 Intel Corporation Method and apparatus for controlling data propagation
WO2007023756A1 (ja) * 2005-08-24 2007-03-01 Nec Corporation 本人認証システム、ユーザ端末、サービス事業者装置、信頼性保証サーバ、これらの動作方法と動作プログラム
JP2009510598A (ja) * 2005-09-27 2009-03-12 サーカー ピーティーイー リミテッド コミュニケーション及びコラボレーションのためのシステム
US7743336B2 (en) * 2005-10-27 2010-06-22 Apple Inc. Widget security
JP2008027306A (ja) * 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US7797421B1 (en) * 2006-12-15 2010-09-14 Amazon Technologies, Inc. Method and system for determining and notifying users of undesirable network content
US8181264B2 (en) * 2007-02-07 2012-05-15 Apple Inc. Method and apparatus for deferred security analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030145316A1 (en) * 2002-01-25 2003-07-31 Mckinlay Eric System, method and computer program product for initiating a software download
US20040103309A1 (en) * 2002-11-27 2004-05-27 Tracy Richard P. Enhanced system, method and medium for certifying and accrediting requirements compliance utilizing threat vulnerability feed

Also Published As

Publication number Publication date
JP2013140634A (ja) 2013-07-18
US20090222925A1 (en) 2009-09-03
SG188169A1 (en) 2013-03-28
JP2011514996A (ja) 2011-05-12
KR20130008634A (ko) 2013-01-22
TWI420338B (zh) 2013-12-21
HK1153011A1 (en) 2012-03-16
AU2009220439B2 (en) 2012-09-13
US8635701B2 (en) 2014-01-21
TW200945096A (en) 2009-11-01
AU2009220439A1 (en) 2009-09-11
WO2009111195A3 (en) 2009-10-29
WO2009111195A2 (en) 2009-09-11
JP5592969B2 (ja) 2014-09-17
EP2250577A2 (en) 2010-11-17
KR20100127807A (ko) 2010-12-06
EP2250577A4 (en) 2012-02-29
CN101960446A (zh) 2011-01-26
JP5296106B2 (ja) 2013-09-25
CN101960446B (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
KR101384085B1 (ko) 보안 브라우저 기반 애플리케이션
US10503564B2 (en) Method and apparatus for handling security of an application and its extension
US10447684B2 (en) Hosted application sandbox model
JP5998284B2 (ja) エンタプライズシステムへのアプリケーションの動的登録
US9390241B2 (en) Method for executing an application in a restricted operating environment
US20170003980A1 (en) Web-Based Interface to Access a Function of a Basic Input/Output System
US11924210B2 (en) Protected resource authorization using autogenerated aliases
US20240311463A1 (en) Registration of dynamically created packaged applications
JP2022099241A (ja) ハードウェアの信頼できる実行環境の待ち時間の低減
Koh Understanding the microsoft office 2013 protected-view sandbox
Png et al. Exposing Functionality with API Gateway
Avaznejad Disk Encryption on Talos Operating System
Mayank et al. User-Based Authentication for Native Applications
Chaganti et al. Using Built-in DSC Resources
Radvan Fedora 13 Managing Confined Services

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170322

Year of fee payment: 4