应用密码学(张仕斌)第六章

  • 信息安全数学基础回顾
    • 欧几里德算法
    • 欧拉函数
      • 欧拉定理
    • 模重复平方法
    • 逆元及求解
    • 离散对数
  • 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不可太小,否则不安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值