第三章 命名与保护
By齐浩坤
第三章 命名与保护By齐浩坤
1分布式系统中的命名
一、名字的结构
二、名字空间
三、分布计算系统的名字空间(名字空间的合并)
1、安装机制
2、设置一个新的根节点
四、大规模分布计算系统的名字空间的实现
2分布式系统的加密技术及保护
一、加密技术
1、密钥的分配
2、传统加密方法
3、公开密钥加密方法
二、保护(签名身份认证)
1、使用公开密钥加密技术实现数字签名
2、使用单密钥加密技术实现数字签名
3、使用报文摘要实现数字签名
三、保护(访问控制)
1、权能和访问控制表
2、使用单密钥加密技术保护权能
3、使用公开密钥加密技术保护权能
分布式计算系统中的名字可以指向本地对象,也可以指向另一台机器上的对象,所以命名系统的分布实现方式是影响命名系统有效性和可扩充性的关键因素。
命名系统的功能就是给各种服务、对象、操作 起名字,并提供一种手段把这些名字变成他们所代表的实体本身。而名字解析允许一个进程通过实体的名字访问一个命名的实体。
1分布式系统中的命名
名字的两种形式 地址 和 标识符,在对一个对象进行操作或者访问的时候,往往需要将它的标识符变换为他的地址,变换的过程需要用的变换表,这个变换表叫做上下文。
-
地址:是一个特殊类型的名字,用来指出一个实体的访问点
-
标识符:唯一标识一个实体的名字,与具体的访问点或位置无关。(一个实体与标识符是一一对应的 不被重复使用)
命名是实现分布计算系统透明性的关键部分,要达到名字透明和位置透明。
为了支持资源的迁移,命名系统应该至少支持两种形式的名字,标识符和地址,并且可动态的结合。
同一个对象可以有用户定义的多个局部名字,需要一种机制把局部名字和全局标识符结合起来。
在分布计算系统中,一个实体可能包含多个不同的对象,需要一个进程组标识符,以此支持广播或小组标识符。
一、名字的结构
名字按结构可以分成绝对名字和相对名字
-
绝对名字:绝对名字和给出名字的上下文无关,也就是与发出名字的地点、用户、应用程序无关。总是代表同一对象
-
相对名字:相对名字和给出名字的上下文有关
地址结构可以分为平面地址和分层地址
-
平面地址:平面地址与物理位置和其他层次没有任何关系,平面地址的分配使用一个单一的全系统范围的计数器进行,当需要一个新地址的时候计数器加1.
-
分层地址:分层地址由若干段组成,这些段反映了网络的层次结构
二、名字空间
名字空间:是名字的一种有机组织形式
在名字空间中,根据节点的路径名,就可以寻找到这个节点所存储的任何信息,这个查找的过程就称为名字解析。两步:①找对应节点的标识符②通过标识符找对应节点的内容
用一个带标号的有向图来表示,这个图中有两类节点,一类是叶节点 另一类是目录节点。
-
叶节点:一个叶节点代表一个命名的实体,只有输入弧,每个节点带有一个标识符,每个弧有名字。叶节点一般用来存放一个实体表示的信息(地址或者实体的状态)
-
目录节点:每个目录节点保存了一个表(目录表),表中的一项代表了一个输出弧,每个输出弧由弧标号和节点标识符表示。
-
根节点:只有输出弧而没有输入弧,该节点称为命名图中的根节点。一个图中可能有多个
-
路径:一个路径是由一串弧的标号组成的, 例如:N:<label-1,label-2,…,label-n> ,这里N表示这个路径中的第一个节点,这样一个标号串称为路径名。如果路径名中的第一个节点是命名图中的根,则这个路径名被称为绝对路径名,否则称为相对路径名。
三、分布计算系统的名字空间(名字空间的合并)
将两个不同文件系统进行合并
名字空间进行合并的机制有安装和设置一个新的根节点两种
1、安装机制
需要以下的信息 访问协议名字 服务员名字 外部名字空间中被安装点的名字
如nfs://cs.jlu.edu.cn//home/xu, nfs是访问协议名字, cs.jlu.edu.cn是服务员名字, /home/xu是外部名字空间中被安装点的名字。
当在机器A上访问文件/remote/cs/mbox的时候,解析该文件名,当解析到/remote/cs是就得到一个NFS URL于是使用该协议联系jlu.edu.cn服务员,然后访问机器B上的目录/home/xu
2、设置一个新的根节点
设置一个新的根节点,现有的各名字空间的根节点变成此新的根节点的子节点。原先的绝对路径名使用时改为相对路径名,每个机器包含一个隐含节点标示符,此节点 添加到绝对路径名前,变成相对路径名名。如下图:
/home/xu/keys →n0: /home/xu/keys
四、大规模分布计算系统的名字空间的实现
被分为全局层、组织层、管理层
-
全局层:最上层的节点组成,这些节点包括根节点和一些他的子目录节点组成,用来代表一些机构
-
组织层:由一个机构内的所有目录节点组成,这些目录节点被某个机构管理,组织层内的目录节点代表了一些实体
-
管理层:由哪些经常变动的节点组成
在大规模分布计算系统中的名字解析有 重复式名字解析 递归式名字解析
2分布式系统的加密技术及保护
加密技术:对数据进行加密
访问控制:对用户进行身份鉴别 限制访问权限
一、加密技术
加密:发送者将信息从最初的格式转换为另一种格式,最终将不可阅读的信息通过网络发送
解密:将信息变换回原来的格式
加密和解密的方法分为两种类型:传统方法和公开密钥方法
1、密钥的分配
两个用户要进行对话,对话之前要商定一个对话密钥,由于它们之间没有一个对话密钥,密钥的传送是不能用明文的形式传送的,所以需要一个双方都信任的第三者帮助他们完成密钥的分配,将这个第三者叫做网络安全中心(NSC)。
需要假设机器A和机器B都事先跟NSC取得了联系
2、传统加密方法
-
单密钥系统加密模型:x代表最原始的信息,E为加密函数 k为密钥,发送方通过加密函数和密钥将信息x变为y。D为解密函数,接收方通过解密函数和密钥将加密信息y还原为x。
所以必须要知道解密函数D和密钥K才能盗取信息(密钥要经常更换)
-
替换法:将每个字符都用另一个字符代替,也被称为凯撒密码
-
位置交换发:在这种方法中,字符将保持他们在原文中的格式,但是他们的位置将被改变来创建密文
-
DES加密:算法使用64比特的原文和56比特的密钥,原文经过19个不同的复杂过程来产生一个64比特的密文
3、公开密钥加密方法
-
公开密钥加密模型:当分属于不同组织结构的两个用户,他们之间没有NSC,怎么进行加密通信呢?
加密算法E和解密算法D没有密钥就是废物,无法进行加密,所以直接公开。加密密钥和Ke进行公开,但是解密密钥Kd不告诉别人,别人都可以通过自己公开的加密密钥Ke给自己发信息。
-
RSA加密:RSA 加密实例:对明文“SUZANNE”进行加密。在此例子中我们只考虑英文大写字母的加密,我们可以对英文字母A~Z按顺序编码为1~26。在该例子中,我们选择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,则该用户必须能够验证此数据确实是由X送来的;
-
完整性:存放在系统中的数据不会被系统或未被授权的用户破坏。
1、使用公开密钥加密技术实现数字签名
数字签名的意义: 接受者能验证所要求的发送者的身份 发送者在发送已签名的报文后不能否认
也就是都各加一步,发送方在发送之前先用自己的私有密钥加密一下,而接收方在接受之后再用对面的公开密钥揭秘一下,发现能解开,也就是先了身份验证了。
2、使用单密钥加密技术实现数字签名
3、使用报文摘要实现数字签名
三、保护(访问控制)
1、权能和访问控制表
权能:是指授予某个实体特定权限的密钥或令牌,它能给出服务员的物理地址以及允许顾客请求服务进行某种操作的权限。权能由服务员创建,并且权能可以复制并传递给其他用户或者进程,在传递之前还可以对部分操作加以限制。分布计算系统广泛使用权能进行访问控制。
访问控制:指确保只有经过授权的用户或系统能够访问或修改系统中的资源(如文件、数据库、服务等)的机制和策略
访问矩阵:矩阵中的项Aij含有用户j对对象i的一些访问权限,它由一些数值代表对一个文件的读、写,或一个程序的执行,或对一个终端的连接,或改变权限等。
因为这个矩阵的很多项都是空的。有两种主要方法在实际系统中使用,实现访问控制:按行或按列列表。
对应对象oi的列表 表示可以访问对象oi的所有的域 叫做关于oi的访问控制表
对应域Dj的行表 表示该域对不同对象的操作 叫做关于域Dj的权能表 权能表的每一项叫做一个权能,由对象名和一套对此对象操作的权利组成。