技术标签: 计算机网络
目录
本文非原创,图片等资源都来自原博,仅供学习之用。原博见脚注。
缩略语 | 英文名称 | 解释 |
---|---|---|
AES | Advanced Encryption Standard | 高级加密标准 |
CA | Certificate Authority | 证书机构 |
DES | Data Encryption Standard | 数据加密标准 |
HTTPS | Hypertext Transfer Protocol Secure | 安全超文本传输协议 |
MAC | Message Authentication Code | 消息验证码 |
MD5 | Message Digest 5 | 消息摘要算法5 |
PKI | Public Key Infrastructure | 公钥基础设施 |
RSA | Rivest Shamir and Adleman | 非对称密钥算法的一种 |
SHA | Secure Hash Algorithm | 安全散列算法 |
SSL | Secure Sockets Layer | 安全套接层 |
VPN | Virtual Private Network | 虚拟专有网络 |
SSL是一个不依赖于平台和运用程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持。
图:SSL在协议层中的位置
SSL具有例如以下长处:
提供较高的安全性保证。
SSL利用数据加密、身份验证和消息完整性验证机制。保证网络上传输数据的安全性。
支持各种应用层协议。
尽管SSL设计的初衷是为了解决万维网安全性问题,可是因为SSL位于应用层和传输层之间。它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。
部署简单。
眼下SSL已经成为网络中用来鉴别站点和网页浏览者身份,在浏览器使用者及Webserver之间进行加密通信的全球化标准。SSL协议已被集成到大部分的浏览器中,如IE、Netscape、Firefox等。这就意味着差点儿随意一台装有浏览器的计算机都支持SSL连接。不须要安装额外的client软件。
SSL协议实现的安全机制包含:
传输数据的机密性:利用对称密钥算法对传输的数据进行加密。
身份验证机制:基于证书利用数字签名方法对server和client进行身份验证,当中client的身份验证是可选的。
消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。
网络上传输的数据非常容易被非法用户窃取,SSL采用在通信两方之间建立加密通道的方法保证传输数据的机密性。
所谓加密通道,是指发送方在发送数据前,使用加密算法和加密密钥对数据进行加密,然后将数据发送给对方。接收方接收到数据后,利用解密算法和解密密钥从密文中获取明文。没有解密密钥的第三方,无法将密文恢复为明文,从而保证传输数据的机密性。
加解密算法分为两类:
对称密钥算法:数据加密和解密时使用同样的密钥。
非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。
利用公钥(或私钥)加密的数据仅仅能用对应的私钥(或公钥)才干解密。
与非对称密钥算法相比。对称密钥算法具有计算速度快的长处,通经常使用于对大量信息进行加密(如对全部报文加密);而非对称密钥算法,一般用于数字签名和对较少的信息进行加密。
SSL加密通道上的数据加解密使用对称密钥算法。眼下主要支持的算法有DES、3DES、AES等,这些算法都能够有效地防止交互数据被窃听。
对称密钥算法要求解密密钥和加密密钥全然一致。因此,利用对称密钥算法加密数据传输之前。须要在通信两端部署同样的密钥。
“对称加密”和“非对称加密”的概念
什么是“加密”和“解密”?
通俗而言,你可以把“加密”和“解密”理解为某种【互逆的】数学运算。就好比“加法和减法”互为逆运算、“乘法和除法”互为逆运算。
“加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东东——叫做“密钥”——来参与数学运算。
什么是“对称加密”?
所谓的“对称加密技术”,意思就是说:“加密”和“解密”使用【相同的】密钥。这个比较好理解。就好比你用 7zip 或 WinRAR 创建一个带密码(口令)的加密压缩包。当你下次要把这个压缩文件解开的时候,你需要输入【同样的】密码。在这个例子中,密码/口令就如同刚才说的“密钥”。
什么是“非对称加密”?
所谓的“非对称加密技术”,意思就是说:“加密”和“解密”使用【不同的】密钥。这玩意儿比较难理解,也比较难想到。当年“非对称加密”的发明,还被誉为“密码学”历史上的一次革命。
一般来说指:加密时使用公钥,解密时使用私钥
各自有什么优缺点?
“对称加密”的好处是性能较好,但由于要让客户端掌握密钥,需将密钥在网络上传输,故不安全
“非对称加密”的好处是限制了公钥的能力,即用公钥加密后只能在服务端用私钥解密,这样使得”解密的能力仅保留在服务端“,缺点也很明显,这样只能实现单向加密,客户端没有解密能力.另外由于”非对称加密”涉及到“复杂数学问题”,所以性能相对而言较差.
SSL对两种加密的利用?
为了获得较优的性能,对话的内容用”对称加密”,而对于”对称加密”带来的密钥传输问题,则由”非对称加密”来解决,由于客户端没有”非对称加密”的解密能力,所以密钥由客户端来产生并用公钥加密传输给服务端,这样就(在思路上)解决了密钥传输的安全问题和对话数据解密的性能问题.
电子商务和网上银行等应用中必须保证要登录的Webserver是真实的,以免重要信息被非法窃取。SSL利用数字签名来验证通信对端的身份。
非对称密钥算法能够用来实现数字签名。因为通过私钥加密后的数据仅仅能利用相应的公钥进行解密,因此依据解密是否成功,就能够推断发送者的身份。如同发送者对数据进行了“签名”。比如。Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密,假设解密结果与固定信息同样。那么就能够确认信息的发送者为Alice,这个过程就称为数字签名。
SSLclient必须验证SSLserver的身份,SSLserver是否验证SSLclient的身份。则由SSLserver决定。SSLclient和SSLserver的身份验证过程。请参见“3.2 SSL握手过程”。
使用数字签名验证身份时。须要确保被验证者的公钥是真实的,否则。非法用户可能会冒充被验证者与验证者通信。如图1所看到的。Cindy冒充Bob,将自己的公钥发给Alice,并利用自己的私钥计算出签名发送给Alice,Alice利用“Bob”的公钥(实际上为Cindy的公钥)成功验证该签名,则Alice觉得Bob的身份验证成功,而实际上与Alice通信的是冒充Bob的Cindy。SSL利用PKI提供的机制保证公钥的真实性,具体介绍请参见“2.5 利用PKI保证公钥的真实性”。
为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。
MAC算法是在密钥参与下的数据摘要算法,能将密钥和随意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如图2所看到的。
发送者在密钥的参与下,利用MAC算法计算出消息的MAC值。并将其加在消息之后发送给接收者。接收者利用相同的密钥和MAC算法计算出消息的MAC值。并与接收到的MAC值比较。假设二者相同。则报文没有改变;否则,报文在传输过程中被改动,接收者将丢弃该报文。
MAC算法具有例如以下特征,使其可以用来验证消息的完整性:
消息的不论什么改变,都会引起输出的固定长度数据产生变化。通过比较MAC值,可以保证接收者可以发现消息的改变。
MAC算法须要密钥的参与。因此没有密钥的非法用户在改变消息的内容后,无法加入正确的MAC值。从而保证非法用户无法任意改动消息内容。
对称密钥算法和MAC算法要求通信两方具有同样的密钥。否则解密或MAC值验证将失败。因此。要建立加密通道或验证消息完整性,必须先在通信两方部署一致的密钥。
SSL利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如图3所看到的,SSLclient(如Web浏览器)利用SSLserver(如Webserver)的公钥加密密钥,将加密后的密钥发送给SSLserver。仅仅有拥有相应私钥的SSLserver才从密文中获取原始的密钥。SSL通常采用RSA算法加密传输密钥。
实际上,SSLclient发送给SSLserver的密钥不能直接用来加密数据或计算MAC值。该密钥是用来计算对称密钥和MAC密钥的信息,称为premaster secret。SSLclient和SSLserver利用premaster secret计算出同样的主密钥(master secret)。再利用master secret生成用于对称密钥算法、MAC算法等的密钥。premaster secret是计算对称密钥、MAC算法密钥的关键。
用来实现密钥交换的算法称为密钥交换算法。非对称密钥算法RSA用于密钥交换时,也能够称之为密钥交换算法。
利用非对称密钥算法加密密钥之前,发送者须要获取接收者的公钥,并保证该公钥确实属于接收者。否则。密钥可能会被非法用户窃取。如图1所看到的。Cindy冒充Bob,将自己的公钥发给Alice。Alice利用Cindy的公钥加密发送给Bob的数据。Bob因为没有相应的私钥无法解密该数据,而Cindy截取数据后,能够利用自己的私钥解密该数据。SSL利用PKI提供的机制保证公钥的真实性,具体介绍请参见“2.5 利用PKI保证公钥的真实性”。
PKI通过数字证书来公布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包括用户的公钥及其身份信息的文件,证明了用户与公钥的关联。
数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。
SSLclient把密钥加密传递给SSLserver之前,SSLserver须要将从CA获取的证书发送给SSLclient,SSLclient通过PKI推断该证书的真实性。假设该证书确实属于SSLserver,则利用该证书中的公钥加密密钥,发送给SSLserver。
验证SSLserver/SSLclient的身份之前,SSLserver/SSLclient须要将从CA获取的证书发送给对端。对端通过PKI推断该证书的真实性。
假设该证书确实属于SSLserver/SSLclient,则对端利用该证书中的公钥验证SSLserver/SSLclient的身份。
如图4所看到的,SSL位于应用层和传输层之间,它能够为不论什么基于TCP等可靠连接的应用层协议提供安全性保证。SSL协议本身分为两层:
上层为SSL握手协议(SSL handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol)。
底层为SSL记录协议(SSL record protocol)。
当中:
SSL握手协议:是SSL协议很重要的组成部分。用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在server和client之间安全地交换密钥、实现server和client的身份验证。
SSLpassword变化协议:client和server端通过password变化协议通知对端。随后的报文都将使用新协商的加密套件和密钥进行保护和传输。
SSL警告协议:用来向通信对端报告告警信息,消息中包括告警的严重级别和描写叙述。
SSL记录协议:主要负责对上层的数据(SSL握手协议、SSLpassword变化协议、SSL警告协议和应用层协议报文)进行分块、计算并加入MAC值、加密。并把处理后的记录块传输给对端。
SSL通过握手过程在client和server之间协商会话参数,并建立会话。会话包括的主要参数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret)。通过SSL会话传输的数据,都将采用该会话的主密钥和加密套件进行加密、计算MAC等处理。
不同情况下,SSL握手过程存在差异。
以下将分别描写叙述以下三种情况下的握手过程:
仅仅验证server的SSL握手过程
验证server和client的SSL握手过程
恢复原有会话的SSL握手过程
如图5所看到的,仅仅须要验证SSLserver身份,不须要验证SSLclient身份时,SSL的握手过程为:
简单的说便是:SSL客户端(也是TCP的客户端)在TCP链接建立之后,发出一个ClientHello来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个ServerHello,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
(1) SSLclient通过Client Hello消息将它支持的SSL版本号、加密算法、密钥交换算法、MAC算法等信息发送给SSLserver。
(2) SSLserver确定本次通信採用的SSL版本号和加密套件,并通过Server Hello消息通知给SSLclient。假设SSLserver同意SSLclient在以后的通信中重用本次会话,则SSLserver会为本次会话分配会话ID。并通过Server Hello消息发送给SSLclient。
(3) SSLserver将携带自己公钥信息的数字证书通过Certificate消息发送给SSLclient。
(4) SSLserver发送Server Hello Done消息。通知SSLclient版本号和加密套件协商结束。開始进行密钥交换。
(5) SSLclient验证SSLserver的证书合法后,利用证书中的公钥加密SSLclient随机生成的premaster secret,并通过Client Key Exchange消息发送给SSLserver。
(6) SSLclient发送Change Cipher Spec消息,通知SSLserver兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。
(7) SSLclient计算已交互的握手消息(除Change Cipher Spec消息外全部已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并加入MAC值、加密等),并通过Finished消息发送给SSLserver。SSLserver利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較,假设二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
(8) 相同地。SSLserver发送Change Cipher Spec消息,通知SSLclient兴许报文将採用协商好的密钥和加密套件进行加密和MAC计算。
(9) SSLserver计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并加入MAC值、加密等),并通过Finished消息发送给SSLclient。SSLclient利用相同的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比較,假设二者相同。且MAC值验证成功。则证明密钥和加密套件协商成功。
SSLclient接收到SSLserver发送的Finished消息后。假设解密成功,则能够推断SSLserver是数字证书的拥有者,即SSLserver身份验证成功,由于仅仅有拥有私钥的SSLserver才干从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSLclient对SSLserver的身份验证。
说明:
* Change Cipher Spec消息属于SSLpassword变化协议,其它握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。
* 计算Hash值。指的是利用Hash算法(MD5或SHA)将随意长度的数据转换为固定长度的数据。
SSLclient的身份验证是可选的,由SSLserver决定是否验证SSLclient的身份。
如图6中蓝色部分标识的内容所看到的,假设SSLserver验证SSLclient身份。则SSLserver和SSLclient除了交互“3.2.1 仅仅验证server的SSL握手过程”中的消息协商密钥和加密套件外,还须要进行下面操作:
(1) SSLserver发送Certificate Request消息。请求SSLclient将其证书发送给SSLserver。
(2) SSLclient通过Certificate消息将携带自己公钥的证书发送给SSLserver。SSLserver验证该证书的合法性。
(3) SSLclient计算已交互的握手消息、主密钥的Hash值。利用自己的私钥对其进行加密,并通过Certificate Verify消息发送给SSLserver。
(4) SSLserver计算已交互的握手消息、主密钥的Hash值。利用SSLclient证书中的公钥解密Certificate Verify消息,并将解密结果与计算出的Hash值比较。假设二者同样,则SSLclient身份验证成功。
协商会话参数、建立会话的过程中。须要使用非对称密钥算法来加密密钥、验证通信对端的身份。计算量较大,占用了大量的系统资源。
为了简化SSL握手过程。SSL同意重用已经协商过的会话,详细过程为:
(1) SSLclient发送Client Hello消息,消息中的会话ID设置为计划重用的会话的ID。
(2) SSLserver假设同意重用该会话,则通过在Server Hello消息中设置同样的会话ID来应答。这样,SSLclient和SSLserver就能够利用原有会话的密钥和加密套件。不必又一次协商。
(3) SSLclient发送Change Cipher Spec消息,通知SSLserver报文将采用原有会话的密钥和加密套件进行加密和MAC计算。
(4) SSLclient计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSLserver,以便SSLserver推断密钥和加密套件是否正确。
(5) 相同地。SSLserver发送Change Cipher Spec消息,通知SSLclient报文将采用原有会话的密钥和加密套件进行加密和MAC计算。
(6) SSLserver计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSLclient。以便SSLclient推断密钥和加密套件是否正确。
HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制。为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。
图8为HTTPS在网上银行中的应用。某银行为了方便客户,提供了网上银行业务,客户能够通过访问银行的Webserver进行帐户查询、转帐等。
通过在客户和银行的Webserver之间建立SSL连接,能够保证客户的信息不被非法窃取。
SSL VPN是以SSL为基础的VPN技术。利用SSL提供的安全机制,为用户远程访问公司内部网络提供了安全保证。如图9所看到的。SSL VPN通过在远程接入用户和SSL VPN网关之间建立SSL安全连接,同意用户通过各种Web浏览器,各种网络接入方式,在不论什么地方远程访问企业网络资源。并可以保证企业网络的安全,保护企业内部信息不被窃取。
[1] SSL工作原理 https://www.cnblogs.com/bhlsheji/p/4586597.html
[2] SSL协商及密钥交换 https://blog.csdn.net/substitute_coder/article/details/57512131
文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别
文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具
文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量
文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置
文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖
文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...
文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序
文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码
文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型
文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件
文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令
文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线