公钥密码学

意义:公钥密码学的发展是整个密码学发展历史中最伟大的一次革命,也许可以说是唯一的一次革命。轮转机和DES是密码学发展的重要标志,但是它们都是基于代替和置换这些初等方法上。

提出背景:为了解决传统密码中最困难的两个问题而提出。1、密码分配;2、数字签名

特点:1、公钥算法是基于数学函数而不是基于代替和置换;2、公钥密码是非对称的,使用两个独立的密钥。

传统密码和公钥密码的区别

   

几个误解:

  1、公钥密钥比传统密码安全

    任何加密方法的安全性依赖于密钥长度和破译密文所需要的计算量

  2、公钥密码将替代传统密码

    由于现有公钥密码计算量大,不太可能取代传统密码,主要用在密钥管理和签名中

公钥密码体制

  

公钥算法依赖于一个加密密钥和一个与之相关的解密密钥,这些算法具有如下特点:

  1、仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的;

  2、对于有些算法(如RSA)还满足以下特点

    两个密钥中的任何一个都可用来加密,另一个用来解密。

公钥密码体制有6个组成部分:明文、加密算法、公钥、私钥、密文、解密算法

加密的主要操作步骤如下:

  1、每个用户产生一对密钥,其中一个存于公开的寄存器或文件中以供访问,称为公钥。另一个则保持私密,称为私钥。每个用户都可以拥有很多其他用户的公钥。

  2、若A要发消息给B,则A用B的公钥来加密消息,由于只有B有私钥,故而也只有B可以对消息解密,其他任何接受者都不能解密消息。

此外公钥体制还可以用于认证,具体操作如下:

  1、A向B发送消息前,先用A的私钥对消息加密,因为B只有用A的公钥才能对消息解密,因此该消息可以用于认证源和数据完整性。

  由于对整个消息的认证加密过于耗费计算时间和存储空间,可以对此进行改进。只对一个称为认证符的小数据块进行加密,该认证块是整个消息的函数,对该消息的任何修改必然会引起认证符的变化,因此用发送方的私钥对认证符进行加密,加密的结果可作为数字签名,它能验证消息源、消息和通信序列的有效性。

为了同时保证加密和认证,则需要先用发送方的私钥进行数字签名再用接收方的公钥对整个消息进行加密。不过这种方法的缺点是每次通信中要执行四次复杂的公钥算法。

公钥密码体制的应用

一般,公钥密码体制的应用分三类:

  1、加密/解密:发送方用接收方公钥对信息加密

  2、数字签名:发送方用自身的私钥对消息“签名”

  3、密钥交换:通信双方交换会话密钥(传统密码的密钥)

对公钥密码的要求

  1、接收方B产生一对密钥在计算上是容易的

  2、已知公钥和要加密的消息M,发送方A产生相应的密文在计算上是容易的

    C = E(PUb,M)

  3、接收方B使用私钥对接收的密文解密以恢复明文在计算上是容易的

    M = D(PRb,C) = D(PRb,E(PUb,M))

  4、已知公钥PUb,攻击者要确定私钥PRb在计算上是不可行的

  5、已知公钥PUb和密文C,攻击者要恢复明文M在计算上是不可行的

  6、对于部分公钥密码应用,还应满足加密和解密函数的顺序可以交换

    M = D(PUb,E(PRb,M)) = D(PRb,E(PUb,M))

事实上,要满足上述条件即是要找到一个单向陷门函数。单向陷门函数满足下列性质:

  若k和X已知,求Y = fk(X)  容易计算

  若k和Y已知,求X = fk-1(Y) 容易计算

  若Y已知但k未知,则求X = fk-1(Y)是不可行的

以上计算上容易是指:一个问题可以在输入长度的多项式时间内得到解决,即若输入长度为n位,计算的时间复杂度为na,a为常数。

计算上不可行是指:解决一个问题所需时间比输入规模的多项式增长更快。如输入长度是n位,计算时间复杂度是2n

公钥密码分析

  1、穷举攻击:解决办法是使用长密钥,但是长密钥将使加密/解密变慢(公钥密码加密/解密时间对密钥长度的非线性增长),因此限制了公钥密码的应用。

  2、根据公钥计算私钥:目前未能做数学上的证明确定该攻击不可行,但也没有可行的办法做这样的攻击。

  3、穷举消息攻击(公钥体制特有):根据消息本身的特点(公钥经常用来传递传统密码的密钥)来进行对消息的穷举攻击,如发送56位DES密钥。解决办法就是在要发送的消息后附加一个随机数。

时间: 2024-10-13 12:03:39

公钥密码学的相关文章

公钥密码学中的素数以及对称加密

密码学,一向被人们认为门槛很高,特别高端...这也是实际,但是这决不意味着普通人无法了解它的精髓,对于喜欢画圆的人来讲,即便是理解了密码技术背后的哪怕一点理论,也是激动人心的. 声明和悲叹 最近,一次联调SSLVPN协议的机会,让我终于有时间可以弄点关于密码学的东西,只是简单的沾个边儿,因此本文既不是技术文档亦非学术论文,你不可能通过阅读本文学到Howto,这只是一篇随笔或者说科普,而已. 声明之后是我的一些悲叹! 有太多人精通加密算法,却不了解群环域的实质,反对者声称只要会用只要懂操作步骤就可

公钥密码学的数学基础

群: 集合G和运算°一起称为群(G,°),前提是运算满足下面的条件: 1.封闭律:任意a,b属于G,有a°b属于G 2.结合律:任意a,b,c属于G,有a°(b°c)=(a°b)°c 3.单位元律:存在唯一的元素e属于G,是的任意a属于G,均有a°e=e°a=a 4.可逆律:任意a属于G,存在a-1属于G,使得a°a-1=a-1°a=e 阿贝尔群: 如果所有的a,b属于G,均有a°b=b°a,则称群G为阿贝尔群,阿贝尔群就是交换群 环: 一个同时拥有两种运算:加法+和乘法•的集合,如果满足如下性

密码学-数据公钥加密和认证中的私钥公钥

一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了. 别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密.这样我就可以保护数据了. 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上. 别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a. 这样,我们就可

密码学-详解公钥、私钥、数字证书的概念

加密和认证 首先我们需要区分加密和认证这两个基本概念. 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全 性.身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限.其重点在于用户的真实性.两者的侧重点是不同的. 公钥和私钥      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高. 在现代密码体制中加密和解密是采用不同的密钥(公开密钥

加密---公钥&密钥

一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可.今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了.      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高.用电子邮件的方式说明一下原理.      使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:      1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到.      2. 必须保证是我发送的邮件,不是别人冒充我的.      要达到这样的目标必须发送邮件的

《程序员密码学》读书笔记

这本书很不错,不过目前市面上已经找不到了,我也是机缘巧合之下才拿到这本书,花了一周多读完了这本书.如书本题目所示,作为程序员读读这本书挺好的.注:个人笔记,做的很随意,而且笔记时间久远,未加修饰就传上来了,主要目的是作为备忘. 1,DES被攻破的方法:差分密码分析,而AES可以抵抗这种攻击~ 2,分组密码等同于伪随机置换(PRP ):伪随机置换就是由算法创建的一种对符号的重新排列,一个安全的PRP目标是:对于仅知道部分置换是不足以以一个有效的概率来确定置换的其他部分. 3,散列函数等同于伪随机函

详解公钥、私钥、数字证书的概念

详解公钥.私钥.数字证书的概念 加密和认证 首先我们需要区分加密和认证这两个基本概念. 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全 性.身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限.其重点在于用户的真实性.两者的侧重点是不同的. 公钥和私钥      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高. 在现代密码体制中加密

非对称加密,数字签名,公钥私钥,Openssl,https,TLS/SSL等概念说明

本文将通过个人口吻介绍有关公钥私钥,Openssl,https,TLS/SSL等的一些概念及简单配置,在目前时间点(2017年5月7号)下,个人水平有限,存在不少知识理解不够深入,望见谅,后续有新的收获之后将会补充完善该博文. 关于http以及web等基础概念,欢迎看我的另一篇博文:"http,https,www,web等的区别含义" 博文链接地址:http://watchmen.blog.51cto.com/6091957/1922919 本文参考文献引用链接: 1.https://

MD5、公钥、私钥、加密、认证

MD5 MD5的全称是Message-Digest Algorithm 5. MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法. 换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串, MD5的典型应用 1:对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”. 举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传