网络安全那些事儿

news/2024/6/29 11:49:56 标签: 网络安全, 互联网, 技术, 通信

之前很少对网络安全的基础技术有深入的了解,今天在项目中涉及到了公钥和私钥的一些知识,于是索性在网上找了资料来系统了解一下。


网络安全技术的目的">1. 网络安全技术的目的

互联网最初的设计是基于网络透明性的,一开始并没有考虑到网络安全的问题,但是随着互联网的快速发展,安全问题日益突出,网络安全技术也应运而生。个人理解,虽然网络安全技术众多,但是其最核心的目的是:

  • 发给正确的对方:保证数据传输给正确的通信对方(认证用户、服务器等)
  • 不被第三方看到:保证数据在传输过程中不被窃取
  • 确保对方拿到的信息完整可靠:保证数据的完整性,防止在传输过程中被修改

有了以上的认识,我们就能够对整个网络安全技术的体系有一个清晰的理解。我将按照以上三点来对一些典型的安全技术进行说明,不过在此之前,我们要先理解网络安全中一个重要的理念(或者是说技术)——加密。


2. 加密

参照维基百科的解释,加密是指将明文信息(可直接阅读)通过一定的算法转换成难以读取的密文信息(不可读)的过程,所使用的算法则称为加密算法,而解密则是加密的逆过程。加密的目的是在其他人拿到密文信息后,除非经过正确的解密过程,否则无法获取信息的具体内容。加密和解密是保证网络传输过程中信息安全的基础,形象地理解为给信息加了一把“锁”,锁上和打开这把“锁”的“钥匙”则称之为密钥。密钥可以理解为加密算法(解密算法)在对信息进行加密(解密)过程中所需要输入的一种参数,分为加密密钥和解密密钥。他们的关系简要如图所示

这里写图片描述

而加密算法可以分为两类:对称加密算法非对称加密算法

对称加密算法中加密密钥和解密密钥相等或者说加密密钥和解密密钥可以通过简单的推算相互得出(维基百科)。常见的对称加密算法是早期的DES(Data Encryption Standard,数据加密标准)和替代DES的3DES和AES(高级加密标准)等。对称加密算法的优点是使用起来简单快捷,密钥短,加密过程比较快,加密性也比较高,但是其缺点也比较明显:

  • 在双方首次传输信息之前,需要一条安全的通道用于传输共同的密钥,而面对面协商是不现实的,这就使得可能需要需要借助一些不安全的手段进行传输(邮件、电话等),无法保证密钥的安全性(中途可能被他人窃取或者修改等)。
  • 对称加密要求通信双方(或者有限的多方)共同保证密钥的安全,密钥的安全依赖于所有通信成员,每一个通信成员都必须保证密钥的交换、保存过程安全可靠,一旦某一成员泄露,整个团体的通信都变得危险。
  • 对称加密算法一般无法提供完整的身份鉴别信息,无法验证发送者和接受者的身份(可能存在伪造发送者或接受者身份的情况)。
  • 密钥的数量会随着通信成员的数量的增长而迅速增长,使得密钥管理成本很大。假设一个团队有N人,每人都需要与其他每个人建立一对一通信,那么整个密钥数量就至少为N(N-1)/2

非对称加密算法也称为“公开密钥系统”(相应地,对称加密也称为“私有密钥系统”),其加密密钥和解密密钥是不同的。非对称加密算法使用一个密钥对——公钥(publickey)和私钥(privatekey),用公钥加密的信息必须使用对应的私钥才能解密,用私钥加密的信息也必须使用相应的公钥才能解密。常见的非对称加密算法有RSA和DSA等。非对称加密算法设计之初的目的就是为了对称加密算法的缺点:

  • 非对称加密算法实现密钥初次交换的过程是:甲方先生成一个密钥对,然后将其中的一把作为公钥向其他成员公开;乙方得到公钥之后,用该公钥加密信息然后发送给甲方;甲方收到信息之后,用私钥解密。由于公钥本身就是公开的,那么就不存在对称加密算法中首次传输密钥不安全的问题。
  • 非对称加密算法中私钥只由甲方一人持有,密钥泄露的可能性相对于对称加密大大降低,整个团队的安全性也较高。
  • 对称加密算法能够解决身份鉴别的问题。举例:甲方用自己私钥加密的信息发送给乙方,乙方收到信息之后如果能够用甲方的公钥解密,那就说明这条信息的来源的确是甲方而非其他人(因为私钥只有甲方一人持有)。这一般应用于数字签名,后面再详细介绍。
  • 非对称加密算法能够解决密钥过多而难以管理的问题。如果一个通信团队有N人,建立一对一通信的最低密钥对数量为N

当然非对称加密算法也有缺点:加密和解密的过程速度要慢于对称加密,因此一般来说只适合于对少量数据加密。

一般来说,一个加密系统所使用的加密算法和解密算法是公开且已知的,这看上去似乎有些矛盾,看上去,将加密算法和解密算法保密应该会使得这个系统更加难以破译,但是保密的算法也可能是未经过完全可靠性测试的算法,而证明一个算法是否可靠的唯一方法就是将其公开,让更多的密码学去测试分析,而唯一需要保密的则是密钥。


技术">3. 常用安全技术

有了上面的基础,再讲解常用的安全技术就比较好懂了。

3.1 公钥加密,私钥解密
其实这个很好理解,非对称加密中,使用公钥加密信息的目的一般是为了保证数据不被窃取,公钥和私钥的唯一对应性保证即使被公钥加密过的信息落入第三方,也不用担心信息内容被窃取的问题。

3.2 私钥加密,公钥验证(数字签名)
在理解数字签名之前,需要先对以下概念有所理解。

  • 数字摘要(数字指纹):数字摘要是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128bit)的密文。这一串密文又称为“数字指纹”,它有固定的长度,不同的明文摘要成密文其结果一定不同,同样的明文摘要成的密文必定相同(百度百科)。数字摘要是保证数据完成性和防篡改的根本原因。

数字签名是用于确定信息来源可靠完整性技术,其流程为:发送方在发送信息前,先用一个hash函数生成信息的数字摘要,然后用私钥对数字摘要进行加密,加密后的摘要作为信息的“数字签名”;之后发送方将数字签名和信息一起发送给接收者,接收者收到之后,先用同样的hash函数从原始信息中计算出数字摘要,然后用发送方的公钥对发送方发送过来的数字签名解密,如果这两个数字摘要相同,则能够确认发送方发送过来的信息是完整的没有被篡改过。

注意:数字签名本身并没有加密信息,因此发送方在传输数字签名和信息时可能需要再次加密。看到一篇文章讲的比较简明易懂,原文摘录如下:

数字签名原理中定义的是对原文做数字摘要和签名并传输原文,在很多场合传输的原文是要求保密的,要求对原文进行加密的数字签名方法如何实现?这里就要涉及到“数字信封”的概念。“电子信封”基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。其详细过程如下:
 (1) 发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;
 (2) 发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;
 (3) 发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;
 (4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;
 (5) 发方A将加密信息E和数字信封DE一起发送给收方B;
 (6) 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;
 (7) 收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;
 (8) 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;
 (9) 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;
 (10)将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。
这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。
原文:叶剑峰 http://www.cnblogs.com/yjf512/archive/2010/06/04/1751359.html


3.3 数字证书
数字签名解决了两个问题:信息发送者身份可靠,信息完整没被篡改。但是依然有问题。

问题不在于数字签名本身,数字签名的前提是所使用的公钥的确是可靠的公钥,假设这样一种情况,在接收方和发送方之外的不怀好意的第三方通过某种手段用自己的公钥替换了接收方所使用的公钥,之后用自己的私钥加密一份信息(带有“假的”数字签名)发送给接收方;接收方在收到这份信息之后使用“假的”公钥进行验证,就会误以为信息来源是真实的。因此,核心问题就是如何保证公钥来源的可靠性。

这种情况下就需要一个权威值得信赖的第三方机构(一般需要政府或其他权威机构审核并授权)来统一对外发放发送方(主机机构,一般是一些企业官方等)的公钥,只要接收方从这些机构获取发送方的公钥,就能保证公钥的可靠性。这种机构被称为证书权威机构(Certificate Authority, CA),它所发送的包含主机机构名称、公钥在内的文件就是“数字证书”。

数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。(百度百科)

关于数字签名和数字证书更详细的解释,可参考:
http://www.cnblogs.com/heart-runner/archive/2012/01/30/2332020.html

3.4 SSL
在介绍SSL之前,先看一个具体的应用场景——即时通信
我们都知道,对称加密算法速度快,非对称加密速度慢。即时通信在满足安全性的前提下,还需要实时性。那么如何解决这个看起来似乎有些矛盾的问题呢?一种方法就是:综合使用对称加密算法和非对称加密算法,在连接建立开始时,双方先通过非对称加密(公钥—私钥对)传输对称加密所需要使用的密钥,之后再使用这个密钥进行后面的通信。详细流程如下:

  1. 通信双方甲和乙,甲(或者乙)生成一对公钥(a)私钥(b)对,对称加密的密钥为c;
  2. 通信开始时,甲先将a发送给乙,告知乙使用a来加密c;
  3. 乙用a加密c之后,发送给甲;
  4. 甲收到后,用b解密,得到c;
  5. 之后两人便通过c加密消息来通信

这便是SSL(Secure Socket Layer)的原理,当然实际的SSL流程要比这个复杂得多,详细的介绍先参考 http://www.cnblogs.com/happyhippy/archive/2007/05/14/746476.html


4. 参考

  1. http://blog.csdn.net/bluishglc/article/details/7585965
  2. http://chenling1018.blog.163.com/blog/static/1480254201058112410789/
  3. http://blog.csdn.net/21aspnet/article/details/7249401
  4. http://blog.sina.com.cn/s/blog_56d8ea900100bzpr.html
  5. https://segmentfault.com/a/1190000004461428
  6. 《深入浅出密码学——常用加密技术原理与应用》

http://www.niftyadmin.cn/n/1091547.html

相关文章

java实现三宫格及其扩展_使用css伪类before/after实现 正方形三宫格、正方形六宫格、正方形九宫格...

结构图解析:后记12321.test-box{display:flex;flex-direction: row;flex-wrap: wrap;.test-item{flex:0 0 33.33%;position: relative;&::before{content: ;display:block;padding-bottom:100%;}&:after{content: ;transform-origin: center;box-sizing: …

.NET平台开源JSON库LitJSON的使用方法

下载地址:LitJson.dll下载一个简单示例:String str "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemid’:1002,’itemname’:’hello2’}]}"; //*** 读取JSON字符串中的数据 ******…

DES算法初探

本篇博客为阅读《深入浅出密码学——常用加密技术原理与应用》一书,内容有所参考和引用,部分图片和表格采用了原文,版权归原书和原作者所有,如有侵权请告知删除,在此表示感谢! DES算法是一种典型的对称加密…

java如何开发自己的注解_SpringMVC的注解开发入门

1.Spring MVC框架简介支持REST风格的URL添加更多注解,可完全注解驱动引入HTTP输入输出转换器(HttpMessageConverter)和数据转换、格式化、验证框架无缝集成对静态资源处理提供特殊支持更加灵活的控制器方法签名,可完全独立于Servlet API2.Spring MVC框架…

Burp Suite初探

Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。 一、安装部署 需要配置java环境,首先安装java,然后配置java环境变量 JAVA_HOME:即安装j…

【转载】CSDN-markdown语法之如何使用LaTeX语法编写数学公式

此博客为转载,原作者为"小敏纸",原文链接为http://blog.csdn.net/lanxuezaipiao/article/details/44341645#logic 感谢原作者的辛勤劳动! 目录 目录正文标记公式 行内公式块级公式 上标和下标分数表示各种括号根号表示省略号矢量表…

codeforces 755F F. PolandBall and Gifts(贪心+多重背包)

题目链接: F. PolandBall and Gifts time limit per test1.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIts Christmas time! PolandBall and his friends will be giving themselves gifts. There are n Balls overall. …

STL序列容器之vector

一,vector容器简介 1.vector容器的原理 vector是将元素置于一个动态数组中加以管理的容器。 2.vector容器的特点 vector容器可以随机存取元素,支持索引存取(即用数组下标的方式存取)。vector容器在尾部插入和删除数据比较快&#…