公钥密码学

2024-09-02 10:12
文章标签 公钥 密码学

本文主要是介绍公钥密码学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 非对称密码学

        非对称密码学(Asymmetric Cryptography) 中的 “非对称” 指的是用于加密数据的密钥和用于解密数据的密钥是不一样的(如果一样,那就是对称密码学)。对称密码学也称为共享密钥密码学。类似地,非对称密码学也有一个别称,即公钥密码学(Public Key Cryptography)。这是因为它使用一对公钥和私钥分别加密和解密数据。目前使用的非对称密码方案包括 RSA、DSA 和 EIGammal。

        下图显示公钥密码学加密/解密的大致过程

         上图显示的公钥密码学加密/解密过程大致如下:发送者使用接收者的公钥对明文数据 P 进行加密(E),生成密文数据 C,然后通过网络将发送给接收者。密文数据 C 到达接收方之后,接收者使用私钥将已加密的密文数据 C 馈送到解密函数 D 中进行解密,解密函数 D 将输出明文数据 P 。

        这样,私钥保留在接收方,无须像对称密码学那样共享密钥即可执行加密和解密。

        下图显示了接收者使用公钥加密来验证接收到的消息的完整性。在此模型中,发送方使用私钥对数据进行签名,然后将消息发送给接收者。接收者收到消息后,将通过发送者的公钥验证其完整性。

        值得注意的是,此模型中没有执行加密和解密的过程。

        在上图中可以看到,发送者使用私钥对明文数据 P 进行数字签名(签名函数 S),生成密文数据 C,该数据被发送到接收者,接收者使用发送者公钥和验证函数 V 验证密文数据 C ,以确保消息确实来自发送者。

        公钥密码系统提供的安全机制包括密钥建立、数字签名、标识、加密和解密。

        密钥建立机制(Key Establishment Mechanism) 与协议的设计有关,协议将允许在不安全的信道上建立密钥。

        可以使用数字签名(Digital Signatures) 来提供不可否认服务,这在许多情况下都是非常理想的方式。

        有时我们不仅要对用户进行身份验证,还要识别交易中涉及的实体,这可以通过数字签名和挑战应答协议( Challenge-Response Protocol) 的组合来实现。

        最后,也可以使用公共密钥密码系统(如 RSA、ECC 和 EIGammal) 来获得提供机密性的加密机制。

        公钥算法在计算方面比对称密钥算法慢,因此,它们不适用于大型文件的加密或实际数据的加密。它们通常用于交换对称算法的密钥。一旦安全地建立了密钥,就可以使用对称密钥算法对数据进行加密。

        公钥加密算法基于各种基础数学函数。

 1.1 整数分解

        公钥密码学的安全源于基本的数学原理。公钥和私钥是有数学联系的,不然解密和签名操作就不可能实现,但是也不是由公钥算出私钥,如果可以算出来,那么加密的安全性就无从谈起。因此,公钥加密算法都是基于一些目前仍然无解的数学问题,也称为单向陷门函数(One-way Trapdoor Function),如整数分解或离散对数。

        整数分解方案(Integer Factorization Scheme)就是基于大整数很难分解的事实,RSA 是此类算法的典型示例。

        大整数分解究竟有多难呢?我们可以使用两个质数的乘积来创建所谓的半质数。半质数是最难分解的,在使用传统计算机的情况下,要将它分解为两个质数的乘积可能要花费超过四千万亿年的时间,这甚至比宇宙的寿命还要长很多。所以,基于整数分解的加密算法目前还是比较安全的。

1.2 离散对数

        离散对数方案(Discrete Logarithm Scheme) 基于模运算中的问题。计算模函数的结果很容易,但是找到生成器(Generator) 的指数在计算上是不切实际的。换句话说,很难从结果中找到输入。离散对数正是目前仍然无解的数学问题之一,它也是一个单向陷门函数。

        例如,考虑以下等式:

        现在,在给定数字 9 的情况下,很难确定前面的方程中发现的结果为 2 (2 正是生成器 3 的指数)。在 Diffie-Hellman 密钥交换和数字签名算法中通常使用此难题。

        Diffie-Hellman 密钥交换过程是非对称密钥交换的典型形式,以 Whitfield Diffie 和 Martin Hellman 的名字命名。

1.3 椭圆曲线

        椭圆曲线算法(Elliptic Curve ALgorithm) 基于离散对数问题,但是,它是有限域上的椭圆曲线的代数。椭圆曲线是域上的代数三次曲线,可以通过以下公式定义。该曲线是非奇异的,这意味着它没有尖点或自相交。它具有两个变量 a 和 b,以及一个无穷大点。

        在这里,a 和 b 是整数,其值是定义椭圆曲线的域的元素。可以在实数、有理数、复数或有限域上定义椭圆曲线。出于加密目的,可使用质数有限域上的椭圆曲线代替实数。此外,质数应大于3 。

        通过改变 a 或 b 的值可以生成不同的曲线。

        基于椭圆曲线最常用的密码系统是椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm ECDSA) 和椭圆曲线密钥交换算法(Elliptic Curve Diffie-Hellman,ECDH)。 

 2. 公钥和私钥

        私钥(Private Key), 顾名思义,是随机生成的数字,该数字是保密的,并由用户私下保存。私钥需要受到保护,不得对该私钥进行未经授权的访问;否则,整个公钥加密方案都会受到威胁,因为私钥是用于解密消息的密钥。私钥的长度可以不同,具体取决于所使用算法的类型和类别。例如,在RSA中,通常使用 1024 位或 2048 位的密钥。1024 位的密钥大小不再被认为是安全的,因此建议至少使用 2048 位的密钥。

        公钥(Public Key) 可免费获得,并由私钥所有者发布。任何想要向公钥发布者发送加密消息的人都可以使用已发布的公钥对消息进行加密,然后将其发送给私钥的持有者。例如,A 有一对公钥和私钥,他可以将公钥发布出去,把私钥自己保存好。B 想要将消息发送给 A,他就可以使用 A 发布的公钥加密消息,然后将加密后的消息发送给 A,其他任何人都无法解密该消息,因为相应的私钥已由预期的接收者(A)安全地持有。接收到公钥加密的消息后,A 就可以使用私钥对消息进行解密。

这篇关于公钥密码学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129672

相关文章

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

NISP | 密码学

关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 通过上一章的学习,我们知道了,网络安全的 CIA 模型,而本期学习的“密码学”,则能为 CIA 模型提供很好的技术支持: 面临的攻击威胁所破坏的信息安全属性解决问题所采用的密码学技术截获(泄露信息)机密性对称密码和非对称密码篡改(修改信息)完整性哈希函数、数字签名、 对称密码和非对称密码伪造(伪造信息来源)真实

公钥密码选择题

一. 单选题 1. (单选题)以下关于对称密码的描述,哪一项是错误的 A. 密钥分配、管理困难B.无法满足数字签名的安全需求C. 加解密速度慢D. 基本组件的设计基于代换和置换,以满足混淆和扩散 正确答案: C 解析: A选项(密钥分配、管理困难):对称密码确实存在密钥分配和管理上的困难,因为通信双方需要共享同一个密钥。B选项(无法满足数字签名的安全需求):对称密码只能保证加密数据的机密

gitee绑定公钥后依旧无法使用_gitee push添加公钥无效

解决:         步骤按照官网操作即可:gitee官方说明         看看远程地址是否使用的http模式,是的话换ssh模式

对称密码学

1. 使用OpenSSL 命令行         在 Ubuntu Linux Distribution (发行版)中, OpenSSL 通常可用。当然,如果不可用的话,也可以使用下以下命令安装 OpenSSL: $ sudo apt-get install openssl 安装完后可以使用以下命令检查 OpenSSL 版本: $ openssl version 其输出将如下所示: O

HTTPS 之共享秘钥 公钥 及 私钥

HTTPS 之共享秘钥 公钥 及 私钥 一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙。 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听,那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥

信息安全(密码学)---数字证书、kpi体系结构、密钥管理、安全协议、密码学安全应用

数字证书 数字证书 (Digital Certificate,类似身份证的作用)----防伪标志 CA(Certificate Authority,电子商务认证授权机构)----ca用自己私钥进行数字签名 数字证书 姓名,地址,组织 所有者公钥 证书有效期 认证机构数字签名 ■ 公钥证书的种类与用途 ■ 证书示例  ·序列号04 ·签名算法md5RSA ·颁发者

Python密码学:cryptography库

在数字时代,确保数据的安全性和隐私至关重要。Python中的cryptography库是一个全面的包,为Python开发者提供了密码学原语和配方。它支持高级配方和常见密码学算法的低级接口。 cryptography库概述 cryptography库旨在易于使用且默认安全。它包括各种密码学操作的高级和低级API,如: 对称加密非对称加密哈希函数消息认证码(MAC)数字签名密钥管理 crypt

*.rpm 的公钥没有安装或者*.rpm is not signed

yum安装gitlab 时提示 "*.rpm is not signed"或者"*.rpm is not signed" ,只需将 /etc/yum.conf 中 "gpgcheck=1" 改为 "gpgcheck=0" 即可。

区块链应用,密码学会议书籍推荐以及隐私保护知识整理

基于区块链技术的安全多方计算项目示例 1. iCube——全球首个安全多方计算区块链金融项目 iCube团队通过与美国普渡大学区块链人工智能实验室深度合作,实现了区块链的安全多方计算。iCube建立了面向信息的终极抽象基础层和基于个人工智能的算法模型层,内置图灵完备编程语言和自主开发的MPC 算法沙盒,从而实现了区块链的多方安全计算。其整个架构如下: 从以上架构图可以看出,与传统区块