没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记135(2006)61-71www.elsevier.com/locate/entcs在盒装环境Pablo Garralda1,2Adriana Compagnoni1,3计算机科学系史蒂文斯理工学院霍博肯,新泽西州-美国。摘要源于我们以前对BACI的工作,BACI是一种具有通信接口的盒装环境演算,我们定义了一种新的演算,通过引入多个通信端口,访问控制列表和端口隐藏来进一步增强通信机制和微积分的发展主要集中在三个目标上:分离移动性和通信之间的关注点,细粒度控制和局部性。通信原语使用端口在环境之间建立通信信道,而环境名称仅用于移动性。为了实现对移动性的更好的控制,演算包括协适应性算法,但同时也包括协适应性算法。这包括允许进入或退出具有该协作能力的环境的环境的名称。由此产生的演算不仅提供了比Boxed Ambients更多的灵活性和表现力,而且还可以使用更强大的通信和移动性结构来实现更简单的实现我们建立了基本的元理论的演算提供类型安全的规则,并显示类型在执行过程中被保存。关键词:环境,移动性,计算模型1引言在Cardelli和Gordon环境条件1这项研究得到了美国国家科学基金会项目No.CCR- 0220286 ITR:安全电子交易。供资机构不负责对本文所列结果的任何使用。2Email:pablo@cs. stevevenns. 埃杜乌3Email:abc@cs. stevevenns. 埃杜乌1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.09.02162P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61能够在它们所包围的过程的影响下移动,并且可以通过开放操作来溶解它们的周边。移动环境提供了计算过程以及计算设备的直接表征。Boxed Ambients(BA)[3]从MA演变而来,通过移除环境消除其边界的能力。在BA中,环境是一个不能打开的“盒子”。这种封闭环境的概念提供了环境所包含的代理的完整封装。为了能够通过禁用打开操作而丢失通信,环境配备有通信信道以与相邻环境(父母和孩子环境)交换信息。在MA和BA中,环境移动性都是由内部流程控制的环境移动性的命令称为能力。这些功能告诉环境打开或移动到另一个环境的内部或外部。然而,不受限制的移动性可能导致两个并发进程之间的不期望的干扰。为了解决这个问题,对能力的控制首先在安全环境中引入[10],后来以协同能力的形式在新盒装环境(NBA)中使用[4]。一种能力可以在只有在存在匹配的协同能力的情况下。因此,为了使用in能力进入环境,该环境必须包含授权该访问的匹配的in协同能力;类似地用于使用out能力退出。Bonelli 等 人 [1] 在 Boxed Ambients with Communication Interfaces(BACI)演算中引入了局部视图的概念。在这个演算中,每个环境都有一个相关的通信端口和一个本地视图。的通信端口用于向其他环境发送消息和从其他环境接收消息,本地视图表示环境中包含的进程所使用BACI足够灵活,允许环境使用不同的语言与不同的父母进行交流。类型然而,这种灵活性是以相当复杂的语法和保证类型安全所需的一些运行时类型检查为在本文中,我们提出了一个增强和简化版本的BACI称为BACIv2。在这个版本中,我们分享了与原始版本相同的目标:强调通信和移动性之间的分离,减少微积分中的全局信息量。然而,这一次,我们在局部性、表达性和演算复杂性之间实现了更好的权衡。在BACIv2中,环境中的进程可以使用多个端口(每个端口都有自己的通信类型)与环境内外的例如,多个端口的使用允许直接指定一个主机来公开多个服务P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)6163AUTH系统PWD存取授予剂如ssh或ftp,为每个服务使用不同的端口在多个端口不可用的情况下,如BA [3],我们可以使用额外的环境来模拟额外的通信信道。然而,具有多个端口作为基元具有不需要这种辅助环境的移动性所必需的附加协同能力多个端口的示例使用可以是诸如堆栈之类的数据结构的实现。使用端口,我们可以将堆栈的实现封装在单个环境中,对每个环境使用不同的端口堆栈操作如图1(a)所示。用户环境推网络身份验证边界pop为空(a) 使用多个端口的堆栈环境(b)动态环境访问控制Fig. 1. BACIv2中的一些示例BACIv2还通过使用细粒度的协同功能来增强移动性控制。每个协同能力都有一个访问控制列表,环境在名单上。访问控制列表是非常灵活的,可以使用类似于NBA [5]中的机制的密码来实现访问控制。图1(b)描绘了一个环境,为了进入受限环境,该环境需要通过将密码发送到位于受限环境外部的认证进程来认证其自身。接下来,验证进程验证密码并指示受限环境授予对经验证的环境的访问。最后,受限环境允许进入环境的访问,并且操作完成。BACIv2还引入了端口名称限制。该限制用于创建真正的私有通信信道,防止不期望的通信干扰。 此外,可以使用一个称为connect的特殊原语动态创建新端口。 connect原语绑定两个不同的ports:一个来自父环境,一个来自子环境,使用新的(私有)端口名称。此构造创建新的通信通道,而不需要先前对父环境或子环境的任何了解堆叠64P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61留言内容:M,N::=α名称|C能力功能:C和D::=在α中输入|outToα退出|C.D路径|x变量预设值:π::=C能力|(x˜:ϕ˜)ηreceive|⟨M˜ ⟩ηsend|在{x}共同输入中|outTo {x}共同退出|connect↓(c:ϕ˜)conn ectd own|connect↑(c:ϕ˜)conn ectup访问控制列表:χ::=任何无限制工艺流程:P,Q::= 0零过程|P|Q成分|!π.P复制|(ν n:amb)P 限制|(νpc:ϕ˜)Pportrestr.|π.P前缀|α[P]环境温度|[α=β]{P}{Q}相等姓名:α,β::=n常数|x变量地点:η::=↑c向上|↓c向下|*c当地打字环境中文(简体)|α˜港口:名单|Σ,x: ϕvariable进程接口类型c,u,v常数基本类型Amb::=ambientΓ::=空|Γ,τ界面通信类型|上限能力τ::=c:类型端口表1 BACIv2他们使用的名称或端口。2BACIv22.1语法和语义表1总结了演算的完整语法。它包括两个主要的句法类别:过程和消息。由M和N排列的消息包括环境名称和功能。环境变量名的范围为α和β,可以是常量环境变量名,也可以是变量名。由C和D表示的能力可以是进入和退出环境变量的能力,也可以是 这组变量表示由接收动作绑定的变量,并且可以显示为能力、环境名称或消息。环境名称是一组常量。端口集是用于寻址通信的名称集。进程,范围为P、Q、R和S,由以下构造函数构建:不活动,显示进程的结束;两个进程的并行组合;复制,用于递归;环境和端口名限制;前缀,其中π是一个操作,后面是一个继续进程P;命名进程P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)6165ambient封装一个进程;最后,根据α是否等于β,对分支到P或Q进行相等性测试。进程前缀可以分为四个不同的组:能力,消息发送和接收,受限的协同能力和连接。功能命令环境移动到另一个环境的内部或外部。在不同位置的进程之间发送和接收交换消息。我们使用术语位置来表示位于父环境中、子环境中或同一环境中的本地端口。 协同功能控制环境的入口或出口,仅允许进入其访问控制列表中包含的环境。最后,connect可用于通过在chill和parerentambi en过程中动态创建新端口(类型端口)。BACIv2中的功能与其他环境结石中的功能略有不同[6,3,10,5]。输出(到)功能指的是目标环境而不是指正在退出的环境。这意味着移动的环境必须知道它的目的地。但是,在执行outTo之后,进程可以确定其当前位置。这是更难断言与其他环境结石中发现的标准输出发送和接收使用位置来寻址父端口或子端口中的特定端口。为了建立通信,发送和接收都必须具有匹配的端口名称。这可以从输入减少规则中看出(输入↓-↑)..(x:)↓c. P. n[M↑c. Q|R]−→P{x:=M}。 n[Q |R]其中↓c匹配↑c。只有功能和环境名称可以作为消息发送。但是,可以很容易地扩展该语法以允许其他类型的消息,例如整数或布尔值。in{}和outTo{}中的协同功能具有允许使用该协同功能进入(或退出)的环境的列表。此外,标签any可以用来表示无限制访问。下面是退出的减少规则:(退出).k [m [n [outTok.P1|P2]。Q1] outTo{x}.Q2|Q3] −→..k [m [Q1]。n [P1|P2]。Q2|Q3]其中Rex是{n=1,n,n=2}或任何请注意,outTo引用的是祖父环境而不是父环境。以这种方式,移动环境可以指定目标am。66P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61好的。最后,连接前缀允许一个进程创建一个新的私有通道,与位于父环境或子环境中的另一个进程(连接).connect↓(u:)。P. n[connect↑(v:n). Q|R]−→.(vpc:n)(P{u:=c}. n[Q{v:=c}|R])其中C是新端口名称。完整的归约规则集包括标准的结构规则以及类似于上述规则的(输出)和(输入由于篇幅不够,这里略去了这些规则3打字判断存在两种不同的类型判断,一种用于消息,一种用于进程:• Σ►M:ϕ, read• DP:Γ,读作这两个判断都假设了一个集合来对自由变量进行类型赋值第一个判断检查消息是否正确构建,到消息类型。判断DP:Γ检查进程P是否正确构建,以及P中的每个端口是否在接口Γ上使用与其相关联的类型。进程接口展示了P使用的通信类型,可以看作是从端口名到它们的通信类型的部分函数。与其他系统不同,环境名称没有关联的通信类型:相反,环境名称具有常量类型amb。Γ将通信类型分配给P中使用的每个自由端口c。使用端口限制(vpc:端口)隐藏的端口不会在T中应用,因为该端口类型在限制操作中被确定这一事实反映在相应的类型规则:(PROC-P -RES)P:r, c:rD(νpc:类似地,连接操作也抽象了端口名,将它们从结果的Γ中隐藏起来。由于缺少空间,省略了完整的键入规则集。类型系统保证环境内部和跨环境边界的通信永远不会导致类型不匹配。此外,我们显示P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)6167一个进程的类型在还原后被保留。定理3.1(主体归约)若P − →Q,则P −→P:T。4示例4.1堆叠在本例中,我们为使用多个端口存储名称的堆栈建模。我们考虑应用于堆栈的三个基本操作:push,pop,isEmpty。Push接受一个元素并将其插入堆栈顶部;pop删除顶部的元素并将其作为操作的结果返回;isEmpty用于查询堆栈是否为空。为了实现这些操作,我们使用不同的端口。事实上,我们每个操作使用两个端口:一个用于接收请求,另一个用于传递响应(可能不需要响应的推送操作除外)。 通常,我们使用操作的名称以及指示它是接收请求(req)还是提交响应(res)的子索引来命名每个端口。堆栈由以下环境表示。STACK = stack[INTERNALS|!推|!流行|!空]栈中的进程可以分为四个部分:一个是保持内部状态并管理一些内部操作的进程,另一个是管理每个操作的进程。该实现使用节点的链表。每个节点都是一个包含“堆叠”值的环境。一个名为top的本地端口被用作一个变量,用于存储保存栈顶值的节点的名称INTERNALS部分保存堆栈的当前状态。最初,堆栈是空的,所以INTERNALS只包含初始状态:INITSTATE。INITSTATE4=空的顶部我们使用名称empty来表示堆栈是空的;因此,被为了操纵这种内部状态,我们引入了两个语法定义:gettop和settop。gettop(x).P =(x)gettop. (P|xsettop(n).P = P|(x)车顶。⟨n⟩٨top4一般来说,为了可读性,我们在进程表达式的末尾省略了nil进程68P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61gettop检索保存栈顶值的节点ambient的名称,并将其绑定到一个变量。 settop采用环境名称(即,节点名称)作为参数,并将该名称设置为堆栈的顶部。使用这些宏,我们可以定义ISEMPTY操作:空5=()↑是Emptyreq。g eto p(t). [t=empty]{true↑isEmptyres}{false↑isEmptyres}首先,在isEmptyreq端口上接收到一个请求。然后,在检索到顶部名称之后,进程检查它是否等于空,并在isEmptyres端口上返回true或false。PUSH操作通过端口pushreq接收值v,并创建一个新的节点与该值。PUSH=(v)↑pushreq. NEWNODE(v)新创建的节点将值存储在堆栈顶部,并将旧堆栈顶部的名称记录为链表中的下一个节点NEWNODE(x)=(v node:amb)gettop(t). (node[NODE INT(x,t)]|settop(node))在内部,每个节点都有一个进程,在被一个名为popper的特殊信使环境触发后,该进程准备释放存储的值。顾名思义,弹出环境的唯一目的是作为从堆栈弹出的节点的信号。NODEINT(v,t)= in{popper}. (v,t)在此信号之后,节点检索存储的值以及堆栈中后续节点的名称POP操作使用节点的此功能。在通过popreq端口接收到请求之后,POP操作向顶层节点发送一个messenger ambient以启动删除过程。POP=()↑popreq. g eto p(t). (popper[int]|(v,tJ)↓release. seto p(tJ).(vppres)同时,一个并行进程通过释放端口等待来自顶层节点的响应。在接收到该响应之后,堆栈中的下一个节点被放置在堆栈的顶部;最后,使用popres端口从堆栈环境中检索5我们使用“P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61694.2使用密码进行这个例子展示了一种机制的实现,该机制类似于NBA [5]中的功能,使用密码作为进入或退出其他环境的访问控制。该示例对应于图1(b)中描绘的情况。代理通过将其凭据发送到AUTH,负责认证过程的进程代理[在{syswithpasswd}.P中] |AUTH|sys[访问|]AUTH持续监听传入的请求。 在每次请求时,它都会测试给定的密码,要么授予请求的访问权限,要么通知访问被拒绝。AUTH=!(m,mpwd)↓authreq. [mpwd=goodpwd]{GRANT}{DENY}GRANT=持续时间短。⟨m⟩↓grantDENY=denied↓authres代理使用{nwithpasswd}中的宏请求访问。在{nwithpasswd}中。P=请求代理(sys,passwd)|()请走。(以名词表示)REQUEST进程通过每次发送凭证并等待响应来不断尝试访问。因此,继续处理P被阻塞,直到访问被授权。请求m(n,pwd)=(νpdo auth:amb)(尝试验证验证doauth|!()douth. 你好,我很高兴。(res)↑authres[res=granted]{确认确认}{重试验证})其中m是请求进入环境n的许可的环境的名称。最后,在AUTH授权访问之后,它与系统通信以允许通过名为grant的端口访问已认证的进程。访问=!(a)↑授予。在{a}5总结和结论继续我们早期在BACI[1]上的工作,这里提出的演算旨在进一步将通信与移动性解耦。这是通过引入专用于通信的多个端口来实现的。将访问控制列表添加到协作能力能够实现更好的移动性控制。 这些细粒度的协同功能在编码特定70P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)61可以透明地使用的机制,而不会对环境移动性控制产生任何副作用。多个端口减少了实现多个通信通道的复杂编码的需求,使规范更接近建模的现实。端口的过度使用可以通过为通信端口扩展会话类型[9]来减少。此外,包含会话类型的类型系统将强制执行比这里所提供的更强的类型安全保证。此外,引入协同能力也绑定了进入环境的名称,类似于NBA [5]协同能力,可以让每个环境对其子环境进行额外的控制。确认我们感谢Mariangiola Dezani-Ciancaglini进行了富有启发性的讨论,并感谢 ElsaGunter 、 Jo ?elleDespeyroux 、 EduardoBonelli 、 RicardoMedel 和Alejandro Russo提出了有益的意见和建设性的批评。引用[1] Eduardo Bonelli , Adriana B. Compagnoni , Mariangiola Dezani-Ciancaglini , and PabloGarralda. 将 一 个 数 据 块 与 共 同 的 表 面 结 合 起 来 。 InJir′enfiala , V′aclavKoubek ,anddJanKratochv′ıl,editor,MFCS,volume3153 ofLectureotesinComputerScienceence,pages119Springer,2004.[2] M. Bugliesi和G.卡斯塔尼亚安全的氛围。在POPLACM Press,2001.[3] M. Bugliesi湾Castagna和S.克拉法移动代理的访问控制:盒装环境的演算。ACM Transactionson Programming Languages and Systems(TOPLAS),26(1):57[4] Michele Bugliesi,Silvia Crafa,Massimo Merro,and Vladimiro Sassone.盒装环境中的通信和移动控制。出现在信息与计算中。M的扩展和修订版本。Bugliesi,S.克拉法湾Merro和V.Sassone。移动式封闭环境中的通信干扰。在FSTTCS'02,LNCS的第2556卷,第71-84页中。Springer-Verlag,2002.[5] Michele Bugliesi,Silvia Crafa,Massimo Merro,and Vladimiro Sassone.在移动的盒装环境中的通信干扰第22届软件技术和理论计算机科学基础会议论文集,FST TCS 2002,LNCS第2556卷,第71-84页施普林格,2002年。[6] Luca Cardelli和Andrew D.戈登移动环境。理论计算机科学,240(1):177-213,2000。特别是我在Cordination上,DanielLeM'etayeEd itor。[7] 朱塞佩·卡斯塔尼亚和扬·维泰克。 Seal:A Framework for Secure Mobile Computations(英语:Seal:A Framework for Secure Mobile Computations)在亨利·E. Bal,BoumedieneBelkhouche , and Luca Cardelli , editors , Internet Programming Languages , Volume1686 ofLecture Notes in Computer Science,pages 47-77,Berlin,1999.史普林格出版社[8] Mario Coppo,Mariangiola Dezani-Ciancaglini,Elio Giovannetti,and Ivano Salvo. M3:移动环境中移动流程的移动性类型在詹姆斯哈兰德,编辑,猫Elsevier,2003年。P. Garralda,A.Compagnoni/Electronic Notes in Theoretical Computer Science 135(2006)6171[9] 本田康平瓦斯康塞洛斯和久保诚基于结构化通信编程的语言原语和类型规则。在ESOPSpringer-Verlag,1998.[10] 弗 朗 西 丝 卡 · 利 维 和 大 卫 · 桑 吉 奥 吉 。 控 制 环 境 中 的 干 扰 Transactions on ProgrammingLanguages and Systems,25(1):1[11] 安德鲁·菲利普斯,吉田信子,苏珊·艾森巴赫。一个用于盒装环境演算的分布式抽象机。在04年的ESOP中Springer,2004年4月。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功