- 信息安全数学基础回顾
- 欧几里德算法
- 欧拉函数
- 欧拉定理
- 模重复平方法
- 逆元及求解
- 离散对数
- 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(安全通信平台)
- 自开发安全应用系统
- PKI的核心是身份证明书的发行
- 非对称密码体制的原理
- 假设有一种挂锁,在没有锁上的情况下,任何人都可以轻松锁上。但锁上后,只有有该锁匹配钥匙的人,才可以用钥匙打开。假设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不可太小,否则不安全
- Euler定理
应用密码学(张仕斌)第六章
最新推荐文章于 2023-04-26 17:03:31 发布