没有合适的资源?快使用搜索试试~ 我知道了~
159理论计算机科学电子笔记63(2001)网址:http://www.elsevier.nl/locate/entcs/volume63.html22页用于密钥传播的Hock Kim Tan1,2英国南安普敦大学电子与计算机科学系Southampton SO17 1BJ卢克·莫罗3英国南安普敦大学电子与计算机科学系Southampton SO17 1BJ摘要我们介绍了密钥的概念,这是移动代码用于控制在一个系统中的密钥的密钥集用于通过指导解密加密组件的密钥的分发来支持此技术。形式化的密钥操作,并详细说明了使用密钥来实现移动代理代码安全技术的情况。1介绍目前阻碍更广泛接受和使用的主要问题之一是,移动代理的安全性问题。移动代理安全性可以大致分为两个方面:主机安全性(保护主机平台免受恶意代理的攻击)和代码安全性(保护移动代理免受恶意平台的攻击)。[6]、[3]和[8]对这两个领域以及目前可用于解决这些问题的技术进行了很好的概述移动代理也被提议作为支持网络安全的某些方面的可能替代方案。最近的一个例子是通过将分布式入侵检测系统的组件建模为在网络中随机移动的移动代理来保护分布式入侵检测系统[7]。1由EPSRC和DERA项目“Magnitude”提供部分资金,2电子邮件地址:hkvt99r@ecs.soton.ac.uk3 电子邮件:L. ecs.soton.ac.uk2001年由ElsevierScienceB出版。 诉 操作访问根据C CB Y-NC-N D许可证进行。谭和莫罗160在本文中,我们提出了一种技术来解决移动代码的安全性问题的移动代理。我们的方法涉及分区移动代理代码和状态信息到自包含的组件。这些组件使用对称密钥进行加密,然后可用于网络中托管移动代理的平台。密钥到平台的分发是通过执行特定类型的移动代码来确定的,我们称之为小密钥。密钥的传播提供了一种可能的机制来实现信任传播,作为移动代理系统的整体信任模型[9]的一部分。这种信任模型的开发可以为现有的代码安全技术提供一种有效的方法,以基于移动代理系统中不同实体之间的信任关系进行适当的部署(适当考虑性能)。本文的主要贡献是:• 介绍了keylet的概念,keylet是一小段移动代码,用于控制分布式环境中密钥的传播• 小密钥所需的基本操作的形式化。• 演示如何协同使用keylet和将代码划分为组件,以解决移动代理的代码安全问题。第2节介绍了代码组件和keylet的细节,第3节给出了keylet的形式化。第4节描述了一个涉及使用keylet和代码组件的示例场景,而第5节提供了对所呈现的工作的总结和讨论。第6节中的结论对此进行了四舍五入。2小键和代码组件我们介绍密钥的想法,首先提供了在网络中使用它们的动机我们提出的代码安全方法涉及使用传统的对称密钥技术加密移动代理代码,以产生既不能直接执行也不能直接解释的密文。使用相同的对称密钥对密文进行解密会生成原始代码,然后可以直接执行原始代码。移动代理以加密的形式传播;执行它们需要主机平台对相应的对称密钥2.1代码和状态分区而不是加密作为一个整体的移动代理的原始代码,我们partition-tition它成几个主要组成部分,其中每个是加密/解密使用不同的对称密钥。由代码执行产生的代码、数据和状态信息可以被组织到这样的自包含组件中谭和莫罗161基于它们与移动代理的正确功能的相应相关性。因此,每个组件表示需要保护的整体代码和状态的不同安全级别。这里组件的使用类似于某些编程语言中的细粒度访问控制的思想细粒度访问控制用于保护主机上的资源免受潜在恶意代码执行的影响,同时为不同类型的代码提供对资源的部分但不灵活的访问。在我们的工作中,要保护的资源不是机器,而是代码,组件提供了对代码不同部分的灵活访问的粒度。加密代码组件的初始过程由代理所有者执行,而分区任务由第三方代码生产者执行,该第三方代码生产者可以将移动代理作为模板提供给代理所有者。加密密钥的生成可以由代理所有者直接进行,也可以由另一个受信任的第三方进行。一旦移动代理的组件用其对应的密钥加密,则代理被分派到其行程中的第一个平台。唯一的问题是-剩下的任务是确保正确的密钥传播到正确的平台,以便这些平台能够解密和执行移动代理的特定组件。如果我们将代理所有者站点视为系统中密钥的唯一来源,则所有密钥的分发都必须从那里开始。 当有大量的由于代理所有者站点现在成为处理请求和分发密钥的焦点(和可能的瓶颈),一个更可行的选择是允许已经拥有密钥的平台(从代理所有者站点的初始分发)复制这些密钥并将其传播到可能需要它们的其他平台。我们现在需要一种指定密钥分发活动的机制,并且需要这种机制适用于整个系统的不同平台。我们建议通过使用移动代码来实现这样的机制如上所述,我们的系统中的密钥传播假设支持用于(系统中所有平台的)公钥传播的可用公钥基础设施对称密钥以加密形式分发(使用其预期接收者的公钥),以防止可能的拦截和复制2.2钥匙套为了监督和协调发生在各种主机平台上的传播过程,我们引入了密钥的概念小密钥是移动代码,仅用于在分布式系统中指导密钥的传播。它们由代理所有者创建和启动,并将开始将密钥从代理所有者谭和莫罗162the system.在完成初始分发后,它们可以被分发到这些平台,以引导那里可用的密钥依次选择性地传播到其他平台。因此,密钥集的部署方式使它们在概念上类似于主动网络中发现的附加到数据包的代码[14]。 现在的主要区别是,虽然在主动网络中对附加代码的处理通常不涉及重新路由数据包,但密钥集反过来又具体涉及确定密钥的传播方向。由于keylet现在决定了在任何平台上显示和执行移动代理代码所需的密钥的可用性,因此它们的完整性现在成为一个值得关注的问题。然而,由于两个原因,密钥集的寻址代码安全性与传统的移动代理代码非常不同:(i) 小密钥功能仅限于密钥传播,因此与移动代理功能无关。最重要的是,keylet不需要在与移动代理相同的主机平台上执行。我们可能会遇到这样一种情况,即keylet在一个封闭的、可信任的平台网络中迁移,然后,小密钥可以在该网络内部传播密钥,也可以传播到托管移动代理的外部不受信任的网络。由于不需要小密钥直接与移动代理通信,因此小密钥被已被泄露的移动代理破坏的风险被最小化。(ii) 即使keylet托管在不受信任的环境中,keylet的有限功能意味着它的操作被很好地定义和理解。因此,用于验证一般代理代码完整性的可用机制([15],[5])可以被细化为在keylet上工作,以实现更好的结果。因此,验证通用代理代码完整性的负担被简化为验证密钥集完整性。因此,密钥集本身并不是解决代码安全性的新技术,而是提供了一个更高级别的框架,在该框架中可以更简单有效地采用可用的在我们将在第4节中开发的示例场景中,keylet被部署在与移动代理相同的不可信我们没有讨论这个问题是如何解决的例子,但注意到,这样的安全考虑很可能是简单的密钥比一般的移动代理。我们建议以特定的方式操纵密钥,以最大限度地降低密钥错误传播(即密钥被传播)的风险不受信任的站点)。密钥可以被认为是一个线性的字节序列,它可以被分割成几个更小的字节序列。我们把这些较小的序列称为片段。这种划分由代理所有者在密钥生成的初始阶段期间或之后进行。一旦分区完成,这些片段就可以沿着不同的路径传播,谭和莫罗163目的地,在那里它们最终被重构以形成原始密钥。因此,几个片段的不正确传播不足以允许主机平台重构原始密钥并获得对受该密钥保护的代码组件的未授权访问或者,如果片段的大小变得足够小以使暴力密码分析可行,则可以使用其他方法,例如使用其他二级密钥对组件密钥进行多重加密。同样的动机是为了确保几个不同的密钥(沿着不同的路径传播)是必要的,以便获得对特定代码组件的访问2.3Keylet部署和操作小密钥通常可以被定义为控制密码信息的基本单元(或一组这样的基本单元)在系统内分布的方式的一段代码。 在我们的工作中,我们利用密钥片段的概念,这些片段基本上是完整密钥的一部分。因此,可以通过以适当的顺序连接其组成片段来重构密钥。因此,小密钥是移动代码的片段,其主要功能是将这些片段传播到系统中的各种平台。我们假设移动代理的行程由代理所有者平台预先定义。代理所有者还被假定为知道需要在行程中的每个平台处执行的确切的移动代理组件,以确保移动代理因此,可以在代理所有者的站点生成密钥集,以确保将为了让一个keylet成功地进行这个分发活动,它必须能够执行某些基本操作,我们将在本节的其余部分描述这些操作。2.3.1迁移小密钥需要能够独立于当前调度自己,根据固定的行程,将主机平台租给下一个平台。这里的迁移机制类似于移动代理。2.3.2密钥传播在主机平台上执行的keylet需要将该平台上的特定片段分发到系统中的其他主机平台。当然,要分发的碎片必须已经存在于当前平台上有问题。由于系统中可能的延迟,这些片段可能在小密钥的执行已经开始之后到达当前平台。然后,小密钥需要向主机平台指定其执行的临时挂起,直到特定事件发生(即,传播所需片段的到达密钥传播谭和莫罗16401因此由两个主要操作组成:暂停密钥执行直到特定片段可用,以及将片段实际分发到新平台。因此,小密钥将由在主机平台上顺序执行的一系列操作组成。当遇到一个迁移操作时,keylet被分派到指定的主机平台,在那里执行按顺序在下一个操作处恢复。在迁移之间保留的唯一状态信息是要恢复执行的下一个操作。密钥集是在代理所有者的平台上生成和分发的,同时迁移它们所控制的移动代理。它们将根据预定义的行程在网络内迁移,并根据其中的传播操作来分发密钥。小密钥可以在主机平台上终止,或者更好地返回到代理所有者平台,在那里可以执行安全检查以确保它们的完整性没有被违反。F ={f0,f1,... }(密钥片段集)K=V ectorOf( F)(键的集合)EC ={ec0,ec1,. }(加密的代码片段集)VC ={vc0,vc1,. . . }(可见代码片段集)CN ={nc,nc,. }(代码集名称)PEC= CN × EC(一对加密的codelets)PVC= CN × VC(可见代码片对)MobileCode=CN →EC(加密代码)不={t0,t1,. }(移动代理的标签集)PK= K× T × CN(键元组集)NF= T × CN ×CN×PF(密钥片段名称集) PF= NF × F(密钥片段对的集合)S={s0,s1,. . . }(站点集合)Keylet=ListOf(KeyletOperation)(小键操作列表)键盘操作=migrate:S → KeyletOperation|(小钥匙 (业务)等: 公司简介×NF →键操作|发送:S × NF ×... ×NF → KeyletOperationmerge:F ×. ×F → K解密:EC × K → VCConfig=S →SiteConfig(完整配置)站点配置=P(PF)×P(PK)×P(PEC)×P(PVC)× P(VC)× P(小钥匙)(现场配置)Fig. 1. 状态空间(集合)3小钥匙的形式化在本节中给出了小密钥的初始形式化。完整的形式规范的一个可能用途是对keylet进行静态分析,谭和莫罗165FK不PEC PVCCNVCEC标识移动代理系统(或通用分布式系统)中通过使用而保留的安全性或系统属性。 这可能有助于 自动或部分自动生成满足特定安全要求的小密钥。一个keylet通常可以定义为一段代码,它控制密码信息的基本单元(或一组这样的基本单元)在系统内分布的方式。在本文的工作中,我们利用了密钥片段的概念,这些密钥片段基本上是完整密钥的一部分。因此,可以通过以适当的顺序连接其组成片段来重构密钥因此,小密钥是移动代码的片段,其主要功能是将这些片段传播到系统中的各种平台。为了正式介绍密钥,我们将部署密钥的系统此计算机的状态空间在图1和图2中呈现,其细节将在以下部分中提供。然后,将密钥集操作的执行简单地建模为改变该抽象机器的状态的转换。此外,托管keylet的平台还需要执行一些操作,以补充keylet在保护代码安全方面的功能。这些操作也将被建模为引起状态变化的转换。两种类型的操作(小键和平台)产生的转换如图3所示,并在第3.2节中直观地讨论。最后一节着眼于其他考虑因素以及未来小键操作的发展可能性。3.1抽象机的状态空间密钥小程序使用的加密信息的基本单位是密钥片段。在我们的系统中,可以有几个keylet在任何时候执行,每个keylet控制一个或多个片段的分发。因此,我们提供了一组片段,表示系统中可用的所有片段。一个完整的密钥只需将其组成部分以正确的顺序连接在一起即可获得。因此,密钥可以定义为片段的向量一个移动代理是由几个自包含的代码组件,我们将标签为codelets。每个codelet由唯一的名称标识,并由相应的密钥加密/解密。所有加密的小代码的集合由表示,对应的解密的小代码的集合由表示,加密/解密的小代码的唯一名称的集合为。这些唯一名称和加密/解密的代码片之间的链接分别通过元组和因此,我们可以将移动代理视为将唯一名称映射到 一个加密的代码是用于标识系统中所有移动代理的标签集。因此,标记和唯一名称的组合映射到谭和莫罗166SPKNFPF系统中的特定加密代码。使用密钥时需要此信息,因为我们需要识别密钥解密的codelet。因此我们有一个额外的集合,其元素是这些相关项(k,t,nc)的元组。当使用片段来重构完整密钥时,也需要标签/唯一名称组合,以便识别新构造的密钥将解密的加密代码集此外,还需要指定重构完整密钥所需的(预定义的)片段数量以及组成片段序列中任何单个片段的顺序所有这些信息都在集合中提供,其元素(片段名称,nf)是这些项(t,nc,x,y)的元组我们还提供了一个集合,其元素是片段名称nf和实际片段f的对,以建立两者之间的联系。是系统中可用的站点集合,而keylet表示为由三个基本操作组成的keylet操作列表,这三个基本操作将在下一节中详细说明。拥有特定密钥的站点能够在移动代理到达该站点时执行与该密钥相对应的codelet;因此,小密钥的任务是确保通过正确的小密钥操作使正确的密钥可用于正确的地点。当移动代理迁移时,组成它的codelet都以加密的形式分发。在到达目标站点时,这些加密的codelet中的一些或全部将根据该站点处可用的密钥被解密。合并和解密是由系统中的站点执行的两个功能;合并执行从其组成片段构造完整的密钥,而解密简单地实现利用正确的对应密钥对小代码的解密。3.2基本的keylet和平台操作关于图3,密钥和平台操作可以建模为一系列转换,这些转换演化了上一节中描述的抽象机器的状态。我们在下面直观地描述这些操作。3.2.1Keylet操作一个keylet需要3个操作,这是它的基本功能:migrate(s1)这实质上是将密钥小程序代码从当前站点分派到目标站点s1,目标站点s 1是系统中站点集合S中的元素。键在s1处恢复执行,并在migrate操作之后执行下一个操作在当前平台上不会保留密钥代码的副本谭和莫罗167NFf∈Fk ∈ K;k=f0,f1,. ..,f ypk∈ PK;pk:: = k,t,ncnf∈ N F;nf::=nt,nc,x,y<$pf∈PF;pf ::=nf, fs ∈ St∈ Tec∈ ECnc ∈CNp ec∈ PEC::=c,ecvc∈ VCp vc∈ PVC;p vc::=nc,vckt∈KeyletΘ∈SiteConfigD∈ConfigD::={(s0,Θ 0),(s1,Θ 1),.,(sm,Θm)}x,y∈N图二. 状态空间(变量)send(s1,n f,n f,. (f)12qsend简单地传播片段列表(由n f,n f,. (f)有效-12q可以在当前平台上安装到S1。片段与它们的姓名,,其指定对应于其键的确切codelet,特定片段是密钥序列的一部分,以及该片段在密钥序列中的顺序和重构完整密钥所需的片段的数量。片段传播是通过复制片段并分发副本来实现的,当前平台仍然保留原始片段。小密钥代码可以但不必伴随片段传播;如果要分派小密钥,则必须使用单独的迁移操作。send操作要求在与之关联的transition可以触发之前,要传播的片段列表已经存在。通过这种方式,它包含了等待操作的功能(如下所述)。wait(n f,n f,. (f)12q此操作不会触发转换,直到由片段列表n f,n f,. nf因此,在当前站点上可用12q在其他平台上发送keylet的操作。 虽然等待意味着send的功能(如前所述),在某些情况下,可能需要将其作为前驱来迁移。 例如,对于谭和莫罗168X我一我我我我我我000000011111110000000111111112Q12Q12Q12Q012Q0000012Q01111111112Q11111112y12y等待其不打算传播的片段列表的密钥小程序;在这种情况下,阻塞动作用于使密钥片段的接收与密钥小程序的迁移初始配置D1(sA)=Θ1::=pf,pk,pec,pvc,vc,ktD1(sx)= Θ1::= θ1,θ 1,θ2,θ3,θ 4,θ 5,θ 6其中,sA是代理所有者站点,sx是系统中的任何其他站点状态转换(密钥集)D1移民(第1条)D2D1(s0) =Θ1::=pf,pk,pec,pvc,vc,{[migrate(s1):kt]} ktD1(s1) =Θ1::=pf,pk,pec,pvc,vc,ktD2(s0) =Θ2::=pf,pk,pec,pvc,vc,ktD2(s1) =Θ2::=pf,pk,pec,pvc,vc,{kt} ktD1等待(n f,n f,. (f) 2D1(s) =Θ1::=θ{fnf,f1θ,fnf,f2θ, . ,nf,fq}pf,pk,pec,pvc,vc,{[wai t(nf,nf, . . . nf):kt]} ktD2(s) =Θ2::=θ{fnf,f1θ,fnf,f2θ, . ,nf,fq}pf,pk,pec,pvc,vc,12q{kt}D1SEND(s1,n f,n f,. (f)2D1(s0) =Θ1::=θ{fnf,f1θ,fnf,f2θ, . ,nf,fq}pf,pk,pec,pvc,vc,{[send(s1,nf,nf, . . nf):kt]} ktD1(s1)=Θ1::=pf,pk,pec,pvc,vc,ktD2(s0) =Θ2::=θ2 {fnf,f1θ,fnf,f2θ, . ,nf,fq}pf,pk,pec,pvc,vc,0 12{kt} kt0q0 0 0 0D2(s1)=Θ2::={nf,f1,nf,f2,. ,nf,fq}pf,pk,pec,pvc,vc,kt状态转换(站点守护程序)D1JOIN(t,nc)D2D1(s) =Θ1::=θ{fnf,f1θ,fnf,f2θ, . ,nf,fy}pf,pk,pec,pvc,vc,ktD2(s) =Θ2::=θ{fnf,f1θ,fnf,f2θ, . ,<$nf,fy <$}<$pf < $,{<$k,t,nc<$}<$pk<$,pec<$,pvc,vc,kt哪里 n f=nt,n c,x i,yi=1. y和k=merge(f1,f2,.,f y)D1DECRY PT(p k) D2D1(s) =Θ1::=pf,{pk}pk,{nc,ec}pc,pvc,vc,ktD2(s) =Θ2::=pf,{pk}pk,{nc,ec}pc,{nc,vc}pvc,vc,kt其中,pk=decrypk,t,nc,且vc=decrypt(ec,k)图三. 状态转换3.2.2平台运营平台接收由在其他平台上执行的keylet传播的片段。两个基本操作是重新组合这些密钥片段以形成完整的密钥,然后解密相应的代码组件谭和莫罗169NFNF用这把钥匙JOIN(t,nc)在接收到源自在不同平台上执行的小密钥的发送操作的片段时,平台上的后台进程将需要使用片段名称nf来确定新到达的片段是否完成在该平台处已经可用的任何现有片段序列。 如果发生这种情况,则可以从这些片段重新构建完整的密钥。这可以通过简单地以正确的顺序连接片段来实现。JOIN通过创建一个新的密钥元组pk来明确指定新密钥的身份,该元组包含新创建的密钥以及t,nc对(标识密钥对应的codelet)。在构造新密钥之后,组成片段将被保留在平台处;因此,在稍后的时间点到达该平台的小密钥将能够以发送操作中描述的方式向前传播这些片段。DECRY PT(pk)一旦完整的密钥可用,它就可以用来解密它所保护的代码Pk提供密钥序列和它所保护的对应小代码之间的链接。假设在密钥传播开始之前,利用密钥的必要解密算法已经存在于平台上。与keylet的send操作的情况一样,该操作不会导致转换到fire,直到匹配的代码组件在平台上变得可用(即,包含该组件的移动代理迁移到那里)。一旦成功解密,该组件就立即在该平台上的合适环境中执行。3.3其他考虑与密钥集相关的基本加密单元是密钥碎片。然而,可能存在不需要将键划分为片段的情况在这种情况下,我们简单地将密钥定义为由单个片段组成,并且仍然保持密钥片段名称和密钥元组之间的区别(现在是多余的),以保持一致性。类似地,如果到达平台的密钥集希望传播最近从该平台上的现有片段重构的完整密钥,则它将需要传播密钥的所有组成片段而不是密钥本身。然后,这将在接收平台上再次重构。密钥集可以用于引导与单个密钥或不同密钥相对应的片段的传播。我们不允许一个键被再次分区(无论是通过平台,keylet还是移动代码),以产生不同的片段。谭和莫罗170数量和大小。每个密钥可以由不同数量和大小的片段组成,但是数量和大小由密钥生成器(或代理所有者)在系统中的状态转换开始之前预先定义。这简化了当keylet从一个平台迁移到另一个平台时识别片段的过程。一个可能的替代方案是允许keylet在平台上直接将完整的键划分为任意数量和长度的新片段。虽然这扩展了小密钥操作的可扩展性,但它也增加了在系统内正确识别和重组片段的复杂性假设相关的问题可以得到适当的解决,那么片段操作将是对keylet的三个基本操作的理想补充。等待、发送和解密操作都只在某些事件发生时才触发转换。因此,需要对发生所需事件施加时间限制,以确保小钥匙不会无限期地保持暂停状态。这个时间限制可以由代理所有者预先定义,或者与托管密钥的网站相互合作达成一致。在本节后面的示例场景中,我们没有考虑这个问题,因为可以看出,操作所需的事件最终会发生,但我们注意到在实现实际系统时需要考虑这个问题。一般来说,小密钥代码将由代理所有者生成和签名(使用所有者的私钥),并在执行之前由所有接收平台进行相应的身份验证。这里所呈现的密钥小程序操作除了标识在迁移到新平台时要执行的下一个操作之外,不包含保留状态信息的思想。包含状态将允许与平台环境以及keylet控制的移动代码进行更多样的交互。然而,正式地对状态建模将导致开发一种编程语言的规范这种编程语言的设计也将受到与一般移动代码语言开发相同的安全约束。特别是,用于keylet的编程语言将需要确保资源消耗是可预测的,这也是主动网络语言设计的重要要求[14]。同样,对这个需求的讨论超出了本文的范围,我们在这里注意到任何未来的语言设计都需要考虑这些问题。4小密钥方案现在详细描述涉及使用包含先前描述的所有操作的小密钥的示例场景。为了提供实际实现的上下文,采用了涉及移动代理从初始代理所有者站点行进到贸易站点的行程以便定位给定项目的最佳价值的典型场景(图6)。另一个网站也是谭和莫罗171包括仲裁员网站,其目标是提供与销售相关的信息(如特定项目的额外税费或免税),这些信息以前在任何贸易网站上都无法获得。这将帮助移动代理选择一个特定的站点来发起购买。在这种情况下,仲裁者站点还能够独立于任何密钥集传播片段,并作为代表代理所有者站点承担此责任的可信第三方发挥作用。在这种情况下,移动代理可以分为四个主要组件:• 组件A,它获得交易中特定项目的价格 代理当前所在的站点,也可能决定要访问的下一个站点(基于当前站点提供的信息• B部分,决定物品的最佳价值所在地(考虑到其他因素,如税费或免税);• 组件C,其包含代理所有者的个人信息(诸如信用历史或账单地址),交易站点需要该个人信息以便决定是否与代理所有者签订购买协议;• D部分,其中载有流动代理人的行程和附有其访问的各个贸易地点的报价这里使用组件的目的是将代码功能和状态信息的公开限制在任何特定站点所需的部分代码和状态。一个明显的例子是需要保护B组件的功能和状态不受任何贸易网站的影响,因为了解用于选择网站的标准会给销售产品的贸易网站带来不公平的优势。另一方面,尽管我们可能对仲裁员网站的信任程度高于交易,网站,我们不应该允许仲裁者网站访问通常由交易网站执行的代码部分,因为这部分与仲裁者网站的正确运行无关。因此,通过仔细划分通过将代码转换为组件,可以确定需要在任何特定站点执行的组件,并确保只有这些组件在该站点可见。 这也有一个重要的优点,即限制恶意站点的潜在危害的损害,使其仅限于对其可见的代码组件。移动代理的可能行程如下。代理从代理所有者站点被派遣,并在其通过各个交易站点迁移时执行组件A,然后在其继续到仲裁者站点时执行组件B,最后在其返回到其打算从其购买的特定交易站点时执行组件C。一旦这条路线完成,代理人可以迁移回所有者网站(在那里可以进行适当的验证和在座席的行程中,组件D对所有地点保持可见谭和莫罗172与这种行程相对应,贸易网站应只允许访问组件A。仲裁员应可访问组件B,而组件C仅可访问将进行购买的单个交易网站。根据前面开发的概念,我们现在需要将对称密钥与每个组件相关联,并确保这些密钥可用于需要执行相应组件的站点。代理所有者站点(或可信第三方)现在将生成三个密钥K1、K2和K3,它们将分别用于加密组件A到C。K3最初将被划分为两个片段,我们将其标记为K31和K32。在我们的示例中,K1和K2不需要分段,并且可以被认为是由单个片段构成的密钥(即片段本身就是密钥)。这为构造keylet提供了一致性,我们已经将其定义为执行片段而不是密钥传播。该路线还可以通过将组件从代理所有者站点单独分派到被允许访问它们的相应站点(即,实际上使每个组件成为较小的移动代理)来实现。然而,这引入了对不同站点和代理所有者站点之间的通信的要求,以便保持不同组件在相应站点上执行的顺序。这在代理所有者站点和一些其他交易站点之间的通信信道变得暂时不可用的情况下(例如,在涉及移动设备的带宽受限的应用中)可能是困难的。在任何情况下,某些组件(例如组件A)仍然需要在所有交易站点之间迁移,因为它们需要从所有不同的交易站点积累销售信息。这不能通过将组件A的单独副本传播到所有交易站点来容易地实现。考虑到这些问题,总的来说,一次派遣由所有组成部分组成的代理人更有效。然后,当通道变得可用时,代理可以根据自己的意愿通过网络迁移,而不需要代理所有者的进一步参与。在为我们的场景打下基础之后,我们现在继续检查我们在移动代理和keylet中可以预期的功能,然后逐步完成在代理的单个巡回中涉及4.1移动代理组件图4中以伪代码形式显示了移动代理的四个主要组件中包含的功能以及代理在平台在开始时,假设移动代理在从所有者的站点迁移之前具有由其所有者确定的固定站点行程。组件谭和莫罗173组分A(i) 从主机平台获取价格(ii) 附加到价目表(iii) 获取有关其他平台的(iv) 迁移到行程中的下一个站点组分B(i) 从价目表(ii) 从主机平台获取有关折扣、税费等的其他信息(iii) 确定最有价值的项目及其销售地点(iv) 迁移到最佳站点组分C(i) 计算订购项目的最终价格(ii) 将价格添加到状态信息组分D(i) 现场行程:贸易现场1,2和3,经销商现场,代理商所有者现场。(ii) 价目表见图4。码片代理的A到C将在迁移之前用它们各自的密钥加密,并且将在代理在网络中遍历的持续时间内保持加密形式。因此,任何希望执行特定组件的站点都需要必要的密钥才能成功执行。4.2小钥匙规格场景中的主keylet(图5)是P,它从代理所有者的站点启动,并将在移动代理启动后开始执行。Keylet P包含必要的密钥传播操作,以确保移动代理的预定义行程中列出的所有站点都获得正确的密钥。在站点之间的故障安全通信的假设下工作(即,站点之间传播的任何消息或密钥最终将到达),现在可以开始跟踪小密钥和移动代理的路径,因为它们通过网络迁移以完成它们各自的功能。斜体字母编号在整个解释中被提供在括号中作为对图6的参考,其中示出了移动代理、小密钥和密钥/密钥片段的移动。谭和莫罗174Keylet P(i) 发送(交易站点1,K1)(ii) 发送(交易站点1,K31)(iii) 发送(仲裁站点,K31)(iv) 发送(仲裁站点,K32)(v) 迁移(交易站点1)(vi) 发送(交易站点2,K1)(vii) 发送(交易站点2,K31)(viii) 迁移(交易网站2)(ix) 发送(交易站点3,K1)(x) 发送(交易网站3,K31)(xi) 迁移(仲裁站点)图五. 小钥匙4.3情景说明在开始时,小密钥P将K1和K31传播到交易站点1,将K2和K32传播到仲裁站点(a,b)。钥匙然后派遣自己的贸易网站1(c).在此期间,移动代理也迁移到交易站点1(d),在那里用K1对组件A进行解密并执行。 的要求 为了使密钥出现在交易站点以便执行相应的组件,提供了一种同步代理的迁移和密钥的传播的机制。现在驻留在交易站点1上的小密钥P继续将K1和K31向前传播到行程中的下一站点(e),然后自身迁移到那里(f)。一旦到达交易站点2,它将K1和K31向前传播到交易站点3(h)然后将其自身派遣到仲裁员地点(i)。在此期间移动代理在到达仲裁者地点(k)之前也迁移通过其交易地点(g,j)的在仲裁者站点上执行组件B时,交易站点2被选择为“最佳价值”站点。仲裁站点现在将K32(1)传播到交易站点2。如前所述,仲裁者站点在此上下文中作为能够执行代理代码(组件)的可信第三方B)正确地,这将最终导致片段从仲裁器站点传播。 移动代理继续迁移到交易站点2也是(m)。在成功接收到K32时,交易站点2现在可以将其与其另一密钥片段(K31)合并以形成完整的密钥来解码,然后执行移动代理的组件C以结束购买。一旦组件C完成,交易站点2专门将代理分派回仲裁方(n),并且代理的巡回以返回结束代理所有者站点(O)。K3从一开始就被分割成K31和K32的事实确保了谭和莫罗175没有一个交易网站能够从一开始就访问组件C。此外,尽管仲裁者站点能够决定哪个交易站点最终能够执行组件C(通过使小密钥将K32传播到该交易站点),但是它本身不能访问组件C也通过这种方式,保留了仅将组件公开给需要执行它们的平台的安全属性,而不管可能给予它们的信任量。通过复制仲裁者站点的功能,可以最小化仲裁者站点和交易站点之间可能串通的风险并允许它们独立管理。组件C的密钥可以被分割并分发到所有这些站点,在一个交易站点可以访问C之前,所有站点必须达成一致的决定。这在精神上类似于合作代理的想法,这是Roth首次提出的[10],作为保护移动代码完整性的另一种选择。5讨论和相关工作在所描述的场景中,密钥的分发也可以通过让代理所有者最初将它们附加到移动代理的codelet(从而消除对keylet的需要)来同样地然而,这将对接收codelets的站点施加额外的要求,以积极参与密钥的进一步传播;需要与代理所有者站点的通信开销的活动。该开销可能比生成和部署密钥集更昂贵,并且在涉及大量交易站点的情况下,还可能导致在代理所有者站点处形成通信瓶颈。另一种可能的替代方案可能涉及将密钥传播功能嵌入到移动代理本身中。我们避开这种方法,而倾向于使用keylet,因为保持通用功能(原始代理代码)和安全功能(密钥传播)之间的区别很重要;代理代码设计者不必(也不应该)关心后者。此外,允许移动代理在穿越网络时动态地改变其路由可能是有用的。在这个场景中,代理被提供了一个预定义的交易网站行程,并创建了密钥来确保这些交易网站获得解密必要组件所需的密钥。为了在移动代理的应用中提供灵活性,我们可以允许代理在其行程中的某个点偏离并访问另一个站点,然后再恢复其预定义的路线。为了适当地适应这种路由转移,必须将正确的密钥片段传播到要访问的附加站点。由于密钥传播功能仅限于我们系统中的keylet,因此我们可以通过两种方式实现这一点:允许移动代理生成一个新的keylet,然后传播必要的谭和莫罗176(a(b)c)((K32n)贸易网站2o)米l)(((仲裁员网站b)K2a)、代理所有者网站贸易网站3h)K1h)K31e)K1(e)K31f)的贸易网站1引导移动代理路径密钥路径见图6。 小密钥方案密钥到附加站点,或者在移动代理和授权密钥集之间建立通信信道,以便传达代理的意图。这两种选择都引起了新的安全考虑。对于第一种可能性,现在存在要执行的keylet的真实性问题。 在在最初的情况下,所有的密钥都是由代理所有者生成的,因此使用代理所有者的私钥进行签名如果可以通过移动代理生成小密钥代码,由于明显的安全原因,移动代理不可能携带所有者的私钥,因此不再对其进行签名。例如,在执行密钥集代码之前无法对其进行身份验证可能会导致恶意代理生成一个伪造的密钥集,该密钥集可能会迁移到新站点,并将片段从该站点传播到其他站点,而这些站点根据权利将无法访问这些片段。对于第二种可能性,密钥必须正确地确定谭和莫罗177进行请求的移动代理的身份以及确保请求是真实的(即,不是源自来自恶意站点的中间人攻击)。在这两种情况下,没有明显的立即解决办法。也许有可能解决其中一种或两种可能性的一些安全考虑;这仍有待于在未来的工作中进行调查,超出了本文的审议范围通过使用keylet和代码组件,我们在这里解释了两个主要的优点5.1功能和/或数据的选择性揭示使用不同密钥加密的代码组件允许代码仅显示通过仔细地将代码划分为定义良好的组件,我们可以最大限度地减少敌对方可以从任何单个组件推断出其他组件的信息量此外,构建一个审计跟踪可以更容易地追溯到一个恶意修改代码的网站。例如,如果在代理的巡回赛中的某个时候这可以通过检查控制传播的keylet很容易地确定这把钥匙。在我们的示例场景中,如果代理所有者在代理返回原始站点时检测到组件C中的修改,则可以合理地安全地假设肇事者是交易站点2。5.2移动代理功能的两级表达方法通过将密钥传播作为密钥集的唯一职责,我们区分了密钥传播的功能和移动代理的一般功能为了理解移动代理在系统中的功能,观察其代码和站点行程(第一级)已经不够了例如,即使我们知道移动代理的所有组件的组成以及其预定义的站点行程,如果不知道每个站点要执行的组件,我们将无法对其行为进行准确预测。这些知识只有通过研究钥匙(第二层)才能获得。由于密钥集的生成和代码到组件的精确划分只有代理所有者知道,即使是用户使用的移动代理模板的生产者也很难预测行为,因此对系统中的代理发起攻击如前所述,keylet和代码组件本身并不是一种新的代码安全技术,而是提供了一个框架,在这个框架中,现有技术可以更有效地用作信任模型的一部分因此我们谭和莫罗178没有考虑检查的可能性,以确保现场的执行环境不会试图破坏执行的正确流程,代码组件。已经提出了执行此类检查的方法,这些方法包括状态评估[4]、执行跟踪等技术[15]参考文献[5]。这些方法中的任何一种都可以在这种情况下使用,我们注意到,使用小型的自包含组件很可能会增加这些方法的效率,这些方法最初是为了检查具有复杂功能的大块代码而提出的此外,如果检测到代码的不正确执行,则在处理肇事者时具有更大的灵活性。代理所有者可以决定停止将任何密钥传播到有问题的站点,或者可以传播某些密钥而扣留其他密钥。这将表示所有者对该站点的信任5.3相关工作keylet的概念首先在[13]中引入;本文通过为可能的keylet操作提供简单的形式化来扩展它。我们的工作在很大程度上受到信任管理思想的激励[2],其中执行特定任务的授权与在系统中传播的密钥相关联。[11]提出了一个令人信服的论点,一个适当的信任模型是必要的,以建立安全的移动代理系统。在保护移动代理免受恶意平台攻击的领域有很多积极的研究(最近的一个例子包括[5]);我们的工作与其他工作的区别在于包括
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功