加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 安全 > 正文

面试官:你知道数据安全传输吗?

发布时间:2022-07-12 14:41:37 所属栏目:安全 来源:互联网
导读:看到这个标题,很多老铁会斩钉截铁的说,这道题我会!就是用 HTTPS 来进行安全传输的。 HTTPS 认知 HTTPS 其实是 HTTP + SSL 协议组成的安全协议。 我们知道,从我们输入 URL 到页面呈现的过程是作用于 HTTP 协议的,HTTP 协议保证我们网络传输数据的基础,但
  看到这个标题,很多老铁会斩钉截铁的说,这道题我会!就是用 HTTPS 来进行安全传输的。
 
 
  HTTPS 认知
 
  HTTPS 其实是 HTTP + SSL 协议组成的安全协议。
 
  我们知道,从我们输入 URL 到页面呈现的过程是作用于 HTTP 协议的,HTTP 协议保证我们网络传输数据的基础,但是安全性无法保证,而 SSL 协议作用于 Http 协议就能解决安全问题。
 
  HTTPS 保证以下三点:
 
  数据内容加密
  数据完整性保护(数字摘要、数字签名)
  身份认证
  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 函数
  fucntion Hash (plainText) { // 传入明文参数
    // 明文加密过程
    const encryptencryptedAbstract = encrypt(plainText)
    // 返回固定长度(128 位)的数字摘要
    return encryptedAbstract
  }
    
  // 发送报文
  function sendMessage (plainText) {
    const encryptedAbstract = Hash(plainText)
    const CypherA = doEncrypt(senderPrivateKey, encryptedAbstract) // 加密
    return {
      CypherText: CypherA,
      originText: plainText
    }
  }
   
  // 接收者用公钥解密
  function doDecrypt (publicKey, encryptedAbstract) {
    const decryptdecryptedAbstract = decrypt(publicKey, encryptedAbstract)
    return decryptedAbstract
  }
    
  const message = sendMessage(plainText) // 数字签名过程
  receiveMessage (message.CypherText, message.originText) // 数字签名认证过程
   5. 数字证书
 
  在上述数字签名的过程中,我们如何保证这个公钥是可信任的?这就是数字证书存在的必要性。
 
  数字证书主要用于加密、签名、身份认证。
 
  数字证书由证书颁发机构(CA, Certification Agent) 颁发, CA 会在颁发证书之前以及使用证书时对持有者的身份进行验证,它让客户端有能力去识别公钥是否来自合法的服务器。
 
  证书颁发机构(CA) 颁发包含公钥和所有者身份的数字证书。匹配的私钥不是公开的,而是由生成密钥对的最终用户保密。证书还是 CA 的确认或验证,证书中包含的公钥属于证书中标注的个人,组织,服务器或其他实体。CA 在此类方案中的义务是验证申请人的凭证,以便用户和信赖方可以信任 CA 证书中的信息。
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读