• 1. 第四章 命名与保护
  • 2. 4.1 分布式系统中的命名 名字、标识符和地址 命名是给各种服务、对象和操作起个名字,并提供一种手段把这些名字变换成它们所代表的实体本身。 在分布计算系统中,命名系统的实现本身就是分布式的,是跨越多个机器而实现的。命名系统的分布实现方式是影响命名系统有效性和可扩充性的关键因素。 分布计算系统中的一个名字是一个二进制位串或一个字符串,它被用来表示一个实体。 对一个实体进行操作,需要提供一个实体访问点。访问点是分布计算系统中另一种形式的特殊实体,这种实体的名字被称为地址。
  • 3. 名字的两种形式:地址和标识符。 地址:不支持实体移动性和实体复制(面向机器的形式) 标识符 :与位置无关的(面向用户的形式) 一个真正的标识符具有如下性质: 一个标识符仅用于表示一个实体; 一个实体只用一个标识符来表示; 一个标识符总是只用来表示同一个实体,也就是说,它从不被重复使用。 对一个对象进行操作或访问时,往往需要将它的标识符变换为它的地址,变换的过程中需要用到变换表,这个变换表叫做上下文(context)。
  • 4. 分布式系统中的名字 名字应该能有效地支持系统的面向事务处理和面向对话的服务和应用。 允许以分散的方式产生全局唯一的名字,以提高效率和可靠性。 命名是实现分布计算系统透明性的关键部分,要名字透明和位置透明。 命名机制应支持对本地或远程资源的访问,命名应与系统拓扑结构或具体的物理连接方式无关,尽可能隐匿各部分的边界。 为了支持资源的迁移,命名系统应至少支持两种形式的名字,即标识符和地址,并且可动态地结合(binding)。
  • 5. 应允许某一层上单一的标识符可动态的与低层的多个地址相结合,进行变换时根据资源管理、差错控制或其他约束判断来选择一个对象副本。 同一对象可以有用户定义的多个局部名字,需要一种机制把局部名字和全局标识符结合起来。 一个实体可能包含多个不同的对象,可能需要使用同一个标识符。
  • 6. 名字的结构 名字按结构可分成绝对名字和相对名字两种: 绝对名字和给出名字的“上下文”无关,也就是和发出此名字的地点、用户、应用程序无关,它总是代表同一对象,有利于资源共享,因为可以使用整个系统共用的名字指出对象。 相对名字和给出名字的上下文有关,例如和网络有关的邮箱名,以及UNIX操作系统中的文件名。优点是可以在每个上下文中自由选择对象的名字而不必考虑其它的上下文。 密切相关的名字空间,也可以分为两种,一种是单一的、全局的同构型的名字空间,另一种是多个局部名字空间。
  • 7. 地址结构也有两种,即平面地址和分层地址: 分层地址由若干段组成,这些段反映了网络的层次结构。优点是使得路由选择更容易、容易创建新地址和可自动给出高位号码。例如 网络号主机号进程标识符端口号 平面地址与物理位置或任何其他层次没有任何关系,可以想象平面地址的分配可以使用一个单一的全系统范围的计数器进行,任何时候需要一个新地址时读此计数器并且将计数器加1,这样,地址是唯一的,但和位置无关。优点是当进程迁移时仍可使用原来的地址。
  • 8. 名字空间 分布式系统中以名字空间的形式将所有名字有机地组织起来。 名字空间的表示:用一个带标号的有向图来表示,这个图中有两类节点,一类是叶节点(leaf node),另一类是目录节点(directory node)。 一个叶节点代表一个命名的实体,叶节点没有输出弧(outgoing edge),只有输入弧(incoming edge)。叶节点一般用来存放一个实体所表示的信息。 一个目录节点不仅有输入弧,而且还有一条或是多条输出弧,每个输出弧被一个名字所标识。每个目录节点保存了一个表,表中的一项代表了一条输出弧,每条输出弧由(弧标号、节点标识符)表示,这样的一个表被称为目录表(directory table)。
  • 9. 根节点: root node,只有输出弧而没有输入弧, 简称为根。一个命名图中可能会有多个根。 路径:一个路径是由一串弧的标号组成的,例如 N: 这里N表示这个路径中的第一个节点,这样一个标号串称为路径名。如果路径名中的第一个节点是命名图中的根,则这个路径名被称为绝对路径名,否则称为相对路径名。
  • 10. n0n1n3n4n5keys.twmrcmboxkeys“/home/xu/mbox”“/home/xu/keys”“/keys”n1n2n5homekeyszhangwangxukeysn2:“zhang”n3:“wang”n4:“xu”n1的目录表n2:“zhangn3:“wang”n4:“xu”n1的目录表“/home/xu/mbox”“/home/xu/keys”“/keys”n0n1n3n4n5keys.twmrcmboxkeys“/home/xu/mbox”“/home/xu/keys”“/keys”n1n2n5homekeyszhangwangxukeysn2:“zhang”n3:“wang”n4:“xu”n1的目录表n2:“zhangn3:“wang”n4:“xu”n1的目录表n2:“zhang”n3:“wang”n4:“xu”n1的目录表n2:“zhangn3:“wang”n4:“xu”n1的目录表“/home/xu/mbox”“/home/xu/keys”“/keys”一个简单的命名图
  • 11. UNIX系统中文件的命名 超级块引导块索引节点文件数据块磁盘块命名图的实现是整个UNIX文件系统实现的一个组成部分,通过一个逻辑磁盘上相邻的一些块完成的,这些块被分为引导块(boot block)、超级块(superblock)、一系列的索引节点(index nodes —inodes)和文件数据块(file data blocks)。
  • 12. 说明: 引导块是一个特殊的块,当系统启动时该块中的数据和指令自动地被装入到内存中,通过该块中指令的执行将操作系统装入到内存中。 超级块保存着整个文件系统的有关信息,这些信息包括文件系统的大小、磁盘中哪些块还未被分配、哪些索引节点未被使用等等。 每个inode除了包含它所对应的文件的数据可以在磁盘中什么地方找到的确切信息外,还包含它的属主、产生的时间、最后一次修改的时间和保护等信息。每个目录都有一个带唯一索引号的inode,所以,命名图中的每个节点的标识符是它的inode索引号。
  • 13. 名字解析 在名字空间中,根据节点的路径名,就可以寻找到这个节点所存储的任何信息的查找过程称为名字解析。 例如 N: 这个路径名的解析是从命名图中节点N开始的,首先在节点N的目录表中查找名字label-1,得到label-1所代表的节点的标识符;然后在label-1所代表的节点的目录表中查找名字label-2,得到label-2所代表的节点的标识符;此过程一直进行下去,如果N:在命名图中是实际存在的,就能够得到label-n所代表的节点的标识符,从而得到该节点的内容。
  • 14. 名字解析的每个过程都分为两步完成: 找到对应节点的标识符; 通过该标识符找到对应节点的内容。 例如一个UNIX文件系统,如果一个节点是一个目录,首先我们要找到节点的inode号,通过inode号我们知道实际的目录表存放在磁盘的什么位置;如果一个节点是一个文件,首先我们要找到节点的inode号,通过inode号我们知道实际的文件数据存放在磁盘的什么位置。
  • 15. 名字解析发生在以透明方式合并的多个不同的名字空间中。名字空间进行合并的机制有两种:安装(mount)机制;设置一个新的根节点。 安装机制 在分布计算系统中,要安装一个外部名字空间至少需要如下信息: (1) 访问协议名字; (2) 服务员名字; (3) 外部名字空间中被安装点的名字。 例一个NFS URL具有如下所示的格式 nfs://cs.jlu.edu.cn//home/xu= 其中nfs是一个在Internet上被广泛认同的协议的名字,由操作系统将此名字解析为NFS文件访问协议,cs.jlu.edu.cn为NFS服务员名字,由DNS解析成服务员的地址,文件被安装点的名字/home/xu由外部名字空间的服务员进行解析。
  • 16. 机器A通过NFS访问机器B上的文件,机器A是顾客机,机器B是服务员机。
  • 17. 设置新的根节点 设置一个新的根节点,现有的各名字空间的根节点变成此新的根节点的子节点。如下图DEC的全局名字服务(GNS)
  • 18. 采用这种方案,需要将绝对路径改为相对路径。若要不改变现有的名字则需要在新生成的根节点处保存一个变换表,需要将原来名字空间的根节点标识符变为新的名字空间中的名字。但是若将多个名字空间合并在一起就会导致很严重的性能问题。
  • 19. 分布式系统中的名字空间的实现 命名服务是由名字服务员提供的,包括用户添加、删除和查询。 大规模分布计算系统中名字空间的组织方式 分层结构,Cheriton和Mann将它分成全局层、组织层和管理层。 全局层由最上层的一些节点组成,这些节点包括根节点和它的一些子目录节点组成。这些节点用来代表一些机构,这些机构的名字保存在名字空间中。 组织层由一个机构内的所有目录节点组成,这些目录节点被某个机构管理。 组织层内的目录节点代表了一组实体,这些实体属于同一个机构。 管理层由那些可能经常变动的节点组成。由系统管理员和分布式系统的用户共同维护。
  • 20. DNS的部分名字空间comedugovmilorgnetcnusnlsunengyalecsengailindarobotacmieeejackjillcomedujlucstdcsocevucsftpwwwpubglobalindex.txt全 局 层组 织 层管 理 层分区
  • 21. 对不同层次上的名字服务员有不同的要求
  • 22. 大规模分布计算系统中名字解析 重复式名字解析 顾客方名字解析器根节点名字服务员cn节点名字服务员edu节点名字服务员jlu节点名字服务员cnedujluftpwww#1. 2.#,3. 4. #,5. 6. #,7. 8. #
  • 23. 顾客方名字解析器根节点名字服务员cn节点名字服务员edu节点名字服务员jlu节点名字服务员cnedujluftpwww#1. 2. 3. 4. 5. #6. #7. #8. #递归式名字解析
  • 24. 说明: 递归式名字解析的主要缺点是要求每个名字服务员具有较高的性能。递归式名字解析要求名字服务员完整地解析它所得到的整个路径名,特别是对于全局层的名字服务员来说,情况更为严重。 递归式名字解析有两个主要优点。第一个优点是如果采用缓存,那么递归式名字解析的缓存效果同重复式名字解析的缓存效果相比更为有效;第二个优点是可以减少通信代价。 下表示出一个顾客要求对名字root:进行解析,解析完成后相关名字服务员的缓存内容。
  • 25. 对名字root:解析完成后相关名字服务员的缓存内容对应节点的名字服务员需要解析的部分路径需要查询的地址要求其他名字服务员完成的部分收到并缓存的信息以后可直接返回给请求者的信息jlu#----#edu####cn######root########
  • 26. 实例:DNS DNS的名字空间:DNS的名字空间被一个树形图组织成分层结构。弧的标号是由数字和字母组成的字符串,标号的最大长度为63个字符。一个路径名的最大长度为255个字符,一个路径名是由一串标号组成的,起始的标号在路径名的最右边,标号之间由点(“.”)分隔,根节点也用点“.”表示。例如一个路径名root:在DNS中表示为ftp.jlu.edu.cn.,最右边的点“.”代表根节点,但是在使用中常将最右边的点“.”省略。 域(domain) :DNS名字空间中的一个子树称为一个域(domain),到达这个子树的根节点的路径名称为这个域的域名(domain name)。正如路径名有绝对路径名和相对路径名一样,域名也可以是绝对域名和相对域名。
  • 27. 资源记录(resource records) :DNS名字空间中节点所包含的内容由一些资源记录所组成,资源记录有不同的类型 。下表列出了DNS中最重要的一些资源记录类型。 记录类型相关实体描述SOA分区保持对应分区的相关信息 A主机包含该节点所代表主机的IP地址MX域发向该域的邮件由MX指定的邮件服务器处理SRV域指向该域中处理特定服务的服务器NS分区指明该分区中一个名字服务员的名字CNAME节点用在别名节点中,到正式名字节点的一个符号连接PTR主机用于IP地址命名的节点中,包含主机的正式名字HINFO主机包含该节点所代表的主机的相关信息TXT任何实体包含与该实体有关的任何有用信息
  • 28. PTR(Pointer)记录:DNS通过PTR(Pointer)记录实现由IP地址到主机名字的映射。 HINFO(Host Info)记录:用于保存一个主机的类型和操作系统等一些附加信息。 Text记录:保存的是与该节点所代表的实体相关的用户认为有用的任何类型的数据。 DNS的分区:是由一个名字服务员来实现的,为了提高可用性,一个名字服务员常常用多个副本来实现。一个分区的更新通常是由主名字服务员来完成的,主名字服务员通过修改本地的DNS数据库来完成更新。从名字服务员一般不直接访问DNS数据库,但它可以要求主名字服务员向它传送DNS数据库的内容,这种传送在DNS中称为分区传输。 DNS数据库是由一组文件组成的,这些文件中有一个最重要的文件,该文件的内容由这个分区的所有节点的所有资源记录组成。下表所示某个这种文件的部分内容。
  • 29. 分区cs.vu.nl的DNS数据库的部分内容名字记录类型记录值cs.vu.nlcs.vu.nlcs.vu.nlcs.vu.nlcs.vu.nlcs.vu.nlcs.vu.nlcs.vu.nlSOANSNSNSTXTMXMXMXstar(1999121502,7200,3600,2419200,86400)star.cs.vu.nltop.cs.vu.nlsolo.cs.vu.nl“Vrije Universiteit – Math. & Comp. Sc.”1 zephyr.cs.vu.nl2 tornado.cs.vu.nl3 star.cs.vu.nlstar.cs.vu.nlstar.cs.vu.nlstar.cs.vu.nlstar.cs.vu.nlstar.cs.vu.nlHINFOMXMXAASun Unix1 star.cs.vu.nl10 zephyr.cs.vu.nl130.37.24.6192.31.231.42zephyr.cs.vu.nlzephyr.cs.vu.nlzephyr.cs.vu.nlzephyr.cs.vu.nlHINFOMXMXASun Unix1 zephyr.cs.vu.nl2 tornado.cs.vu.nl192.31.231.66www.cs.vu.nlCNAMEsoling.cs.vu.nlftp.cs.vu.nlCNAMEsoling.cs.vu.nlsoling.cs.vu.nlsoling.cs.vu.nlsoling.cs.vu.nlsoling.cs.vu.nlHINFOMXMXASun Unix1 soling.cs.vu.nl10 zephyr.cs.vu.nl130.37.24.11laser.cs.vu.nllaser.cs.vu.nlHINFOAPC MS-DOS130.37.30.32vucs-das.cs.vu.nlvucs-das.cs.vu.nlPTRA0.26.37.130.in-addr.arpa130.37.26.0
  • 30. 域vu.nl到子域cs.vu.nl的关联名字记录类型记录值cs.vu.nlsolo.cs.vu.nlNSAsolo.cs.vu.nl130.37.24.1由于域cs.vu.nl是按单个分区来实现的,所以上表中没有到其他分区的关联。下表显示了如何查询子域中的一个节点,而这个子域是由另外一个不同的分区实现的。在域vu.nl的DNS数据库中给出了上表中的两行,问题就可以得到解决,第一行指出了子域cs.vu.nl的名字服务员,第二行指出了这个名字服务员的IP地址。
  • 31. 4.2 加密技术 在计算机网络系统中保护和安全有以下三个方面: 数据加密:主要研究对数据加密的算法、算法实现的效率等问题。 计算机网络的安全保密:网络容易产生不安全和失密问题,采用加密技术,实现用户到用户之间的加密,确保数据在网络传输过程中(特别是通信系统中)不丢失和被窜改。 访问控制:像多用户单机系统那样,规定什么人可以访问系统的什么数据,得到何种服务,并对用户进行身份鉴别,对他们的访问权限加以限制(授权)。 上述三个问题归并成两个:加密技术,访问控制。
  • 32. 加密和解密:加密意味着发送者将信息从最初的格式改变为另一种格式,将最终不可阅读的消息通过网络发送出去。解密是加密的相反过程,它将消息变换回原来的格式。下图所示为加密和解密过程。 加密和解密的方法分为两种类型:传统方法和公开密钥方法。密文明文明文加密算法解密算法网络发送者接收者KeKd
  • 33. 传统加密方法 单密钥系统加密模型 y=E(k,x)网络ABxx=D(k,y)EkDk传统的单密钥加密系统的加密模型如上图所示。加密函数必须与解密函数配对使用,以便恢复原文。非法用户想要弄懂密文,必须知道密钥和解密函数,只知道其中一个是无法将密文转换为明文的。 传统的加密方法有替换法和位置交换法。
  • 34. 替换法: 在开始的时候加密是通过使用被称为单字母替换的办法来实现的。在这种加密方法中,每个字符都被另一个字符所代替。这种加密方法称为恺撒密码,因为它最初被恺撒使用。 更安全的字符替换方法是多字母替换,这仍然使用一个字符替换另一个字符,但是在这种方法中,同样的原文字符是用不同的密文字符替换的,替换不仅取决于原文的字符,也取决于字符在文中的位置。 例如,消息GOOD MORNING中的三个O可以被三哥不同的密码字符替代。
  • 35. 位置交换法:在这种方法中,字符将保持它们在原文中的格式,但是它们的位置将被改变来创建密文。 例如明文: please give me the books, when you come up next. 使用MEGABUCK作为密钥,将明文各字母对准此密钥各字母排成8列,同时给每列一个编号,编号按对应的密钥字母在字母表中出现的先后顺序给出。 然后从小到大,从上到下,把明文字母排列即得密文: a bhcnsmoeoe k etlve upee w gtsy .pih,oueeonmx
  • 36. DES加密 基于比特级别的加密,算法使用64比特的原文和56比特的密钥,原文经过19个不同而复杂的过程来产生一个64比特的密文。 下图是其加密过程。
  • 37. 密钥的分配 两个用户要进行对话,对话之前要商定一个对话密钥,由于它们之间没有一个对话密钥,密钥的传送是不能用明文的形式传送的,所以需要一个双方都信任的第三者帮助他们完成密钥的分配,将这个第三者叫做网络安全中心(NSC)。 假定用户A和B均已和NSC建立了保密的通信信道,NSC向A和B传送密钥KS的方法有两种,如下图所示。
  • 38. )E(kb, ks))E(kb, ks)E(ks, M)E(ks, M)kbkakbka(a)接收者从NSC得到密钥ANSCB, kb, kb(ka(kaE(ka, ks)E(ka, ks)E(ks, M)kbka(ka, kb)(b)接收者从发起者得到密钥NSCABE(ka, ks)E(kb, ks)
  • 39. 公开密钥加密方法 公开密钥加密模型 Diffie和Hellman在1976年提出的加密系统的主要思想:加密算法E和解密算法D无法保持秘密,不如干脆公开,但是使用两个密钥:加密密钥Ke和解密密钥Kd。加密密钥是不保密的,谁都可以使用,所以叫做公开密钥;解密密钥是保密的,只有接收密文的一方才知道,所以叫做专用密钥或保密密钥。选择某种类型的算法E和算法D,使得局外人即使知道了加密密钥Ke,也推算不出来解密密钥Kd。
  • 40. ED网络ABxx=D(K,y)y=E(KCB,x)KK(a) A向B发送保密信息xED网络ABxx=D(KDB,y)y=E(CB,x)KKDB(a) A向B发送保密信息xDE网络ABMP=E(KEA,M)M=D(KDA,P)KDAKEA(b) B向A发送保密信息M公开密钥加密模型
  • 41. RSA 加密 首先确定一些参数: (1) 选择两个素数,p和q; (2) 计算n=p×q和z=(p-1)×(q-1); (3) 选择一个与z互质的数d; (4) 找出e,使得e×d=1 mod z。 确定公开密钥和保密密钥:公开密钥由(e,n)构成,保密密钥由(d,n)构成。 加密时,可以把明文看成一个比特串,将其划分成大小为k比特的块,每块可以看做是一个正整数m,其中0≤m≤n,所以块的大小k应该满足:2k
  • 42. 对明文“SUZANNE”进行加密。选择p=3,q=11,得到n=33,z=(p-1)×(q-1)=2×10=20。由于7和20互为质数,故可以设d=7。对于所选的d=7,解方程7e=1(mod 20),可以得到e=3。 加密解密明文(X)密文(Y)符号数值X3X3(mod 33)Y7Y7(mod 33)符号S196859281349292851219SU21926121180108854121UZ261757620128000000026ZA11111AN14274457812514NN14274457812514NE51252680318101765E
  • 43. 4.3 保护 保护的目标与要求 保护机构要解决以下几个基本问题: 保密性:用户必须能秘密地保存数据,不被其他用户看见; 专用性:必须保证用户给出的信息仅用于达到预想的目的; 真实性:提供给用户的数据必须是真实的,也就是说,如果某些数据声称来自X,则该用户必须能够验证此数据确实是由X送来的; 完整性:存放在系统中的数据不会被系统或未被授权的用户破坏。
  • 44. 非法用户可以使用各种方法进行非授权的访问,这些方法可以粗略的分为浏览、泄露、推断、伪装等。 解决这些问题的方法有两种: 传统系统由操作系统提供保护,硬件允许操作系统运行的进程互不干扰,也不影响操作系统本身。操作系统记录进程的保护域,当进程访问对象时,检查其合法性,但这种方法在分布式系统中不一定可行。 另一种方法,在每个工作站的操作系统核心的安全机构基础上建立一个安全的分布式操作系统,使工作站仅能从网络上自举。这样,要破坏系统安全的唯一办法是改变硬件本身。
  • 45. 公开密钥加密技术实现数字签名 实现数字签名,要解决两个问题: 第一,接收者能验证所要求的发送者的身份; 第二,发送者在发送已经签名的报文后不能否认 公开密钥加密技术实现数字签名要求加密函数E和解密函数D满足下列条件: E(D(P))=P, 当然同时还有D(E(P))=P,也就是E和D可以互换。
  • 46. KdAAKeBKdBKeAB网络基本加密级鉴别级EB(DA(P))PDA(P)DA(P)P假定A向B发送一个签名报文P。A的公开密钥为KEA,保密密钥为KDA。B的公开密钥为KEB,保密密钥为KDB。上图显示了使用公开密钥加密技术实现数字签名的过程。
  • 47. 单密钥加密技术实现数字签名 2. X(A+D+P)3. X(A+D+P)NSCAB5. KB(A+D+P)1. KA(P)4. X(A+D+P)
  • 48. 使用报文摘要实现数字签名 基于单向散列函数的思想,该函数从一段很长的明文中计算出固定长度的比特串,这个散列函数通常被称为报文摘要。 它具有三个重要的属性: 给出报文P就很容易计算出其报文摘要MD(P); 只给出MD(P),几乎无法推导出P; 无法生成这样的两条报文,它们具有同样的报文摘要。 要满足第三个条件,散列至少长128比特或更长。
  • 49. 例如,A向B发送签名的报文P,实现数字签名的过程如下: A首先计算P的报文摘要MD(P); A用自己的保密密钥对MD(P)进行加密以达到签名的目的; A将报文摘要的签名形式DA(MD(P))连同明文P一起发送给B; B用A的公开密钥解密DA(MD(P)),从而得到MD(P),验证是否是A发送的; B通过明文P重新计算MD(P),发现是否有非法用户修改报文P。
  • 50. 权能的保护 访问矩阵:它表示系统的用户的访问权限。可以被访问并被保护的对象用Oi表示,访问对象的域用Dj表示。矩阵中的项Aij含有用户j对对象i的一些访问权限,它由一些数值代表对一个文件的读、写,或一个程序的执行,或对一个终端的连接,或改变权限等。Aijij域DjDj的权能表对象OiOi的访问表
  • 51. 在实际系统中使用按行或按列列表实现访问控制: 访问矩阵中对应Oi那一列说明可以访问对象Oi的所有的域,叫做关于Oi的访问控制表。 另一种存储访问矩阵的方法是取一行列表,叫做权能(capability)表,它对应于一个域Dj,而不是对应某个对象。权能表的每一项叫做一个权能,由对象名和一套对此对象操作的权利组成。
  • 52. 使用单密钥加密技术保护权能服务员S,密钥s,sa,sb,权能C用户A,密钥sa,ab,存储E(sa,E(s,C))用户B,密钥sb,ab,存储E(ab,E(s,C))E(sa,E(s,C))E(ab,E(s,C))E(sb,E(s,C))
  • 53. 使用公开密钥加密技术保护权能
  • 54. 分布系统中访问位置的控制 向终端和主机传送对话密钥
  • 55. NSCKtKhKuKpKtKuTKhHKpPKuUE(Ku,E(Kt,Ks))E(Kp,E(Kh,Ks))向用户和主机进程传送对话密钥
  • 56. 4.4 保护的例子:Amoeba 信口 每个服务员有一个或多个信口,顾客进程通过向这些信口发送报文与服务员进行联系。每个信口实际上对应一对信口G和P,P=F(G),由G可得到P,由P不能推出G。 通信规则: 任何发送出去的报文必须先经过F盒,才能进入网络; 任何到达的报文必须经过F盒才能被用户接收; 发送者发送报文时,报文的源信口是发送者的G信口,报文的目的信口是接收者的P信口; 报文经过发送者的F盒时,F盒将源信口由G信口变换成P信口,目的信口不变换。 接收者要接收报文,必须向F盒提交自己的G信口,如果报文的目的信口P=F(G),则F盒将报文提交给接收者,否则不提交给接收者。
  • 57. 防止非法用户冒充服务员接收顾客请求F盒顾客AF盒非法用户BF盒服务员SMPSGAMPSPAMPSPA非法用户不知道Gs,只能向F盒提供Ps,而F(Ps)不等于Ps,F盒不允许该报文通过MPSPAMPSPA服务员S向F盒提供Gs,而F(Gs)=Ps,F盒允许该报文通过
  • 58. 防止非法用户冒充服务员发送报文F盒顾客AF盒非法用户BF盒服务员S非法用户不知道Gs,只能向F盒提供Ps来冒充服务员MPAF(PS)顾客发现不是来自PS的报文,而是来自F(PS)的报文,丢弃。MPAPSMPAF(PS)MPAF(PS)
  • 59. 使用F盒实现数字签名F盒用户AF盒用户BMSPBGAMF(S)PBPAMF(S)PBPAMF(S)PBPA顾客A选择一个随机签名S并公布F(S)。A交给F盒用来发送的报文报头中包含三个特别的段:目的地(PB),源地址(GA)和签名(S)。F盒对GA和S进行单向函数变换,变换成PA和F(S)。B知道确实是A发送的,因为只有A才知道在第三段中放一个什么数,只有此数才能产生众所周知的F(S)。
  • 60. 权能 权能由四段组成 检验码权利码对象标识符服务员地址32位32位32位64位其中,服务口地址是拥有此对象的服务员地址put_port,对象标识符是一个内部标识符,只有服务员用它可以得知它所代表的对象,很像UNIX中的inode号。权利码中的每一位指出可以对此对象进行何种操作。检验码是一个大随机数,用来对该权能的真实性进行检验。
  • 61. 权能的保护 服务员创建对象A,产生一个随机数RA; 服务员给对象A创建权能,权利码为PA,检验码为CA; CAPAA服务员地址 用随机数RA作为密钥对PA和CA加密;RA(CA)RA(PA)A服务员地址服务员保存A,随机数RA和检验码为CA。 检验权能:用RA对RA(CA)解密,能得到CA,则确认权 能未被修改。
  • 62. Amoeba权能保护方法的优点 服务员可在任何时候将某一对象的全部权能作废,这只需简单地改变检验码就可以了。 尽管没有一个集中的机构来管理谁有什么权能,但是很容易改变现有的权能。对象的所有者希望这样做的时候只需简单地向服务员发一个请求报文,服务员简单地修改内部表中该项的随机数并返回一个新权能就可以了。
  • 63. Amoeba权能保护方法的缺点 如果顾客进程想把它所获得的权能传递给其他用户,但不想让此用户具有它的全部权限的操作能力时,必须再向服务员请求产生一个新的权能,顾客本身不能简单地修改其权能。它必须在发向服务员的报文中说明如何修改操作码。将权能和一个屏蔽码送给服务员,服务员将屏蔽码和权利码进行“与”操作就可以实现这一修改。
  • 64. 用软件F盒保护 请求者X向密钥服务员登录顾 客 X密钥 服务 员KS(GA,PA,KA)[登录信口,{Gx,Kx}Eks] (GX,PX,KX)[信口登录,{Px}Kx]
  • 65. 请求者X向密钥服务员获取密钥[获取密钥,{Gx,Kx’}Eks] 顾 客 X密钥 服务 员KS(GA,PA,KA)(GX,PX,KX)[密钥获取,{Px,Kx}Kx’]
  • 66. 请求者X请求密钥服务员传送X和Y对话的密钥[传送密钥,{Gx,Py,Kx’}Kx] 顾 客 X密钥 服务 员KS(Gy,Py,Ky)(GX,PX,KX)[密钥传送,{{Px,Kx’}Ky}Kx]
  • 67. X和Y建立通信密钥服务员KS顾 客 C服 务 员 S1.[传送密钥,{Gc,Ps,K1}Kc] 2.[密钥传送,{{Pc,K1}Ks}Kc] 3.{Pc,K1}Ks}4.[传送密钥,{Gs,Pc,K2}Ks] 5.[密钥传送,{{Ps,K2}Kc}Ks] 6.{Ps,K2}Kc 7.{M}(K1⊕K2 )