CN1298512A - 基于堆栈的访问控制 - Google Patents

基于堆栈的访问控制 Download PDF

Info

Publication number
CN1298512A
CN1298512A CN99805489A CN99805489A CN1298512A CN 1298512 A CN1298512 A CN 1298512A CN 99805489 A CN99805489 A CN 99805489A CN 99805489 A CN99805489 A CN 99805489A CN 1298512 A CN1298512 A CN 1298512A
Authority
CN
China
Prior art keywords
permission
code
frame
requested
executor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN99805489A
Other languages
English (en)
Inventor
R·谢夫勒
龚利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1298512A publication Critical patent/CN1298512A/zh
Pending legal-status Critical Current

Links

Images

Classifications

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

Abstract

一种资源访问调节系统,其中资源是由计算机上执行的操作所请求的。所述操作在执行期间调用对代码进行操作的多个方法。所述系统包括策略文件,调用堆栈和执行装置。策略文件用于存储对每个资源的许可。所述许可根据代码的源和代码的执行者对资源的特定访问类型进行授权。调用堆栈按所述操作调用的次序,存储方法和执行者的表示。当调用堆栈上所有方法和执行者的许可所授权的访问类型都包括所述操作所请求的访问时,执行装置同意访问所述资源。

Description

基于堆栈的访问控制
                        相关申请
本申请是1997年12月11日提交的、序号为08/988,431号美国专利申请的部分连续申请,其中美国专利申请的发明名称为“对资源访问的控制”,其内容通过引用包括在此。
下列美国专利申请是本申请的依据,并通过引用包括在此申请中。
1997年12月11日提交的、序号为____号美国专利申请,其发明名称为“在计算机系统中提供安全性的保护域”。
1997年12月11日提交的、序号为____号美国专利申请,其发明名称为“安全级别解决方案、装载和定义”。
1997年12月11日提交的、序号为____号美国专利申请,其发明名称为“分类的、参数化的且可扩展的访问控制许可”。
1997年6月26日提交的、序号为08/883,636号美国专利申请,其发明名称为“用于通信信道的与层次无关的安全性”。
1998年2月26日提交的、序号为60/076,048号美国临时专利申请,其发明名称为“分布式计算系统”。
1998年3月20日提交的、序号为09/044,923号美国专利申请,其发明名称为“租用存储器的方法和系统”。
1998年3月20日提交的、序号为09/044,838号美国专利申请,其发明名称为“在分布式系统中用于委托确认租用的方法、装置和产品”。
1998年3月20日提交的、序号为09/044,834号美国专利申请,其发明名称为“在分布式系统中用于分组成员资格租用的方法、装置和产品”。
1998年3月20日提交的、序号为09/044,916号美国专利申请,其发明名称为“用于失效检测的租用”。
1998年3月20日提交的、序号为09/044,933号美国专利申请,其发明名称为“在基于事件的系统中用于传输行为的方法”。
1998年3月20日提交的、序号为09/044,919号美国专利申请,其发明名称为“在分布式系统中用于事件通知的对象的延迟重构和远程装载”。
1998年3月20日提交的、序号为09/044,938号美国专利申请,其发明名称为“用于远程方法启用的方法和设备”。
1998年3月20日提交的、序号为09/045,652号美国专利申请,其发明名称为“用于确定性散列以识别远程方法的方法和系统”。
1998年3月20日提交的、序号为09/044,790号美国专利申请,其发明名称为“在决定分布式系统中用于确定远程对象之状态的方法和设备”。
1998年3月20日提交的、序号为09/044,930号美国专利申请,其发明名称为“在分布式系统中用于进行与远程过程调用相关联的处理的可下载的智能代理”。
1998年3月20日提交的、序号为09/044,917号美国专利申请,其发明名称为“远程方法的挂起和继续”。
1998年3月20日提交的、序号为09/044,835号美国专利申请,其发明名称为“在数据库中用于多入口和多模板匹配的方法和系统”。
1998年3月20日提交的、序号为09/044,839号美国专利申请,其发明名称为“在数据库中用于原地修改的方法和系统”。
1998年3月20日提交的、序号为09/044,945号的美国专利申请,其发明名称为“在数据库中用于类型安全属性匹配的方法和系统”。
1998年3月20日提交的、序号为09/044,931号的美国专利申请,其发明名称为“在分布式系统中的动态查找服务”。
1998年3月20日提交的,序号为09/044,939号的美国专利申请,其发明名称为“在分布式系统中用于提供为与一个装置通信而使用的可下载代码的设备和方法”。
1998年3月20日提交的、序号为09/044,826号的美国专利申请,其发明名称为“便于访问查找服务的方法和系统”。
1998年3月20日提交的、序号为09/044,932号的美国专利申请,其发明名称为“在分布式系统中用于动态地验证信息的装置和方法”。
1998年2月26日提交的、序号为09/030,840号的美国专利申请,其发明名称为“在网络上进行动态分布计算的方法和装置”。
1998年3月20日提交的,序号为09/044,936的美国专利申请,其发明名称为“用于持久共享存储空间的交互式设计工具”。
1998年3月20日提交的,序号为09/044,934的美国专利申请,其发明名称为“基于多形态令牌的控制”。
1998年3月20日提交的、序号为09/044,944的美国专利申请,其发明名称为“基于堆栈的安全性要求”。
1998年3月20日提交的,序号为09/044,837的美国专利申请,其发明名称为“安全性要求的按照方法指定”。
                          发明背景
本发明针对计算机系统中的安全措施,尤其针对这样的系统和方法,它们根据代码源和委托方的身份控制对资源的访问,这里正以所述委托方的名言执行代码。
当大量使用计算机系统时,各种组织变得越发依赖于它们。计算机系统的故障会严重地防碍组织的工作。因此,使用计算机系统的组织很容易受用户的攻击,用户可以有意或无意地造成计算机系统发生故障。
一种损害计算机系统安全性的途径是使计算机系统执行在该计算机系统上完成有害动作的软件。存在各种类型的安全性措施,它们可以用来防止计算机系统执行有害软件。一个例子是用“病毒”检查程序检查计算机系统执行的所有软件。但是,病毒检查程序只搜索非常特殊的软件指令。因此,病毒检查程序无法识破许多软件窜改机理。
另一种常用的、用来防止软件窜改计算机资源的措施是“信任开发者方法(trusted developers approach)”。根据该信任开发者方法,系统管理者对软件进行限制,使得计算机系统只能访问由信任软件开发者开发的软件。信任开发者例如可以包括众所周知的卖主或内部开发者。
信任开发者方法的基本原则是,由开发者创建计算机程序,并且相信一些开发者生产的是不危害安全性的软件。信任开发者方法的基本原则还有,计算机系统只执行这样的程序,它们存储在由系统管理者控制的位置上。
目前已经开发的、用于运行应用程序的方法包括,自动和立即执行通过网络从远程源下载的软件代码。当网络包括的远程源处于系统管理者的控制之外时,信任开发者方法不起作用。
有一种传统的尝试可以使信任开发者方法适应于能够执行来自远程源之代码的系统,这种尝试称为信任源方法。信任源方法的的一个重要概念是,从哪里接收程序(即,程序的“源”)的位置标识了程序的开发者。结果,可以用程序源确定该程序是否来自一个被信任的开发者。如果源与信任的开发者相关,那么认为该源是“信任源”,并且允许执行代码。
信任源方法的一种实施称为沙盒法(sand box method)。沙盒法允许执行所有代码,但对远程代码有约束。具体地说,沙盒法允许所有信任代码对计算机系统的资源作全访问,而允许所有远程代码对资源作有限访问。通常在计算机系统拥有者或管理者的直接控制下,信任代码存储在本地的计算机系统上,这里系统的拥有者或管理者负责信任代码的安全性。
沙盒法的一个缺点是该方法不太灵活,因为它限制远程代码访问相同有限资源集。于是,当来自几个源的远程代码试图访问相同的资源时,矛盾就产生了。因此,传统的系统经常限定来自一个源的远程代码访问一组计算机资源,并且限定来自另一个源的远程代码访问另一组不同的计算资源。例如,系统限定通过网络从有关第一计算机的源装入的远程代码可以访问一组文件,并且类似地限定通过网络从有关第二计算机的源装入的远程代码可以访问另一组文件。
与沙盒法相比,提供安全性措施允许更大的灵活性,它包括在委托方和许可之间建立一组复杂的关系。“委托方”是计算机系统中给予许可的实体。委托方的例子包括用户、组织、过程、对象和线程。“许可”是计算机系统允许委托方执行一特定动作或功能的授权。
向委托方分配许可的任务因复杂的过程可以包含多源代码的相互作用而复杂化。例如,由一委托方(例如,线程)正在执行的第一信任源的代码可以引起执行第二信任源的代码,然后引起执行第三不信任源的代码。
即使当执行第二信任源代码和第三不信任源代码时委托方保持不变,执行第二信任源代码时适合于委托方的访问特权可能不同于执行第三不信任源代码时适合于委托方的访问特权。因此,当委托方执行的代码源改变时,适合该委托方的访问特权可以动态地变化。
当名义上执行代码的委托方改变时,访问特权也可以动态地变化。有时,一个委托方以另一个委托方的名义执行代码。例如,当一个计算机上的委托方请求访问另一个远程计算机上的资源时,该请求会在远程计算机上调用“远程”委托方,以便处理该请求。远程委托方对请求的处理包括执行信任源的代码和不信任源的代码。在这些情况下,传统系统继续使代码访问特权基于代码源,不考虑名义上执行代码的委托方。由于没有考虑名义上执行代码的委托方,所以传统系统忽视了一种妨害安全性的可能情况。
基于以上描述,显然希望开发一种用于确定合适代码访问特权的安全机制。
                    发明内容
符合本发明原理的系统和方法用以下方法解决上述需求,即根据代码源和名义上执行代码的委托方来确定对代码的访问控制。由于根据这些因素中的一种或两者调节代码访问,所以可以提高计算机系统中的安全性。
符合本发明原理的一个系统调节资源访问,其中所述资源是由计算机上执行的一个操作所请求的。所述操作调用多个方法,这些方法在执行期间会对代码进行操作。系统包括一个策略文件、一个调用堆栈和一个执行装置。策略文件存储了对资源的许可。许可根据代码的源和代码的执行者同意对资源进行特定类型的访问。调用堆栈按操作的调用次序存储方法和执行者的表示。当调用堆栈上所有方法和执行者的许可所授权的访问类型包含操作所请求的方法时,执行装置同意访问该资源。
                         附图概述
包括在本说明书中并构成说明书一部分的附图示出了本发明的一个实施例,附图和说明书一起说明了本发明的目的、优点和原理。在这些附图中:
图1示出了符合本发明原理的计算机网络;
图2示出了在符合本发明原理的一个实施例中图1的计算机;
图3示出了在图2计算机上执行的代码流;
图4例示了一种用于说明保护域之使用的安全性机制;
图5例示了通过使用图4的策略文件而实现的策略;
图6示出了与图2计算上执行的线程相关的调用堆栈;和
图7是一流程图,示出了在符合本发明原理的一个实施例中图6检查许可方法所执行的处理。
                     详细描述
下面对本发明的详细描述参照了附图。在不同图中的相同的标号表示相同或相似的单元。还有,下面的详细描述并不限制本发明。本发明的范围由所附的权利要求书来限定。
符合本发明原理的系统和方法通过对代码灵活指定访问特权,提高了安全性。这些系统和方法不仅使访问特权依赖于代码源(即,代码是否被信任或不信任),而且使访问特权依赖于名义上执行代码的委托方的身份(即,请求执行代码的委托方是否被信任或不信任)。
                   分布式系统的概述
符合本发明的方法和系统在具有各种部件(包括硬件和软件)的分布式系统(“例示的分布式系统”)中工作。例示的分布式系统(1)允许系统用户在具有许多设备的网络上共享服务和资源;(2)为编程人员提供允许开发稳健的且安全的分布式系统的工具和编程模式;以及(3)简化管理分布式系统的任务。为了完成这些目标,例示的分布式系统使用JavaTM编程环境,允许代码和数据以无缝的方式在装置间移动。因此,将例示的分布式系统放在Java编程环境的顶层,并且该分布式系统使用此环境的特性,包括由它提供的安全性以及很强的类型定义能力。1997年Sams.net出版的题为《Java 1.1开发者指南》对该Java编程环境作了更清楚的描述,其作者为Jaworski。
在例示的分布式系统中,不同的计算机和装置联合起来作为单个系统出现在用户的面前。由于作为单个系统出现,所以例示的分布式系统提供了简单的访问,以及单个系统能够提供的共享能力,并且不丧失个人计算机或工作站的灵活性和个人化响应。例示的分布式系统可以包含成千上万个装置,它们由地理位置分散的用户操作,但这些用户都同意委托、管理和策略的基本主张。
在例示的分布式系统内有服务的各种逻辑分组,其中服务由一个或多个装置提供,而每个逻辑分组称为“Djinn”。“服务”是指用户、程序、装置或另一服务可以访问的资源、数据和功能,并且所述资源、数据和功能是可以计算的、存储相关的、通信相关的,或者与访问另一用户相关。作为Djinn一部分而提供的服务的例子包括诸如打印机、显示器、盘片等装置;诸如应用程序、实用程序等软件;诸如数据库和文档等信息;以及系统的用户。
用户和装置都可以参加Djinn。当加入Djinn时,用户或装置对Djinn增加零项或多项服务,并且可以在受安全性约束的情况下访问其所包含的任何一个服务。因此,装置和用户联合成一个Djinn,共同访问其服务。在编程上,Djinn的服务作为Java编程环境的对象而出现,其中Java编程环境可以包括其它对象、用不同编程语言编写的软件部分,或者硬件装置。一个服务具有一个接口,用于定义对该服务可请求的操作,并且服务的类型决定了构成该服务的接口。
图1例示了分布式系统1000,它包括通过网络1400连接互连的计算机1100、计算机1200和装置1300。计算机1100和1200可以包括任何传统的计算机,诸如IBM兼容机,甚至是“哑”(dumb)终端。在典型的操作期间,计算机1100和1200可以建立客户一服务器关系,以便发送和获得数据。
装置1300可以是许多装置中的任何一种,诸如打印机、传真机、存储装置、计算机或其它装置。网络1400是局域网、广域网或互联网。尽管在构成例示的分布式系统1000时,仅示出了两个计算机和一个装置,但本领域的熟练技术人员应该理解,例示的分布式系统100可以包括另外的计算机或装置。
图2更详细地示出了计算机1100,显示了例示分布式系统1100的许多软件部件。本领域的熟练技术人员应该理解,计算机1200或装置1300可以用类似的方式构造。计算机1100包括存储器2100、辅助存储装置2200、中央处理器(CPU)2300、输入装置2400和视频显示器2500。存储器2100包括查询服务2110、发现服务器2120和JavaTM运行时系统2130。Java运行时系统2130包括JavaTM远程方法调用系统(RMI)2140和JavaTM虚拟机(JVM)2150。辅助存储装置2200包括JavaTM空间2210。
如上所述,例示的分布式系统1000基于Java编程环境,因此它使用Java运行时系统2130。Java运行时系统2130包括JavaTM应用程序设计接口(API),允许程序在Java运行时系统的顶层运行,以便按独立于平台的方式访问各种系统功能,包括主操作系统的窗口化功能和网络化能力。由于Java API为与移植了Java运行时系统2130的所有操作系统提供了单个公共的API,所述在Java运行时系统顶层运行的程序以独立于平台的方式运行,不必考虑主平台的操作系统或硬件配置。Java运行时系统2130作为JavaTM软件开发套件的一部分提供,而JavaTM软件开发套件可以向加州Mountain View市的太阳微系统公司购买。
JVM 2150也促进了平台独立。JVM 2150象抽象计算机那样工作,它按字节代码的形式接收来自各程序的指令,并且通过动态地将字节代码转换成诸如目标代码等执行形式来解释这些字节代码,然后执行。RMI 2140通过允许在一个计算机或装置上执行的对象调用另一个计算机或装置上某对象的方法,来方便远程方法调用。RMI可以位于JVM内,并且RMI和JVM两者都作为Java软件开发套件的一部分提供。
查询服务2110定义了一特定Djinn可以使用的服务。也就是说,可以存在不止一个Djinn,因此例示的分布式系统1000内有不止一个查询服务。对于Djinn内的每个服务,查询服务2110包括一个对象,并且每个对象包括各种便于访问相应服务的方法。查询服务2110及其访问在共同待批的美国专利申请第09/044,826号中有更详细的描述,该专利申请的名称为“便于访问查找服务的方法和系统”,先前已通过引用包括在本申请中。
在称作引导和加入或者发现的过程中,发现服务器2120检测何时将新的装置加到例示的分布式系统1000中,并且当检测新的装置时,发现服务器将一个查询服务2110的引用传送给新的装置,从而新装置可以向查询服务登记其服务,并且变成Djinn的一员。在登记后,新装置变成Djinn的一员,并且它可以访问查询服务2110中包含的所有服务。引导和参加的过程在共同待批的美国专利申请第09/044,939号中有更详细的描述,该专利申请的发明名称为“在分布式系统中用于提供为与一个装置通信而使用的可下载代码的设备和方法”,先前已通过引用包括在此。
Java空间2210是例示分布式系统1000内各程序使用的一个对象资源库,用于存储对象。诸程序使用Java空间2210持久地存储对象,并且使这些对象可以被例示分布式系统内的其它装置访问。Java空间在共同待批的美国专利申请第08/971,529号中有更详细的描述。该专利申请的发明名称为“使用多形态入口和入口匹配的数据库系统”,已转让给共同的受让人,其申请日为1997年11月17日,其内容通过引用包括在此。本领域的熟练技术人员应该理解,例示的分布式系统1000可以包含许多查询服务、发现服务器和Java空间。
                          功能概述
提供了一种安全性强制机制,它允许对线程的访问许可根据目前正在执行的代码的源和执行者随时间而变化。代码源表示代码来自一个信任源还是一个不信任源。执行者表示名义上执行代码的委托方。例如,执行者可以是名义上在客户机计算机上操作过程或程序的一个特定用户,或者一个特定组织。
当正在执行一个来自信任源的例程时,一般允许执行该例程的线程可以更多地访问资源。同样,信任执行者可以更多地访问资源。
当一个例程调用另一个例程时,执行这些例程的线程与这两个例程共用的许可相关。因此,将线程的访问等级限制成小于或等于允许任何一个例程的访问等级。
本机制允许某些例程有“特权”。当确定线程是否能够执行一个动作时,只检查与特权例程以及在线程之调用层次中位于该特权例程以上的例程相关的许可。
根据符合本发明的一个实施例,这里描述的安全性机制用许可对象和保护域对象来存储用于模拟系统安全性策略的信息。后文将更详细地描述这些对象的特性和使用,以及用于动态确定线程之时变访问特权的技术。
                   信任源和不信任源
图3示出了计算机1100(图2)中执行的代码流3100。代码流3100由诸如JVM 2150等代码执行单元3200执行,并且源于零个或多个不信任流3300,或者零个或多个信任源3400。不信任源3300和信任源3400可以是文件服务器,包括与互联网相连的文件服务器,或者其它类似的设备。不信任源一般不受计算机1100之操作人员的直接控制。这里将来自不信任源的代码称为不信任代码。
由于不信任代码被认为会给安全性带来较大的风险,所以通常将不信任代码可以访问的计算机资源组限制成那些不会威胁安全性的资源。来自信任源的代码通常是信任开发者开发的代码。信任代码被认为是可靠的,并且对安全性的威胁大大小于不信任代码。
这里,将通过网络从远程源装入的并且立即执行的软件代码称为远程代码。一般,远程源是一个分立组织或个人的计算机系统。远程源通常与互联网相联。
不信任代码通常是远程代码。但是,来自计算机1100本地源的代码会给安全性带来较大的风险。可以将来自这类本地源的代码视为不信任源的不信任代码。同样,可以认为来自一特定远程源的代码是可靠的,并且风险相对较小,因此可以将其视为来自信任源的信任代码。
根据符合本发明的一个实施例,用一种安全机制来实现以下安全性策略,即允许信任代码比不信任代码可以访问更多的资源,即使信任代码和不信任代码由同一委托方执行。一种安全性策略确定代码执行单元3200将允许代码流3100中的代码完成哪个动作。许可和保护域的使用通过允许相对较复杂的许可分组和关系,而允许策略超越简单的信任/不信任的二分法策略。
参照图4将更详细地描述可以与分类许可结合使用的保护域和策略。
                   信任执行者和不信任执行者
在名义上操作计算程序的用户或组织(或者在某些情况下,该程序本身)被称为“执行者”(即,在名义上将访问资源的委托方)。例如,计算机1200上的程序执行者(“客户机执行者”)可以不同于计算机1100上的程序执行者(“服务器执行者”)。
代码执行单元3200以客户机执行者的名义通过RMI 2140(图2)接收请求。作为响应,代码执行单元3200执行线程之类的操作,以便处理请求。线程负责获得合适的代码和或资源,以满足请求,并且一般将允许线程以服务器执行者和客户机执行者中任何一个或两者的名义进行操作。
代码执行单元3200允许授权的执行者或“信任执行者”更多地访问计算机资源,因为信任执行者不会给安全性带来很大的风险。信任执行者可以包括系统操作人员,它们需要更多地访问计算机资源,以便处理系统更新或类似任务。未授权的执行者或者“不信任执行者”用不同方式对待。不信任执行者被认为会给安全性带来较大的风险,因此它们只能有限地访问计算机资源。
根据符合本发明的一个实施例,用一种安全性机制来实现以下安全性策略,即允许信任执行者比不信任执行者能够访问更多资源,即使信任和不信任执行者请求来自单一源的代码。一种安全性策略确定了代码执行单元3200将允许哪些动作。许可和保护域的使用通过允许相对较复杂的许可分组和关系,而允许策略超越简单的信任/不信任的二分法策略。
现在,参照图4将更详细地描述可以与分类许可结合使用的保护域和策略。
                     安全性机制举例
图4例示了用于说明保护域之使用的安全性机制。例示的安全性机制包括策略文件4100、策略对象4200、域映射器对象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”)4642和一组公共加密密钥4644的组合记录。URL标识一个特定的源。URL 4642是一个串,用来唯一标识与互联网相连的任何服务器。URL4642还可以用来指示计算机1100的本地源。一般来说,URL 4642包括文件指示以及文件目录,其中文件目录是服务器正提供的代码流的源。
这里,将公共加密密钥称为“密钥”,它用来使数字签名生效,其中数字签名可以包含在用来传输相关代码和数据的文件中。Schneier在1996年所著的“应用加密学”更详细地描述了公共加密密钥和数字签名。密钥4644可以包含在文件中,包含在使密钥与源相关的数据库中(例如URL),或者可以用其它技术访问。
可以使一个类与包含在文件中的签字签名相关,而这里所述的文件是用来传输定义该类的代码的,或者可以将类的类定义与一数字签名具体关联。与一个有效数字签名相关的类称为被签名。有效数字签名是可以用存储在数据库中的已知密钥验证的数字签名。如果一个类与一个不能被验证的数字签名相关,或者该类与任何数字签名无关,那么该类称为未签名。未签名的类可以与一个缺省密钥相关。一个密钥可以与一个名称相关,而所述名称可以用来在数据库在查找所述密钥。
尽管将一个代码标识符格式描述成包括表示源的数据(即,加密密钥和URL),但也可以使用其它格式。可以用表示代码源的其它信息或其组合来表示代码标识符。
执行者标识符4700表示代码的执行者。“代码的执行者”是在名义上执行该代码的委托方(例如,用户或组织)。执行者的例子可以包括例如“约翰T.施密斯”等个人,或者诸如“太阳微系统股份有限公司”等组织。因此,“执行者标识符”是代表执行者的标识符形式。执行者标识符的可能例子包括串名、计算系统登录名和雇员编号。当服务器通过RMI接收到来自一客户机的请求时,该服务器可以要求将客户机执行者的授权作为正在以客户机执行者的名义执行客户机程序的证据。
                         保护域和许可
根据符合本发明的一个实施例,保护域用来加强计算机系统内的安全性。当以执行者的名义正在执行来自一个或多个源的代码时,保护域可以看作是一组授予一个或多个执行者的许可。许可是计算机系统作出的授权,它允许委托方执行一特定的动作或功能。一般地说,许可包括同意用一种特定的方法访问计算机资源。授权的一个例子是同意将一特定目录“写”在文件系统(例如,/home)中。
在计算机系统中可以用许多方式来表示许可。例如,包含文本指令的数据结构可以表示许可。诸如“许可执行者写/somedirectory/somefile”等指令表示允许以委托方“执行者”的名义对“/somedirectory”目录中的“somefile”文件进行写操作。该指令表示同意哪个特定的动作,允许执行该动作的执行者,以及同意在其上执行该特定动作的计算机资源。在该例中,被授权的特定动作将以委托方“执行者”的名义进行“写”。同意在其上执行特定动作的计算机资源是计算机1100之文件系统中的一个文件“/somedirectory/somefile”。在本例中,用本领域熟练技术人员已知的传统形式表达了该文件以及包含该文件的目录。
许可还可以用对象表示,这里称为许可对象。对象的属性表示一特定许可。例如,一个对象可以包括“写”的动作属性和“/somedirectory”的目标资源属性。许可对象可以具有一个或多个许可验证法,这些方法用来确定由该许可对象表示的特定许可是否授权被请求的许可。
                      策略
许可、执行者和代码源之间的关联构成了系统的安全性策略。系统的策略可以用一个或多个包含指令的文件来表示。每个指令在一特定的访问标识符和一特定的授权许可之间建立一种映射。访问标识符由一个执行者标识符和一个代码标识符组成。当以指令中访问标识符的执行标识符所规定的执行者的名义操作对象时,指令中规定的许可适用于所有属于下述类的对象,其中所述类与指令中访问标识符所规定的代码标识符相关。
图5例示了通过使用策略文件4100(图4)而实现的策略。例示策略文件4100中的指令格式是:
<“permission”><executor><URL><key name><action><target><executor>标识代码的执行者;<URL>与对应于<key name>的密钥的结合构成一代码源;而<action>和<target>表示一许可。密钥与密钥名相关。密钥和对应的密钥名一起存储在一个密钥数据库中。密钥名可用来寻找密钥数据库的密钥。例如,考虑以下指令:
permission executorl file://somesource somekey write/tmp/*上述指令表示授权对“executorl”执行者的许可,许可其用一对象在“/tmp/*”中写任何文件,而所述对象属于与“file://somesource”-“somekey”(即,URL-密钥名)代码源相关的类。
                          隐含许可
一个许可不必正好与另一个许可匹配,才能认为其被另一个许可所“包含”。当第一许可包含第二许可,但不与第二许可匹配时,称第一许可为“隐含”了第二许可。例如,一个要在诸如“c:/,”目录中写任何文件的许可隐含了一个要在诸如“c:/thisfile.”的目录中写任何具体文件的许可。作为另一个例子,一个准许“太阳微系统股份有限公司的所有在职雇员”读取“d:/log”文件的许可隐含着一个准许“同一组织中某个具体雇员”读取“d:/log”文件的许可。
如果用许可对象表示许可,那么该许可对象的验证法包含了用于确定一个许可是否被另一个隐含的代码。例如,一个要将文件写入目录中的许可隐含了一个要将特定文件写入该目录的许可,并且一个要从目录中读取文件的许可隐含了要从该目录中读取特定文件的许可。但是,写许可不隐含读许可。
                      策略实施对象
可以用各种对象将访问标识符表示的策略实现成策略文件4100中包含的许可映射。根据图4所示的实施情况,为了有效地且方便地实施策略,提供了策略对象4200、域映射器对象4300、一个或多个保护域对象4400,以及一个或多个访问标识符4800。
策略对象4200是用于存储例如从策略文件4100中获得的策略信息的对象。具体地说,策略对象4200提供了访问标识符到许可的映射,并且策略对象4200是根据策略文件4100内的指令构造的。在策略对象4200内,访问标识符及其相关的授权许可可以用数据结构或对象来表示。
当域映射器对象4300遇到新的访问标识符4800时,根据请求建立保护域对象4400。当接收到一个访问标识符4800时,域映射器对象4300确定保护域对象4400是否已经与该访问标识符4800相关。域映射器对象4300保持这样的数据,它们表示哪些保护域对象已经建立以及与这些保护域对象相关的访问标识符。如果一个保护域对象已经与访问标识符相关,那么域映射器对象4300将访问标识符和保护域对象的映射加到由域映射器对象4300保持的访问标识符和保护域对象的映射中。
如果一个保护域对象与访问标识符无关,那么建立一个新的保护域对象,并且将其与许可填充(populate)。根据策略对象4200中访问标识符与许可的映射关系,将保护域对象与映射到该访问标识符的那些许可填充。最后,如前所述,域映射器对象4300将该访问标识符与保护域对象的映射关系加到访问标识符与保护域对象的映射中。
在符合本发明的其它实施例中,不把访问标识符与保护域对象的映射存储在域映射器对象中,而是将映射作为静态字段存储在保护域类中。保护域类是保护域对象4400所属的类。无论有多少对象属于一个类,该类只有一个静态字段的实例。表示保护域对象已经建立以及与该保护域对象相关的访问标识符的数据存储在保护域类的静态字段中。
静态方法用来访问和更新上述静态数据。用整个类的名义调用静态方法,并且无需参照具体的对象就可以调用静态方法。
                     调用堆栈举例
用上述许可对象、保护域对象和策略对象来确定线程的访问权。根据符合本发明的一个实施例,这类访问权根据线程目前正在执行哪个代码以及正在以哪个执行者的名义执行线程,而随时间变化。导致执行线程目前正在执行之代码的调用顺序反映在线程的调用堆栈中。应该参照例示的调用堆栈说明对安全性机制的操作过程,这种安全性机制以允许访问权随时间变化的方式加强了访问权。
图6是一方框图,它包括与线程6200相关的调用堆栈6100,在线程6200中,对象4500-1的方法6300调用另一对象4500-2的方法6300-2,方法6300-2调用又一对象4500-3的方法6300-3,方法6300-3再调用访问控制器对象6500的检查许可方法6400。
线程6200是在计算机1100上执行的线程。调用堆栈6100是一堆栈数据结构,它表示在任何给定实例下线程6200调用的方法的调用层次。在图6所示的实例下,调用堆栈6100为线程6200执行的但还没有结束的每个方法都包含一个帧(例如帧6100-1)。
每帧对应于已被线程6200调用但还没有结束的方法。各帧在调用堆栈6100上的相对位置反映了与帧对应的方法的调用次序。当一个方法结束时,从调用堆栈6100的顶层除去对应于该方法的帧。当调用一个方法时,对应于该方法的帧加到调用堆栈6100的顶层上。
每帧都包含有关方法以及对应该帧的对象的信息。根据该信息,通过调用由代码执行单元3200为每个对象提供的“获得类”方法,可以确定该方法的类。然后,根据代码执行单元3200保持的联系,确定此类的代码标识符。每帧还包含在名义上执行线程的执行者的执行者标识符(例如,执行者标识符4700-1)。然后,将执行者标识符和代码标识符组成一个访问标识符(例如,访问标识符4800-1)。根据域映射器对象4300中的映射,可以确定与给定帧的访问标识符相关的保护域对象。
例如,假设线程6200调用方法6300-1。当执行方法6300-1时,线程6200调用方法6300-2。当执行方法6300-2时,线程6200调用方法6300-3。当执行方法6300-3时,线程6200调用方法6400。这里,如图6所示,调用堆栈6100表示方法的调用的层次。帧6100-4对应于方法6400,帧6100-3对应于方法6300-3,帧6100-2对应于方法6300-2,帧6100-1对应于方法6300-1。当线程6200结束方法6400时,从调用堆栈6100中去除帧6100-4。
                        方法/许可关系
调用堆栈6100上的每个帧与一组许可相关。对于一给定的帧,其许可组由保护域对象确定,而保护域对象与针对给定方法的代码的源以及在名义上执行代码的委托方相关。现在继续参照图6,描述帧、保护域和许可之间的关系。
保护域对象4400-1从访问标识符4800-1映射,其中访问标识符4800-1由执行者标识符4700-1和对象4500-1的类的代码标识符组成。对象4500-1的方法6300-1以执行者标识符4700-2的名义调用对象4500-2的方法6300-2。保护域对象4400-2从访问标识符4800-2映射,其中访问标识符4800-2由执行者标识符4700-2和对象4500-2的类的代码标识符组成。对象4500-2的方法6300-2以执行者标识符4700-3的名义调用对象4500-3的方法6300-3。保护域对象4400-3从访问标识符4800-3映射,其中访问标识符4800-3由执行者标识符4700-3和对象4500-3的类的代码标识符组成。
当用保护域对象组织和确定特定执行者和代码源的访问权时,必须提供一些机制用以确定线程的访问权,其中线程具有一调用堆栈,调用堆栈具有多个方法,而方法的代码来自多个源,或者方法的代码被请求以多个委托方的名义执行。根据符合本发明的一个实施例,如下文将更详细描述的,该确定由访问控制器对象完成。
                    访问控制器举例
根据符合本发明的一个实施例,用访问控制器对象确定某个线程是否可以执行一特定的动作。具体地说,在资源管理对象访问一资源之前,资源管理对象(例如,对象6300-3)调用访问控制器对象6500的检查许可方法6400。
在说明的例子中,资源管理方法6300-3调用访问控制器对象6500的检查许可方法6400,以便确定是否授权访问该资源。为了做出该决定,访问控制器对象6500的检查许可方法6400执行参照图7所述的步骤。
                    确定是否授权一个动作
根据符合本发明的一个实施例,如果在发出一个授权请求时与线程相关的每个保护域对象中都包含执行一动作所需的许可,那么同意执行该动作。如果在与一保护域对象相关的一个或多个许可中包含了某个许可,那么称该许可包含在所述保护域对象中。例如,如果某个动作要求许可以“Bob”委托方的名义对“e:/tmp”目录中的文件进行写操作,那么如果保护域对象4400-1明显包含或隐含该许可,那么该被要求的许可将包含在保护域对象4400-1中。
假设当线程6200通过调用检查许可方法6400请求确定是否同意执行一动作时,线程6200正在执行6300-3。再假设线程6200已调用了方法6300-1、方法6300-2和方法6300-3,并且当线程6200调用方法6400时这些方法还没有结束。当请求确定授权时与线程6200相关的保护域对象由保护域对象4400-1、4400-2和4400-3表示。
对于本例中所给的调用层次,如果保护域对象4400-1中包含的唯一许可是“写入e:/tmp”,那么不会将下述所需许可授权给线程6200,其中所述所需许可是执行以下动作,即以“Bob”的名义对文件“d:/sys/pwd”进行写操作。不授权的理由是,保护域对象4400-1中包含任何许可不包括所需求的许可。
                          特权方法
有时需要同意执行下述动作,即执行一个方法,但不考虑与线程之调用层次中位于该方法之前的诸方法相关的保护域对象。更新口令是这种需要的一个例子。
具体地说,由于口令文件的安全性要求是严格的,所以将更新口令文件所需的许可局限于非常少的专用保护域对象。一般地说,这类保护域对象与来自信任代码和信任执行者的对象的方法相关,其中信任执行者提供其自身的安全性机制。例如,用于更新口令的方法可以在为用户更新新口令之前向该用户要求旧的口令。方法还要求在名义上请求更新的委托人的授权,并且只对授权的委托方准许更新口令。
由于将更新口令的许可局限于来自特定源的代码和以特定授权委托方执行的代码,所以不允许来自其它源或委托方的代码更新口令。即使在诸如图6所示的情况下,来自一远程源(方法6300-1)代码试图通过调用具有更新口令之许可的信任代码(方法6300-3)来改变口令,也是这样。在该情况下拒绝方法的理由是,调用层次中至少有一个方法(方法6300-1)不具备必要的许可。
根据符合本发明的一个实施例,提供了一种特权机制,用以允许本身不具有许可的方法执行动作,通过调用具有许可的特殊“特权”方法执行这些动作。通过把被认为与“线程相关”保护域对象局限于与“特权”方法和调用层次中在该特权方法之后的诸方法相关的保护域对象,可以获得上述结果。
通过调用例如称为beginPrivilege的特权对象的一个方法,方法可以使其本身获得特权(即,允许特权机制)。通过调用例如称为endPrivilege的特权对象的另一个方法,方法可以使其本身失去特权(即,禁止特权机制)。以下代码举例说明一项技术,该技术用于调用方法允许或禁止特权机制。尽管代码示例可以象太阳微系统股份有限公司的Java编程语言,但该例只是说明性的,不代表实际的代码实施。
    Privileged p=new Privileged();
    p.beginPrivilege();
    try{

        [sensitive code]
    }  finally{

           p.endPrivilege();}
代码示例的第一行建立一特权对象。第二行调用允许特权机制的特权对象的beginPrivilege方法。“try finally”语句确保在执行“finally”之后的代码块时不考虑执行“try”和“finally”之间块期间所发生的事。因此,总是调用特权对象(“p.endPrivilege()”)的特权禁止方法。
例如,可以使用上述代码限制方法6300-3中实际访问口令文件的部分。访问口令文件的部分将包含在用“[sensitive code]”表示的块中。由上述代码示例说明的技术明确地将特权机制允许和禁止的责任交给了编程人员。
通常,当执行一特权方法时,线程可以调用与不包括特权保护域对象中所包含许可的其它保护域对象相关的后续方法。当线程正在执行一后续方法时,如果所要求的许可包含在与该后续方法和调用层次中位于该后续方法特权方法之间的任何方法相关的保护域对象中时,只同意由该线程请求的动作。用这种方式限制特权机制的好处是,当特权方法调用不信任代码和不信任执行者的方法时,可以防止不信任代码和不信任执行者的方法有效地“借用”与信任代码和信任执行者的特权方法相关的许可。
在符合本发明的另一个实施例中,方法通过调用访问控制器类的静态方法使其本身具备特权或不具备特权。该访问控制器类是访问控制器对象所属的类。如以下代码示例所证明的,使用与访问控制器类相关的静态方法避免了必须建立一特权对象来允许特权机制。
以下代码示例说明了一项技术,该技术调用允许或禁止特权机制的方法。为了便于说明,假设访问控制器类的名称是AccessControl。尽管代码示例可以象太阳微系统股份有限公司的Java编程语言,但该例只是说明性的,不代表实际的代码实施。
AccessControl.beginPrivilege();
try{

   [sensitive code]
}  finally{

   AccessControl. endPrivilege();
}
允许调用
线程可以在调用层次的不同层面上调用同一方法。例如,方法X可以调用方法Y,方法Y可以调用方法X。结果,可以二次调用作为特权方法被调用的方法,诸如6300-2,但在第二次调用时不允许特权机制。为了在使特权机制工作时适当地确定与线程相关的保护域对象,提供一种机制,用以跟踪特权方法的哪一次调用允许特权机制。将线程允许特权机制的调用称为“允许调用”。
用于跟踪特定方法的哪次调用是允许调用的一项技术是,在对应于每个允许调用的帧中设置一标志。其实现方法是,当在执行一方法期间调用每个特权允许对象的特权允许方法时,在对应于每个允许调用的帧中设置特权标志6150。
根据符合本发明的一个实施例,每个帧都有一个特权标志值。当把任何帧加入调用堆栈6100时,特权标志的初始值表示相应的方法没有被特权。当相应方法具有特权时,任何帧的特权标志只设置为表示相应方法被特权的值。
在允许特权机制的某个方法结束之后,特权标志6150的值不会转移方法的下一次调用。标志值不会转移的原因是,当把对应于该方法的新帧加入调用堆栈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定义了一个循环,在该循环中,检查与调用堆栈中诸帧相关的许可。循环继续,直至遇到一特权方法,或者检查完调用堆栈中的所有帧。为了便于说明,将当前正被检查特权的帧称为“选定帧”,并将与该帧相关的方法称为“选定方法”。
在步骤7200,就与选定帧相关的许可中是否有一个包含所要求的许可作出判断。与一帧相关的许可是与该帧相关的保护域对象的许可。如果步骤7200的判定是与选定帧相关的许可包含了所需要的许可,那么控制行至步骤7300。
在循环的第一次迭代期间,检查紧挨在与访问控制器对象之检查许可方法相关的帧之前的那个帧。在本例中,与检查许可方法6400相关的帧是帧6100-4。紧挨在帧6100-4之前的帧是帧6100-3。结果,在循环的第一次迭代期间,将检查帧6100-3。帧6100-3与保护域对象4400-3相关。如果与保护域对象4400-3相关的许可包括所需要的许可,那么控制行至步骤7300。
在步骤7300中,就选定方法的调用是否表示允许调用做出判断。该判断基于与选定方法相对应的帧的特权标志。如果判定选定方法的调用不代表允许调用,那么控制行至步骤7400。在本例中,帧6100-3的特权状态没有被设置成指示帧表示允许调用。因此,控制行至步骤7400。
在步骤7400中,选择下一个帧。根据调用堆栈6100表示的调用层次,下一帧是当前帧下面的帧。在本例中,当前帧6100-3下面的帧是帧6100-2。对应于帧6100-2的方法是方法6300-2。
在步骤7500中,就是否在步骤7400中选定了一个帧作出判断。如果选中了一个帧,那么控制返回步骤7200。在本例中,由于选中了帧6100-2,所以控制行至步骤7200。在步骤7200中,所做的判定是,与帧6100-2相关的保护域对象(保护域对象4400-2)包括一个包含所需许可的许可,因为在本例中,与保护域对象4400-2相关的许可明显包含所需的许可。然后,控制行至步骤7300。
在步骤7300中,所做的判定是,选定方法的调用表示允许调用,因为特权标志6150表示与帧6100-2对应的调用是允许调用。发送一消息,表示许可请求是有效的。然后,许可检查结束。
当选定方法表示允许调用时在步骤7300结束许可检查,因此对被请求动作的授权基于有特权的保护域对象以及与允许调用后所调用的方法相关的任何保护域对象。
现在,假设在本例中永远不调用特权机制。因此,在步骤7300中,所做的判定是,对选定方法的调用不代表允许调用,因为特权标志6150表示与帧6100-2对应的调用不是允许调用。
在步骤7400中,因为当前帧6100-2下面的帧是帧6100-1,所以被选中的下一帧是帧6100-1,并且与帧6100-1相对应的方法是方法6300-1。在步骤7500中,所做的判定是,在步骤7400选定了下一帧。因此,控制再次返回步骤7200。
在步骤7200中,所做的判定是,与帧6100-1相关的保护域对象(保护域对象4400-1)不包括所需的许可,因为在本例中,与保护域对象4400-1相关的许可中没有一个包含所需的许可。于是,控制行至步骤7600。
在步骤7600中,发送一消息,表示不同意执行被请求的动作。在符合本发明的一个实施例中,通过抛出一个异常错误来发送该消息。
当至少有一个与线程相关的保护域对象不包括含所需许可的许可时,不同意执行被请求的动作。只有当请求判断是否同意执行一动作时与线程相关的所有保护域对象都包括所需的许可的情况下,才同意执行该动作。
在符合本发明的一个实施例中,当一线程(“母线程”)产生另一线程的卵(“子线程”)时,与母线程相关的保护域对象被子线程“继承”。例如,当产生子线程时,通过保留母线程的调用堆栈,可以继承保护域对象。当执行图7所示的步骤,以便判断是否同意执行一动作时,将转移的调用堆栈视作好象它包括母线程的调用堆栈。
在符合本发明的另一实施例中,子线程不继承母线程的保护域对象。在本例中,将转移的调用堆栈视作好象它不包括母线程的调用堆栈。
根据与线程相关的保护域对象来决定是否同意该线程执行一动作的一个好处是,许可可以基于线程正在执行的代码的源,以及在名义上执行代码的委托方。
如前所述,对象是用代码执行单元3200接收到的代码从类定义建立的。线程正在执行的代码源是方法的代码源。方法的代码源是用来定义该方法之对象所属的类的类定义的源。代码的执行者是在名义上正在执行代码的委托方。这可以包括在客户机系统上操作的过程或程序的执行者。
如前所述,由于保护域对象与方法的代码源或代码执行者相关,所以授权给线程的许可可以基于被线程调用的每个方法的代码源或代码执行者。因此,经组织,来自特定源的代码或者以特定委托方的名义所执行的代码可以与适合安全性目的的许可相关。
上述特权机制的一个优点是,在敏感操作的性能中,安全性是关键的,它可以被限制成来自信任源的方法以及以信任执行者的名义执行的方法。另外,可以以基于较小保密代码的方法的名义完成这些操作。完成敏感操作的方法一般依赖于其自身的安全性机制(例如,口令授权方法)。当一线程调用特权机制时,将一般会给安全性带来较大风险的特权域的许可范围限制为允许调用。这可以防止了特权方法内调用的方法(诸如根据不信任代码或不信任执行者的方法)获得能力执行会给安全性带来较大风险的操作。
尽管以上描述了一种用于跟踪哪个调用是允许调用的方法,但其它各种用于跟踪允许调用的方法也是可行的。因此,应该理解,本发明不限于用于跟踪允许调用的任何特定方法。
                      结论
符合本发明原理的系统和方法提供了一种加强安全性和机制,在该机制中,线程的访问许可根据正在执行的代码的源和执行者随时间而变化。
以上对本发明实施例的描述提供了说明和描述,但不打算穷举或限制本发明于所揭示的明确形式。根据上述原理可以进行各种变化和改变,或者可以通过发明实践来获得这些变化和改变。本发明的范围由权利要求书及其等效物来限制。
尽管将符合本发明的系统和方法描述成在例示的分布式系统和Java编程环境下工作,但本领域的熟练技术人员应该理解,本发明可以在其它系统和其它编程环境中实行。另外,尽管将本发明的一些方面(aspect)描述成存储在存储器中,但本领域的熟练技术人员应该理解,这些方面还可以存储在其它类型的计算机可读的媒体上,或者从其它类型的计算机可读媒体中读出。其它类型的计算机可读媒体例如可以是辅助存储装置,如硬盘、软件或CD-ROM;来自互联网的载波;或者其它形式的RAM或ROM。Sun,Sun Microsystems,Sun logo,Java和基于Java的商标是太阳微系统股份有限公司在美国和其它国家的商标或注册商标。

Claims (19)

1.一种资源访问调节系统,其中所述资源是计算机上执行的一个操作所请求的,所述操作在执行期间调用对代码进行操作的多个功能,其特征在于,所述系统包括:
策略文件,用于存储对每个功能的许可,所述许可根据代码的源和代码的执行者对资源的访问类型进行授权;
调用堆栈,它按所述操作调用的次序,将功能和执行者作为帧来存储;和
执行装置,当调用堆栈上所有功能和执行者的许可所授权的访问类型包括所述操作所请求的访问时,所述执行装置同意访问所述资源。
2.如权利要求1所述的系统,其特征在于,每个帧都包括:
代码标识符,用于为功能中的一个对应功能标识代码的源;和
执行者标识符,用于标识在名义上正在执行代码的执行者。
3.如权利要求2所述的系统,其特征在于,所述策略文件包括:
多个保护域对象,它们与调用堆栈中的每个帧相对应,并且通过映射代码标识符和执行者标识符,为每个功能设置访问许可。
4.如权利要求1所述的系统,其特征在于,所述执行装置包括一访问控制器,该访问控制器用于确定是否授权所述操作,以便对所述资源执行被请求的访问类型,所述访问控制器包括:
用于判断与调用堆栈上每个帧相关的许可是否包含被请求的方法类型的装置;
用于当许可中有些许可不包含被请求访问类型时拒绝被请求访问的装置;和
用于当所有许可都包含被请求的访问类型时同意访问所述资源的装置。
5.如权利要求1所述的系统,其特征在于,每个帧都包括一特权标志,该标志表示对应的功能是否是有特权的功能。
6.如权利要求5所述的系统,其特征在于,所述执行装置包括一访问控制器,该访问控制器用于确定是否授权所述操作,以便对所述资源执行被请求的访问类型,所述访问控制器包括:
用于判定诸帧中有一个具有一设定特权标志的装置;
用于判断与调用堆栈上具有所述设定特权标志的帧之后的每个帧相关的许可是否包含被请求的方法类型的装置;
用于当许可中有些许可不包含被请求访问类型时拒绝被请求访问的装置;和
用于当所有许可都包含被请求的访问类型时同意访问所述资源的装置。
7.一种资源访问调节方法,其中所述资源是计算机上执行的一个操作所请求的,所述操作在执行期间调用对代码进行操作的多个功能,其特征在于,所述方法包括以下步骤:
存储对每个功能的许可,所述许可根据代码的源和代码的执行者对资源的访问类型进行授权;
按所述操作调用的次序,将功能和执行者作为调用堆栈中的帧存储起来;和
判断调用堆栈上每个功能和执行者的许可所授权的访问类型是否包含所述操作所请求的访问;以及
当调用堆栈上所有功能和执行者的许可所授权的访问类型都包含所述操作所请求的访问时,同意访问所述资源。
8.如权利要求7所述的方法,其特征在于,每个帧都包括一特权标志,该标志表示对应的功能是否是有特权的功能,所述判断步骤包括以下子步骤:
发现诸帧中有一个具有一设定的特权标志;以及
确定与调用堆栈上具有所述设定特权标志的帧之后的每个帧相关的许可是否包含被请求的访问类型。
9.如权利要求8所述的方法,其特征在于,所述同意步骤包括以下子步骤:
当许可中有些许可不包含被请求访问类型时,拒绝被请求访问;以及
当所有许可都包含被请求的访问类型时,同意访问所述资源。
10.一种资源访问调节系统,其中所述资源是计算机上执行的一个操作所请求的,所述操作在执行期间调用对代码进行操作的多个功能,其特征在于,所述系统包括:
用于存储对每个功能的许可的装置,其中所述许可根据代码的源和代码的执行者对资源的访问类型进行授权;
用于按所述操作调用的次序,将功能和执行者作为调用堆栈中的帧来存储的装置;和
用于判断调用堆栈上所有功能和执行者的许可所授权的访问类型是否包括所述操作所请求的访问的装置;以及
用于当调用堆栈上所述功能和执行者的许可所授权的访问类型都包含所述操作所请求的访问时同意访问所述资源的装置。
11.如权利要求10所述的系统,其特征在于,每个帧都包括一特权标志,该标志表示对应的功能是否是有特权的功能,所述判断装置包括:
用于发现诸帧中有一个具有一设定的特权标志的装置;以及
用于确定与调用堆栈上位于具有所述设定特权标志之帧之后的每个帧相关的许可是否包含被请求的访问类型的装置。
12.如权利要求11所述的系统,其特征在于,所述同意装置包括:
用于当许可中有些许可不包含被请求访问类型时拒绝被请求访问的装置;以及
用于当所有许可都包含被请求的访问类型时同意访问所述资源的装置。
13.在一种资源访问调节系统中,所述资源是计算机上执行的一个操作所请求的,所述操作在执行期间调用对代码进行操作的多个功能,所述系统包括:策略文件,用于存储对每个功能的许可,所述许可根据代码的源和代码的执行者对资源的访问类型进行授权;调用堆栈,它按所述操作调用的次序,将功能和执行者作为帧来存储;以及执行装置,在所述系统中使用一种对请求访问所述资源进行调节的方法,其特征在于,所述方法包括以下由所述执行装置执行的步骤:
判断与调用堆栈上每个帧相关的许可是否包含被请求的访问类型;以及
当许可中有一些许可不包含被请求的访问类型时,拒绝所述被请求的访问;以及
当所有许可都包含被请求的访问类型时,准许访问所述资源。
14.如权利要求13所述的方法,其特征在于,每个帧都包括一特权标志,该标志表示对应的功能是否是有特权的功能,并且所述判断步骤包括以下子步骤:
发现诸帧中有一个具有一设定的特权标志;以及
确定与调用堆栈上位于具有所述设定特权标志的帧之后的每个帧相关的许可是否包含被请求的访问类型。
15.如权利要求14所述的方法,其特征在于,所述拒绝步骤包括以下子步骤:
当与具有所述设定特权标志之帧以后的诸帧相关的许可中有些许可不包含被请求访问类型时,拒绝被请求的访问;以及
所述准许步骤包括以下子步骤:
当与具有所述设定特权标志之帧以后的诸帧相关的所有许可都包含被请求的访问类型时,同意访问所述资源。
16.一种计算机可读的媒体,该媒体包含用于计算机执行一动作的指令,所述动作是由计算机上执行的程序所请求的,所述程序在执行期间调用对代码进行操作的多个功能,所述计算机包括:策略文件,用于存储对每个功能的许可,所述许可根据代码的源和代码的执行者对动作类型进行授权;调用堆栈,它按所述程序调用的次序,将功能和执行者作为帧来存储;以及执行装置,其特征在于,所述指令使所述执行装置执行以下步骤:
判断与调用堆栈上每个帧相关的许可是否包含被请求的动作类型;以及
当许可中有一些许可不包含被请求的动作类型时,拒绝所述被请求的动作;以及
当所有许可都包含被请求的动作类型时,执行被请求的动作。
17.如权利要求16所述的计算机可读媒体,其特征在于,每个帧都包括一特权标志,该标志表示对应的功能是否是有特权的功能,并且所述判断步骤包括以下子步骤:
发现诸帧中有一个具有一设定的特权标志;以及
确定与调用堆栈上位于具有所述设定特权标志之帧以后的每个帧相关的许可是否包含被请求的访问类型。
18.如权利要求17所述的计算机可读媒体,其特征在于,所述拒绝步骤包括以下子步骤:
当与具有所述设定特权标志之帧以后的诸帧相关的许可中有些许可不包含被请求访问类型时,拒绝被请求的访问;以及
所述执行步骤包括以下子步骤:
当与具有所述设定特权标志之帧以后的诸帧相关的所有许可都包含被请求的访问类型时,同意访问所述资源。
19.一种数据处理系统,其特征在于,包括:
存储器,所述存储器包括:
程序,该程序在执行期间调用对代码进行操作的多个功能,
策略文件,用于存储对每个功能的许可,所述许可根据代码的源和代码的执行者对动作类型进行授权;
调用堆栈,它按所述程序调用的次序,将功能和执行者作为帧来存储;以及
运行时环境,它接收来自所述程序的对一动作类型的请求,判断与调用堆栈上每个帧相关的许可是否包含被请求的动作类型,并且当调用堆栈上所述功能和执行者的许可所授权的动作类型都包含被请求的动作类型时,同意所述被请求的动作类型;和
处理器,它执行所述运行时环境和所述程序。
CN99805489A 1998-02-26 1999-02-18 基于堆栈的访问控制 Pending CN1298512A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US7604898P 1998-02-26 1998-02-26
US60/076,048 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

Publications (1)

Publication Number Publication Date
CN1298512A true CN1298512A (zh) 2001-06-06

Family

ID=26722146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN99805489A Pending CN1298512A (zh) 1998-02-26 1999-02-18 基于堆栈的访问控制

Country Status (7)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437767B2 (en) 2004-11-04 2008-10-14 International Business Machines Corporation Method for enabling a trusted dialog for collection of sensitive data
CN112597487A (zh) * 2020-12-24 2021-04-02 厦门海迈科技股份有限公司 一种基于.net访问权限管理方法和装置以及设备
WO2023173915A1 (zh) * 2022-03-17 2023-09-21 华为技术有限公司 资源控制方法及装置

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321334B1 (en) * 1998-07-15 2001-11-20 Microsoft Corporation Administering permissions associated with a security zone in a computer system security model
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6275985B1 (en) * 1998-12-17 2001-08-14 Sun Microsystems, Inc Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
JP3756352B2 (ja) * 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
DE19934278A1 (de) * 1999-07-21 2001-04-05 Siemens Ag Verfahren und Vorrichtung zur Authentifikation für eine Vielzahl von Diensten
KR100393985B1 (ko) * 1999-12-22 2003-08-06 엘지전자 주식회사 메모리 영역 보호 장치 및 방법
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
US6981263B1 (en) * 2001-06-29 2005-12-27 Bellsouth Intellectual Property Corp. Methods and systems for converged service creation and execution environment applications
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
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
AU2003264208A1 (en) * 2002-09-06 2004-03-29 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
EP1721233A1 (en) * 2004-02-09 2006-11-15 Palmsource, Inc. Method and system for a securty model for a computing device
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
EP1783581A4 (en) * 2004-06-30 2010-08-25 Panasonic Corp PROVISION OF EXECUTION OF A PROGRAM AND METHOD OF EXECUTION
US20060037062A1 (en) * 2004-08-09 2006-02-16 International Business Machines Corporation Method, system and program product for securing resources in a distributed system
US20060156020A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation Method and apparatus for centralized security authorization mechanism
US20060156021A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation Method and apparatus for providing permission information in a security authorization mechanism
US8191115B2 (en) * 2005-01-10 2012-05-29 Microsoft Corporation Method and apparatus for extensible security authorization grouping
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
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
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 情報処理制限システム、情報処理制限装置、および情報処理制限プログラム
WO2011099972A1 (en) * 2010-02-11 2011-08-18 Hewlett-Packard Company, L. P. 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
US10650156B2 (en) * 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US10540523B2 (en) * 2017-04-26 2020-01-21 International Business Machines Corporation Comprehensive system wide cross-reference mechanism using runtime data collection
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
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
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
US11334408B2 (en) 2020-01-08 2022-05-17 Bank Of America Corporation Big data distributed processing and secure data transferring with fault handling
US11363029B2 (en) 2020-01-08 2022-06-14 Bank Of America Corporation Big data distributed processing and secure data transferring with hyper fencing

Family Cites Families (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2476349A1 (fr) 1980-02-15 1981-08-21 Philips Ind Commerciale Systeme de traitement de donnees reparti
US4491946A (en) 1981-03-09 1985-01-01 Gould Inc. Multi-station token pass communication system
AU556499B2 (en) * 1981-05-22 1986-11-06 Data General Corporation Data processing system
US4558413A (en) 1983-11-21 1985-12-10 Xerox Corporation Software version management system
JPH0640302B2 (ja) 1984-01-30 1994-05-25 株式会社日立製作所 図式・ソ−スプログラム自動生成方法
US4823122A (en) 1984-06-01 1989-04-18 Digital Equipment Corporation Local area network for digital data processing system
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US4713806A (en) 1986-03-14 1987-12-15 American Telephone And Telegraph Company, At&T Bell Laboratories Communication system control arrangement
US4939638A (en) 1988-02-23 1990-07-03 Stellar Computer Inc. Time sliced vector processing
US5287511A (en) 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
US4979105A (en) 1988-07-19 1990-12-18 International Business Machines Method and apparatus for automatic recovery from excessive spin loops in an N-way multiprocessing system
JPH0293952A (ja) 1988-09-30 1990-04-04 Hitachi Ltd 仮想計算機システム
US5133075A (en) 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5109486A (en) 1989-01-06 1992-04-28 Motorola, Inc. Distributed computer system with network and resource status monitoring
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
EP0384339B1 (en) 1989-02-24 1997-04-02 Digital Equipment Corporation Broker for computer network server selection
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
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
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
US5218699A (en) 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
CA2047737A1 (en) 1989-12-26 1991-06-27 Shigeru Aoe 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
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
AU628753B2 (en) 1990-08-14 1992-09-17 Digital Equipment Corporation Method and apparatus for implementing server functions 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
EP0737921B1 (en) 1990-09-17 2000-06-28 Cabletron Systems, Inc. System and method for modelling a computer network
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
EP0501610B1 (en) 1991-02-25 1999-03-17 Hewlett-Packard Company Object oriented distributed computing system
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
KR100287045B1 (ko) * 1992-07-06 2001-04-16 존 비. 메이슨 객체의 명명 및 결합들 위한 방법 및 시스템
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
EP0669020B1 (en) 1992-11-13 1997-04-02 Microsoft Corporation Methods for marshalling interface pointers for remote procedure calls
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
EP0613083B1 (en) * 1993-02-25 2002-01-23 Sun Microsystems, Inc. Transaction management in object oriented systems
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
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
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
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
US5594921A (en) 1993-12-17 1997-01-14 Object Technology Licensing Corp. Authentication of users with dynamically configurable protocol stack
AU6702594A (en) 1993-12-17 1995-07-03 Taligent, Inc. Object-oriented distributed communications directory service
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
AU1522095A (en) 1994-01-05 1995-08-01 Peter J. Covey 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
EP0717337B1 (en) * 1994-12-13 2001-08-01 International Business Machines Corporation Method and system for the secured distribution of programs
US5608903A (en) 1994-12-15 1997-03-04 Novell, Inc. Method and apparatus for moving subtrees in a distributed network directory
US5677851A (en) 1994-12-15 1997-10-14 Novell, Inc. Method and apparatus to secure digital directory object changes
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
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
EP0735472A3 (en) 1995-03-31 2000-01-19 Sun Microsystems, Inc. Method and apparatus for conspiracy among objects
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
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
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
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
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
JP3488019B2 (ja) 1996-06-17 2004-01-19 株式会社山武 制御設計用コンフィギュレーション・ツールの部品再利用方法
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
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
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
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
US6247091B1 (en) 1997-04-28 2001-06-12 International Business Machines Corporation Method and system for communicating interrupts between nodes of a multinode computer system
US6157960A (en) * 1997-05-07 2000-12-05 International Business Machines Corporation Technique for programmatically creating distributed object programs
US6282295B1 (en) 1997-10-28 2001-08-28 Adam Lucas Young Auto-recoverable and auto-certifiable cryptostem using zero-knowledge proofs for key escrow in general exponential ciphers
US5991808A (en) * 1997-06-02 1999-11-23 Digital Equipment Corporation Task processing optimization in a multiprocessor system
US5808911A (en) 1997-06-19 1998-09-15 Sun Microsystems, Inc. System and method for remote object resource management
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6052724A (en) * 1997-09-02 2000-04-18 Novell Inc Method and system for managing a directory service
US5946694A (en) 1997-09-29 1999-08-31 International Business Machines Corporation Apparatus and method for transparent application of service to business objects
US5951652A (en) 1997-10-06 1999-09-14 Ncr Corporation Dependable data element synchronization mechanism
US6061699A (en) 1997-11-03 2000-05-09 International Business Machines Corporation Method and computer program product for extracting translatable material from browser program function codes using variables for displaying MRI
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6167449A (en) * 1997-11-19 2000-12-26 Apple Computer, Inc. System and method for identifying and locating services on multiple heterogeneous networks using a query by type
US6016496A (en) 1997-11-20 2000-01-18 International Business Machines Corporation Method and apparatus for an object-oriented object for retrieving information from local and remote databases
US5963947A (en) 1998-01-27 1999-10-05 International Business Machines Corporation Technique of dynamically adding functionality from a client to manipulated data at a server
US6023586A (en) 1998-02-10 2000-02-08 Novell, Inc. Integrity verifying and correcting software
US6604127B2 (en) * 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6026414A (en) 1998-03-05 2000-02-15 International Business Machines Corporation System including a proxy client to backup files in a distributed computing environment
US6185602B1 (en) 1998-06-29 2001-02-06 Sony Corporation Multi-user interaction of multimedia communication
US6108346A (en) 1998-08-27 2000-08-22 Xiox Corporation Combined synchronous and asynchronous message transmission
US6301613B1 (en) * 1998-12-03 2001-10-09 Cisco Technology, Inc. Verifying that a network management policy used by a computer system can be satisfied and is feasible for use
US6282568B1 (en) 1998-12-04 2001-08-28 Sun Microsystems, Inc. Platform independent distributed management system for manipulating managed objects in a network
US6604140B1 (en) * 1999-03-31 2003-08-05 International Business Machines Corporation Service framework for computing devices
US6578074B1 (en) * 1999-06-25 2003-06-10 Mediaone Group, Inc. Provisioning server enhancement
JP2002132739A (ja) * 2000-10-23 2002-05-10 Nec Corp スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437767B2 (en) 2004-11-04 2008-10-14 International Business Machines Corporation Method for enabling a trusted dialog for collection of sensitive data
CN100478970C (zh) * 2004-11-04 2009-04-15 国际商业机器公司 启用收集敏感数据的信任对话框的方法
US8095986B2 (en) 2004-11-04 2012-01-10 International Business Machines Corporation Method for enabling a trusted dialog for collection of sensitive data
CN112597487A (zh) * 2020-12-24 2021-04-02 厦门海迈科技股份有限公司 一种基于.net访问权限管理方法和装置以及设备
WO2023173915A1 (zh) * 2022-03-17 2023-09-21 华为技术有限公司 资源控制方法及装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1298512A (zh) 基于堆栈的访问控制
US7636851B2 (en) Providing user on computer operating system with full privileges token and limited privileges token
CN1535515A (zh) 用于服务器安全和权限处理的系统和方法
US7774827B2 (en) Techniques for providing role-based security with instance-level granularity
CN1220953C (zh) 通过多个外部登记从主登记检索明码口令
US7434257B2 (en) System and methods for providing dynamic authorization in a computer system
Gladney Access control for large collections
KR101298293B1 (ko) 제1 플랫폼으로부터 제2 플랫폼으로의 디지털 라이센스이주
JP4550056B2 (ja) データ・アクセス制御機能を実現する方法、システム、およびプログラム・ストレージ・デバイス
CN1110166C (zh) 从一个主登记向多个外部登记传播明码口令的系统和方法
US7509497B2 (en) System and method for providing security to an application
US7827156B2 (en) Issuing a digital rights management (DRM) license for content based on cross-forest directory information
CN1873652A (zh) 保护数字内容的装置和方法,处理受保护的数字内容的装置和方法
CN1467642A (zh) 数据保护程序及数据保护方法
US8646044B2 (en) Mandatory integrity control
US20050234859A1 (en) Information processing apparatus, resource managing apparatus, attribute modifiability judging method, and computer-readable storage medium
CN1633084A (zh) 用于应用服务器的基于令牌的细粒度访问控制系统及方法
CN1763761A (zh) 基于角色的访问控制系统、方法和计算机程序产品
CN1154615A (zh) 用于共享资源环境中的可配置口令完整性服务器
CN1902561A (zh) 用于根据智能密钥设备建立信任框架的方法和系统
CN1617099A (zh) 软件产品的应用程序身份
CN1525373A (zh) 结合颁发内容的数字版权管理(drm)许可证审查高速缓存的用户组信息
CN1854961A (zh) 一种安全操作系统中实现最小特权控制的策略和方法
CN1975678A (zh) 执行程序的信息处理设备、计算机可读介质和程序控制方法
US9129098B2 (en) Methods of protecting software programs from unauthorized use

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C01 Deemed withdrawal of patent application (patent law 1993)
WD01 Invention patent application deemed withdrawn after publication