• 信息安全数学基础回顾

    • 欧几里德算法
    • 欧拉函数

      • 欧拉定理
    • 模重复平方法
    • 逆元及求解
    • 离散对数
  • PKI
    • PKI的核心是身份证明书的发行

      • PKI的主要目的是用来发行“身份证明书”,网络上因为大家不能见面,所以伪造身份是非常容易的事情。因为要在网络上验明正身,所以这个网络身份证明书就变得很重要了。
      • 相互通信的时候,如果能相互确认身份证明书,那么我们就知道自己是在跟对的人通信。
      • PKI的世界里,这个身份证明书,被叫做“证明书”。发行“证明书”的机关叫做“认证机关”。还有一个就是统一管理证明书的“证书库”。这三个东西加起来,就是PKI的主要构成要素。
    • 构成PKI的要素有三个

      • 证明书
      • 认证机关CA
      • 证书库
    • 证明书里面的密钥

      • 一旦利用了证明书确认了身份的同时,通信的加密也就可以实现了。为什么呢?证明书里面包含了用来加密的密钥。
      • 比如说,你要和一个自称Bill的人通信。这个自称Bill的人,会在通信的最开始,通过网络将证明书发给你,那么通过这个证明书,就证实了他就是Bill。
      • 然后,你用这个“证明书中的密钥”,将你要发送给Bill的内容进行加密,然后发送给Bill。
      • 用“证明书中的密钥”加密过的内容,只能用Bill自己才有的另一个“私人的密钥”才能解密。这样的话,如果你发送给Bill的内容被他人窃取的话,他人也无法解密。
      • 只要Bill自己好好保管好自己才有的“私人的密钥”,那么如果有人拿着Bill的“证明书中的密钥”想要胡作非为的话,那就是不可能的。因为用“证明书中的密钥”加密过的内容,只有Bill自己才有的“私人的密钥”才能解密。
      • 所以这么一来,PKI提供的证明书可以用来身份确认 和通信加密。同时实现了这两个重要的功能。
    • 什么是“公开密钥”,什么是“私有密钥”

      • 对于Bill来说,只要保证本人的那个“私人的密钥”不被盗走,包含在“证明书里的密钥”给多少人都没有关系。也就是说,想跟Bill通信的人,必须要有比尔的证明书,要用Bill“证明书里的密钥”对通信内容进行加密。为了能让其他人可以方便的获取Bill的证明书,证书库就显得有必要了。
      • 在PKI机制中,放在“证明书里面的密钥”可以被任意自由分发,这里的“证明书里的密钥”被叫做“公开密钥(PublicKey)”。与此相对,本人保管的那个“私人的密钥”就要做“私有密钥(PrivateKey)”。
      • 公开密钥是放在证明书里面的,所有用什么样的方式去分发证明书都没有关系。放到U盘里给别人,或者放到网上让人任意下载,或者用邮件发送,都是可以的。
    • 拿什么去信任你?我的证明书”

      • 先前说到,用包含在证明书里的公开密钥去给通信内容加密,这个过程大家已经知道。但是PKI提供的证明书真的可以被信任吗?说到底,证明书也就是普通的文件而已。不像货币那样,本身有着特殊的材质或者物理上的防伪措施。
      • 这么想是完全对的,因为实际上,认证机关所用的证书生成器说到底也就是一个软件而已,如果搞到这个软件,谁都可以发行证明书。所以说,在技术上,伪造证明书是非常简单的。所谓假的证明书,比如说有一个所谓的“Bill的证明书”,但是里面含有的公开密钥是Stephen的公开密钥。那么,别人发给Bill的信息,Stephen可以解密,反而比尔自己不能解密。
      • 这样看来,这个认证机关就至关重要了,认证机关的可信度,直接与证书的可信度挂钩,也就是与整个PKI机制的可信度息息相关。
      • 关于认证机关的权威性和可信度的问题,其实是一个社会基础设施建设的话题了。
      • 在很多国家认证机关都是由政府在主导建设,常常被视作一个社会性基础设施的一个环节。如同建设各种社会机构,比如医院,银行,学校等等。
    • PKI 主要包括四个部分

      • X.509格式的证书(X.509V3)和证书废止列表CRL(X.509V2);
      • CA(CertificateAuthority)操作协议;
      • CA管理协议;
      • CA政策制定。
    • 一个典型、完整、有效的PKI应用系统至少应具有以下五个部分

      • 认证中心CA
      • X.500目录服务器
      • 具有高强度密码算法(SSL)的安全WWW服务器
      • Web(安全通信平台)
      • 自开发安全应用系统
  • 非对称密码体制的原理
    • 假设有一种挂锁,在没有锁上的情况下,任何人都可以轻松锁上。但锁上后,只有有该锁匹配钥匙的人,才可以用钥匙打开。假设Alice把她的这种挂锁放到邮局,则任何想与她秘密通信的人都可以把消息放到一个箱子里,然后用挂锁锁上箱子,寄给Alice.由于只有Alice有开锁的钥匙,故只有Alice能打开箱子。
    • 正是基于这种思想,密码学家设计出了非对称密码体制。假设B想给A发送秘密消息,参考保密通信模型,非对称密码体制的模型可以用图5-2表示。
    • 公钥密码的基本思想:

      • 将密钥K一分为二,一个专门加密,一个专门解密:PKB≠SKB
      • 由PKB不能计算出SKB ,因此可将PKB公开,使密钥分配简单
      • 由于PKB≠SKB ,且由PKB不能计算出SKB,因此可将SKB作为用户指纹,以方便实现数字签名
      • 据上图所示的模型,描述利用非对称密码体制进行保密通信的过程为:

        • 主体A若需要其他主体利用非对称密码体制向他发送秘密消息,先要生成一对密钥,其中一个用于加密,另一个用于解密。用于加密的密钥在非对称密码体制中称为公开密钥,也称公开钥或公钥,是不需要保密的。A的公开密钥通常表示为PKA(publickey of A)。用于解密的密钥称为秘密密钥,简称秘密钥或私钥,需要解密方严格保密。A的秘密密钥通常表示为SKA(secretkey of A)。
        • 在知道密码算法和公开密钥的情况下,要得到秘密密钥在计算上是不可行的。
        • B若要向A发送秘密消息m(message),先要获取A的加密密钥,也即公钥。计算c=E_(〖PK〗_A ) (m),得到消息m对应的密文c(cipher),然后把c发送给A。其中c表示加密消息得到的密文,E(Encrypt)表示对消息进行加密的算法。E_(〖PK〗_A ) (m)表示用加密算法E和公开密钥PKA对消息m进行加密。
        • A在接收到密文c后,计算m=D_(〖SK〗_A ) (c) , 得到密文c对应的消息m。其中D(Decrypt)表示对密文进行解密的算法,D_(〖SK〗_A ) (c)表示用解密算法D和秘密密钥SKA对密文c进行解密。
    • 公钥加密体制的原理

      • 公钥加密模型
    • 公钥密钥对参数生成需满足的要求

      • 公开密钥(public-key),可以被任何人知道,用于加密或验证签名;
      • 私钥(private-key),只能被消息的接收者或签名者知道,用于解密或签名;
      • 由私钥及公开参数容易计算出公开密钥;
      • 由公钥及公开参数推导私钥是困难的;
  • 非对称密码体制的设计准则
    • 现在应用的非对称密码体制,其安全是指的计算上是安全的。
    • 以著名的RSA算法所基于的大数分解难题为例,它假定n是两个大素数p和q的乘积。现在一般认为,p和q的长度都是512比特左右,则n的长度是1024比特左右。以人们现有的计算能力,在知道n的情况下,在短时间内是不能分解n的,也就是说,这在计算上是安全的。从理论上讲,如果有足够的计算能力,是可以分解n的。但如果分解n的时间超过了消息的保密期,或者投入的物力超过了消息本身的价值,对消息保密的目的就达到了。
    • 假设Alice是密码消息的接收方,由他产生公开钥PKA和秘密钥SKA,通常认为,一个实用的非对称密码体制应该满足如下的性质:

      • 接收方Alice产生密钥对(公开钥PKA和秘密钥SKA)在计算上是容易的。
      • 消息发送方Bob用接收方Alice的公开钥对消息m加密以产生密文c是容易的。
      • 接收方Alice用自己的秘密钥SKA对c解密是容易的。
      • 密码分析者由Alice的公开钥PKA求秘密钥SKA在计算上是不可行的。
      • 密码分析者由密文c和Alice的公开钥PKA恢复明文m在计算上是不可行的。
      • 加、解密次序可换,即
  • 小结
    • 公钥密码算法应满足的要求:
    • (1)秘密性:D(E(M))=M (保密条件)
    • (2)实用性:(高效)

      • 接收方B产生密钥对在计算上是容易的
      • 发方A用B公钥对消息M加密成C在计算上是容易的
      • 收方B用自己的私钥对C解密成M在计算上是容易的
    • (3)安全条件

      • 敌人由B的公钥求B的私钥计算上不可行
      • 敌人由B的公钥和C求明文M,计算上不可行
    • (4)保真条件:E(D(M))=M (数字签名)
    • 注:

      • 若满足①②③,则可保密;
      • 若满足②③④,则可保真(数字签名);
      • 若4个条件都满足,则可同时保密保真
    • 确保数据的秘密性(保密)
    • 确保数据的真实性(保真)
    • 确保数据的秘密性和真实性(保密保真)
    • 陷门单向函数

      • 陷门单向函数:单向函数是求逆困难的函数,而单向陷门函数,是在不知陷门信息下求逆困难的函数,当知道陷门信息后,求逆是易于实现的。这是Diffie和Hellmam[1976]引入的概念。
      • 如何给陷门单向函数下定义则很棘手,因为

        • 陷门函数其实就不是单向函数,因为单向函数是在任何条件下求逆都是困难的;
        • 陷门可能不止一个,通过试验,一个个陷门就可容易地找到逆。如果陷门信息的保密性不强,求逆也就不难。
  • 非对称密码体制分类
    • 经过三十多年的研究和应用,非对称密码体制的研究取得了很大的进展,研究者们创建了多种不同的密码算法。通常,对非对称密码体制的分类,是根据其所基于的数学基础的不同,主要分成如下几类:
    • 基于大数分解难题的,包括RSA密码体制,Rabin密码等。在理论上,RSA的安全性取决于大数因子分解的困难性,但在数学上至今还未证明分解模n就是攻击RSA的最佳方法,也未证明分解大整数就是NP问题,可能有尚未发现的多项式时间分解算法。以大数分解难题这个为数学基础的密码理论应用,还包括后面要提到的RSA数字签名,RSA盲签名,以及Fiat-Shamir身份认证方案等。
    • 基于离散对数难题的,如ElGamal密码等。有限域上的离散对数问题的难度和大整数因子分解问题的难度相当。基于离散对数难题的最著名的算法是NIST于1994年通过的数字签名标准(DSS)中使用的数字签名算法DSA,它是ElGamal签名的变型。
    • 基于椭圆曲线离散对数的密码体制。严格说来,它可以归为基于离散对数难题的密码体制中。不过由于有限域上的椭圆曲线有它的一些特殊性,人们往往把它单独归为一个类别。NIST在标准FIPS186-2中,推荐了美国政府使用的15个不同安全级别的椭圆曲线。为满足电子认证服务系统等应用需求,中国国家密码管理局发布了SM2椭圆曲线公钥密码算法标准,该标准推荐了一条256位的随机椭圆曲线。
    • 另外,还有基于格理论的公钥密码体制,颇受关注的如NTRU,它是建立在网格中寻找最短向量的数学难题的基础上的,而且具有一些比较好的性质。目前,美国IEEE标准化组织起草专门针对NTRU的标准P1363.1,并取得了较大的进展。
    • 除了上述的公钥密码体制外,人们研究的还有基于背包问题的MH背包体制,基于代数编码理论的MeEliece体制,基于有限自动机理论的公钥密码体制,基于双线性配对技术的基于身份的公钥密码体制等等。
  • RSA算法
    • RSA算法是1978年由R.Rivest,A.Shamir和L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟完善的公钥密码体制,该体制已得到广泛的应用。
    • RSA算法的数学基础

      • Euler定理

        • 并建立在大整数因子分解的困难性之上
      • RSA算法

        • 密钥的产生

          • 选两个安全的大素数p和q。
          • 计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数值。
          • 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1。
          • 计算d,满足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘法逆元,因e与φ(n)互素,由模运算可知,它的乘法逆元一定存在。(一般公钥取值为65537(216+1))
          • 以{e,n}为公开钥(PK),{d,n}为秘密钥(SK)。
        • 加密

          • 加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n。然后对每个明文分组m,作加密运算:
          • c≡m^emod n
        • 解密

          • 对密文分组的解密运算为:
          • m≡c^dmod n
        • 例:
      • RSA算法的安全性

        • 整数分解问题:已知n是两个大素数的乘积,求n的素分解
        • RSA的安全性是基于分解大整数困难的假定
        • 如果RSA的模数n被成功地分解为p×q,则获得φ(n)=(p-1)(q-1),从而攻击者能够从公钥e解出d,即d≡e-1 modφ(n),攻击成功.
        • 分解算法的进一步改进.

          • 在使用RSA算法时对其密钥的选取要特别注意其大小。估计在未来一段比较长的时期,密钥长度介于1024比特至2048比特之间的RSA是安全的.
          • |p-q|要大
          • p-1和q-1都应有大素因子
          • 不同的用户不能用相同的模数n,否则容易遭受RSA的公共模数攻击
          • 私钥d的选择,不能太小
          • 更换密钥
          • e不可太小,否则不安全

应用密码学(张仕斌)第六章相关推荐

  1. 应用密码学(张仕斌)第五章

    序列密码体制 引言Vernam(弗纳姆)密码技术 1917年美国电话电报公司的GilbertVernam为电报通信设计了一种十分方便的密码技术.后来称之为Vernam密码技术. 它是一种代数密码技术: ...

  2. 程序设计基础(CC++) 戴波、张东祥 第六章 函数 编程作业

    1函数实现学生管理系统(100分) 题目内容: 使用函数编写学生管理系统 其中学生的信息有姓名(汉语拼音,最多20个字符),性别(男/女,用1表示男,0表示女). 生日(19850101(年月日)). ...

  3. Python计算机视觉编程第六章——图像聚类(K-means聚类,DBSCAN聚类,层次聚类,谱聚类,PCA主成分分析)

    Python计算机视觉编程 图像聚类 (一)K-means 聚类 1.1 SciPy 聚类包 1.2 图像聚类 1.1 在主成分上可视化图像 1.1 像素聚类 (二)层次聚类 (三)谱聚类 图像聚类 ...

  4. 《张成功项目管理记》一第六章 监控让结果更可靠

    本节书摘来异步社区<张成功项目管理记>一书中的第1章,第1.1节,作者: 王树文 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第六章 监控让结果 ...

  5. 软件工程 张秋余等著 第六章课后习题部分答案

    第六章 软件维护 1.为什么说软件的维护是不可避免的? 正确答案: 粗略答案:因为软件是人编写的,每个人的能力有明显的区别,自然而然的存在一些缺陷或漏洞,因此对软件的维护是不可或缺的. 标准答案:为了 ...

  6. 数字图像处理——第六章 彩色图像处理

    数字图像处理--第六章 彩色图像处理 文章目录 数字图像处理--第六章 彩色图像处理 1 彩色模型 1.1 RGB彩色模型 1.2 CMY 和CMYK彩色模型 1.3 HSI彩色模型 2 伪彩色图像处 ...

  7. 走向ASP.NET架构设计-第六章-服务层设计(中篇)

    走向ASP.NET架构设计-第六章-服务层设计(中篇) 前言:上一篇文章介绍了一些服务层的基本知识,而且也简要的介绍了SOA的有关知识,本篇主要是介绍在服务层可以采用的一些模式.  本篇议题如下: F ...

  8. 计算机组成原理的中央控制器,计算机组成原理第六章中央控制器(6-7,8,9).pdf

    <计算机组成与结构> --本科生课程教学 计算机学院(许先斌) 计算机学院(许先斌) xbxu@whu.edu.cn xbxu@whu.edu.cn 计算机组成与结构 计算机组成与结构 本 ...

  9. 通信网络基础期末复习-第六章-拥塞控制

    文章目录 第六章 拥塞控制 6.1 拥塞和流量控制概论 6.1.1网络数据流的控制技术分类 6.1.2拥塞控制的基本原理 6.1.3 流控和拥塞控制所经历的层次 6.2 流量和拥塞控制技术 6.2.1 ...

最新文章

  1. java input 数组_Java基础之:数组
  2. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
  3. mac 删除垃圾篓中的文件
  4. 香橼做空跟谁学发第三枪 跟谁学股价盘后下跌1.37%
  5. Android语音识别(本地+第三方)
  6. 给老板汇报技术规划的一些要点(转)
  7. 公交驾校自动约车脚本
  8. 关于cocoa 运行时runtime
  9. 在c语言中有函数leapyear定义如下,职业教育概论——职业教育的发展历史超星尔雅答案题库...
  10. UGUI适配问题 1.UI坐标与屏幕坐标转换
  11. 分享图片至Facebook与Twitter
  12. axios报错Error: Request body larger than maxBodyLength limit
  13. Git删除历史记录(已提交)中的大文件
  14. Microsoft Word 论文编排技巧
  15. 冒充linux内核,4岁小萝莉向Linux内核贡献代码修复「漏洞」而且已经合并到内核...
  16. Android中来电号码归属地的显示
  17. ssm餐厅线上点菜系统、点餐系统的设计与实现
  18. hive修改表备注,字段备注
  19. Ldap集成Ranger应用服务
  20. Android工程师成长路线

热门文章

  1. TextMate 2 for Mac(文本编辑器)
  2. 永恒之蓝漏洞简单分析
  3. Java高级工具类,任务1 JAVA编程高级-工具类.ppt
  4. [基础架构] [Flink] Flink/Flink-CDC的部署和配置
  5. VB.Net - 变量
  6. QLogic CTO看2016年的网络趋势
  7. 大转盘抽奖 luckywheel
  8. Python心经(5)
  9. 使用Marmoset Toolbag渲染器的Marmoset Viewer进行(html)网页浏览3D模型
  10. nWidart/laravel-modules作者对多模块开发的官方解读