Web安全概述

500450096_wx.jpg

互联网刚开始是安全的,可是伴随着黑客(Hacker)的诞生,互联网变得愈来愈不安全。任何一个事情都有两面性,黑客也有好有坏,好的黑客叫白帽子,坏的黑客叫黑帽子。与此同时,随着Web技术发展愈来愈成熟,而非Web服务(如Windows操做系统)愈来愈少的暴露在互联网上,如今互联网安全主要指的是Web安全。算法

既然要讲Web安全,首先介绍什么是安全,安全的本质是什么?引用《白帽子讲安全》里对安全的定义:安全问题的本质就是信任问题。举例来讲,自行车的车锁,咱们认为是安全的,由于咱们认为自行车锁的制造商是不会背着咱们留有钥匙,若是这个信任都没有的话,那么这个自行车就是不安全的。安全

在介绍完什么是安全的本质后,咱们继续讲解安全的三要素,机密性、完整性和可用性。机密性指的是要求保护数据内容不能泄露,加密是实现机密性要求的常见方法。完整性指的是保护数据内容是完整的、没有被篡改的,实现完整性的常见方法是数字签名。可用性要求保护资源是随需而得,黑帽子一般经过DDos攻击抢占服务器的资源,致使正经常使用户不能正常访问。接下来介绍常见的加密算法和数字签名算法。服务器

加密算法

常见加密算法有对称加密和非对称加密,对称加密指的是加密和解密用的同一个密钥,而非对称加密的加密过程和解密过程用的是不一样密钥,常见对称加密有DES(Data Encryption Standard,数据加密标准)和AES,而非对称加密有RSA。网络

  1. 对称加密算法

对称加密算法咱们主要介绍AES(Advanced Encryption Standard,高级加密标准),AES三个基本概念:密钥、填充、模式。根据密钥长度,AES又能够细分为AES12八、AES19二、AES256。下面介绍AES的加密流程,首先将明文分解为大小为128bit小块,而后将这些明文小块放入AES加密器各自生成密文块。当将明文小块大小小于128bit时,须要对这个明文小块进行填充操做。而AES加密器提供了CBC、ECB、CTR等5种模式。 加密

image.png

  1. 非对称加密算法

非对称加密算法咱们主要介绍RSA算法,RSA算法基于大数分解难而使得该算法异常安全。下面咱们开始描述RSA算法,首先选择两个充分大的质数p和q,并计算 n=pq。接下来计算m=(p-1)(q-1),最后找出两个数e和d,使得 (e*d) mod m =1。其中e和n就是公钥,而d和n就是私钥。任何知道公钥的人均可以利用公式 c = a^e mod n把原始数据加密成一个密文,私钥的持有者能够经过公式 c^d mod n 计算原始数据a。经过计算公式咱们也能够发现加密和解密的算法是不同的,这也是”非对称“的由来。操作系统

  1. 融合对称加密算法和非对称加密算法

经过对对称加密算法和非对称加密算法的介绍,咱们知道若是A、B两我的想要创建会话,为了保证会话的机密性,咱们须要对数据进行加密,这个密码本只有A、B两我的知道,而如何保证这个密码本在传输的过程当中不被第三者窃取呢?咱们能够经过非对称加密对密码本进行加密,即A首先呼叫B,并索要B的公钥,而后用B的公钥对密码本进行加密并将密文发送给B,B收到A的消息以后,用本身的私钥进行解密。这个过程看起来已经很完美了,可是有一个让人意想不到的漏洞--中间人攻击。中间人在网络中发现A索要B的公钥这条消息,当B将本身的公钥发送给A时,中间人截取B的公钥,并将本身的公钥发送给A。接下来,A将本身的密码本经过中间人的公钥继续加密发送给B,中间人截取A发出来的这条消息,用本身的私钥进行解密,而后用B的公钥进行加密,从新发送给B。B收到消息后并不会发现什么异常,由于B能用本身的私钥进行解密。可是它们都不知道中间人已经彻底掌握了它们的密码本。设计

中间人攻击是在获取对方公钥的时进行替换,那么,解决这个问题的办法就是创建一个获取对方公钥的可信渠道。一个简单而有效地办法就是创建一个全部人都信任的权威机构,有改权威机构来存储并分发你们的公钥。这就是咱们一般所说的数字认证机构,英文是Certificate Authority,简称CA。任何人均可以申请把本身的公钥放到CA上去,不过CA必须亲自检验申请者是否是符合资格。若是A想要和B创建会话,那么A直接从CA出获取B的公钥,这样A就不用担忧拿到的公钥是否是假的。cdn

签名算法

中间人既然能假扮公钥,会不会假扮CA呢?答案是确定的。这样一来,CA不但须要向A保证“这个公钥确实是B的”,还要向A证实”我确实是CA“。对应的解决方法是数字签名算法。CA首先生存一个本身的公钥私钥对,而后将公钥公之于众。以后,CA对每条发出去的消息都用本身的私钥加个密做为签名,以此证实消息的来源是真实的。接受方收到消息以后,用CA的公钥进行解密,若是能解得开,则说明对方必定是真实的CA。由于,这样的消息只有私钥持有者才能作的出来。至此为止,加密算法和签名算法就讲解完毕,一条安全的通讯线路的设计也有了一个比较完美的方案。blog

相关文章
相关标签/搜索