面试官:你知道数据安全传输吗?
发布时间: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 证书中的信息。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |