分布计算系统笔记——第三章 命名和保护

命名

名字两种形式:地址、标识符

  • 地址:一个特殊类型的名字,它用来指出一个实体的访问点
  • 标识符:标识符与实体一一对应,对一个对象进行操作或访问时,往往需要将它的标识符变换为它的地址,变换的过程中需要用到变换表,这个变换表叫做上下文(content)

名字:相对名字、绝对名字

地址:平面地址、分层地址

分层地址的优点:分层地址使得路由选择容易;容易创建新的地址,即可在每一个网络内单独决定主机号码;自动给出高位号码,即在主机内不用给出它所属的网络号,正如在城市内拨电话时不必拨国家和地区号码一样。

分层地址缺点:当一个进程迁移到另一个机器上时不能使用原来的地址。

平面地址的优点:当进程迁移时仍可使用原来的地址;

平面地址的缺点:路由选择比较困难,因为每个路由选择节点必须保持一个能对所有可能的地址进行变换的路由选择表,地址的赋值也比较复杂,必须确信每个地址是唯一的。

名字空间

名字空间:是名字的一种有机组织形式。

名字空间的表示:用一个带标号的有向图来表示,这个图中有两类节点,一类是叶节点(leaf node),另一类是目录节点(directory node)。一个叶节点代表一个命名的实体,叶节点没有输出弧(outgoing edge),只有输入弧(incoming edge)。每个节点有一个 标识符,每个弧有个名字。

叶节点:一般用来存放一个实体所表示的信息,例如这些信息可以包含这个实体的地址,顾客使用这个地址可以访问到这个实体;还例如这些信息还可以包含这个实体的状态,如果一个叶节点代表一个文件,它不仅包含整个文件,还包含这个文件的状态。

目录节点:每个目录节点保存了一个表,表中的一项代表了一条输出弧,每条输出弧由(弧标号、节点标识符)表示,这样的一个表被称为目录表(directory table)。

根节点:有一个特殊的节点,该节点只有输出弧而没有输入弧,该节点被称为命名图中的根节点(root node),或简称为根。一个命名图中可能会有多个根 。

路径:一个路径是由一串弧的标号组成的, 例如:N:<label1,label2,,labeln>N:<label-1,label-2,…,label-n> ,这里N表示这个路径中的第一个节点,这样一个标号串称为路径名。如果路径名中的第一个节点是命名图中的根,则这个路径名被称为绝对路径名,否则称为相对路径名。

unix文件系统

  1. 引导块是一个特殊的块,当系统启动时该块中的数据和指令自动地被装入到内存中,通过该块中指令的执行将操作系统装入到内存中。
  2. 超级块保存着整个文件系统的有关信息,这些信息包括文件系统的大小、磁盘中哪些块还未被分配、哪些索引节点未被使用等等。
  3. 每个inode除了包含它所对应的文件的数据可以在磁盘中什么地方找到的确切信息外,还包含它的属主、产生的时间、最后一次修改的时间和保护等信息。每个目录都有一个带唯一索引号的inode,所以,命名图中的每个节点的标识符是它的inode索引号。

分布计算系统的名字空间

名字空间的合并机制

mount机制(安装机制)

nfs://cs.jlu.edu.cn//home/xu, nfs是访问协议名字, cs.jlu.edu.cn是服务员名字, /home/xu是外部名字空间中被安装点的名字

设置一个新的根节点

实现

组织方式
  • 全局层由最上层的一些节点组成,这些节点包括根节点和它的一些子目录节点组成。用来代表一些机构,这些机构的名字保存在名字空间中。
  • 组织层由一个机构内的所有目录节点组成,这些目录节点被某个机构管理。
  • 管理层由那些可能经常变动的节点组成。
不同层次管理员要求
要求全局层组织层管理层
网络地理范围全球机构部门
节点数目少量很多大量
查询响应时间几秒毫秒立即
更新传播周期立即立即
副本数目很多没有或很少没有
顾客方缓存需要需要有时需要
名字解析方式
  • 重复式名字解析
  • 递归式名字解析

递归式名字解析的主要缺点是要求每个名字服务员具有较高的性能。递归式名字解析要求名字服务员完整地解析它所得到的整个路径名,特别是对于全局层的名字服务员来说,情况更为严重。

递归式名字解析有两个主要优点。第一个优点是如果采用缓存,那么递归式名字解析的缓存效果同重复式名字解析的缓存效果相比更为有效;第二个优点是可以减少通信代价。

DNS

加密技术

传统加密方法

  • 单密钥加密
  • 替换法(凯撒密码)
  • 位置交换法
  • DES加密

密钥分配

RSA

  1. 确定密钥的算法:
    1. 选择两个素数,ppqq
    2. 计算 n=p×qn=p×qz=(p1)×(q1)z=(p-1) ×(q-1)
    3. 选择一个与 zz 互质的数 dd
    4. 找出 ee,使得 e×d=1modze×d=1 \mod z
  2. 确定公开密钥和保密密钥:公开密钥由 (e,n)(e,n) 构成,保密密钥由 (d,n)(d,n) 构成。
  3. 加密的过程:设 XX 是明文,计算Y=X×e (modn)Y=X\times e\ (\mod n),则 YY 就是密文。
  4. 解密的过程:设 YY 是密文,计算X=Y×d (modn)X=Y\times d\ (\mod n),则 XX 就是明文。

保护

保护的目标:保护机构阻止非法用户偷用磁盘空间、文件系统、处理机,读其他人的文件,修改别人的数据库及干扰别人的计算。保护机构还有其他作用,帮助检测程序中的差错,防止用户错误操作以及用于项目管理等。

保护机构要解决以下几个基本问题:

  • 保密性:用户必须能秘密地保存数据,不被其他用户看见;
  • 专用性:必须保证用户给出的信息仅用于达到预想的目的;
  • 真实性:提供给用户的数据必须是真实的,也就是说,如果某些数据声称来自X,则该用户必须能够验证此数据确实是由X送来的;
  • 完整性:存放在系统中的数据不会被系统或未被授权的用户破坏。

数字签名

公开密钥加密技术实现数字签名

单密钥加密技术实现数字签名

报文摘要实现数字签名(hash散列函数)

  1. 给出报文P就很容易计算出其报文摘要MD(P)。
  2. 只给出MD(P),几乎无法推导出P。
  3. 无法生成这样的两条报文,它们具有同样的报文摘要。

过程:

  1. A首先计算P的报文摘要MD(P);
  2. A用自己的保密密钥对MD(P)进行加密以达到签名的目的;
  3. A将报文摘要的签名形式DA(MD(P))连同明文P一起发送给B;
  4. B用A的公开密钥解密DA(MD(P)),从而得到MD(P),验证是否是A发送的;
  5. B通过明文P重新计算MD(P),发现是否有非法用户修改报文P。

权能的保护

使用单密钥加密技术保护权能

使用公开密钥加密技术保护权能

访问位置控制

NSC发送:

E(k最终用户,E(k设备,k密钥))E(k_{\text{最终用户}}, E(k_{\text{设备}}, k_{\text{密钥}}))

信口(F盒)

G保密 P公开

防止非法用户冒充服务员接收顾客请求:

防止非法用户冒充服务员发送报文:

非法用户不知道 GSG_S,只能向F盒提供 PSP_S 冒充服务员,F盒处理后变成 F(PS)F(P_S),顾客发现不是来自 PSP_S 的报文,而是来自 F(PS)F(P_S) 的报文,丢弃。

使用F盒实现数字签名: 顾客A选择一个随机签名S并公布F(S)。A交给F盒用来发送的报文报头中包含三个特别的段:目的地(PB),源地址(GA)和签名(S)。F盒对GA和S进行单向函数变换,变换成PA和F(S)。B知道确实是A发送的,因为只有A才知道在第三段中放一个什么数,只有此数才能产生众所周知的F(S)。

Amoeba权能保护方法

  1. 服务员创建对象A,产生一个随机数RA;
  2. 服务员给对象A创建权能,权利码为PA,检验码为CA;
服务员地址APAP_ACAC_A
  1. 用随机数RA作为密钥对PA和CA加密;
服务员地址ARA(PA)R_A(P_A)RA(CA)R_A(C_A)
  1. 检验权能:用RA对RA(CA)解密,能得到CA,则确认权能未被修改。

优点:

  1. 服务员可在任何时候将某一对象的全部权能作废,这只需简单地改变检验码就可以了。
  2. 尽管没有一个集中的机构来管理谁有什么权能,但是很容易改变现有的权能。对象的所有者希望这样做的时候只需简单地向服务员发一个请求报文,服务员简单地修改内部表中该项的随机数并返回一个新权能就可以了。

缺点:

如果顾客进程想把它所获得的权能传递给其他用户,但不想让此用户具有它的全部权限的操作能力时,必须再向服务员请求产生一个新的权能,顾客本身不能简单地修改其权能。它必须在发向服务员的报文中说明如何修改操作码。将权能和一个屏蔽码送给服务员,服务员将屏蔽码和权利码进行“与”操作就可以实现这一修改。

软件F盒保护

不明所以,这是什么?

优良保密协议PGP

很复杂,真的会考吗?

分布计算系统笔记——第四章 同步和互斥
分布计算系统笔记——第二章 进程通信