• 非对称密码体制详解


    0x01 非对称密码体制

    非对称密码又称为公钥密码,意思为每对加密包含一个公钥(可能为他人所知)和一个私钥(可能不为所有人所知)。有效的安全需要保持私钥的私密性;公钥可以在不影响安全性的情况下公开分发。

    在使用非对称加密时,任何人都可以使用预期接收者的公钥对消息进行加密,但该加密消息只能使用接收者的私钥解密。

    使用非对称加密传递密钥

    对此,维基给出了一个生动的例子:
    服务器程序生成用于对称密钥加密的加密密钥,然后使用客户端的公开共享公钥来加密新生成的对称密钥。

    然后,服务器可以通过不安全的通道将此加密的对称密钥发送给客户端;只有客户端才能使用客户端的私钥(与服务器用来加密消息的公钥配对)对其进行解密。

    由于客户端和服务器都具有相同的对称密钥,它们可以安全地使用对称密钥加密,通过其他不安全的通道进行通信。该方案的优点是不必手动预共享对称密钥,同时获得对称密钥加密的更高数据吞吐量优势。

    使用非对称加密进行身份验证

    也可以使用公钥加密进行身份验证,其中使用发件人的私钥对消息进行签名,并且可以由有权访问发件人公钥的任何人验证。发件人可以将消息与私钥结合起来,在消息上创建一个简短的数字签名。

    任何拥有发件人相应公钥的人都可以通过公钥解密后,将该消息与数字签名进行比较;如果签名与消息匹配,则验证消息的来源。

    非对称加密体系的应用

    通过上述的两个总结,可以汇总下非对称加密体系的应用:

    • 公钥加密系统最明显的应用是加密通信以提供机密性——发送者使用接收者的公钥加密的消息,该公钥只能由接收者的配对私钥解密。
    • 公钥密码学中的另一个应用是数字签名。数字签名方案可用于发件人身份验证。
    • 不可否认系统使用数字签名来确保一方不能成功地对其文件或通信的作者身份提出异议。
    • 在此基础上构建的其他应用包括:数字现金、密码认证密钥协议、时间戳服务和不可否认协议。
    • 许多协议依赖于非对称加密,包括使 HTTPS 成为可能的传输层安全 ( TLS ) 和安全套接字层 ( SSL ) 协议。(在网站和浏览器之间建立加密链接也利用了非对称加密。)
    • 加密货币。比特币和其他加密货币依赖于非对称加密。用户拥有每个人都可以看到的公钥和保密的私钥。

    0x02 非对称密钥的生成

    在 1970 年代中期之前,所有密码系统都使用对称密钥算法,其中发送者和接收者都使用相同的加密密钥和底层算法,他们都必须保密。

    每个此类系统中的密钥都必须在通信方之间以某种安全方式在系统使用之前进行交换——例如,通过安全通道。随着参与者数量的增加,或者当安全通道不可用,或者当(如明智的加密实践)密钥经常更改时,此要求绝不是微不足道的,并且很快变得难以管理。特别是,如果消息要对其他用户保密,则每对可能的用户都需要一个单独的密钥。

    0x03 非对称密码体制的机密性

    非对称加密体系是现代密码系统中的基本安全原语,包括为通信和数据存储的机密性、真实性和不可否认性提供保证的应用程序和协议。

    机密性

    • 在通信双方需要相互通信机密信息时,接收方先生成一对公钥和私钥(私钥严格保密)
    • 接收方将公钥发送给发送方
    • 发送方使用公钥对信息进行加密
    • 发送方发送加密后的信息给接收方
    • 接收方通过自己的私钥对信息进行解密得到明文

    0x04 非对称密码体制的优缺点

    优点

    • 不需要交换密钥,消除了密钥分配问题
    • 可用于数字签名,方便进行身份验证
    • 允许不可否认性,因此发件人不能拒绝发送消息
    • 解密密钥(私钥)不需要通过网络传输,提高了安全性

    缺点

    • 丢失私钥的情况下就无法解密
    • 公钥没有经过身份验证,所以没有人可以确保公钥属于指定的人

    0x05 最广泛使用的公钥加密算法

    RSA

    RSA是最广泛使用的非对称算法,RSA嵌入在 SSL/TLS 中,用于通过计算机网络提供安全通信。
    RSA 的安全性源于将大整数分解为两个大素数的乘积的计算难度。将两个大素数相乘很容易,但从乘积中确定原始数字的困难。

    因式分解构成了公钥密码安全性的基础,将两个足够大的素数乘积分解所需的时间超出了大多数攻击者的能力。

    RSA 密钥的长度通常为 1024 或 2048 位,但专家认为 1024 位密钥很快就会被破解,这就是政府和行业正在转向最小密钥长度为 2048 位的原因。

    椭圆曲线密码术(ECC)

    ECC是一种基于椭圆曲线理论的公钥加密技术,它可以通过椭圆曲线方程的特性创建更快、更小、更高效的密码密钥。

    要破解 ECC,攻击者必须计算椭圆曲线离散对数,这比因式分解要困难得多。因此,ECC 密钥大小可以显着小于 RSA 所需的大小,同时仍以较低的计算能力和电池资源使用提供同等的安全性。

  • 相关阅读:
    动态规划--(不同的子序列,编辑距离,两个字符串的删除)
    Mybatis当传入参数为0时,动态sql语句条件不生效
    从零开始 Spring Boot 21:Activiti
    LeetCode 面试题 16.07. 最大数值
    JAVA计算机毕业设计扶贫信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    小程序如何设置自取规则
    2022.6.30-----leetcode.1175
    javascript复习之旅 9.2初识到手写 javascript 中的 bind 函数
    Java多线程 Future和FutureTask的使用和源码分析(全解析)
    【Web前端】CSS-定位详解
  • 原文地址:https://blog.csdn.net/weixin_43211186/article/details/125439739