KR20010040979A - 스택에 기초한 액세스 제어 - Google Patents
스택에 기초한 액세스 제어 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 208
- 230000009471 action Effects 0.000 claims abstract description 48
- 230000006870 function Effects 0.000 claims description 43
- 238000013507 mapping Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 description 36
- 238000013475 authorization Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 244000035744 Hura crepitans Species 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 241000700605 Viruses Species 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- FLDSMVTWEZKONL-AWEZNQCLSA-N 5,5-dimethyl-N-[(3S)-5-methyl-4-oxo-2,3-dihydro-1,5-benzoxazepin-3-yl]-1,4,7,8-tetrahydrooxepino[4,5-c]pyrazole-3-carboxamide Chemical compound CC1(CC2=C(NN=C2C(=O)N[C@@H]2C(N(C3=C(OC2)C=CC=C3)C)=O)CCO1)C FLDSMVTWEZKONL-AWEZNQCLSA-N 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009931 harmful effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000002893 slag Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/24—Negotiation 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
컴퓨터 시스템의 사용이 증가함에 따라, 조직체가 컴퓨터 시스템에 갈수록 의존하게 되고 있다. 컴퓨터 시스템의 고장은 이와 같은 조직체의 운영에 큰 악영향을 줄 수 있다. 따라서, 컴퓨터 시스템을 사용하는 조직체는 의도적으로 또는 비의도적으로 컴퓨터 시스템을 고장나게 하는 사용자에게 취약하다.
컴퓨터 시스템의 보안에 대처하는 한가지 방법은, 컴퓨터 시스템으로 하여금컴퓨터 시스템에 대한 유해한 행위(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)
- 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에 있어서,상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file) - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-;상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack); 및상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 실행 유닛을 구비하는 시스템.
- 제1항에 있어서, 상기 프레임의 각각은상기 함수들중의 대응하는 함수에 대해 상기 코드의 소스를 식별하는 코드 식별자, 및대신에 상기 코드를 실행하고 있는 실행기를 식별하는 실행기 식별자를 구비하는 시스템.
- 제2항에 있어서, 상기 호출 스택 상의 프레임들의 각각에 대응하고, 상기 코드 식별자 및 상기 실행기 식별자를 맵핑함으로써 상기 함수들의 각각에 대한 액세스 허가를 설정하는 복수의 보호 도메인 오브젝트를 구비하는 시스템.
- 제1항에 있어서, 상기 실행 유닛은 상기 자원에 대한 요청된 액세스 종류를 수행하도록 동작이 인가되었는 지의 여부를 판정하는 액세스 제어기를 포함하되,상기 액세스 제어기는상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 액세스 종류를 포괄하는지의 여부를 판정하기 위한 수단;상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
- 제1항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하는 시스템.
- 제5항에 있어서, 상기 실행 유닛은 상기 자원에 대한 요청된 액세스 종류를 수행하도록 동작이 인가되었는 지의 여부를 판정하는 액세스 제어기를 포함하되,상기 액세스 제어기는상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지의 여부를 판정하기 위한 수단;상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 상기 요청된 액세스 종류를 포괄하는 지의 여부를 판정하기 위한 수단;상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
- 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 방법에 있어서,상기 함수들의 각각에 대한 허가 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함- 를 저장하는 단계;상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 호출 스택의 프레임으로서 저장하는 단계;상기 호출 스택 상의 상기 함수 및 실행기의 각각에 대한 상기 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄하는지의 여부를 판정하는 단계; 및상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
- 제7항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,상기 판정 단계가상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
- 제8항에 있어서, 상기 허가 단계가상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계; 및상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
- 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에 있어서,상기 함수들의 각각에 대한 허가를 저장하기 위한 수단 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-;상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하기 위한 수단;상기 호출 스택 상의 상기 함수 및 실행기의 각각에 대한 상기 허가에 의해 인가된 상기 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄하는지의 여부를 판정하기 위한 수단; 및상기 호출 스택 상의 상기 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
- 제10항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,상기 판정 수단이상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾기 위한 수단, 및상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하기 위한 수단을 구비하는 시스템.
- 제11항에 있어서, 상기 허가 수단이상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하기 위한 수단; 및상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하기 위한 수단을 구비하는 시스템.
- 컴퓨터 상에서 실행하는 동작 - 상기 동작은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 자원에의 액세스를 조정하는 시스템에서, 상기 시스템은 상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file) - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 자원에의 액세스 종류를 인가함-; 상기 동작에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack); 및 실행 유닛을 구비하고, 상기 호출 스택 상의 모든 함수 및 실행기의 허가에 의해 인가된 액세스의 종류가 상기 동작에 의해 요청된 액세스를 포괄할 때에 상기 자원에의 액세스를 허가하는 실행 유닛을 구비하고, 상기 자원에의 상기 요청된 액세스를 조정하는 방법에 있어서,상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 액세스 종류를 포괄하는지를 판정하는 단계;상기 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계; 및상기 모든 허가가 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허가하는 단계를 포함하는 방법.
- 제13항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,상기 판정 단계는상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 액세스 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
- 제14항에 있어서,상기 부인 단계가 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 허가중의 임의의 허가가 상기 요청된 액세스 종류를 포괄하지 못할 때 상기 요청된 액세스를 부인하는 단계를 포함하고,상기 허가 단계는 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 모든 허가들이 상기 요청된 액세스의 종류를 포괄할 때 상기 자원에의 액세스를 허용하는 단계를 포함하는 방법.
- 컴퓨터 상에서 실행하는 프로그램 - 상기 프로그램은 실행하는 동안 코드를 조작하는 복수의 함수를 호출함- 에 의해 요청된 행위를 수행하기 위해 컴퓨터를 제어하는 명령을 포함하는 컴퓨터 판독가능 매체 - 상기 컴퓨터는 상기 코드의 소스 및 상기 코드의 실행기(executor)에 기초하여 상기 행위의 종류를 인가하는, 상기 함수들의 각각에 대한 허가를 저장하는 폴리시 파일(policy file), 상기 프로그램에 의한 호출 순서로 상기 함수 및 실행기를 프레임으로서 저장하는 호출 스택(call stack), 및 실행 유닛을 구비함-에 있어서,상기 명령은 상기 실행 유닛으로 하여금상기 호출 스택 상의 프레임들의 각각과 연관된 허가가 요청된 행위의 종류를 포괄하는지를 판정하는 단계;상기 허가중의 임의의 허가가 상기 요청된 행위의 종류를 포괄하지 못할 때 상기 요청된 행위를 부인하는 단계; 및상기 모든 허가가 상기 요청된 행위의 종류를 포괄할 때 상기 요청된 행위를 수행하는 단계를 수행하게 하는 방법.
- 제16항에 있어서, 상기 프레임의 각각은 대응하는 함수가 특권 함수인지의 여부를 가리키는 특권 플래그를 포함하되,상기 판정 단계는상기 프레임중의 하나가 설정된 특권 플래그를 가지고 있는지를 찾는 단계, 및상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 상기 호출 스택 상의 프레임들의 각각에 연관된 허가가 상기 요청된 행위의 종류를 포괄하는지의 여부를 결정하는 단계를 포함하는 방법.
- 제17항에 있어서,상기 부인 단계가 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 허가중의 임의의 허가가 상기 요청된 행위의 종류를 포괄하지 못할 때 상기 요청된 행위를 부인하는 단계를 포함하고,상기 허가 단계는 상기 설정된 특권 플래그를 갖는 상기 프레임에 후속하는 프레임들에 연관된 모든 허가들이 상기 요청된 행위의 종류를 포괄할 때 상기 자원에의 액세스를 허용하는 단계를 포함하는 방법.
- 메모리를 구비하는 데이터 처리 시스템에 있어서,상기 메모리가실행 동안 코드를 조작하는 복수의 함수를 호출하는 프로그램,상기 함수들의 각각에 대한 허가 - 상기 허가는 상기 코드의 소스 및 상기 코드의 실행기에 기초하여 행위의 종류를 인가함- 를 저장하는 폴리시 파일,상기 프로그램에 의한 호출 순서로 상기 함수들 및 실행기를 프레임으로서 저장하는 호출 스택,상기 프로그램으로부터 행위의 종류에 대한 요청을 수신하고, 상기 호출 스택 상의 상기 프레임들의 각각에 연관된 허가가 상기 요청된 행위의 종류를 포괄하는 지의 여부를 판정하고, 상기 호출 스택 상의 상기 모든 함수들 및 실행기의 허가에 의해 인가된 상기 행위의 종류가 상기 요청된 행위의 종류를 포괄할 때 상기 요청된 행위의 종류를 허가하는 런타임(runtime) 환경, 및상기 런타임 환경 및 상기 프로그램을 실행하는 프로세서를 구비하는 데이터 처리 시스템.
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)
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)
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)
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 | スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体 |
-
1998
- 1998-03-20 US US09/044,915 patent/US6138238A/en not_active Expired - Lifetime
-
1999
- 1999-02-18 KR KR1020007008970A patent/KR20010040979A/ko not_active Application Discontinuation
- 1999-02-18 AU AU27698/99A patent/AU2769899A/en not_active Abandoned
- 1999-02-18 EP EP99908207A patent/EP1062584A2/en not_active Withdrawn
- 1999-02-18 WO PCT/US1999/003389 patent/WO1999044137A2/en not_active Application Discontinuation
- 1999-02-18 CN CN99805489A patent/CN1298512A/zh active Pending
- 1999-02-18 JP JP2000533820A patent/JP2002505476A/ja active Pending
-
2000
- 2000-03-30 US US09/537,746 patent/US6389540B1/en not_active Expired - Lifetime
-
2002
- 2002-05-13 US US10/143,574 patent/US6934758B2/en not_active Expired - Lifetime
Cited By (2)
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 |