- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8密码学理论3
公钥密码系统 一、基本概念 二、RSA 三、基于离散对数的公钥系统 四、椭圆曲线公钥体制 一、基本概念 对称密码体制的缺陷 公钥密码学思想 安全性 1 对称密码体制的缺陷 public-key/two-key/asymmetric 包括两个密钥: 公开密钥(a public-key), 可以被任何人知道, 用于加密或验证签名 私钥( private-key), 只能被消息的接收者或签名者知道,用于解密或签名 公钥与私钥不同,但又相互对应,并且由公钥不能推导出对应的私钥。 加密或验证签名者不能解密密文或生成签名. 选择某种算法(可以公开)能做到:用公钥加密的数据只有使用与该公钥配对的私钥才能解密。 基本概念(续) 公钥加密算法的核心——单向陷门函数,即从一个方向求值是容易的。但其逆向计算却很困难,从而在实际上成为不可行。 定义1.设 是一个函数,如果对任意给定的 ,计算 ,使得 是容易计算的,但对于任意给定的 ,计算 ,使得 是难解的,即求 的逆函数是难解的,则称 是一个单向函数。 基本概念(续) 定义2.设 是一个函数, 是与 有关的一个参数。对于任意给定的 ,计算 ,使得 是容易的。如果当不知参数 时,计算 的逆函数是难解的,但当知道参数 时,计算函数 的逆函数是容易的,则称 是一个单向陷门函数,参数 称为陷门。 2公钥密码学思想 定义7.1.1一个公钥密码体制是这样的一个5元组{M,C,K,EK,DK},且满足如下的条件: 1.M是可能消息的集合; 2.C是可能的密文的集合; 3. 密钥空间K是一个可能密钥的有限集; 4.对每一个k={K1,K2} ∈K,都对应一个加密算法EK1 ∈ E, EK1:M→C和解密算法DK2 ∈ D,DK2:C → M,满足对于任意的m ∈ M,都有c= EK1(m),m= DK2(c)=DK2(EK1(m))=m; 5.对于所有的k,在已知E的情况下推出D是计算上不可能的; 对每一个k∈ K,函数EK1和DK2都是多项式时间可计算的函数。EK1是一个公开函数,K1 称作公钥;而DK2是一个秘密函数,K2称作私钥,由用户秘密地保存。 由私钥及其他密码信息容易计算出公开密钥 (a polynomial time (P-time) problem) 由公钥及算法描述,计算私钥是难的 (an NP-time problem) 因此,公钥可以发布给其他人(wishing to communicate securely with its owner ) 密钥分配问题不是一个容易的问题(the key distribution problem ) 3.公钥的安全性 依赖于足够大的困难性差别 类似对称算法,穷搜索在理论上是能够破解公钥密码 exhaustive search 但实际上,密钥足够长 (512bits),计算上不可行。 一般基于一些已知的困难问题(hard problem) 要求足够大的密钥长度 (512 bits) 多为大数运算,导致加密速度比对称算法慢 二、RSA 简介 RSA算法内容 RSA 参数选择 RSA理论 举例 1. RSA (Rivest, Shamir, Adleman)简介 基础 大数分解和素性检测——将两个大素数相乘在计算上很容易实现,但将该乘积分解为两个大素数因子的计算量是相当巨大的,以至于在实际计算中是不能实现的。 RSA算法表述: 假定用户A欲送消息给用户B,则RSA算法的加/解密过程为: ①首先用户B产生两个大素数p和q(p、q是保密的)。 ②B计算 和 ( 是保密的)。 ③B选择一个随机数e( ),使得 ,即e和φ互素。 ④B通过计算得出d,使得 ( 即在与n互素的数中选取与 互素的数,可以通过Eucliden算法得出。d是B自留且保密的,用作解密密钥)。 ⑤B将n及e作为公钥公开。 ⑥用户A通过公开渠道查到n和e。 ⑦对m施行加密变换,即 。 ⑧用户B收到密文c后,施行解密变换: 。 3。RSA 参数选择 需要选择足够大的随机素数 p, q (~100 digit) 通常选择小的加密指数e,且与?(N) 互素 e 对所有用户可以是相同的 最初建议使用e=3 现在3太小
文档评论(0)