黑客24小时在线接单网站

黑客24小时在线接单网站,黑客接单,接单网站,黑客入口

面试官:你了解数据安全传输吗?

看到这个标题,很多老铁会坚钉截铁地说,我会!HTTPS 安全传输。

对,很优秀,那你知道 HTTPS 底层是如何保证数据的安全性的我们今天的主题介绍:HTTPS 如何实现数据安全传输。

HTTPS 认知

HTTPS 其实是 HTTP SSL 由协议组成的安全协议。

我们知道,从我们输入 URL 到页面呈现的过程是作用于 HTTP 协议的,HTTP 协议保证了我们网络传输数据的基础,但不能保证安全, SSL 协议作用于 Http 协议可以解决安全问题。

HTTPS 保证以下三点:

                   
  • 加密数据内容
  •                
  • 数据完整性保护(数字摘要、数字签名)
  •                
  • 身份认证
HTTPS 保证安全要点:

                   
  • 握手阶段: 公钥 采用非对称加密技术
  •                
  • 传输阶段:使用 对称加密技术 加密
由于 HTTPS 使用不对称加密算法加密公钥的过程多了一层,因此建立连接时间比 HTTP 要慢。

握手阶段确保连接安全,后续数据传输可数据传输可以安全传输,因此可以使用较少的对称加密算法来加密报纸。

HTTPS 解构:

在上图中,我们可以看到 SSL 协议的作用是了解 ,以确保数据安全SSL 协议前,我们先了解一些关于数据安全的概念。

加解密相关概念

1. 对称加密

别名: 私钥加密、单密钥算法、传统密码算法。

概念: 指使用 相同的密钥 进行加密解密,因此可以从加密钥或解密钥计算加密钥。

常用的对称加密算法: DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA

2. 不对称加密

别名: 公钥加密

概念: 公钥是公开的,私钥存储在通信两端的手中。客户端与加密公钥形成一对密钥对, 服务端与加密公钥形成另一对密钥对,解密密钥成对

限制: 加密内容的长度不得超过公钥的长度

3. 数字摘要

别名: 数字指纹

概念: 明文采用单项 Hash 函数产生的一串固定长度(128 位)的密文。

4. 数字签名

概念:混合应用非对称密钥加密技术和数字摘要

(1) 数字签名过程

                   
  • 用于发送者Hash 函数 (H) 将原文生成数字摘要 A
  •                
  • 发送者使用自己的私钥对数字进行摘要 A 加密生成密文 CypherA
  •                
  • 将密文 CypherA 与原文一起传送给接收者
(2) 数字签名验证(信息完整性)过程

                   
  • 接收者使用 Hash 函数 (H) 将收到的原文生成数字摘要 B (B === A,H 函数相同)
  •                
  • 接收者使用公钥对接收到的加密文章 (CypherA) 解密,获得数字摘要 B'
  •                
  • 对比 B' 与 B 是否相等, 如果相等,则表示收到的信息是完整的,信息确实由发送方签名并发送(因为只有发送方知道私钥),在传输过程中未修改;否则,信息将被修改

最后比较数字摘要 A 数字摘要 A是否相等,也可逆向使用 Hash()函数,摘要 A还原得到明文,比较明文是否与传来的原文一致(都是 pig)。

数字签名是一个加密过程,数字签名验证 是一个解密过程。数字签名涉及哈希函数、接收人公钥和发送人[私钥]。

(3) 伪代码

  • //单项Hash函数
  • fucntionHash(plainText){//传入明文参数
  • ///明文加密过程
  • constencryptencryptedAbstract=encrypt(plainText)
  • ///返回固定长度(128位)的数字摘要
  • returnencryptedAbstract
  • }
  • ///发送者用自己的私钥加密明文产生的数字摘要,生成密文CypherA
  • functiondoEncrypt(senderPrivateKey,encryptedAbstract){
  • constCypherA=encrypt(senderPrivateKey,encryptedAbstract)
  • returnCypherA
  • }
  • //发送报文
  • functionsendMessage(plainText){
  • constencryptedAbstract=Hash(plainText)
  • constCypherA=doEncrypt(senderPrivateKey,encryptedAbstract)//加密
  • return{
  • CypherText:CypherA,
  • originText:plainText
  • }
  • }
  • ////接收者用公钥解密
  • functiondoDecrypt(publicKey,encryptedAbstract){
  • constdecryptdecryptedAbstract=decrypt(publicKey,encryptedAbstract)
  • returndecryptedAbstract
  • }
  • //接收报文
  • functionreceiveMessage(CypherA,plainText){
  • constencryptedAbstract=Hash(plainText)
  • constdecryptedAbstract=doDecrypt(publicKey,encryptedAbstract)//解密
  • if(decryptedAbstract===encryptedAbstract){
  • console.log('1、thesenderistrue信息发送者的确认
  • console.log('2、themessageiscomplete////确认消息的完整性
  • }
  • }
  • constmessage=sendMessage(plainText)///数字签名流程
  • receiveMessage(message.CypherText,message.originText)////数字签名认证过程
  • 5. 数字证书

    在上述数字签名过程中,如何保证公钥可靠?这就是数字证书存在的必要性。

    数字证书主要用于加密、签名和身份认证。

    证书颁发机构数字证书(CA,Certification Agent) 颁发,CA 在颁发证书和使用证书前验证持有人的身份,使客户能够识别公钥是否来自合法服务器。

    证书颁发机构(CA) 颁发包含公钥和所有者身份的数字证书。匹配的私钥不是公开的,而是由生成密钥的最终用户保密的。证书或 CA 确认或验证证书中包含的公钥属于证书中标注的个人、组织、服务器或其他实体。CA 此类方案的义务是验证申请人的凭证,使用户和信任方能够信任 CA 证书中的信息。

    当您访问使用 HTTPS(安全连接)网站时,网站服务器将向浏览器(如 Chrome)证明网站的身份。证书中包含的公钥信息是可靠的。 如果证书不存在,证书被篡改,证书无效,浏览器会提示您的网站在左上角不安全。

    签名验证链:client <- 服务器 <- CA

    数字证书内容:

                     
    • 证书颁发机构的名称
    •                
    • 证书本身的数字签名
    •                
    • 证书持有者公钥
    •                
    • 用于签名证书Hash 算法
    •                
    • ... 等等

    公钥和数字签名

    在理解了这些基本概念之后,进入我们今天的主题:SSL 协议如何保证数据的安全传输。

    SSL/TLS

    1. SSL(Secure Socket Layer,安全套接字层)

    在网络传输过程中,使用加密技术确保数据不会被盗。

    2. TLS (Transport Layer Security,传输层安全协议)

    在两个应用程序之间提供保密性和数据完整性。

    该协议以 为基础SSL3.0 在协议的基础上,可以理解为 SSL3.1 版本。就在 SSL3.0 在使数据更安全的基础上,采用了一些更安全的策略。其他协议分层和功能 SSL 一致。如果你感兴趣,你可以自己了解它和 SSL 的区别和优点。

    SSL/TLS 协议的作用:

                     
    • 数据加密,防止被盗
    •                
    • 保护数据的完整性,确保数据不会改变
    •                
    • 身份认证,确保数据发送到正确的客户端和服务器
    可见这是 HTTPS 协议的三点。

    那么,SSL 协议如何加密我们的数据以安全传输?

    3. SSL、TLS 握手过程

    (1) 客户端通知服务端支持的 安全协议版本(如 TLS1.0)、加密算法、压缩方法、随机数 CRandom1;

    (2) 服务端首次响应,返回版本、加密算法、压缩方法、随机数 安全协议SRandom,还有 数字证书(服务器证书);

    (3)客户端对服务端发送的证书进行验证,验证后进行以下操作:

                     
    • 客户端再次产生随机数 CRandom2
    •                
    • 使用服务器证书中的公钥对数据进行进行加密,生成随机数 CRandom3
    •                
    • 发送 ChangeCipherSpec(编码变更)消息通知(通知服务器,我已经准备好用我们之前讨论过的加密套件加密并传输数据) ,所有消息的 hash 和 加密数据 CRandom3 服务器验证
    •                
    • 使用与服务器确认的加密算法 CRandom1、CRandom2、CRandom3 加密三个随机数,生成 Session Secret(这是使用对称加密算法传输数据时使用的对称加密密钥,也可用于 会话恢复,节省 SSL 的握手时间)
    (4) 服务器再次响应:

                     
    • 用自己的私钥对 CRandom3 解密并验证解密数据
    •                
    • 发送 ChangeCipherSpec(编码变更)消息通知(通知客户端,我也准备好使用我们之前讨论过的加密套件和 Session Secret 加密数据)
    •                
    • 使用 Session Secret 加密一段 Finish 消息发送给客户端,验证之前握手建立的加解密通道是否成功
    在以上四个步骤中,客户端和服务器已经确定了密钥,可以加密和传输消息。

    握手过程结束了。

    整个握手阶段的安全取决于第三个随机数 CRandom3 是否可以破解,因为这个随机数是由服务端的公钥和服务端的私钥加密的;私钥只存储在服务端本身。

    对称加密技术可用于在所有握手阶段完成后传输应用数据。

    QA

    1. 客户端如何验证收到的证书?

    证书本身已经告诉客户如何验证证书的真实性。也就是说,证书上写着如何根据证书的内容生成证书编号。客户端获得证书后,根据证书上的方法生成证书编号。如果生成的证书编号与证书上的证书编号相同,则表明证书是真实的。

    2. 公钥的安全性是通过证书确认的,但证书是由发证机构颁发的。如何确认发证人是可信的?

    通过证书链。

                     
    • root:权威证书认证机构 (CA,Certificate Authority) 给自己颁发的数字证书,也就是认证自己。上图中的根证是 DigiCert Global Root CA 自己给自己签发的。
    •                
    • intermediates:中间证,根 CA 生成一对公钥和私钥,中间 用私钥CA 信息和公钥 “加密” 生成签名,包装获得中间证书。需要注意的是,中间 CA 可能不止一个。CA 也按照这个逻辑给下一级 CA 签发证书。CA 就是 RapidSSL RSA CA 2018年,它向终端用户签发证书。
    •                
    • end-user:终端用户(证书)。图中的终端证书是 *.juejin.im 使用的数字证书。
    可以看出,证书链是由多个证书层层组成的。除了向用户加密报纸外,其他证书中的公钥还用于解密下一层的证书指纹签名。最高级别的根证书是自己签名的,也就是自己颁发的,所以 根证书必须可信(你不能相信自己吗?^^)

    总结

    网络安全传输数据依赖 SSL 协议,网络传输协议是 HTTP,因此构成 HTTPS 协议HTTPS 为了确保客户端和服务器端的高效通信安全,必须使用对称加密算法,但协商对称加密算法的过程,需要使用不对称加密算法来确保安全,但直接使用不对称加密过程本身不安全,中间人可能篡改公钥,因此客户端和服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书,以确保不对称加密过程本身的安全。

    这样通过这些机制协商出一个对称加密算法,就此双方使用该算法对数据进行加密解密传输,从而解决了客户端与服务器端之间的通信安全问题。

    • 评论列表:
    •  俗野卮酒
       发布于 2022-05-29 20:41:15  回复该评论
    • 项Hash函数fucntionHash(plainText){//传入明文参数///明文加密过程constencryptencryptedAbstract=encrypt(plainText)///返回

    发表评论:

    «    2024年8月    »
    1234
    567891011
    12131415161718
    19202122232425
    262728293031
    文章归档
    标签列表

    Powered By

    Copyright Your WebSite.Some Rights Reserved.