分布式系统阅读笔记(十一)-----安全
一、介绍
在分布式系统中,对于数据的隐私的保证性,完整性和可用性显得至关的重要。安全攻击的手段可以去窃取,篡改用户的信息。正是因为如此种种的情况发生了,才有了后面一系列的安全的相关防御方法。
1、这些安全的机理本质上就是以一种预想的方式对资源进行一层包装。这种包装隔离的手段可以是物理上的隔离,比如对于公司内的资源,只允许内网中的人使用,外面的人是无法访问的,当然也可以是网络层次上的隔离。
2、与安全紧密关联的词是密码学,大部分的安全策略的实现离不开他的作用。密码学的飞速发展,诞生了许多优先的加解密算法。
3、目前的安全的攻击手段有:1、信息的泄露,被没有认证过的人接收到了。2、信息的篡改。3、信息的故意毁坏。4、还有类似于拒绝服务攻击类似的方式。5、还有移动代码的攻击,比如XSS跨站脚本攻击。
4、对于移动代码的攻击,在JVM中有不错的限制措施,代码运行在jvm中,下载过来的代码是不能直接访问本地类的,在这其中还要经过type-checking和code-validation字节码的有效性检测,防止非法访问地址。
5、一些可能会有安全问题的使用场景:1Email的信息收发。2、电子商务的商品购买。3、银行金融行业的交易。4、微商务,类似于发布-订阅模式,提供者提供了信息,对应于一堆的消费者。
6、正是因为上述种种的危害存在,所以需要有一个系统安全的设计,往往要以最坏的情况最假设而设计,同时在设计系统的同时要考虑其中的用于安全的开销,与正常的系统允许相比,至少不能影响到系统的正常运转。
二、安全技术的综述
随着安全技术领域的快速发展,已经衍生出了许多的相关技术,下面是一些具体的分类。
1、密码学相关技术。主要包括里面涉及到的许许多多的加密算法。
2、证书认证技术。有的时候认证需要第三方服务的参与,这个技术算安全性比较高的。
3、数字签名技术,模拟了传统的对于数据文档的签名方式。
4、访问控制的手段。这个在各大操作系统中已经被采用了,里面的2个小小的分类是一个叫protection domain保护域,还有一个叫ACL访问控制列表,二者的概念其实非常相像。
5、授权的概念,在系统中许多的资源访问需要对用户进行授权才能被访问到,但是授权容易,撤销权利就比较难了,一旦权利授权了恶意的用户,后果不堪设想。
6、防火墙。防火墙作为计算机内部与外部连接通信的一道屏障,会对于外部发来的信息进行拦截,并且对于可疑的数据包进行防护,拦截。
三、密码学算法
这里提到的加密算法主要分为2类,对称加密算法和非对称加密算法。
1、第一类为对称加密算法啊,为什么叫做对称加密算法呢?因为在加密和解密的过程中用的是同一个key,这个key是私密的,只有接收方自己知道的。但是有的时候,这个key的位数太短,可能会被暴力攻击的手段破解。比较典型的对称加密算法为DES加密算法。
2、第二类为非对称加密算法。在这个算法中维护了一对密钥,为公钥和私钥。公钥对外界是公开的,而私钥则是归个人所有。如果谁想要发消息的就用公钥进行加密,如果谁想要收到消息的,就用私钥去解密。
3、块加密和流加密。上面说的算法都是块加密的手段,因为数据是静态文本的形式,可以通过块的形式逐一加密,但是如果是在流通性的过程中,比如音视频等过程中,数据是源源不断的,就不能采用块加密的手段了,这里的流加密的专业名字叫做Stream ciphers,原理其实是和块加密非常类似,在流加密中用到了keyStream,他是一个用来模糊数据内容的一个序列位,RC4是一种流加密算法。
4、在对称加密算法中,比较典型的是DES,后来又了安全性更高的AES算法,而在非对称加密算法中,名声最大,用的最广的是RSA算法,他是3个人的名字的开头首字母构成的。
四、数字签名
数字签名作为一种安全的实现方式,他将信息与信息的所有者的标识进行绑定。
1、在数字签名中会有用到对于数据内容的信息摘要的计算,如果文件内容发生变化,消息摘要的值也会变,所以可以根据信息摘要做数据的完整性校验。
2、消息摘要的计算的算法有很多,比如MD5算法,还有安全哈希函数SHA算法。
五、密码学的发展障碍
密码学的推广和发展在政策上遇到了一些障碍。比如有些算法在对外开放给用户使用的时候,对于位数进行了限制,密码加密的长度不能按照原先算法指定的那样,可能他们会怕他们在使用的时候,他们自己都破解不了。
六、学习例子:Needham-Schroeder,Kerberos,TLS,802.11WiFi
1、认证协议最早是由Needhan和Schroeder他们俩发布的。
2、Kerberos认证最早是用在MIT的大学校网内的。里面的认证流程大体可以为1.客户端想AS认证服务请许可票据,2.然后客户端向TGS票据授权服务请求服务票据,3.组后通过服务票据向最终服务器请求服务。在这期间的每一次会话,都会有一个session key的参与。Hadoop里用的就是Kerberos认证。
3、TLS/SSL。前者是最为后者的一个版本的扩展。这2个协议已经被用到了许多涉及电子商务的操作中,用于构建一个安全的通道。TLS的协议栈分为2层,第一层叫做TLS HandShake protocol,用于信息第一次进行通信时,进行加密算法的协商。第二层为TLS Record Protocol,第二层才是用来进行安全传输的通道。TLS的用处在于可以对于不同设备,不同地域的连接进行协商,最后通过握手达成一致的加密算法,于是进行后面的加密通信。,在协商的过程中,2边都会列出所支持的加密算法啊。
4、802.11WiFi代表的是wireless LANS,无线局域网。在无线局域网内,也会存在不同于有线网的一些安全问题,比如他的用户接入问题,连接一个无线网络,一个用户只要通过他的一个key的连接就OK了,显然这显得太过轻松了。第二点,用户在使用的无线网的过程中,往往不会开启WEP的保护模式,因为在无线网中,他们根本不知道他们的数据是完全暴露的。所以这里发展出来了一个安全协议叫WiFi Protected Access (WPA),未来还是需要去完善这个协议。
参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair