微信号:gh_7b30a45c1595

介绍:致力于营造国内一流的应用服务器的爱好者技术讨论,服务器相关资讯新闻分享,业界开源商用服务器相关动态,服务器端程序员职业发展相关的圈子; 以JAVA技术为基础扩展其它语言,讨论tomcat,JAVA EE规范,JVM,操...

应用服务器需要掌握的安全基础知识之一

2016-02-25 11:25 feiying

安全最近这两年是大热,在应用服务器中间件领域也是,我们先来看看网络的层次划分:


网络接口层的安全一般指的就是基于电信号的加密,也就是0101这种,这种层级的加密一般是在通讯链路的两端加上加密机这种硬件。

网络层对应的就是数据包的路由选择,说白了也就是目的地必须准确,中间不能经过截获和黑客伪攻击,这种主要是由路由器交换机的安全保护。

传输层主要针对的就是数据包TCP和UDP,TCP是可靠的面向链接的服务,UDP是无连接的数据包服务,这两种服务需要通过一些SSL,TLS安全协议的保护,规定握手方式,规定交互方式,二者之间的传输的策略,在这些保护之下,传输层的安全才可以安全。

应用层的安全,就是在不同的系统中对应socket这个对象,如何保证业务安全,以web应用服务器来说,就是https,可以这么说,HTTPs=SSL/TLS+HTTP,这就是基于SSL/TLS的http协议。

我们的目光其实是集中在应用层,如何保证socket对象的文本传输,通过SSL/TLS等协议的保护,让我们服务器变得更安全。那么,我们首先就需要了解手段。

所谓的手段就是如何保证你的数据是安全的,先来看看OSI的模型:


OSI在基于网络通信的一维象限,又扩展了2维的象限。

一个维度是服务,所谓的服务是要求你的系统安全机制必须提供的5种服务:

1.认证服务:就是证明”你妈是你妈“的这个过程,对传输的双方的身份,也就是数据来源进行认证。

2.访问控制:防止为授权用户非法访问资源,用户权限,操作权限,数据权限等等,比较著名的就是RBAC模型。

3.数据保密性:各种加密算法,在传输过程中防止被破解。

4.数据完整性:防止数据传输过程中发生丢失。

5.抗否认性:也叫作防抵赖或者确认,不能否认自己的操作。

对于这些服务,涵盖了8种安全机制:




上述的这些安全机制,可以简单做一下总结:

1.加密机制实质分为对称加密和非对称加密,所谓的对称加密如下图所示:


发送者和接受者,通过1个私密钥匙进行加密和解密,这对应的算法就是DES,AES算法,生成一个私钥,

然后双方对其进行共享和使用,并用于加密和解密。

这种方式其实是不怎么安全的,例如黑客在发送者传输秘钥给接收方的过程中,可能被截获,那么加密解密的过程

就完全被暴露了,因此才搞出一个非对称加密方式,所谓的非对称:


也就是说,发送方产生一个私钥和公钥的对,两把钥匙,使用私钥进行加密,然后将公钥发送给接收方,接收方使用

这个接收到的公钥进行解密,这种方式相当于银行,银行中一把钥匙,给你一把钥匙,两把钥匙同时开启一个保险柜,

这也就是各大银行,特别是瑞士银行的服务。

对于非对称最著名的就是RSA算法,大名鼎鼎。

2.数据完整性机制

所谓的数据完整性,就是看看数据在传输的过程中是否丢失和被暗自篡改了,这种方式我们可以理解为一些软件的下载:


这个MD5算法就是验证数据完整性的,叫做摘要算法。

摘要算法实际上就是一串散列的算法,你可以简单理解就是hashcode,它的作用就是基于文件的格式,长度,大小,以及

关键的文件部分根据具体的算法进行计算,构造出来能识别出文件完整的唯一的一个字符串。一般为16进制的字符串。

常用的摘要算法有MD算法,MD5,MD4,SHA,MAC等算法。

3.数字签名

数字签名和前面的数据加密其实说起来,确实是两回事,啥是签名,你可以理解为纸质的签名,签上我的名字,代表我已经同意了,因为纸质的笔迹很难被模仿(虽然也可以被伪造),对于数字签名实际的意思是,就是证明来源,我就是我,不是别人,可以看看数字签名的过程:



看到,实际上这个过程和RSA的过程很像,RSA也是分为两个钥匙,一个公钥,一个私钥,但是RSA是通过对数据进行加密然后生成2把钥匙,而签名过程是通过这两把钥匙,再一次对当前计算机,mac地址,硬件,软件系统,登录身份进行运算,再次进行加工,最终生成一个签名(通常以一个文件的形式或者一个字符串)。

我们可以看到,第二个步骤,甲方是发送签名和数据,并不是仅仅发一个数据而已。

那么到这里为止,数字签名的流程就很清晰了,它是基于非对称加密算法的整个流程,私钥通过摘要算法生成签名。

接收方拿到签名和数据,进行判断看看签名是否是你的,如果真是你的话,那就开始拿你的数据办事。

4.公证机制

上述的过程中,有一个主要的问题,就是签名对了,但是签名可以伪造,因此就搞出一个公证的概念,咋个说法呢?

我如何证明你的签名就是真的,因此,CA这种中心就起作用了,它对外发布的是一个证书,证书中带有数字签名,算法标识,甚至是公钥,可以看看下面的证书:


证书通过应用服务器的安全域进行认证,给应用服务器加上对应验证的流程,证书的作用就生效了。

总结:

加密算法,签名,摘要算法,证书这些概念代表着计算机安全的技术,结合网络模型,构建出了中间件乃至应用系统的安全环境。

下一次,我们可以基于SSL协议,结合Jboss的证书安全域的配置,来谈谈应用服务器如何利用这些机制来保证安全。


 
应用服务器技术讨论圈 更多文章 东方通加码大数据业务 拟募资8亿收购微智信业 玩转Netty – 从Netty3升级到Netty4 金蝶中间件2015招聘来吧!Come on! GlassFish 4.1 发布,J2EE 应用服务器 Tomcat对keep-alive的实现逻辑
猜您喜欢 携程无线新旅程 贝叶斯是统计学概念还是机器学习? 聊聊代码规范 讲真,Excel有时候比钻戒有用 绕过支付宝快键支付客户端