KR20010040979A - 스택에 기초한 액세스 제어 - Google Patents

스택에 기초한 액세스 제어 Download PDF

Info

Publication number
KR20010040979A
KR20010040979A KR1020007008970A KR20007008970A KR20010040979A KR 20010040979 A KR20010040979 A KR 20010040979A KR 1020007008970 A KR1020007008970 A KR 1020007008970A KR 20007008970 A KR20007008970 A KR 20007008970A KR 20010040979 A KR20010040979 A KR 20010040979A
Authority
KR
South Korea
Prior art keywords
access
requested
code
type
frames
Prior art date
Application number
KR1020007008970A
Other languages
English (en)
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 KR20010040979A publication Critical patent/KR20010040979A/ko

Links

Classifications

    • 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
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting 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 at program execution time, where the protection is within the operating system
    • 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
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/461Saving or restoring of program or task context
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

시스템은 컴퓨터 상에서 실행하는 동작에 의해 요청된 자원에의 액세스를 조정한다. 이 동작은 실행 동안 코드를 조작하는 복수의 메소드를 호출한다. 이 시스템은 폴리시 파일(policy file), 호출 스택(call stack), 및 실행 유닛을 구비한다. 폴리시 파일은 자원의 각각에 대한 허가를 저장한다. 이 허가는 코드의 소스 및 코드의 실행기에 기초하여 이 자원에 대한 특정 종류의 액세스를 인가한다. 호출 스택은 동작에 의한 호출 순서로 메소드 및 실행기의 표현을 저장한다. 이 실행 유닛은 호출 스택에 대한 모든 메소드 및 실행기의 허가에 의해 인가된 액세스 종류가 동작에 의해 요청된 액세스를 능가할 때 자원에의 액세스를 허가한다.

Description

스택에 기초한 액세스 제어{Stack-based access control}
컴퓨터 시스템의 사용이 증가함에 따라, 조직체가 컴퓨터 시스템에 갈수록 의존하게 되고 있다. 컴퓨터 시스템의 고장은 이와 같은 조직체의 운영에 큰 악영향을 줄 수 있다. 따라서, 컴퓨터 시스템을 사용하는 조직체는 의도적으로 또는 비의도적으로 컴퓨터 시스템을 고장나게 하는 사용자에게 취약하다.
컴퓨터 시스템의 보안에 대처하는 한가지 방법은, 컴퓨터 시스템으로 하여금컴퓨터 시스템에 대한 유해한 행위(action)를 수행하는 소프트웨어를 실행하는 것이다. 컴퓨터 시스템이 유해한 소프트웨어를 실행하지 못하도록 하는데 사용될 수 있는 다양한 종류의 보안 행위들이 존재한다. 한가지 예는 "바이러스" 체커로서 컴퓨터 시스템에 의해 실행된 모든 소프트웨어를 점검하는 것이다. 그러나, 바이러스 체커는 극히 특정 소프트웨어 명령만을 조사한다. 따라서, 많은 소프트웨어를 띠는 메커니즘이 바이러스 체커에 의해 검출되지 않고 있다.
컴퓨터의 자원으로 조작되는 소프트웨어의 실행을 방지하는데 사용되는 다른 극히 평범한 행위는, "트러스트 개발자 방법(trusted developers approach)"이다. 트러스트 개발자 방법에 따르면, 시스템 관리자는, 컴퓨터 시스템이 트러스트 소프트웨어 개발자에 의해 개발된 소프트웨어만을 액세스할 수 있는 소프트웨어를 제한한다. 이와 같은 트러스트 개발자는 예를 들면, 공지된 밴더 또는 인하우스 개발자를 포함할 수 있다.
트러스트 개발자 방법의 근본은, 컴퓨터 프로그램이 개발자에 의해 만들어진다는 것과, 일부 개발자가 보안에 악영향을 주지 않는 소프트웨어를 만드는데 신뢰할 수 있다는 아이디어에 기초하고 있다. 또한 트러스트 개발자 방법의 근본은, 컴퓨터 시스템이 시스템 관리자의 제어하에 있는 장소에 저장된 프로그램만을 실행한다는 개념이다.
어플리케이션을 실행하는 최근에 개발된 방법은, 네트워크에 걸쳐 원격 소슬부터 로드된 소프트웨어 코드의 자동 및 즉시 실행을 포함한다. 네트워크가 시스템 관리자의 제어를 벗어난 원격 소스를 포함할 때, 트러스트 개발자 방법은 효과가 없다.
트러스트 개발자 방법을 원격 소스로부터의 코드를 실행할 수 있는 시스템에 적응시키려는 한가지 종래 기술의 시도를 트러스트 소스 방법이라고 한다. 트러스트 소스 방법의 중요한 개념은, 프로그램이 수신(즉, 프로그램의 "소스")되는 장소가 프로그램의 개발자를 식별한다는 개념이다. 결국, 프로그램의 소스는 프로그램이 트러스트 개발자로부터 나온 것인지의 여부를 판정하는데 사용될 수 있다. 만일 소스가 트러스트 개발자와 연관되어 있다면, 이때 소스는 "트러스트 소스"인 것으로 간주되고 코드의 실행이 허용된다.
트러스트 소스 방법의 한가지 구현을 샌드 박스 방법(sand box method)이라고 한다. 샌드 박스 방법은, 모든 코드들이 실행되게 하지만, 원격 코드에는 제한을 부과한다. 특히, 샌드 박스 방법은 모든 트러스트 코드에게는 컴퓨터 시스템의 자원을 완전히 액세스하고, 모든 원격 코드에는 자원에 제한된 액세스를 허용한다. 트러스트 코드는, 흔히 트러스트 코드의 보안을 담당하는 컴퓨터 시스템의 소유자 또는 관리자의 직접적인 제어하에 컴퓨터 시스템 상에 국부적으로 저장된다.
샌드 박스 방법의 한가지 단점은, 원격 코드가 동일하게 제한된 세트의 자원을 액세스하는 것을 제한하기 때문에, 이 방법이 극히 유연성이 있지 못하다는 것이다. 이때 몇몇 소스로부터의 원격 코드가 동일한 자원을 액세스할 때에 충돌이 발생할 수 있다. 결국, 종래 기술의 시스템은 흔히 하나의 소스에서 한 세트의 컴퓨터 자원으로의 원격 코드에 의한 액세스를 제한하는 한편, 다른 소스에서 다른 세트의 컴퓨터 자원으로의 원격 코드에 의한 액세스를 제한한다. 예를 들어, 시스템은 네트워크를 통해 제1 컴퓨터에 연관된 소스에서 한 세트의 파일로 로드된 원격 코드에 의한 액세스를 제한할 수 있고, 유사하게 네트워크를 통해 제2 컴퓨터에 연관된 소스에서 다른 세트의 파일로 로드된 원격 코드에 의한 액세스를 제한할 수 있다.
샌드 박스 방법보다 보다 유연성을 허용하는 보안 행위를 제공하는 것은, 주체와 허가 간의 복잡한 세트의 관계를 수립하는 것을 포함한다. "주체(principal)"는 허가가 허용된 컴퓨터 시스템 내의 엔터티이다. 주체의 예는 사용자, 조직체, 프로세스, 오브젝트, 및 스래드를 포함한다. "허가"는 주체가 특정 행위 또는 기능을 수행하는 것을 허용하는 컴퓨터 시스템에 의한 인가이다.
주체에 허가를 할당하는 작업은, 첨단 프로세스가 다수의 소스로부터 코드의 상호작용에 관여할 수 있다는 사실로 인해 복잡하다. 예를 들어, 주체(즉, 스래드)에 의해 실행되는 트러스트 제1 소스로부터의 코드는 트러스트 제2 소스로부터 코드의 실행을 야기할 수 있고, 이때 비트러스트 제3 소스로부터 코드의 실행을 초래할 수 있다.
비록 트러스트 제2 소스 및 비트러스트 제3 소스로부터의 코드가 실행될 때 주체가 동일하게 유지되지만, 트러스트 제2 소스로부터의 코드가 실행될 때의 주체에 적합한 액세스 권한은, 비트러스트 제3 소스로부터의 코드가 실행되고 있을 때의 주체에 적합한 액세스 권한과는 다르다. 따라서, 주체에 적합한 액세스 권한은 주체에 의해 실행되고 있는 코드의 소스가 변함에 따라 동적으로 변할 수 있다.
액세스 권한은, 또한 코드가 실행되고 있는 주체가 변함에 따라 동적으로 변할 수 있다. 흔히 하나의 주체는 다른 주체 대신에 코드를 실행한다. 예를 들어, 하나의 컴퓨터에 대한 주체가 원격 컴퓨터에 대한 자원에의 액세스를 요청하면, 요청은 원격 컴퓨터 상에 호출될 "원격" 주체가 요청을 처리하게 한다. 원격 주체에 의한 요청의 처리는 트러스트 및 비트러스트 소스로부터 코드의 실행을 포함한다. 이와 같은 상황에서, 종래 기술의 시스템은 그 대신에 코드가 실행되고 있는 주체에 무관하게 코드의 소스에 대한 코드 액세스 권한에 계속 기초한다. 그 대신에 코드가 실행되고 있는 주체를 고려하지 않음으로써, 종래 기술의 시스템은 보안에서의 가능한 파괴를 무시한다.
상기에 기초하여, 적당한 코드 액세스 권한을 판정하는 보안 메커니즘을 개발하는 것이 극히 바람직하다.
본 발명은 컴퓨터 시스템에서의 보안 행위에 관한 것으로, 더 상세하게는 코드의 소스, 및 코드가 실행되고 있는 주체(principal)의 신원에 기초하여 자원에의 액세스를 제어하는 시스템 및 방법에 관한 것이다.
본 발명에 일체화되고 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명에 따른 몇몇 실시예를 예시하며, 상세한 설명과 함께 본 발명의 주체를 설명하는데 도움이 된다.
도 1은 본 발명의 주체에 따른 컴퓨터 네트워크도.
도 2는 본 발명의 주체에 따른 구현에서 도 1의 컴퓨터를 도시하는 도면.
도 3은 도 2의 컴퓨터에서 실행하는 코드 스트림을 도시하는 도면.
도 4는 보호 도메인의 사용을 도시하는 예시적인 보안 메커니즘을 도시하는 도면.
도 5는 도 4의 폴리시 파일의 사용을 통해 구현되는 예시적인 폴리시를 도시하는 도면.
도 6은 도 2의 컴퓨터 상에서 실행하는 스래드에 연관된 호출 스택을 도시하는 도면.
도 7은 본 발명의 주체에 따른 구현에서 도 6의 점검 허용 방법에 의해 수행되는 처리의 순서도.
본 발명에 따른 시스템 및 방법은, 코드의 소스, 및 그 대신에 코드가 실행되고 있는 주체에 기초하여 코드에의 액세스 제어를 판정함으로써 이와 같은 필요성을 시정한다. 이들 인수중의 하나 또는 이들 모두에 기초하여 코드 액세스를 조정함으로써, 컴퓨터 시스템에서의 보안이 증가될 수 있다.
본 발명에 따른 시스템은, 컴퓨터 상에서 실행하는 동작에 의해 요청된 자원에의 액세스를 조정한다. 이 동작은 실행하는 동안 코드를 조작하는 복수의 메소드를 호출한다. 이 시스템은 폴리시 파일(policy file), 호출 스택(call stack), 및 실행 유닛을 구비한다. 폴리시 파일은 자원의 각각에 대한 허가를 저장한다. 이 허가는 코드의 소스 및 코드의 실행기에 기초하여 이 자원에 대한 특정 종류의 액세스를 인가한다. 호출 스택은 동작에 의한 호출 순서로 메소드 및 실행기의 표현을 저장한다. 이 실행 유닛은 호출 스택에 대한 모든 메소드 및 실행기의 허가에 의해 인가된 액세스 종류가 동작에 의해 요청된 액세스를 능가할 때 자원에의 액세스를 허가한다.
본 발명의 다음의 상세한 설명은, 첨부하는 도면을 가리킨다. 서로 다른 도면에서 동일한 참조번호는 동일하거나 유사한 엘리먼트를 지칭한다. 또한, 다음의 상세한 설명은 본 발명을 제한하지 않는다. 그 대신에, 본 발명의 범위는 첨부하는 특허청구범위에 의해서 한정된다.
본 발명에 따른 시스템 및 방법은 코드에의 액세스 권한의 유연성있는 지정을 제공함으로써 보안을 증가시킨다. 이 시스템 및 방법은 코드의 소스에 대한 액세스 권한에 기초할 뿐 아니라(즉, 코드가 트러스트(trusted) 또는 비트러스트(untrusted)), 또한 그 대신에 코드가 실행되고 있는 주체의 신원에 기포한다.(즉, 코드 실행을 요청하는 주체가 트러스트 또는 비트러스트인지에 따라)
분산 시스템의 개요
본 발명에 따른 방법 및 시스템은 하드웨어와 소프트웨어 모두를 포함하는 다양한 구성요소를 갖는 분산 시스템("예시적인 분산 시스템")에서 동작한다. 예시적인 분산 시스템은 (1) 시스템의 사용자가 많은 장치의 네트워크를 통해 서비스와 자원을 공유할 수 있게 하며, (2) 신뢰성있고 안전한 분산 시스템의 개발을 가능하게 하는 툴과 프로그래밍 패턴을 프로그래머에게 제공하며, 그리고 (3) 분산 시스템을 관리하는 작업을 간단하게 한다. 이와 같은 목표를 달성하기 위해, 예시적인 분산 시스템은 일관성있는 방식으로 장치에서 장치로 코드 및 데이터 모두가 이동될 수 있게 하는 자바(Java)TM프로그래밍 환경을 이용한다. 따라서, 예시적인 분산 시스템은 Java 프로그래밍 환경의 상부 상에 계층화되어 있고, 그것에 의해 제공된 보안과 그것에 의해 제공된 강력한 타이핑을 포함한 환경의 특성을 이용한다. Java 프로그래밍 환경은 본 발명의 참조로서 일체화되어 있는 Jaworski, Java 1.1 Developer's Guide, Sams.net(1997)에 보다 명확히 설명되어 있다.
예시적인 분산 시스템에서, 서로 다른 컴퓨터 및 장치들이 사용자에게 단일 시스템으로 보이는 것에 통합된다. 단일 시스템으로 보이게 함으로써, 예시적인 분산 시스템은 퍼스널 컴퓨터 또는 워크스테이션의 유연성 및 전용화 응답을 포기하지 않고 단일 시스템에 의해 제공될 수 있는 액세스의 간편성과 공유력을 제공한다. 예시적인 분산 시스템은 그래픽하게 분산되어 있지만, 신탁, 관리 및 폴리시의 기본적인 주석을 충족하는 사용자에 의해 운영되는 수많은 장치를 포함할 수 있다.
예시적인 분산 시스템 내에는 하나의 이상의 장치에 의해 제공되는 서비스의 다양한 논리적 그룹핑이 존재하고, 각각의 이와 같은 논리적 그룹핑은 Djinn으로 알려져 있다. "서비스"는 사용자, 프로그램, 장치 또는 다른 서비스에 의해 액세스될 수 있으며, 동작, 기억 관련, 통신 관련 또는 다른 사용자에의 액세스를 제공하는 것에 관련될 수 있는 자원, 데이터, 또는 기능을 가리킨다. Djinn의 일부로서 제공된 서비스의 예는 프린터, 디스플레이, 및 디스크와 같은 장치; 및 프로그램 또는 유틸리티와 같은 소프트웨어; 데이터베이스 및 파일과 같은 정보; 및 시스템의 사용자를 포함한다.
사용자 및 장치 모두는 Djinn일 수 있다. Djinn을 결합하면, 사용자 또는 장치는 Djinn에 제로 이상의 서비스를 부가하며, 보안 제한에 따라 포함하고 있는서비스중 임의의 서비스를 액세스할 수 있다. 따라서, 장치 및 사용자는 그 서비스에의 액세스를 위해 Djinn에 통합된다. Djinn의 서비스는, 프로그래밍적으로, 다른 오브젝트, 서로 다른 프로그래밍 언어로 작성된 소프트웨어 구성요소 또는 하드웨어 장치를 포함할 수 있는 Java 프로그래밍 환경의 오브젝트로서 보인다. 서비스는 해당 서비스를 요청할 수 있는 동작을 정의하는 인터페이스를 가지고 있으며, 서비스의 종류는 서비스를 구성하는 인터페이스를 결정한다.
도 1는 네트워크(1400)에 의해 상호연결된 컴퓨터(1100), 컴퓨터(1200), 및 장치(1300)를 포함하는 예시적은 분산 시스템(1000)을 도시한다. 컴퓨터(1100 및 1200)는 IBM-호환 컴퓨터 또는 심지어 "덤" 터미널과 같은 종래 기술의 임의의 컴퓨터를 포함할 수 있다. 전형적인 동작 동안, 컴퓨터(1100 및 1200)는 데이터를 송신하고 검색하는 클라이언트-서버 관계를 수립할 수 있다.
장치(1300)는 프린터, 팩스밀리기, 기억장치, 컴퓨터 또는 다른 장치와 같은 많은 장치중 임의의 장치일 수 있다. 네트워크(1400)는 국부 영역 네트워크, 광대역 네트워크 또는 인터넷일 수 있다. 비록 두개의 컴퓨터와 하나의 장치만이 예시적인 분산 시스템(1000)을 구성하는 것으로 도시되어 있지만, 기술분야의 숙련자는 예시적인 분산 시스템(1000)은 부수적인 컴퓨터 또는 장치를 포함할 수 있다는 것을 알 것이다.
도 2는 예시적인 분산 시스템(1000)의 많은 소프트웨어 구성요소를 상세히 도시하는 컴퓨터(1100)를 도시한다. 기술분야의 숙련자는 컴퓨터(1200) 또는 장치(1300)가 유사하게 구성될 수 있다는 것을 알 것이다. 컴퓨터(1100)는 메모리(2100), 보조 기억장치(2200), 중앙 처리 장치(CPU)(2300), 입력 장치(2400), 및 비디오 디스플레이(2500)를 포함한다. 메모리(2100)는 룩업 서비스(2110), 디스커버리 서버(2120), 및 Java 런타임 시스템(2130)을 포함한다. Java 런타임 시스템(2130)은 JavaTM원격 메소드 호출(RMI) 시스템(2140) 및 Java 버츄얼 머신(JVM)(2150)을 포함한다. 보조 기억장치(2200)는 JavaSpace(2210)를 포함한다.
상술한 바와 같이, 예시적인 분산 시스템(1000)은 Java 프로그래밍 환경에 기초하며, 따라서 Java 런타임 시스템(2130)을 이용한다. Java 런타임 시스템(2130)은 Java 런타임 시스템의 상부 상에서 실행하는 프로그램들이 플랫폼에 독립하는 방식으로, 호스트 운영체제의 윈도우잉 능력 및 네트워킹 능력을 포함한 다양한 시스템 기능에 액세스하는 것을 가능하게 하는 JavaTMAPI를 포함한다. Java API가 Java 런타임 시스템(2130)이 포트되어 있는 모든 운영체제에 걸쳐 단일의 공통 API를 제공하기 때문에, Java 런타임 시스템의 상부 상에서 실행하는 프로그램들은 호스트 플랫폼의 운영 체제 또는 하드웨어 구성에 무관하게 플랫폼에 독립적으로 실행한다. Java 런타임 시스템(2130)은 캘리포니아주, 마운틴 뷰에 위치한 선 마이크르시스템즈, 인크.로부터 입수할 수 있는 Java 소프트웨어 개발 킷의 일부로서 제공된다.
JVM(2150)은 또한 플랫폼 독립을 용이하게 한다. JVM(2150)은 바이트코드 형태로 프로그램으로부터 명령을 수신하고, 이들 바이트코드를 오브젝트 코드와 같은 실행 형태로 동적으로 변환하여 이를 실행함으로써 해석하는 추상 컴퓨팅 머신과 같이 행동한다. RMI(2140)는 하나의 컴퓨터 또는 장치 상에서 실행하는 오브젝트가 다른 컴퓨터 또는 장치 상에서 실행하는 오브젝트의 메소드를 호출하게 함으로써, 원격 메소드 호출을 용이하게 한다. RMI는 JVM의 내부에 위치될 수 있으며, RMI 및 JVM 모두는 Java 소프트웨어 개발 킷의 일부로서 제공된다.
룩업 서비스(2110)는 특정 Djinn에 이용가능한 서비스를 정의한다. 즉, 하나 이상의 Djinn, 결국 예시적인 분산 시스템(1000) 내에 하나 이상의 룩업 서비스가 존재할 수 있다. 룩업 서비스(2110)는 Djinn 내에 각각의 서비스를 위한 하나의 오브젝트를 포함하고, 각각의 오브젝트는 대응하는 서비스에의 액세스를 용이하게 하는 다양한 메소드를 포함한다. 룩업 서비스(2110)는 본 발명의 참조로서 일체화되어 있는 "Method and System for Facilitating Access to a Lookup Service"라는 제목의 현재 계류중인 미국특허출원 제 09/044,826호에 상세히 설명되어 있다.
디스커버리 서버(2120)는 부트와 조인(join) 또는 디스커버리라고 하는 프로세스 동안 새로운 장치가 분산 시스템(1000)에 부가된 때를 검출하고, 이와 같은 새로운 장치가 검출되면, 디스커버리 서버는 새로운 장치로 룩업 서비스(2110)에 대한 참조를 전달함으로써, 새로운 장치가 룩업 서비스로서 그 서비스를 등록할 수 있으며, Djinn의 멤버가 된다. 등록후에, 새로운 장치는 Djinn의 멤버가 되며, 결국, 룩업 서비스(2110)에 포함된 모든 서비스를 액세스할 수 있다. 부트 및 결합의 프로세스는 본 발명의 참조로서 일체화되어 있는 "Apparatus and Method for providing Downlodable Code for Use in Communicating with a Device in a Distributed System"이라는 제목의 미국특허출원 제09/044,939호에 설명되어 있다.
JavaSpace(2210)은 오브젝트를 저장하는 예시적인 분산 시스템(1000) 내의 프로그램에 의해 사용되는 오브젝트 저장고이다. 프로그램들이 예시적인 분산 시스템 내의 다른 장치에 액세스가능하게 하는 것은 물론 오브젝트를 지속적으로 저장하기 위해 JavaSpace(2210)을 사용한다. JavaSpace는 본 발명의 양수인에게 양도되고 본 발명의 참조로서 일체화되어 있는 "Database System Employing Polymorphic Entry and Entry Matching"(1997년 11월 17일 출원)이라는 제목의 현재 계류중인 미국특허출원 제08/971,529호에 상세히 설명되어 있다.
기능 개요
소스와 현재 실행되고 있는 코드의 실행기에 기초하여 스래드의 액세스 허가가 시간에 따라 변하도록 허용된 보안 실행 메커니즘이 제공된다. 코드의 소스는 코드가 트러스트 또는 비트러스트 소스로부터인 지를 가리킨다. 실행기는 그 대신에 코드가 실행되고 있는 주체를 가리킨다. 예를 들어, 실행기는 특정 사용자 또는 프로세스 또는 프로그램이 클라이언트 컴퓨터 상에서 동작하는 특정 구성일 수 있다.
트러스트 소스로부터 도달하는 루틴이 실행하면, 루틴을 실행하는 스래드는 전형적으로 자원에의 보다 큰 액세스가 허용된다. 유사하게, 트러스트 실행기에게는 자원에의 보다 큰 액세스가 주어질 수 있다.
루틴이 다른 루틴을 호출하면, 루틴을 실행하는 스래드는 루틴 모두에 공통인 허가와 연관되어 있다. 따라서, 스래드는 어느 한 루틴에 대해 허용된 액세스의 레벨 미만 또는 그와 동일한 액세스 레벨로 제한된다.
메커니즘은 임의의 루틴이 "특권(privileged)"되는 것을 허용한다. 스래드가 행위를 수행할 수 있는지의 여부를 판정하면, 스래드의 호출 계층에서 특권된 루틴과 상기 특권된 루틴보다 높은 루틴에 연관된 허가만이 예상된다.
본 발명에 따른 구현에 따르면, 본 발명에 설명되는 시스템은, 허가 오브젝트 및 보호 도메인 오브젝트를 사용하여, 시스템의 보안 폴리시를 모델하는 정보를 저장한다. 스래드의 시간에 따라 변하는 액세스 권한을 동적으로 판정하기 위한 기법은 물론 이들 오브젝트의 성질 및 사용이 이하에 상세히 설명된다.
트러스트 및 비트러스트 소스(trusted and untrusted sources)
도 3은 컴퓨터(1100)(도 2)에서 실행하는 코드 스트림(3100)의 도면이다. 코드 스트림(3100)은 JVM과 같은 코드 실행 엘리먼트(3200)에 의해 실행되고, 제로 이상의 비트러스트 소소(3300) 또는 제로 이상의 트러스트 소스(3400)로부터 파생할 수 있다. 비트러스트 소스(3300) 및 트러스트 소스(3400)는 인터넷에 결합된 파일 서버 또는 다른 유사한 장치를 포함한 파일 서버일 수 있다. 비트러스트 소스는 전형적으로 컴퓨터(1100)의 운영자가 직접 제어하지 않는다. 비트러스트 소스로부터의 코드를 본 발명에서는 비트러스트 코드라고 한다.
비트러스트 코드가 높은 보안상의 위험에 노출되는 것으로 간주되기 때문에, 비트러스트 코드가 액세스할 수 있는 일단의 컴퓨터 자원은 흔히 보안 위협에 노출되지 않는 것들에 제한된다. 트러스트 소스로부터의 코드는 흔히 트러스트 개발자에 의해 개발된다. 트러스트 코드는 신뢰성있는 것으로 간주되며, 비트러스트 코드보다 훨씬 적은 보안상의 위험을 가지고 있다.
원격 소스로부터의 네트워크를 통해 로드되며 직접 실행되는 소프트웨어 코드를 이하에서는 원격 코드라고 한다. 전형적으로, 원격 소스는 개별적인 조직체 또는 개인의 컴퓨터 시스템이다. 원격 소스는 흔히 인터넷에 접속된다.
정상적으로 비트러스트 코드는 원격 코드이다. 그러나, 컴퓨터(1100)에 국부적인 소스로부터의 코드는 높은 보안 위험성에 노출될 수 있다. 이와 같은 국부적인 소스로부터의 코드는 비트러스트 소스로부터의 비트러스트 코드인 것으로 간주될 수 있다. 유사하게, 특정 원격 소스로부터의 코드는 신뢰성이 있으며, 상대적으로 적은 위험성을 가지고 있는 것으로 간주될 수 있으며, 트러스트 자원으로부터의 트러스트 코드인 것으로 간주된다.
본 발명에 따른 구현에 따르면, 보안 메커니즘은, 트러스트 및 비트러스트 코드가 동일한 주체에 의해 실행되더라도 트러스트 코드가 비트러스트 코드보다 보다 많은 자원을 액세스하는 것을 가능하게 하는 보안 폴리시를 구현하는데 사용된다. 보안 폴리시는, 어떠한 행위 코드 실행 엘리먼트(3200)가 코드 스트림(3100) 내의 코드가 수행되게 할 것인지를 판정한다. 허가 및 보호 도메인의 사용은 상대적으로 복잡한 허가 그룹핑 및 관계를 가능하게 함으로써 간단한 트러스트/비트러스트분열을 뛰어넘는 폴리시을 가능하게 한다.
타이핑된 허가와 결합하여 사용될 수 있는 보호 도메인과 폴리시는 도 4를 참조하여 보다 상세히 설명될 것이다.
트러스트 및 비트러스트 실행기
사용자 또는 컴퓨터 프로그램이 동작하는 구성(또는 일부 환경에서는 프로그램 그 자체)을 "실행기(executor)"(즉, 자원이 액세스될 주체)라고 한다. 예를 들어, 컴퓨터(1200)("클라이언트 실행기") 상의 프로그램용 실행기는 컴퓨터(1100)("서버 실행기") 상의 프로그램용 실행기와는 다르다.
코드 실행 엘리먼트(3200)는 클라이언트 실행기 대신에 RMI(2140)(도 2)를 거쳐 요청을 수신한다. 이에 응답하여, 코드 실행 엘리먼트(3200)는 스래드와 같은 동작을 실행하여, 요청을 처리한다. 스래드는 요청을 충족시키기 위해 적당한 코드 및/또는 자원을 얻는 것을 담당하고, 일반적으로 이 스래드는 서버 실행기 및 클라이언트 실행기중의 하나 또는 이들 모두 대신에 동작하는 것이 허용된다.
코드 실행 엘리먼트(3200)은, 트러스트 실행기가 높은 보안 위험성에 노출되지 않는 것으로 간주되기 때문에, 인가된 실행기 또는 "트러스트 실행기"에게 컴퓨터 자원에의 보다 큰 액세스를 허용한다. 트러스트 실행기는 시스템 갱신 등을 처리하기 위해 컴퓨터 자원에 보다 큰 액세스를 필요로 하는 시스템 운영자를 포함할 수 있다. 비인가 실행기 또는 "비트러스트 실행기"는 서로 다르게 취급된다. 비트러스트 실행기는 높은 보안 위험에 노출되는 것으로 간주되고, 따라서, 컴퓨터 자원에는 제한된 액세스가 주어진다.
본 발명에 구현에 따르면, 보안 메커니즘은 트러스트 및 비트러스트 실행기가 단일 소스로부터 코드를 요청할 때에도, 트러스트 실행기가 비트러스트 실행기보다 많은 자원에의 액세스를 허용하는 보안 폴리시를 구현하는데 사용될 수 있다. 보안 폴리시는 어떤 행위 코드 실행 엘리먼트(3200)가 허용될 지를 판저한다. 허가 및 보호 도메인의 사용은 상대적으로 복잡한 허가 그룹핑 및 관계를 허용함으로써 간단한 트러스트/비트러스트 분열을 뛰어넘는 폴리시을 가능하게 한다.
타이핑된 허가와 결합하여 사용될 수 있는 보호 도메인과 폴리시가 도 4를 참조하여 보다 상세히 설명될 것이다.
예시적인 보안 메커니즘
보호 도메인의 사용을 도시하는 예시적인 보안 메커니즘이 도 4에 도시된다. 예시적인 보안 메커니즘은 폴리시 파일(4100), 폴리시 오브젝트(4200), 도메인 맴퍼(mapper) 오브젝트(4300), 및 하나 이상의 보호 도메인 오브젝트((4400)을 포함한다. 보안 메커니즘은 코드 실행 엘리먼트(3200)(도 3)를 사용하여 구현된다.
코드 실행 엘리먼트(3200)는 코드 스트림(3100)(도 3)으로부터 수신하는 코드를 실행한다. 설명상, 코드 스트림(3100)으로부터의 코드는 오브젝트 지향 소프트웨어인 것으로 가정한다. 결국, 코드는 클래스에 속하는 오브젝트에 연관된 메소드의 형태이다. 코드 실행 엘리먼트(3200)에 의해 실행되는 코드에 의해 구현된 명령에 응답하여, 코드 실행 엘리먼트(3200)는 하나 이상의 오브젝트(4500)를 생성한다. 오브젝트는 데이터를 조작하는 프로시져 또는 함수와 결합된 데이터를 포함하는 데이터 구조이다. 모든 오브젝트는 클래스(4600)와 같은 클래스에 속한다. 클래스에 속하는 각각의 오브젝트는 동일한 파일("속성")과 동일한 메소드를 갖는다. 메소드는 오브젝트를 조작하는데 사용되는 프로시져, 함수 또는 루핀이다. 오브젝트는 오브젝트가 속하는 클래스의 "인스턴스"라고 한다.
하나 이상의 클래스 정의가 코드 스트림(3100)으로부터의 코드에 포함된다. 클래스에 속하는 오브젝트의 파일 및 메소드는 클래스 정의에 의해 정의된다. 이들 클래스 정의는 코드 실행 엘리먼트(3200)에 의해 사용되어, 클래스 정의에 의해 정의된 클래스의 인스턴스인 오브젝트를 생성한다.
이들 클래스 정의는 프로그래머에 의해 작성된 소스 코드로부터 생성된다. 예를 들어, Java 개발자 킷을 사용하는 프로그래머는 Java 프로그래밍 언어에 부합하는 소스 코드를 소스 파일에 입력한다. 소스 코드는 코드 실행 엘리먼트(3200)의 실행을 제어하는 바이트 코드를 생성하는데 사용되는 클래스 정의 및 다른 명령을 구현한다. 클래스를 정의하고, Java 버츄얼 머신과 같이 코드 실행 엘리먼트에 의해 실행되는 코드를 생성하기 위한 기법은 기술분야의 숙련자에게 공지되어 있다.
코드 스트림(3100)으로부터의 클래스 정의에 의해 정의된 각각의 클래스는 클래스 명(4620) 및 코드 식별자(4640)와 연관되어 있다. 코드 실행 엘리먼트(3200)는 클래스(4600), 그 클래스 명(4620) 및 코드 식별자(4640) 간의 연관을 유지한다. 코드 식별자(4640)는 코드의 소스를 나타낸다.
"코드의 소스"는 컴퓨터 명령을 수신하는 엔터티이다. 코드의 소스의 예는 파일 또는 네트워크를 통해 접속된 데이터 서버에 저장된 지속하는 오브젝트, 플래시 EPROM에 저장된 명령을 판독하는 플래시 EPROM 판독기 또는 일단의 시스템 라이브러리를 포함한다.
본 발명에 따른 구현에서, 코드 식별자(4640)는 URL(uniform resource locator)(4642) 및 일단의 공용 암호화 키(4644)를 포함한 합성 레코드이다. URL은 특정 소스를 식별한다. URL(4642)는 인터넷에 접속된 임의의 서버를 유일하게식별하는데 사용되는 스트링이다. URL(4642)은 또한 컴퓨터(1100)에 국부적인 자원을 지정하는데 사용될 수 있다. 전형적으로, URL(4642)는 파일의 지정, 및 서버가 제공하는 코드 스트림의 소스인 파일의 디렉토리를 포함한다.
이하 "키"라고 불르는 공용 암호화 키는 관련된 코드 및 데이터를 운반하는데 사용되는 파일에 포함될 수 있는 디지털 서명을 유효화하는데 사용된다. 공용 암호화 키와 디지털 서명은 Schneier에 의한 Applied Cryptography(1996)에 상세히 설명되어 있다. 키(4644)는 파일에 포함될 수 있고, 키를 자원과 연관시키는 데이터베이스(즉, URL)에 포함될 수 있거나 또는 대체 기법을 사용하여 액세스가능할 수 있다.
클래스는 클래스를 정의하는 코드를 운반하는데 사용되는 파일에 포함된 디지털 서명과 연관될 수 있거나 또는 클래스의 클래스 정의는 디지털 서명과 특수하게 연관될 수 있다. 유효 디지털 서명과 연관된 클래스를 서명된 것(being signed)이라고 한다. 유효 디지털 서명은 데이터베이스에 저장된 공지된 키에 의해 증명될 수 있는 디지털 서명이다. 만일 클래스가 증명될 수 없는 디지털 서명과 연관되거나 또는 클래스가 임의의 디지털 서명과 연관되어 있지 않으면, 클래스를 서명되지 않은 것이라고 한다. 서명되지 않은 클래스는 디폴트 키와 연관될 수 있다. 키는 데이터베이스 내의 키를 참조하는데 사용될 수 있는 이름과 연관될 수 있다.
비록 하나의 코드 식별자 포맷이 소스(즉, 암호화 키 및 URL)을 가리키는 데이터를 포함하는 것으로 설명되었지만, 대체 포맷이 가능하다. 코드의 소스를 가리키는 다른 정보 또는 그 결합이 코드 식별자를 표현하는데 사용될 수 있다.
실행기 식별자(4700)는 코드의 실행기를 나타낸다. "코드의 실행기"는 코드가 실행되고 있는 주체(즉, 사용자 또는 조직체)이다. 실행기의 예는 "John T. Smith"과 같은 사람 또는 "선 마이크로시스템즈, 인크.와 같은 조직체를 포함한다. 따라서, "실행기 식별자"는 실행기를 나타내는 식별자의 몇가지 형태이다. 가능한 실행기의 예는 스트링 명, 컴퓨터 시스템 로그 인 명, 및 종업원 숫자를 포함한다. 서버가 RMI를 거쳐 클라이언트로부터 요청을 수신하면, 서버는 클라이언트 실행기 대신에 클라이언트 프로그램이 실행하는 증명으로서 클라이언트 실행기의 인가를 요구할 수 있다.
보호 도메인 및 허가
본 발명에 따른 구현에 따르면, 보호 도메인은 컴퓨터 시스템 내의 보안을 강화하는데 사용된다. 보안 도메인은 하나 이상의 소스로부터의 코드가 그 대신에 실행되고 있을 때에 하나 이상의 실행기에 허가된 일단의 허가로서 간주될 수 있다. 허가는 원칙이 특정 행위 또는 기능을 실행하게 하는 컴퓨터 시스템에 의한 인가이다. 전형적으로, 허가는 특정한 방식으로 컴퓨터 자원에의 액세스를 가능하게 하는 인가를 포함한다. 인가의 예는 파일 시스템의 특정 디렉토리(즉, /홈)에 "기록"하는 인가이다.
허가는 컴퓨터 시스템에서 무수히 많은 방식으로 표현될 수 있다. 예를 들어, 텍스트 명령을 포함하는 데이터 구조는 허가를 표현할 수 있다. "permission executor write/somedirectory/somefile"와 같은 명령은 주체 "실행기" 대신에 디렉토리 "/somedirectory" 내의 "somefile" 파일에 기록할 허가를 지칭한다. 명령은, 인가된 어떤 특정 행위, 행위를 수행하도록 인가된 실행기, 및 특정 행위가 인가된 컴퓨터 자원을 지칭한다. 본 예에서, 인가된 특정 행위는 주체 "실행기" 대신에 "기록"하는 것이 인가된다. 특정 행위가 인가되는 컴퓨터 자원은 컴퓨터(1100)의 파일 시스템 내의 "/somedirectory/somefile" 파일이다. 본 예에서, 파일, 및 파일이 포함되어 있는 디렉토리는 기술분야의 숙련자에 의해 인가된 종래 형태로 표현된다.
허가는 이하에 허가 오브젝트라고 하는 오브젝트로서 표현될 수 있다. 오브젝트의 속성은 특정 허가를 나타낸다. 예를 들어, 오브젝트는 "write"의 행위 속성, 및 "/somedirectory"의 타겟 자원 속성을 포함할 수 있다. 허가 오브젝트는 요청된 허가가 허가 오브젝트로서 표현된 특정 허가에 의해 인가되는 지의 여부를 판정하는 하나 이상의 허가 유효화 메소드를 가질 수 있다.
폴리시
허가, 실행기 및 코드 소스 간의 상호관계는 시스템의 보안 폴리시를 구성한다. 시스템의 폴리시는 명령을 포함하는 하나 이상의 파일에 의해 표현될 수 있다. 각각의 명령은 특정 액세스 식별자와 특정 인가 허가 간의 맵핑을 수립한다. 액세스 식별자는 실행기 식별자와 코드 식별자로서 구성된다. 명령어에 명시된 허가는 오브젝트들이 명령어의 액세스 식별자 내의 실행기 식별자에 의해 명시된 실행기 대신에 조작될 때에 명령어의 액세스 식별자에 명시된 코드 식별자에 연관된 클래스에 속한 모든 오브젝트에 적용된다.
도 5는 폴리시 파일(4100)(고 4)의 사용을 통해 구현된 예시적인 폴리시를 도시한다. 예시적인 폴리시 파일(4100) 내의 명령의 포맷은 <"permisson"> <executor><URL><key name><action><target>이다. <executor>는 코드의 실행기를 식별하고, <key name>에 대응하는 <URL>과 파일의 결합은 코드 소스를 구성하고, <action><target>은 허가를 나타낸다. 키는 키 이름과 연관되어 있다. 키와 대응하는 키 이름은 함께 키 데이터베이스에 저장된다. 키 이름은 키 데이터베이스 내의 키를 찾는데 사용될 수 있다. 예를 들어, 다음 명령을 고려하자.
허가 실행기 파일://somesource somekey write/tmp/"
상기 명령은, 실행기 "executor1"이 코드 소스 "file://somesource"-"somekey"(즉, URL-키 이름)에 연관된 클래스에 속하는 오브젝트에 의해 "/tmp/*"에 기록할 허가의 인가를 나타낸다.
암시 허가
하나의 허가는 다른 허가에 의해 "포괄"되는 것으로 간주되는 다른 허가에 정확히 일치할 필요는 없다. 제1 허가가 제2 허가에 일치하지 않고 제2 허가를 포괄할 때, 제1 허가를 제2 허가를 "암시(imply)"하는 것이라고 한다. 예를 들어, 디렉토리 내의 임의의 파일, "c:/"에 기록하는 허가는, "c:/thisfile"와 같은 디렉토리 내의 임의의 특정 화일에 기록하는 허가를 암시한다. 다른 예로서, "선 마이크로시스템즈, 인크.의 모든 종업원"에게 허가된 "d:/log" 파일을 판독하는 허가는, 동일한 조직체의 특정 종업원에 허가된 "d:/log" 파일을 판독하는 허가를 암시한다.
만일 허가가 허가 오브젝트에 의해 표현되면, 허가 오브젝트용 유효화 메소드는 하나의 허가가 다른 것에 의해 암시되었는지의 여부를 판정하기 위한 코드를 포함한다. 예를 들어, 디렉토리 내의 임의의 파일에 기록하는 허가는, 해당 디렉토리 내의 임의의 특정 파일에 기록하는 허가를 암시하고, 디렉토리 내의 임의의 파일로부터 판독하는 허가는 해당 디렉토리 내의 임의의 특정 파일로부터 판독하는 허가를 암시한다. 그러나, 기록할 허가는 판독할 허가를 암시하지 않는다.
오브젝트를 구현하는 폴리시
다양한 오브젝트가, 폴리시 파일(4100)에 포함된 허가 맵핑에 대해 액세스 식별자에 의해 표현된 폴리시를 구현하는데 사용될 수 있다. 도 4에 도시된 구현에 따르면, 폴리시를 효율적으로 그리고 편리하게 구현하기 위해서는, 폴리시 오브젝트(4200), 도메인 맵퍼 오브젝트(4300), 하나 이상의 보호 도메인 오브젝트(4400) 및 하나 이상의 액세스 식별자(4800)가 제공된다.
폴리시 오브젝트(4200)는 예를 들어 폴리시 파일(4100)으로부터 얻어진 폴리시 정보를 저장하기 위한 오브젝트이다. 특히 폴리시 오브젝트(4200)는 허가에 대한 액세스 식별자의 맵핑을 제공하고, 폴리시 파일(4100) 내의 명령에 기초하여 구성된다. 폴리시 오브젝트(4200) 내에는, 액세스 식별자와 그 연관된 인가 허가가 데이터 구조 또는 오브젝트에 의해 표현될 수 있다.
보호 도메인 오브젝트(4400)는 새로운 액세스 식별자(4800)가 도메인 맵퍼 오브젝트(4300)에 의해 만날 때에 요청에 따라 생성된다. 액세스 식별자(4800)가 수신되면, 도메인 맵퍼 오브젝트(4300)는 보호 도메인 오브젝트(4400)가 액세스 식별자(4800)과 이미 연관되어 있는지의 여부를 판정한다. 도메인 맵퍼 오브젝트(4300)는 보호 도메인 오브젝트가 생성되었다는 것을 가리키는 데이터, 및 보호 도메인 오브젝트에 연관된 액세스 식별자를 유지한다. 만일 보호 도메인 오브젝트가 이미 액세스 식별자와 연관되어 있다면, 도메인 맵퍼 오브젝트(4300)는 액세스 식별자와 보호 도메인 오브젝트의 맵핑을 액세스 식별자 및 도메인 맵핑 오브젝트(4300)에 의해 유지되는 보호 도메인 오브젝트의 맵핑에 부가한다.
만일 보호 도메인 오브젝트가 액세스 식별자와 연관되어 있지 않으면, 새로운 보호 도메인 오브젝트가 생성되어 허가된다. 보호 도메인 오브젝트는 폴리시 오브젝트(4200)내의 허가에 대한 액세스 식별자의 맵핑에 기초하여, 액세스 식별자에 맵핑된 허가로 채워진다. 마지막으로, 도메인 맵퍼 오브젝트(4300)는 액세스 식별자와 보호 도메인 오브젝트의 맵핑을 액세스 식별자 및 이미 설명한 보호 도메인 오브젝트의 맵핑에 부가한다.
본 발명에 따른 다른 구현에서, 도메인 맵퍼 오브젝트 내의 보호 도메인 오브젝트에 대한 액세스 식별자의 맵핑을 저장하는 대신에, 맵핑은 보호 도메인 클래스 내의 정적 필드 내에 저장된다. 보호 도메인 클래스는 보호 도메인 오브젝트(4400)가 속하는 클래스이다. 아무리 많은 오브젝트들이 클래스에 속하더라도 클래스용 정적 필드의 하나의 인스턴스만이 존재한다. 보호 도메인 오브젝트가 생성되었다는 것을 가리키는 데이터, 및 보호 도메인 오브젝트에 연관된 액세스 식별자가 보호 도메인 클래스의 정적 필드에 저장된다.
정적 메소드는 상술한 정적 데이터를 액세스하고 갱신하는데 사용된다. 정적 메소드는 전체 클래스 대신에 호출되고, 특정 오브젝트를 참조하지 않고 호출될 수 있다.
예시적인 클래스 스택
상술한 허가 오브젝트, 보호 도메인 오브젝트 및 폴리시 오브젝트는 스래드의 액세스 권한을 판정하는데 사용된다. 본 발명에 따른 구현에 따르면, 이와 같은 액세스 권한은 현재 스래드가 어떤 코드를 실행하는 지 그리고 실행기 대신에 스래드가 현재 실행하는 것에 기초하여 시간에 따라 변한다. 스래드의 현재 실행하는 코드의 실행 결과가 되는 호출의 시퀀스가 스래드의 호출 스택에 반영된다. 권한이 시간에 따라 변하도록, 액세스 권한을 강화하는 보안 메커니즘의 동작을 설명하기 위해 예시적인 호출 스택을 참조할 것이다.
도 6은 오브젝트(4500-1)의 메소드(6300-1)가, 액세스 제어기 오브젝트(6500)의 점검 허가 메소드(6400)를 호출하는 또 다른 오브젝트(4500-3)의 메소드(6300-3)를 호출하는 다른 오브젝트(4500-2)의 메소드(6300-2)를 호출하는 스래드(6200)에 연관된 호출 스택(6100)을 포함하는 블럭도이다.
스래드(6200)는 컴퓨터(1100) 상에서 실행하는 스래드이다. 호출 스택(6100)은 임의의 소정 인스턴스에서 스래드(6200)에 의해 호출된 메소드의 호출 계층을 나타내는 스택 데이터 구조이다. 도 6에 도시된 인스턴스에서, 호출 스택(6100)은 스래드(6200)에 의해 실행되는 각각의 메소드를 위한 프레임(즉, 프레임 6100-1)을 포함하지만, 아직 미완료이다.
각 프레임은 호출되었지만 스래드(6200)에 의해 완료되지 않은 메소드에 대응한다. 호출 스택(6100) 상의 프레임의 상대적 위치는 프레임에 대응하는 메소드의 호출 순서를 반영한다. 메소드가 완료되면, 메소드에 대응하는 프레임이 호출 스택(6100)의 상부로부터 제거된다. 메소드가 호출되면, 메소드에 대응하는 프레임이 호출 스택(6100)의 상부에 부가된다.
각각의 프레임은 프레임에 대응하는 오브젝트 및 메소드에 대한 정보를 포함한다. 이 정보로부터, 메소드의 클래스는 코드 실행 엘리먼트(3200)에 의해 모든 오브젝트에 대해 제공된 "get class" 메소드를 호출함으로써 결정될 수 있다. 이 클래스의 코드 식별자는 코드 실행 엘리먼트(3200)에 의해 유지되는 연관으로부터 결정될 수 있다. 각각의 프레임은 또한 그 대신에 프레임이 실행하고 있는 실행기의 실행기 식별자(즉, 실행기 식별자 4700-1)를 포함한다. 실행기 식별자 및 코드 식별자는 액세스 식별자(즉, 액세스 식별자 4800-1)에 결합될 수 있다. 도메인 맵퍼 오브젝트(4300)내의 맵핑으로부터, 소정의 프레임을 위한 액세스 식별자에 연관된 보호 도메인 오브젝트가 결정될 수 있다.
예를 들어, 스래드(6200)이 메소드(6300-1)를 호출한다고 가정한다. 메소드(6300-1)를 실행하면서, 스래드(6200)는 메소드(6300-2)를 호출한다. 메소드(6300-2)를 실행하면서, 스래드(6200)는 메소드(6300-3)를 호출한다. 메소드(6300-3)를 실행하면서, 스래드(6200)는 메소드(6400)를 호출한다. 이때, 호출 스택(6100)은 도 6에 도시한 바와 같이 메소드의 호출 계층을 나타낸다. 프레임(6100-4)은 메소스(6400), 프레임(6100-3) 내지 메소드(6300-3), 프레임(6100-2) 내지 메소드(6300-2), 및 프레임(6100-1) 내지 메소드(6300-1)에 대응한다. 스래드(6200)가 메소드(6400)를 완료하면, 프레임(6100-4)가 호출 스택(6100)으로부터 제거된다.
메소드/허가 관계
호출 스택(6100) 상의 각각의 프레임은 일단의 허가와 연관되어 있다. 소정 프레임에 대한 일단의 허가는, 소정의 메소드용 코드가 수신되는 소스, 및 그 대신에 코드가 실행되고 있는 주체에 연관된 보호 도메인 오브젝트에 의해 결정된다. 프레임, 보호 도메인, 및 허가 간의 관계를 도 6을 참조하여 설명한다.
보호 도메인 오브젝트(4400-1)는 실행기 식별자(4700-1)에 의해 형성된 액세스 식별자(4800-1), 및 오브젝트(4500-1)의 클래스의 코드 식별자로부터 맵핑된다. 오브젝트(4500-1)의 메소드(6300-1)는 실행기 식별자(4700-2) 대신에 오브젝트(4500-2)의 메소드(6300-2)를 호출한다. 보호 도메인 오브젝트(4400-2)는 실행기 식별자(4700-2)에 의해 형성된 액세스 식별자(4800-2), 및 오브젝트(4500-2)의 클래스의 코드 식별자로부터 맵핑된다. 오브젝트(4500-2)의 메소드(6300-2)는 실행기 식별자(4700-3) 대신에 오브젝트(4500-3)의 메소드(6300-3)를 호출한다. 보호 도메인 오브젝트(4400-3)는 실행기 식별자(4700-3)에 의해 형성된 액세스 식별자(4800-3), 및 오브젝트(4500-3)의 클래스의 코드 식별자로부터 맵핑된다.
미록 보호 도메인 오브젝트가 특정 실행기 및 코드 소스의 액세스 권한을 구성하고 판정하는데 사용되지만, 다수의 소스로부터 도달하는 그 코드가 다중 주체 대신에 실행되도록 요청되는 다수의 메소드를 갖는 호출 스택을 구비한 스래드의 액세스 권한을 한정하는 일부 메커니즘이 제공되어야만 한다. 본 발명에 따른 구현에 따르면, 이 판정은 이하에 상세히 설명하는 바와 같이 액세스 제어기 오브젝트에 의해 수행된다.
예시적인 액세스 제어기
본 발명에 따른 구현에 따르면, 액세스 제어기 오브젝트는 스래드에 의해 특정 행위가 수행될 수 있는 지의 여부를 결정하는데 사용된다. 특히, 자원 관리 오브젝트가 자원을 액세스하기 전에, 자원 관리 오브젝트(즉, 오브젝트 6300-3)는 액세스 제어기 오브젝트(6500)의 점검 허가 메소드(6400)를 호출한다.
도시한 예에서, 자원 관리 메소드(6300-3)는 자원에의 액세스가 인가되는 지의 여부를 판정하기 위해, 액세스 제어기 오브젝트(6500)의 점검 허가 메소드(6400)을 호출한다. 이와 같은 판정을 하기 위해, 액세스 제어기 오브젝트(6500)의 점검 허가 메소드(6400)는 도 7을 참조하여 설명될 단계를 수행한다.
행위가 인가되는지의 여부 결정
본 발명에 따른 구현에 따르면, 만일 행위를 수행하는데 필요한 허가가 인가를 판정하는 요청이 수행될 때에 스래드에 연관된 각각의 보호 도메인 오브젝트에 포함되어 있다면 행위가 인가된다. 만일 허가가 보호 도메인 오브젝트에 연관된 하나 이상의 허가에 의해 포괄되면, 허가는 보호 도메인 오브젝트에 포함된 것으로 간주된다. 예를 들어, 만일 행위가 주체 "Bob" 대신에 "e:/tmp" 디렉토리 내의 파일에 기록하는 허가를 요청하면, 만일 보도 도메인 오브젝트(4400-1)가 해당 허가를 명시적으로 포함하거나 또는 암시하면, 이와 같이 요청된 허가가 보호 도메인 오브젝트(4000-1)에 포함될 것이다.
스래드(6200)가 점검 허가 메소즈(6400)를 호출함으로써 행위가 인가되는 지의 여부에 대한 판정에 대한 요청을 수행할 때, 스래드(6200)가 메소드(6300-3)을 실행한다고 가정한다. 또한 스래드(6200)가 메소드(6300-1), 메소드(6300-2), 및 메소드(6300-3)를 호출하였고, 스래드(6200)가 메소드(6400)를 호출하였을 때에 이들 메소드가 아직 완료되지 않았다고 가정한다. 인가가 이루어지는 지의 판정 요청이 이루어질 때 스래드(6200)에 연관된 보호 도메인 오브젝트는 보호 도메인 오브젝트(4400-1, 4400-2 및 4400-3)로서 표현된다.
현재의 예에 존재하는 호출 계층을 가정할 때, 만일 내부에 포함된 허가만이 "write to e:/tmp"이라면 보호 도메인 오브젝트(4400-1)에 포함된 임의의 허가에 의해 소정의 허가가 포괄되지 않기 때문에, "Bob" 대신에 "d:/sys/pwd"에 기록하는 행위를 수행하는 소정의 허가가 스래드(6200)에 대해서는 인가되지 않는다.
특권 메소드
때때로, 메소드가 스래드의 호출 계층에서 메소드에 선행하는 메소드에 연관된 보호 도메인 오브젝트에 무관하게 수행하는 행위를 인가할 필요성이 발생한다.
특히, 패스워드 파일의 보안이 중요하기 때문에, 패스워드 파일을 갱신하는데 필요한 허가는 극히 적은 보호 도메인 오브젝트에 한정된다. 전형적으로, 이와 같은 보호 도메인 오브젝트는 자신의 보안 메커니즘을 제공하는 트러스트 코드 및 트러스트 실행기로부터의 오브젝트의 메소드와 연관되어 있다. 예를 들어, 새로운 패스워드를 갱신하는 방법은 사용자를 위한 새로운 패스워드를 갱신하기 전에 사용자의 구(old) 패스워드를 필요로 할 수 있다. 이 방법은 또한 갱신이 요청된 주체의 인가를 필요로 할 수 있고, 단지 인가된 주체만을 위한 패스워드의 갱신을 허용한다.
패스워드를 갱신하는 허가가 특정 소스로부터의 코드, 및 특정 인가된 주체 대신에 실행되는 코드에 국한되기 때문에, 모든 다른 소스 또는 주체로부터의 코드극 패스워드를 갱신하는 것이 허용되지 않는다. 이는 도 6에 도시한 것과 같은 상황에서도 적용되는데, 도면에서 원격 소스(메소드 6300-1)로부터의 코드는 패스워드를 갱신하는 허가를 가지고 있는 트러스트 코드(메소드 6300-3)를 호출함으로써 패스워드를 바꾸려고 시도한다. 이 상황에서는 호출 계층(메소드 6300-1)에서의 적어도 하나의 메소드가 필요한 허가를 가지고 있지 않기 때문에 액세스가 거절된다.
본 발명에 따른 구현에 따르면, 행위를 수행할 허가를 스스로 가지고 있지 않은 메소드가 허가를 가지고 있는 특수한 "특권" 메소드를 호출함으로써 행위가 수행되게 하는 특권 메커니즘이 제공된다. 이 결과는 "스래드에 연관될" 것으로 간주되는 보호 도메인 오브젝트를 "특권" 메소드에 연관된 보호 도메인 오브젝트과, 호출 계층의 특권 메소드에 후속하는 메소드에만 제한함으로써, 달성된다.
메소드는 호출된 특권 오브젝트의 메소드, 예를 들어, beginPrivilege를 호출함으로써 스스로 특권(즉, 특권 메커니즘을 인에이블시킴)할 수 있다. 메소드는 스스로 호출된 특권 오브젝트의 다른 메소드, 예를 들어, endPrivilege를 호출함으로써 스스로 특권해제(즉, 특권 메커니즘을 디스에이블시킴)할 수 있다. 다음 코드 예는 특권 메커니즘을 인에이블 또는 디스에이블시키는 메소드를 호출하기 위한 한가지 기법을 도시한다. 비록 코드 예가 선 마이크로시스템즈, 인크.에 의한 Java 프로그래밍 언어와 유사하지만, 이 예는 실제의 코드 구현을 나타내도록 의도되어 있지 않다.
Privileged p = new Privileged()
p.beginPrivilege();
try {
[senstive code]
} finally {
p.endPrivilege();
}
코드 예의 마지막 선은 특권 오브젝트를 생성한다. 두번째 선은 특권 메커니즘을 인에이블시키는 특권 오브젝트의 beginPrivilege 메소드를 호출한다. "try finally"는 "try"와 "finally" 간이 블럭의 실행 동안 발생하는 것에 무관하게 실행된다. 따라서, 특권 오브젝트("p.endPrivilege()")의 메소드를 디스에이블시키는 특권이 항상 호출된다.
상기 코드는 예를 들어, 패스워드 파일을 실제로 액세스하는 메소드의 일부를 구속하는데 사용될 수 있다. 패스워드 파일을 액세스하는 이 부분은 "[sensitive code]"로서 지정된 블럭에 포함될 것이다. 상기 코드 예에 의해 설명된 기법은 프로그래머가 특권 메커니즘을 인에이블시키고 디스에이블시키기 위한 책임을 명시적으로 부여한다.
흔히, 특권 메소드를 실행하면서, 스래드는 특권 보호 도메인 오브젝트에 포함된 허가를 포함하지 않는 다른 보호 도메인 오브젝트에 연관된 후속하는 메소드를 호출할 수 있다. 스래드가 후속하는 메소드를 실행할 때, 만일 후속하는 메소드, 및 후속하는 메소드 및 내포적으로 특권 메소드 간의 호출 계층 내의 임의의 메소드에 연관된 보호 도메인 오브젝트에 필요한 허가가 포함되어 있다면, 스래드에 의해 요청된 행위가 인가된다. 이와 같이 특권 메커니즘을 제한하는 장점은, 비트러스트 코드 및 비트러스트 실행기의 메소드가, 비트러스트 코드 및 비트러스트 실행기의 메소드가 특권 메소드에 의해 호출될 때 트러스트 코드 및 트러스트 실행기의 특권 메소드에 연관된 허가를 효율적으로 "빌리는(borrowing") 것을 방지한다는 것이다.
본 발명에 따른 대체 실시예에서, 메소드는 액세스 제어기 클래스의 정적 메소드를 호출함으로써 스스로 특권되거나 또는 특권되지 않을 수 있다. 액세스 제어기 클래스는 액세스 제어기 오브젝트가 속하는 클래스이다. 다음의 코드 예에서 증명한 바와 같이, 액세스 제어기 클래스에 연관된 정적 메소드를 사용하게 되면, 특권 메커니즘을 인에이블시키기 위해 특권 오브젝트를 생성할 필요성을 제거한다.
다음 코드 예는 특권 메커니즘을 인에이블 또는 디스에이블시키는 메소드를 호출하기 위한 한가지 기법을 설명한다. 설명상 액세스 제어기 클래스 명은 AccessControl라고 가정한다. 비록 코드 예가 선 마이크로시스템즈, 인크.에 의한 Java 프로그래밍 언어와 유사할 수 있으나, 이 예는 설명의 편의상 예로 든 것이며, 실제의 코드 구현을 나타내는 것으로 의도되지 않았다.
AccessControl.beginPrivilege();
try {
[senstive code]
} finally {
AccessControl.endPrivilege();
}
스래드는 호출 계층에서 서로 다른 레벨의 동일한 메소드를 호출할 수 있다. 예를 들어, 메소드 X는 메소드 X를 호출할 수 있는 메소드 Y를 호출할 수 있다. 결국, 특권 메소드로서 호출되는 메소드(6300-2)와 같은 메소드는 두번째 호출에서의 특권 메커니즘을 인에이블시키지 않고 두번 호출될 수 있다. 특권 메커니즘이 인에이블되는 동안 스래드에 연관된 보호 도메인 오브젝트를 적절히 판정하기 위해, 특권 메소드의 어떤 호출이 특권 메커니즘을 인에이블시켰는 지를 추적하는 메커니즘이 제공된다. 스래드가 특권 메커니즘을 인에이블시키는 호출을 "인에이블링 호출(enabling invocation)"이라고 한다.
특정 메소드의 어떤 호출이 호출을 인에이블시키고 있는 지를 추적하는 한가지 기법은 각각의 인에이블 호출에 대응하는 프레임 내의 플래그를 설정하는 것이다. 이는, 특권 인에이블링 오브젝트의 특권 인에이블링 메소드가 메소드의 실행 동안 호출될 때, 각각의 인에이블링 호출에 대응하는 프레임의 특권 플래그(6150)를 설정함으로써 달성될 수 있다.
본 발명에 따른 구현에 따르면, 각각의 프레임은 특권 플래그 값을 갖는다. 임의의 프레임이 호출 스택(6100)에 부가될 때, 특권 플래그의 초기값은, 대응하는 메소드가 특권되지 않았다는 것을 가리킨다. 임의의 프레임의 특권 플래그는 대응하는 메소드가 특권을 인에이블시킬 때 대응하는 메소드가 특권되었다는 것을 가리키는 값으로 설정된다.
특권 메커니즘을 인에이블시키는 메소드가 완료한 후에, 특권 플래그(6150)의 값은 메소드의 다음 호출로 캐리 오버(carry over)하지 않을 것이다. 이 값은 메소드에 대응하는 새로운 프레임이 호출 스택(6100)에 부가된 때에, 특권 플래그의 초기값이 대응하는 메소드가 특권되지 않았다는 것을 가리키도록 설정되기 때문에, 캐리 오버하지 않을 것이다. 이와 같이 특권 플래그의 값을 유지하게 되면, 특권 메커니즘이 프로그래머에 의해 명시적으로 디스에이블되는지에 무관하게, 특권 메소드가 완료할 때 특권 메커니즘을 디스에이블시킨다.
도 7은 도 6의 점검 허가 메소드(6400)에 의해 수행되는 처리의 순서도이다. 도 6을 참조하면, 스래드(6200)는 메소드(6300-1)를 호출한다고 가정한다. 메소드(6300-1)의 실행 동안, 스래드(6200)는 메소드(6300-2), 다음에 메소드(6300-3)를 호출한다. 또한 메소드(6300-2)가 특권된다고 가정한다.
단계(7100)에서, 자원 관리 오브젝트가 오브젝트를 액세스하는 요청을 수신하면, 요청된 행위가 인가되었는지의 여부를 판정하기 위해 점검 허가 메소드(6400)가 호출된다. 도 6에서, 메소드(6300-3)는 액세스 제어기 오브젝트(6500)의 점검 허가 메소드(6400)를 호출하고, 이를 행위를 수행하는데 필요한 허가를 파라메타로서 전달함으로써, 오브젝트를 액세스하는 것을 요청한다.
단계(7200 내지 7500)는 호출 스택 내의 프레임과 연관된 허가를 점검하는 루프를 정의한다. 루프는 특권 메소드를 만날 때까지 또는 호출 스택 내의 모든 프레임들이 점검될 때까지 계속한다. 설명의 편의상, 그 특권이 현재 점검되고 있는 프레임을 "선택된 프레임(selected frame)"이라고 하고, 이 프레임에 연관된 메소드를 "선택된 메소드"라고 한다.
단계(7200)에서, 선택된 프레임과 연관된 허가중의 하나가 필요한 허가를 포괄하는 지에 대한 판정이 이루어진다. 프레임에 연관된 허가는 프레임에 연관된 보호 도메인 오브젝트의 허가이다. 만일 단계(7200)에서 이루어진 판정이 선택된 프레임에 연관된 허가가 필요한 허가를 포괄하는 것이라면, 제어는 단계(7300)로 진행한다.
루프의 제1 순환 동안, 액세스 제어기 오브젝트의 점검 허가 메소드에 연관된 프레임에 바로 선행하는 프레임이 검사된다. 본 예에서, 점검 허가 메소드(6400)에 연관된 프레임은 프레임(6100-3)이다. 결국, 루프의 제1 순환 동안, 프레임(6100-3)이 검사될 것이다. 프레임(6100-3)은 보호 도메인 오브젝트(4400-3)에 연관되어 있다. 만일 보호 도메인 오브젝트(4400-3)에 연관된 허가가 필요한 허가를 포괄하면, 제어는 단계(7300)로 진행한다.
단계(7300)에서, 선택된 메소드의 호출이 인에이블링 호출을 포괄하는지에 대해 판정된다. 이 판정은 선택된 메소드에 대응하는 프레임의 특권 플래그에 기초한다. 만일 선택된 메소드의 호출이 인에이블링 호출을 나타내지 않는 것으로 판정되면, 제어는 단계(7400)로 진행한다. 본 예에서, 프레임(6100-3)의 특권 상태는 프레임이 인에이블링 호출을 나타낸다는 것을 가리키는 것으로 설정되어 있지 않다. 따라서 제어는 단계(7400)로 진행한다.
단계(7400)에서, 다음 프레임이 선택된다. 다음 프레임은 호출 스택(6100)에 의해 나타내어진 호출 계층에 기초한 현재 프레임 밑의 프레임이다. 본 예에서, 현재 프레임(6100-3) 밑의 프레임은 프레임(6100-2)이다. 프레임(61--02)에 대응하는 메소드는 메소드(6300-2)이다.
단계(7500)에서, 단계(7400)에서 프레임이 선택되었는지에 대한 판정이 이루어진다. 만일 프레임이 선택되었다면, 제어는 단계(72)로 복귀한다. 본 예에서는, 프레임(6100-2)이 선택되었기 때문에 제어는 단계(7200)로 진행한다. 단계(7200)에서, 보호 도메인 오브젝트(4400-2)에 연관된 허가가 필요한 허가를 명시적으로 포괄하기 때문에 프레임(6100-2)(보호 도메인 오브젝트 4400-2)에 연관된 보호 도메인 오브젝트가 필요한 허가를 포괄하는 허가를 포함한다고 판정된다. 다음에 제어는 단계(7300)로 진행한다.
단계(7300)에서는, 특권 플래그(6150)가 프레임(6100-2)에 대응하는 호출이 인에이블링 호출이라는 것을 가리키기 때문에, 선택된 메소드의 호출이 인에이블링 호출을 나타내고 있는지에 대해 판정된다. 허가 요청이 유효하다는 것을 가리키는 메시지가 전송된다. 다음에, 허가 점검은 종료한다.
선택된 메소드가 인에이블링 호출을 나타낼 때 단계(7300)에서의 허가 점검을 빠져나옴으로써, 요청된 행위의 인가는 특권 보호 도메인 오브젝트, 및 인에이블링 호출 후에 호출된 메소드에 연관된 임의의 보호 도메인 오브젝트에 기초한다.
지금부터, 특권 메커니즘이 현재의 예에서는 결코 호출되지 않았다고 가정한다. 따라서, 단계(7300)에서는, 특권 플래그(6150)가 프레임(6100-2)에 대응하는 호출이 엔이에블 호출이 아니라는 것을 가리키기 때문에, 선택된 메소드의 호출이 인에이블링 호출을 나타내지 않는다는 판정이 이루어진다.
단계(7400)에서는, 현재 프레임(6100-2) 밑의 프레임이 프레임(6100-1)이고프레임(6100-1)에 대응하는 메소드가 메소드(6300-1)이기 때문에, 선택된 다음 프레임은 프레임(6100-1)이다. 따라서, 제어는 다시 단계(7200)로 복귀한다.
단계(7200)에서는, 본 예에서의 보호 도메인 오브젝트(4400-1)에 연관된 어떠한 허가도 필요한 허가를 포괄하지 않기 때문에, 프레임(6100-1)(보호 도메인 오브젝트 4400-1)에 연관된 보호 도메인 오브젝트가 필요한 허가를 포함하지 않는다는 판정이 이루어진다. 이때 제어는 단계(7600)로 진행한다.
단계(7600)에서는, 요청된 행위가 인가되지 않았다는 것을 가리키는 메시지가 전송된다. 본 발며에 따른 구현에서, 메시지는 예외 에러(Exception error)를 던짐으로써 전송된다.
스래드에 연관된 적어도 하나의 보호 도메인 오브젝트가 필요한 허가를 포괄하는 허가를 포함하지 않을 때에는, 요청된 행위가 인가되지 않는다. 스래드에 연관된 모든 보호 도메인 오브젝트가 행위가 인가되었는지의 여부에 대한 판정에 대해 요청되었을 때 필요한 허가를 포함할 때에만 행위는 인가된다.
본 발명에 따른 구현에서, 스래드("부 스래드(parent thread)")가 다른 스래드("자 스래드(child thread)")의 탄생을 초래할 때, 부 스래드에 연관된 보호 도메인 오브젝트는 자 스래드에 의해 "상속"된다. 보호 도메인 오브젝트는 예를 들어, 자 스래드가 생성될 때 부 스래드의 호출 스택을 보유함으로써 상속될 수 있다. 도 7에 도시된 단계가 행위가 인가되는 지의 여부를 판정하도록 실행되면, 부인된 호출 스택은 부 스래드의 호출 스택을 포함한 것으로 취급된다.
본 발명에 따른 다른 구현에서, 자 스래드는 부 스래드의 보호 도메인 오브젝트를 상속하지 않는다. 이 경우에, 부인된 호출 스택은 마치 부의 호출 스택을 포함하지 않는 것으로서 취급된다.
스래드에 연관된 보호 도메인 오브젝트에 대한 행위를 수행하기 위해 스래드의 인가를 바이어스하는 한가지 방법은, 허가가 스래그가 실행되고 있는 코드의 소스 및 코그가 실행되고 있는 주체에 기초할 수 있다는 것이다.
상술한 바와 같이, 오브젝트들은 코드 실행 엘리먼트(3200)에 의해 수신된 코드 내의 클래스 정의로부터 생성된다. 스래드가 실행하고 있는 코드의 소스는 메소드의 코드의 소스이다. 메소드의 코드의 소스는 메소드의 오브젝트가 속하는 클래스를 정의하는데 사용되는 클래스 정의의 소스이다. 코드의 실행기는 코드가 실행되고 있는 주체이다. 이는 클라이언트 시스템 상에서 동작하는 프로세스 또는 프로그램의 실행기를 포함할 수 있다.
보호 도메인 오브젝트가 메소드의 코드의 소스 및 실행기에 연관되어 있기 때문에, 상술한 바와 같이, 스래드에 대해 인가된 허가는 스래드에 의해 호출된 각 메소드의 코드의 소스와 실행기에 기초할 수 있다. 따라서, 특정 주체 대신에 실행되는 특정 소스 또는 코드로부터의 코드가 보안 목적에 적당한 허가와 연관되어 있도록 구성될 수 있다.
상술한 특권 메커니즘의 장점은, 보안이 중요한 민감한 동작의 성능이 트러스트 실행기 대신에 실행되는 메소드 및 트러스트 소스로부터의 메소드에 한정될 수 있다는 것이다. 또한, 이들 동작은 적은 보안 코드에 기초하여 메소드 대신에 수행될 수 있다. 민감한 동작을 수행하는 메소드는 전형적으로, 그 자신의 보안 메커니즘(즉, 패스워드 인가 메소드)에 의존한다. 스래드가 특권 메커니즘을 호출하면, 전형적으로 높은 보안 위험을 수반하는 특권 도메인의 허가 범위는 인에이블링 호출에 한정된다. 이는 비트러스트 코드 또는 비트러스트 실행기에 기초한 메소드와 같이 특권 메소드 내에서 호출된 메소드가 높은 보안 위험을 초래하는 동작을 수행하는 능력을 얻는 것을 방지한다.
비록 어떤 호출이 호출을 인에이블하는 지를 추적하는 하나의 메소드가 상기 설명되었지만, 엔이이블링 호출을 추적하는 다양한 대체 방법이 가능하다. 따라서, 본 발명은 인에이블링 호출을 추적하는 임의의 특정 메소드에 한정되어 있지 않다.
결론
본 발명에 따른 시스템 및 방법은, 실행되고 있는 소스 및 코드의 실행기에 기초하여 스래드의 액세스 허가가 시간에 따라 변하는 보안 강화 메커니즘을 제공한다.
본 발명의 예시적인 실시예의 상기 설명은, 예시 및 설명을 제공하면, 본 발명을 공개된 정확한 형태에 국한시키려고 의도된 것은 아니다. 본 발명의 변형 및 수정이 상기 가르침에 비추어 가능하거나 또는 본 발명의 실제 적용으로부 얻어질 수 있다. 본 발명의 범위는 특허청구범위 및 그 등가물에 의해서 한정된다.
본 발명에 따른 시스템 및 방법이 예시적인 분산 시스템 및 Java 프로그래밍 환경에서 동작하는 것으로 설명되었지만, 기술분야의 숙련자는 본 발명이 다른 시스템 및 다른 프로그래밍 환경에서 실시될 수 있다는 것을 알 것이다. 부수적으로, 비록 본 발명의 특징이 메모리에 저장되는 것으로 설명되었지만, 기술분야의 숙련자는 이와 같은 특징은 또한 하드 디스크, 플로피 디스크 또는 CD-ROM과 같이 보조 기억 장치와 같은 다양한 종류의 컴퓨터 판독 가능 매체; 인터넷으로부터의 반송파; 또는 다른 형태의 RAM 또는 ROM 상에 기억되거나 또는 그로부터 판독될 수 있다는 것을 알 것이다. 선, 선 마이크로세스템즈, 인크. 선 로고, Java 및 Java에 기초한 상표는 미국 및 다른 국가에 있는 선 마이크로시스템즈, 인크.의 상표 또는 등록 상표이다.

Claims (19)

  1. 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에 있어서,
    상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file) - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-;
    상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack); 및
    상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 실행 유닛을 구비하는 시스템.
  2. 제1항에 있어서, 상기 프레임의 각각은
    상기 함수들중의 대응하는 함수에 대해 상기 코드의 소스를 식별하는 코드 식별자, 및
    대신에 상기 코드를 실행하고 있는 실행기를 식별하는 실행기 식별자를 구비하는 시스템.
  3. 제2항에 있어서, 상기 호출 스택 상의 프레임들의 각각에 대응하고, 상기 코드 식별자 및 상기 실행기 식별자를 맵핑함으로써 상기 함수들의 각각에 대한 액세스 허가를 설정하는 복수의 보호 도메인 오브젝트를 구비하는 시스템.
  4. 제1항에 있어서, 상기 실행 유닛은 상기 자원에 대한 요청된 액세스 종류를 수행하도록 동작이 인가되었는 지의 여부를 판정하는 액세스 제어기를 포함하되,
    상기 액세스 제어기는
    상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 액세스 종류를 포괄하는지의 여부를 판정하기 위한 수단;
    상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및
    상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
  5. 제1항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하는 시스템.
  6. 제5항에 있어서, 상기 실행 유닛은 상기 자원에 대한 요청된 액세스 종류를 수행하도록 동작이 인가되었는 지의 여부를 판정하는 액세스 제어기를 포함하되,
    상기 액세스 제어기는
    상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지의 여부를 판정하기 위한 수단;
    상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 상기 요청된 액세스 종류를 포괄하는 지의 여부를 판정하기 위한 수단;
    상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및
    상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
  7. 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 방법에 있어서,
    상기 함수들의 각각에 대한 허가 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함- 를 저장하는 단계;
    상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 호출 스택의 프레임으로서 저장하는 단계;
    상기 호출 스택 상의 상기 함수 및 실행기의 각각에 대한 상기 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄하는지의 여부를 판정하는 단계; 및
    상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
  8. 제7항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,
    상기 판정 단계가
    상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및
    상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
  9. 제8항에 있어서, 상기 허가 단계가
    상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계; 및
    상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
  10. 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에 있어서,
    상기 함수들의 각각에 대한 허가를 저장하기 위한 수단 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-;
    상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하기 위한 수단;
    상기 호출 스택 상의 상기 함수 및 실행기의 각각에 대한 상기 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄하는지의 여부를 판정하기 위한 수단; 및
    상기 호출 스택 상의 상기 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
  11. 제10항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,
    상기 판정 수단이
    상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾기 위한 수단, 및
    상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하기 위한 수단을 구비하는 시스템.
  12. 제11항에 있어서, 상기 허가 수단이
    상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및
    상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
  13. 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에서, 상기 시스템은 상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file) - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-; 상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack); 및 실행 유닛을 구비하고, 상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 실행 유닛을 구비하고, 상기 자원에의 상기 요청된 액세스를 조정하는 방법에 있어서,
    상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 액세스 종류를 포괄하는지를 판정하는 단계;
    상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계; 및
    상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
  14. 제13항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,
    상기 판정 단계는
    상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및
    상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 부인 단계가 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계를 포함하고,
    상기 허가 단계는 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 모든 허가들이 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허용하는 단계를 포함하는 방법.
  16. 컴퓨터 상에서 실행하는 프로그램 - 상기 프로그램은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 행위를 수행하기 위해 컴퓨터를 제어하는 명령을 포함하는 컴퓨터 판독가능 매체 - 상기 컴퓨터는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 행위의 종류를 인가하는, 상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file), 상기 프로그램에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack), 및 실행 유닛을 구비함-에 있어서,
    상기 명령은 상기 실행 유닛으로 하여금
    상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 행위의 종류를 포괄하는지를 판정하는 단계;
    상기 허가중의 임의의 허가가 상기 요청된 행위의 종류를 포괄하지 못할 때 상기 요청된 행위를 부인하는 단계; 및
    상기 모든 허가가 상기 요청된 행위의 종류를 포괄할 때 상기 요청된 행위를 수행하는 단계를 수행하게 하는 방법.
  17. 제16항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,
    상기 판정 단계는
    상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및
    상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 행위의 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
  18. 제17항에 있어서,
    상기 부인 단계가 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 허가중의 임의의 허가가 상기 요청된 행위의 종류를 포괄하지 못할 때 상기 요청된 행위를 부인하는 단계를 포함하고,
    상기 허가 단계는 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 모든 허가들이 상기 요청된 행위의 종류를 포괄할 때 상기 자원에의 액세스를 허용하는 단계를 포함하는 방법.
  19. 메모리를 구비하는 데이터 처리 시스템에 있어서,
    상기 메모리가
    실행 동안 코드를 조작하는 복수의 함수를 호출하는 프로그램,
    상기 함수들의 각각에 대한 허가 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기에 기초하여 행위의 종류를 인가함- 를 저장하는 폴리시 파일,
    상기 프로그램에 의한 호출 순서로 상기 함수들 및 실행기를 프레임으로서 저장하는 호출 스택,
    상기 프로그램으로부터 행위의 종류에 대한 요청을 수신하고, 상기 호출 스택 상의 상기 프레임들의 각각에 연관된 허가가 상기 요청된 행위의 종류를 포괄하는 지의 여부를 판정하고, 상기 호출 스택 상의 상기 모든 함수들 및 실행기의 허가에 의해 인가된 상기 행위의 종류가 상기 요청된 행위의 종류를 포괄할 때 상기 요청된 행위의 종류를 허가하는 런타임(runtime) 환경, 및
    상기 런타임 환경 및 상기 프로그램을 실행하는 프로세서를 구비하는 데이터 처리 시스템.
KR1020007008970A 1998-02-26 1999-02-18 스택에 기초한 액세스 제어 KR20010040979A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US7604898P 1998-02-26 1998-02-26
US09/044,915 US6138238A (en) 1997-12-11 1998-03-20 Stack-based access control using code and executor identifiers
US09/044,915 1998-03-20
US60/076,048 1998-03-20
PCT/US1999/003389 WO1999044137A2 (en) 1998-02-26 1999-02-18 Stack-based access control

Publications (1)

Publication Number Publication Date
KR20010040979A true KR20010040979A (ko) 2001-05-15

Family

ID=26722146

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007008970A KR20010040979A (ko) 1998-02-26 1999-02-18 스택에 기초한 액세스 제어

Country Status (7)

Country Link
US (3) US6138238A (ko)
EP (1) EP1062584A2 (ko)
JP (1) JP2002505476A (ko)
KR (1) KR20010040979A (ko)
CN (1) CN1298512A (ko)
AU (1) AU2769899A (ko)
WO (1) WO1999044137A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100393985B1 (ko) * 1999-12-22 2003-08-06 엘지전자 주식회사 메모리 영역 보호 장치 및 방법
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321334B1 (en) * 1998-07-15 2001-11-20 Microsoft Corporation Administering permissions associated with a security zone in a computer system security model
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6275985B1 (en) * 1998-12-17 2001-08-14 Sun Microsystems, Inc Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
JP3756352B2 (ja) * 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
DE19934278A1 (de) * 1999-07-21 2001-04-05 Siemens Ag Verfahren und Vorrichtung zur Authentifikation für eine Vielzahl von Diensten
US6567974B1 (en) * 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US7089242B1 (en) * 2000-02-29 2006-08-08 International Business Machines Corporation Method, system, program, and data structure for controlling access to sensitive functions
US6775780B1 (en) * 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
DE10028371B4 (de) * 2000-06-08 2013-01-17 Siemens Aktiengesellschaft Verfahren und Anordnung zur gesicherten Nutzung eines Dienstes
US7669238B2 (en) * 2000-06-21 2010-02-23 Microsoft Corporation Evidence-based application security
US7076557B1 (en) * 2000-07-10 2006-07-11 Microsoft Corporation Applying a permission grant set to a call stack during runtime
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
JP2002290708A (ja) * 2001-03-27 2002-10-04 Fujitsu Ltd サービス機能実行システムにおける安全性確保方式
US7076804B2 (en) * 2001-05-11 2006-07-11 International Business Machines Corporation Automated program resource identification and association
US7103644B1 (en) 2001-06-29 2006-09-05 Bellsouth Intellectual Property Corp. Systems for an integrated data network voice-oriented service and non-voice-oriented service converged creation and execution environment
US6981263B1 (en) * 2001-06-29 2005-12-27 Bellsouth Intellectual Property Corp. Methods and systems for converged service creation and execution environment applications
US7191337B2 (en) * 2001-06-30 2007-03-13 International Business Machines Corporation Apparatus for wildcarded security policy and method therefor
US7293070B2 (en) 2001-09-17 2007-11-06 Vignette Corporation Method and system for deploying web components between portals in a portal framework
US8606916B2 (en) 2001-09-17 2013-12-10 Open Text S.A. Graphical user interface for performing administration on web components of web sites in a portal framework
US7085868B2 (en) * 2001-09-28 2006-08-01 Intel Corporation Method to minimize interrupt service and power consumption for wireless connectivity devices
US7127579B2 (en) * 2002-03-26 2006-10-24 Intel Corporation Hardened extended firmware interface framework
US7320123B2 (en) * 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US20030196061A1 (en) * 2002-04-16 2003-10-16 Hideya Kawahara System and method for secure execution of multiple applications using a single GC heap
GB2388676B (en) * 2002-05-18 2006-07-05 Hewlett Packard Co Distributed processing
US7225462B2 (en) * 2002-06-26 2007-05-29 Bellsouth Intellectual Property Corporation Systems and methods for managing web user information
JP4007873B2 (ja) 2002-07-09 2007-11-14 富士通株式会社 データ保護プログラムおよびデータ保護方法
US7752438B2 (en) * 2002-08-27 2010-07-06 Hewlett-Packard Development Company, L.P. Secure resource access
WO2004023300A2 (en) * 2002-09-06 2004-03-18 Eftia Oss Solutions Inc. System-to-system inter-operation interface
US20040133583A1 (en) * 2002-11-20 2004-07-08 Tingey Kenneth B. system architecture and method for entering and accessing entity data in events accounting
US7653936B2 (en) * 2003-06-25 2010-01-26 Microsoft Corporation Distributed expression-based access control
US7343620B2 (en) * 2003-08-13 2008-03-11 International Business Machines Corporation Method and apparatus for adopting authorizations
KR100560424B1 (ko) * 2003-11-05 2006-03-13 한국전자통신연구원 접근이 제한되는 고비도 검증키를 갖는 변형된 디지털서명을 이용한 안전한 프로그래머블 패킷 전송 방법
EP1688006A1 (en) * 2003-11-06 2006-08-09 intuwave Limited Secure multi-entity access to resources on mobile telephones
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US9152785B2 (en) 2004-01-30 2015-10-06 Hewlett-Packard Development Company, L.P. Providing a flexible protection model in a computer system by decoupling protection from computer privilege level
US7743423B2 (en) * 2004-02-03 2010-06-22 Microsoft Corporation Security requirement determination
CN100476685C (zh) * 2004-02-09 2009-04-08 Palm源公司 用于计算设备的安全模型的方法和系统
US7500108B2 (en) 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US8181255B2 (en) * 2004-06-22 2012-05-15 Nds Limited Digital rights management system
JP4682139B2 (ja) 2004-06-30 2011-05-11 パナソニック株式会社 プログラム実行機器およびそのプログラム実行方法
US20060037062A1 (en) * 2004-08-09 2006-02-16 International Business Machines Corporation Method, system and program product for securing resources in a distributed system
US7437767B2 (en) * 2004-11-04 2008-10-14 International Business Machines Corporation Method for enabling a trusted dialog for collection of sensitive data
US8191115B2 (en) * 2005-01-10 2012-05-29 Microsoft Corporation Method and apparatus for extensible security authorization grouping
US20060156021A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation Method and apparatus for providing permission information in a security authorization mechanism
US20060156020A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation Method and apparatus for centralized security authorization mechanism
US7634584B2 (en) * 2005-04-27 2009-12-15 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US8555061B2 (en) * 2005-05-13 2013-10-08 Microsoft Corporation Transparent code
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US7861297B2 (en) * 2005-09-30 2010-12-28 Microsoft Corporation Reducing security threats from untrusted code
US8225104B1 (en) * 2005-10-06 2012-07-17 Symantec Corporation Data access security
US8087031B2 (en) * 2006-01-09 2011-12-27 Oracle America, Inc. Method and apparatus for data transfer between isolated execution contexts
US20080052671A1 (en) * 2006-08-03 2008-02-28 Frederic Plante System, method and program product for providing content based designations for programming objects
US7926086B1 (en) 2006-10-31 2011-04-12 Oracle America, Inc. Access control mechanism for shareable interface communication access control
US7836456B1 (en) 2006-10-31 2010-11-16 Oracle America, Inc. Seamless extension of shareable interface mechanism to servlet and extended applet model for inter-application communication
US8176533B1 (en) 2006-11-06 2012-05-08 Oracle America, Inc. Complementary client and user authentication scheme
EP1927930A1 (en) * 2006-11-30 2008-06-04 Sap Ag Method and system for access control using resouce filters
EP1933522B1 (en) * 2006-12-11 2013-10-23 Sap Ag Method and system for authentication
US8086637B1 (en) 2006-12-22 2011-12-27 Emc Corporation Access control for business process data
JP5263602B2 (ja) * 2007-02-08 2013-08-14 日本電気株式会社 アクセス制御システム、アクセス制御方法、電子装置、及び制御プログラム
US8095970B2 (en) * 2007-02-16 2012-01-10 Microsoft Corporation Dynamically associating attribute values with objects
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US20080244538A1 (en) * 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
US8330764B2 (en) * 2007-04-20 2012-12-11 Microsoft Corporation Programming framework for closed systems
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US9769177B2 (en) * 2007-06-12 2017-09-19 Syracuse University Role-based access control to computing resources in an inter-organizational community
US8196110B2 (en) 2007-11-30 2012-06-05 International Business Machines Corporation Method and apparatus for verifying a suspect return pointer in a stack
US20090172645A1 (en) * 2007-12-27 2009-07-02 Sap Ag Call stack evaluation to assure proper framework access
JP2009259198A (ja) * 2008-03-27 2009-11-05 Hitachi Ltd 情報処理制限システム、情報処理制限装置、および情報処理制限プログラム
US20120310983A1 (en) * 2010-02-11 2012-12-06 Hemant Mittal Executable identity based file access
US8689349B2 (en) 2010-05-05 2014-04-01 Intel Corporation Information flow tracking and protection
US20110296523A1 (en) * 2010-05-26 2011-12-01 Microsoft Corporation Access control management mapping resource/action pairs to principals
US9286276B2 (en) * 2012-06-11 2016-03-15 Google Inc. System and method of document embedding in collaborative editors
US9058219B2 (en) * 2012-11-02 2015-06-16 Amazon Technologies, Inc. Custom resources in a resource stack
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
US9043867B2 (en) * 2013-01-11 2015-05-26 The Court Of Edinburgh Napier University Information sharing
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US10467409B2 (en) * 2014-12-23 2019-11-05 Mcafee, Llc Identification of malicious execution of a process
US9672351B2 (en) * 2015-02-02 2017-06-06 Qualcomm Incorporated Authenticated control stacks
US9830469B1 (en) * 2016-10-31 2017-11-28 International Business Machines Corporation Automated mechanism to secure customer data
US9928365B1 (en) 2016-10-31 2018-03-27 International Business Machines Corporation Automated mechanism to obtain detailed forensic analysis of file access
US10346625B2 (en) 2016-10-31 2019-07-09 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
US10771468B1 (en) * 2016-11-29 2020-09-08 Amazon Technologies, Inc. Request filtering and data redaction for access control
US11036560B1 (en) * 2016-12-20 2021-06-15 Amazon Technologies, Inc. Determining isolation types for executing code portions
US10540523B2 (en) * 2017-04-26 2020-01-21 International Business Machines Corporation Comprehensive system wide cross-reference mechanism using runtime data collection
US10650156B2 (en) * 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US11275850B1 (en) * 2018-01-30 2022-03-15 Amazon Technologies, Inc. Multi-faceted security framework for unstructured storage objects
US10819586B2 (en) * 2018-10-17 2020-10-27 Servicenow, Inc. Functional discovery and mapping of serverless resources
US11363029B2 (en) 2020-01-08 2022-06-14 Bank Of America Corporation Big data distributed processing and secure data transferring with hyper fencing
US11314874B2 (en) 2020-01-08 2022-04-26 Bank Of America Corporation Big data distributed processing and secure data transferring with resource allocation and rebate
US11334408B2 (en) 2020-01-08 2022-05-17 Bank Of America Corporation Big data distributed processing and secure data transferring with fault handling
US11379603B2 (en) 2020-01-08 2022-07-05 Bank Of America Corporation Big data distributed processing and secure data transferring with fallback control
US11321430B2 (en) 2020-01-08 2022-05-03 Bank Of America Corporation Big data distributed processing and secure data transferring with obfuscation
CN112597487B (zh) * 2020-12-24 2023-03-31 厦门海迈科技股份有限公司 一种基于.net访问权限管理方法和装置以及设备
CN116795525A (zh) * 2022-03-17 2023-09-22 华为技术有限公司 资源控制方法及装置

Family Cites Families (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2476349A1 (fr) 1980-02-15 1981-08-21 Philips Ind Commerciale Systeme de traitement de donnees reparti
US4491946A (en) 1981-03-09 1985-01-01 Gould Inc. Multi-station token pass communication system
AU556499B2 (en) * 1981-05-22 1986-11-06 Data General Corporation Data processing system
US4558413A (en) 1983-11-21 1985-12-10 Xerox Corporation Software version management system
JPH0640302B2 (ja) 1984-01-30 1994-05-25 株式会社日立製作所 図式・ソ−スプログラム自動生成方法
US4823122A (en) 1984-06-01 1989-04-18 Digital Equipment Corporation Local area network for digital data processing system
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US4713806A (en) 1986-03-14 1987-12-15 American Telephone And Telegraph Company, At&T Bell Laboratories Communication system control arrangement
US4939638A (en) 1988-02-23 1990-07-03 Stellar Computer Inc. Time sliced vector processing
US5287511A (en) 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
US4979105A (en) 1988-07-19 1990-12-18 International Business Machines Method and apparatus for automatic recovery from excessive spin loops in an N-way multiprocessing system
JPH0293952A (ja) 1988-09-30 1990-04-04 Hitachi Ltd 仮想計算機システム
US5133075A (en) 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5109486A (en) 1989-01-06 1992-04-28 Motorola, Inc. Distributed computer system with network and resource status monitoring
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
EP0384339B1 (en) 1989-02-24 1997-04-02 Digital Equipment Corporation Broker for computer network server selection
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5187787B1 (en) * 1989-07-27 1996-05-07 Teknekron Software Systems Inc Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5257369A (en) * 1990-10-22 1993-10-26 Skeen Marion D Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5218699A (en) 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
EP0463172A1 (en) 1989-12-26 1992-01-02 Fujitsu Limited Object oriented distributed processing system
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
AU628753B2 (en) 1990-08-14 1992-09-17 Digital Equipment Corporation Method and apparatus for implementing server functions in a distributed heterogeneous environment
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5446897A (en) 1990-08-31 1995-08-29 International Business Machines Corporation Automated address discovery method and apparatus for local area networks
JPH06501118A (ja) 1990-09-17 1994-01-27 ケーブルトロン・システムス・インコーポレーテッド モデル準拠のインテリジェンスを使用するネットワーク管理システム
JPH0799497B2 (ja) 1990-12-14 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション ソフトウェアの使用を管理するための装置及び方法
IE910553A1 (en) * 1991-02-19 1992-08-26 Tolsys Ltd Improvements in and relating to stable memory circuits
DE69228621T2 (de) 1991-02-25 1999-07-22 Hewlett Packard Co Objektorientiertes verteiltes Rechnersystem
EP0501613A3 (en) 1991-02-28 1993-09-01 Hewlett-Packard Company Heterogeneous software configuration management apparatus
US5293614A (en) * 1991-04-08 1994-03-08 Texas Instruments Incorporated System and method for hard real-time garbage collection requiring a write barrier but no read barrier
US5481721A (en) 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
DE4131380A1 (de) 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
US5319751A (en) 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5826017A (en) 1992-02-10 1998-10-20 Lucent Technologies Apparatus and method for communicating data between elements of a distributed system using a general protocol
US5303042A (en) 1992-03-25 1994-04-12 One Touch Systems, Inc. Computer-implemented method and apparatus for remote educational instruction
US5390328A (en) 1992-03-30 1995-02-14 International Business Machines Corporation Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5353343A (en) 1992-04-30 1994-10-04 Rockwell International Corporation Telephonic switching system with a user controlled data memory access system and method
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
US5339430A (en) 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
EP0930566A3 (en) * 1992-07-06 2006-07-05 Microsoft Corporation Method and system for composing objects
US5307490A (en) 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
JP2524472B2 (ja) 1992-09-21 1996-08-14 インターナショナル・ビジネス・マシーンズ・コーポレイション 電話回線利用の音声認識システムを訓練する方法
US5423042A (en) 1992-10-23 1995-06-06 International Business Machines Corporation Remote procedure execution
US5561785A (en) * 1992-10-29 1996-10-01 International Business Machines Corporation System for allocating and returning storage and collecting garbage using subpool of available blocks
US5515536A (en) 1992-11-13 1996-05-07 Microsoft Corporation Method and system for invoking methods of an object through a dispatching interface
JPH09502547A (ja) 1992-11-13 1997-03-11 マイクロソフト コーポレイション 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム
US5386568A (en) 1992-12-01 1995-01-31 Yamaha Corporation Apparatus and method for linking software modules
EP0602263A1 (en) 1992-12-15 1994-06-22 International Business Machines Corporation User interface program generator
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5452459A (en) 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
DE69429686T2 (de) * 1993-02-25 2003-04-30 Sun Microsystems Inc Transaktionsverwaltung in objektorientiertem System
US5548724A (en) 1993-03-22 1996-08-20 Hitachi, Ltd. File server system and file access control method of the same
US5832593A (en) * 1993-04-14 1998-11-10 Minnesota Mining And Manufacturing Company Splice head for insulated telecommunication wires
US5459837A (en) 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
CA2121612A1 (en) 1993-05-21 1994-11-22 Chung-Hwa Herman Rao Methods and apparatus for making and using distributed applications
US5446901A (en) 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5506984A (en) 1993-06-30 1996-04-09 Digital Equipment Corporation Method and system for data retrieval in a distributed system using linked location references on a plurality of nodes
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
EP0635792B1 (de) 1993-07-16 2003-08-27 Siemens Aktiengesellschaft Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
US5617537A (en) 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5590181A (en) * 1993-10-15 1996-12-31 Link Usa Corporation Call-processing system and method
CA2118169A1 (en) 1993-10-27 1995-04-28 Michael R.C. Seaman Event architecture for system management in an operating system
US5455952A (en) 1993-11-03 1995-10-03 Cardinal Vision, Inc. Method of computing based on networks of dependent objects
US5742848A (en) 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
US5581704A (en) 1993-12-06 1996-12-03 Panasonic Technologies, Inc. System for maintaining data coherency in cache memory by periodically broadcasting invalidation reports from server to client
US5485617A (en) 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
AU6702594A (en) 1993-12-17 1995-07-03 Taligent, Inc. Object-oriented distributed communications directory service
US5594921A (en) 1993-12-17 1997-01-14 Object Technology Licensing Corp. Authentication of users with dynamically configurable protocol stack
US5548726A (en) 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
WO1995019008A1 (en) 1994-01-05 1995-07-13 Covey Peter J Dynamic-state, multi-dimensional, multi-media database
US5832219A (en) 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
US5845090A (en) 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
US5392280A (en) 1994-04-07 1995-02-21 Mitsubishi Electric Research Laboratories, Inc. Data transmission system and scheduling protocol for connection-oriented packet or cell switching networks
US5675796A (en) 1994-04-08 1997-10-07 Microsoft Corporation Concurrency management component for use by a computer program during the transfer of a message
US6216138B1 (en) 1994-04-22 2001-04-10 Brooks Automation Inc. Computer interface system for automatically generating graphical representations of computer operations linked together according to functional relationships
US5680617A (en) 1994-05-16 1997-10-21 Apple Computer, Inc. Computer-human interface which provides for user customization of object behavior
EP0684553B1 (en) 1994-05-26 2004-06-16 Sun Microsystems, Inc. Method and apparatus for generating and using short operation identifiers in object oriented systems
US5655148A (en) * 1994-05-27 1997-08-05 Microsoft Corporation Method for automatically configuring devices including a network adapter without manual intervention and without prior configuration information
US5720033A (en) * 1994-06-30 1998-02-17 Lucent Technologies Inc. Security platform and method using object oriented rules for computer-based systems using UNIX-line operating systems
US5664191A (en) * 1994-06-30 1997-09-02 Microsoft Corporation Method and system for improving the locality of memory references during execution of a computer program
US5680573A (en) 1994-07-12 1997-10-21 Sybase, Inc. Method of buffering data objects in a database
EP0694837A1 (en) 1994-07-25 1996-01-31 International Business Machines Corporation Dynamic workload balancing
US5778228A (en) * 1994-08-16 1998-07-07 International Business Machines Corporation Method and system for transferring remote procedure calls and responses over a network
US5922054A (en) 1994-08-19 1999-07-13 Canon Kabushiki Kaisha System for managing external applications and files
US5745687A (en) 1994-09-30 1998-04-28 Hewlett-Packard Co System for distributed workflow in which a routing node selects next node to be performed within a workflow procedure
US5555367A (en) 1994-09-30 1996-09-10 General Electric Company Method and system for generating computer programs for queries formed by manipulating object-oriented diagrams
JP4058118B2 (ja) * 1994-11-15 2008-03-05 株式会社日立製作所 プログラム生成システム及び方法
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5644768A (en) 1994-12-09 1997-07-01 Borland International, Inc. Systems and methods for sharing resources in a multi-user environment
US5553282A (en) 1994-12-09 1996-09-03 Taligent, Inc. Software project history database and method of operation
DE69521977T2 (de) * 1994-12-13 2002-04-04 Ibm Verfahren und System zur gesicherten Programmenverteilung
US5677851A (en) 1994-12-15 1997-10-14 Novell, Inc. Method and apparatus to secure digital directory object changes
US5608903A (en) 1994-12-15 1997-03-04 Novell, Inc. Method and apparatus for moving subtrees in a distributed network directory
US5630066A (en) 1994-12-20 1997-05-13 Sun Microsystems, Inc. System and method for locating object view and platform independent object
US5872928A (en) 1995-02-24 1999-02-16 Cabletron Systems, Inc. Method and apparatus for defining and enforcing policies for configuration management in communications networks
EP0735472A3 (en) 1995-03-31 2000-01-19 Sun Microsystems, Inc. Method and apparatus for conspiracy among objects
US5727203A (en) 1995-03-31 1998-03-10 Sun Microsystems, Inc. Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache
JPH08306316A (ja) * 1995-05-10 1996-11-22 Sony Corp 陰極線管の磁気処理方法
US5812819A (en) 1995-06-05 1998-09-22 Shiva Corporation Remote access apparatus and method which allow dynamic internet protocol (IP) address management
US5675782A (en) * 1995-06-06 1997-10-07 Microsoft Corporation Controlling access to objects on multiple operating systems
US5628005A (en) 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US5903731A (en) 1995-06-14 1999-05-11 Us West Technologies, Inc. System and associated method for re-engineering a telecommunications network support system with object-oriented translators
US5761656A (en) * 1995-06-26 1998-06-02 Netdynamics, Inc. Interaction between databases and graphical user interfaces
US5802367A (en) 1995-07-07 1998-09-01 Microsoft Corporation Method and system for transparently executing code using a surrogate process
US5745703A (en) 1995-07-18 1998-04-28 Nec Research Institute, Inc. Transmission of higher-order objects across a network of heterogeneous machines
US5644720A (en) 1995-07-31 1997-07-01 West Publishing Company Interprocess communications interface for managing transaction requests
US5774551A (en) * 1995-08-07 1998-06-30 Sun Microsystems, Inc. Pluggable account management interface with unified login and logout and multiple user authentication services
US5956509A (en) 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
JPH0962526A (ja) 1995-08-28 1997-03-07 Fujitsu Ltd 耐故障型rpcシステムおよび方法
JP2964926B2 (ja) * 1995-08-29 1999-10-18 富士ゼロックス株式会社 データベース管理装置及び方法
US5671225A (en) 1995-09-01 1997-09-23 Digital Equipment Corporation Distributed interactive multimedia service system
US6009464A (en) * 1995-09-20 1999-12-28 Sun Microsystems, Inc. Method and apparatus for enabling application programs to communicate with network clients and servers
US5737607A (en) 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5765174A (en) 1995-10-06 1998-06-09 Sun Microsystems, Inc. System amd method for distributed object resource management
US5806042A (en) 1995-10-11 1998-09-08 Kelly; William Franklin System for designing and implementing bank owned life insurance (BOLI) with a reinsurance option
US5864862A (en) 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US5872973A (en) 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US5996075A (en) * 1995-11-02 1999-11-30 Sun Microsystems, Inc. Method and apparatus for reliable disk fencing in a multicomputer system
US5860153A (en) 1995-11-22 1999-01-12 Sun Microsystems, Inc. Memory efficient directory coherency maintenance
US5692047A (en) 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US6067575A (en) 1995-12-08 2000-05-23 Sun Microsystems, Inc. System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US6003763A (en) 1995-12-29 1999-12-21 Visa International Service Method and apparatus for recording magnetic information on traveler's checks
US5765153A (en) * 1996-01-03 1998-06-09 International Business Machines Corporation Information handling system, method, and article of manufacture including object system authorization and registration
US5745695A (en) 1996-01-16 1998-04-28 Motorola Inc. Radio system with suspension of packet data service during non-data service connection
US5754849A (en) * 1996-01-30 1998-05-19 Wayfarer Communications, Inc. Self-describing object providing dynamic manipulation of heterogeneous data values and semantic identity between memory and transmission representations
US5946485A (en) 1996-02-09 1999-08-31 Intervoice Limited Partnership Enhanced graphical development environment for controlling program flow
CA2199108C (en) 1996-03-05 2002-04-23 Hirotoshi Maegawa Parallel distributed processing system and method of same
US5761507A (en) 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5754977A (en) 1996-03-06 1998-05-19 Intervoice Limited Partnership System and method for preventing enrollment of confusable patterns in a reference database
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5845129A (en) * 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US5706502A (en) 1996-03-25 1998-01-06 Sun Microsystems, Inc. Internet-enabled portfolio manager system and method
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US5815709A (en) 1996-04-23 1998-09-29 San Microsystems, Inc. System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US5978484A (en) 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
EP0805393B1 (en) 1996-04-30 2011-11-09 International Business Machines Corporation Method and apparatus for managing membership of a group of processors in a distributed computing environment
US5778368A (en) * 1996-05-03 1998-07-07 Telogy Networks, Inc. Real-time embedded software respository with attribute searching apparatus and method
US5778187A (en) 1996-05-09 1998-07-07 Netcast Communications Corp. Multicasting method and apparatus
US5835737A (en) * 1996-05-10 1998-11-10 Apple Computer, Inc. Method and apparatus for arbitrating access to selected computer system devices
US5889951A (en) 1996-05-13 1999-03-30 Viewpoint Corporation Systems, methods, and computer program products for accessing, leasing, relocating, constructing and modifying internet sites within a multi-dimensional virtual reality environment
US6018619A (en) * 1996-05-24 2000-01-25 Microsoft Corporation Method, system and apparatus for client-side usage tracking of information server systems
US5928323A (en) 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5813013A (en) * 1996-06-06 1998-09-22 Microsoft Corporation Representing recurring events
US5768532A (en) * 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
JP3488019B2 (ja) 1996-06-17 2004-01-19 株式会社山武 制御設計用コンフィギュレーション・ツールの部品再利用方法
US6044409A (en) 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US5991823A (en) 1996-06-26 1999-11-23 Sun Microsystems, Inc. Low overhead object adaptor
US5727145A (en) 1996-06-26 1998-03-10 Sun Microsystems, Inc. Mechanism for locating objects in a secure fashion
SG67354A1 (en) 1996-06-27 1999-09-21 Inst Of Systems Science Nation Computationally efficient method for trusted and dynamic digital objects dissemination
US5809145A (en) * 1996-06-28 1998-09-15 Paradata Systems Inc. System for distributing digital information
US6360256B1 (en) 1996-07-01 2002-03-19 Sun Microsystems, Inc. Name service for a redundant array of internet servers
US5809507A (en) * 1996-07-01 1998-09-15 Sun Microsystems, Inc. Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US5748897A (en) 1996-07-02 1998-05-05 Sun Microsystems, Inc. Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer
US5818448A (en) 1996-07-02 1998-10-06 Sun Microsystems, Inc. Apparatus and method for identifying server computer aggregation topologies
US5860004A (en) 1996-07-03 1999-01-12 Sun Microsystems, Inc. Code generator for applications in distributed object systems
US5949998A (en) 1996-07-03 1999-09-07 Sun Microsystems, Inc. Filtering an object interface definition to determine services needed and provided
US5757925A (en) * 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5832228A (en) * 1996-07-30 1998-11-03 Itt Industries, Inc. System and method for providing multi-level security in computer devices utilized with non-secure networks
US5758077A (en) 1996-08-02 1998-05-26 Hewlett-Packard Company Service-centric monitoring system and method for monitoring of distributed services in a computing network
US6212578B1 (en) * 1996-09-09 2001-04-03 Oracle Corporation Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
US5875335A (en) 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
US5974201A (en) 1996-10-01 1999-10-26 Siemens Corporate Research, Inc. Smart image system
US5787425A (en) * 1996-10-01 1998-07-28 International Business Machines Corporation Object-oriented data mining framework mechanism
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US5944793A (en) 1996-11-21 1999-08-31 International Business Machines Corporation Computerized resource name resolution mechanism
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5787431A (en) * 1996-12-16 1998-07-28 Borland International, Inc. Database development system with methods for java-string reference lookups of column names
US5754762A (en) * 1997-01-13 1998-05-19 Kuo; Chih-Cheng Secure multiple application IC card using interrupt instruction issued by operating system or application program to control operation flag that determines the operational mode of bi-modal CPU
US5933647A (en) 1997-01-24 1999-08-03 Cognet Corporation System and method for software distribution and desktop management in a computer network environment
US6052761A (en) 1997-01-31 2000-04-18 Hewlett-Packard Company Increment update in an SCI based system
US5913029A (en) 1997-02-07 1999-06-15 Portera Systems Distributed database system and method
US5815149A (en) * 1997-02-19 1998-09-29 Unisys Corp. Method for generating code for modifying existing event routines for controls on a form
US5935249A (en) 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
US6061713A (en) 1997-03-12 2000-05-09 Fujitsu Limited Communications system for client-server data processing systems
US5864866A (en) 1997-03-26 1999-01-26 International Business Machines Corporation Apparatus and method for providing externalization in an object-oriented environment
US6282581B1 (en) * 1997-03-27 2001-08-28 Hewlett-Packard Company Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US6189046B1 (en) * 1997-03-27 2001-02-13 Hewlett-Packard Company Mechanism and method for merging cached location information in a distributed object environment
US6408342B1 (en) * 1997-03-28 2002-06-18 Keith E. Moore Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment
US6104716A (en) * 1997-03-28 2000-08-15 International Business Machines Corporation Method and apparatus for lightweight secure communication tunneling over the internet
US5999988A (en) 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US5890158A (en) 1997-03-31 1999-03-30 International Business Machines Corporation Method, apparatus, and program storage device for sharing objects with a network server and a database server using a common object model
US6247091B1 (en) 1997-04-28 2001-06-12 International Business Machines Corporation Method and system for communicating interrupts between nodes of a multinode computer system
US6157960A (en) * 1997-05-07 2000-12-05 International Business Machines Corporation Technique for programmatically creating distributed object programs
US6282295B1 (en) 1997-10-28 2001-08-28 Adam Lucas Young Auto-recoverable and auto-certifiable cryptostem using zero-knowledge proofs for key escrow in general exponential ciphers
US5991808A (en) * 1997-06-02 1999-11-23 Digital Equipment Corporation Task processing optimization in a multiprocessor system
US5808911A (en) 1997-06-19 1998-09-15 Sun Microsystems, Inc. System and method for remote object resource management
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6052724A (en) * 1997-09-02 2000-04-18 Novell Inc Method and system for managing a directory service
US5946694A (en) 1997-09-29 1999-08-31 International Business Machines Corporation Apparatus and method for transparent application of service to business objects
US5951652A (en) 1997-10-06 1999-09-14 Ncr Corporation Dependable data element synchronization mechanism
US6061699A (en) 1997-11-03 2000-05-09 International Business Machines Corporation Method and computer program product for extracting translatable material from browser program function codes using variables for displaying MRI
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6167449A (en) * 1997-11-19 2000-12-26 Apple Computer, Inc. System and method for identifying and locating services on multiple heterogeneous networks using a query by type
US6016496A (en) 1997-11-20 2000-01-18 International Business Machines Corporation Method and apparatus for an object-oriented object for retrieving information from local and remote databases
US5963947A (en) 1998-01-27 1999-10-05 International Business Machines Corporation Technique of dynamically adding functionality from a client to manipulated data at a server
US6023586A (en) 1998-02-10 2000-02-08 Novell, Inc. Integrity verifying and correcting software
US6604127B2 (en) * 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6026414A (en) 1998-03-05 2000-02-15 International Business Machines Corporation System including a proxy client to backup files in a distributed computing environment
US6185602B1 (en) 1998-06-29 2001-02-06 Sony Corporation Multi-user interaction of multimedia communication
US6108346A (en) 1998-08-27 2000-08-22 Xiox Corporation Combined synchronous and asynchronous message transmission
US6301613B1 (en) * 1998-12-03 2001-10-09 Cisco Technology, Inc. Verifying that a network management policy used by a computer system can be satisfied and is feasible for use
US6282568B1 (en) 1998-12-04 2001-08-28 Sun Microsystems, Inc. Platform independent distributed management system for manipulating managed objects in a network
US6604140B1 (en) * 1999-03-31 2003-08-05 International Business Machines Corporation Service framework for computing devices
US6578074B1 (en) * 1999-06-25 2003-06-10 Mediaone Group, Inc. Provisioning server enhancement
JP2002132739A (ja) * 2000-10-23 2002-05-10 Nec Corp スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100393985B1 (ko) * 1999-12-22 2003-08-06 엘지전자 주식회사 메모리 영역 보호 장치 및 방법
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법

Also Published As

Publication number Publication date
JP2002505476A (ja) 2002-02-19
EP1062584A2 (en) 2000-12-27
US6138238A (en) 2000-10-24
US6389540B1 (en) 2002-05-14
AU2769899A (en) 1999-09-15
WO1999044137A2 (en) 1999-09-02
US20020174224A1 (en) 2002-11-21
US6934758B2 (en) 2005-08-23
CN1298512A (zh) 2001-06-06
WO1999044137A3 (en) 1999-11-25

Similar Documents

Publication Publication Date Title
US6389540B1 (en) Stack based access control using code and executor identifiers
Jaeger Operating system security
US6192476B1 (en) Controlling access to a resource
US6125447A (en) Protection domains to provide security in a computer system
Gong Java security architecture (JDK 1.2)
US5740248A (en) Software level touchpoints for an international cryptography frameworks
US6044467A (en) Secure class resolution, loading and definition
US6047377A (en) Typed, parameterized, and extensible access control permissions
US6317868B1 (en) Process for transparently enforcing protection domains and access control as well as auditing operations in software components
US7310822B2 (en) Filtering a permission set using permission requests associated with a code assembly
US7665143B2 (en) Creating secure process objects
US7669226B2 (en) Generic declarative authorization scheme for Java
Gong Java 2 platform security architecture
US8056119B2 (en) Method and system for controlling inter-zone communication
US8646044B2 (en) Mandatory integrity control
US20050091655A1 (en) Associating runtime objects with a set and controlling access to resources as a function thereof
KR20030085024A (ko) 플러그가능한 권한부여 시스템용의 서버 지원을 위한 방법및 시스템
Swift et al. Improving the granularity of access control for windows 2000
Hauswirth et al. A secure execution framework for Java
Karjoth An operational semantics of Java 2 access control
Paul et al. Comparing java and. net security: Lessons learned and missed
US9507929B1 (en) Decentralized information flow securing method and system for multilevel security and privacy domains
Hauswirth et al. A flexible and extensible security framework for Java code
Holford et al. The concept of self-defending objects in the development of security aware applications
Aissi Runtime Environment Security Models.

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid