[TOC]

密码学基础

1.1 密码

根据密钥的使用方法,可以将密码分为对称密码公钥密钥(也称为非对称密码)两种。使用密码是为了保证消息的机密性

对称密码是指在加密与解密过程中使用同一密钥的方式。

公钥密码是指在加密和解密时使用不同的密钥的方式。

混合密码系统是将对称密码和公钥密码结合起来的密码方式。

image-20230215203720617

1.2 安全威胁及应对方法

  1. 单向散列函数是利用哈希函数来计算散列值,其保证了消息的完整性。完整性是指数据是正确的而不是伪造的,通过使用单向散列函数就可以检测数据是否被篡改过。
  2. 消息验证码是一种可以保证完整性和提供认证的密码技术,其可以确认消息是否被篡改,同时也可以确认消息是否来自期待的通信对象。
  3. 数字签名是一种能够确保完整性提供认证防止否认的密码技术。

image-20230215203650669

1.3 对称密码

对称密码是加密和解密使用相同密钥的方式,在计算机上的加密解密过程如下:

  1. 对明文进行编码比特序列,例如将字母根据ASCII编码映射为比特序列;

  2. 加密:明文编码后的比特序列与密钥进行XOR运算,得到密文,运算规则如下:

    image-20230215211144946

  3. 解密:密文再次与密钥进行XOR运算,得到明文。

image-20230215211353094

1.4 非对称密码

非对称密钥又称公钥密码,Alice生成一对公钥和私钥(pk,sk),公钥pk发布后,Bob使用公钥pk加密,只有拥有私钥sk的Alice才可以解密得到消息。由于,对称加密要求通信双方需要共同拥有相同的密钥,这就需要密码配送,公钥密钥的出现很好的解决了这个问题。

当传统公钥密码系统用来实现保密和认证功能时,必须解决好一个基本问题,那就是如何保证用户公钥的真实性和有效性。传统的解决方法是使用公钥基础设施(public key infrastructure, PKI )。PKI 的核心组成部分是证书中心(certificate authority, CA)。CA 负责为用户签发公钥证书(public key certificate),用以保证系统中用户公钥的真实性和有效性。证书中通常包含用户的身份信息、公钥 和其他必要的信息,如所使用的加密和签名算法、证书的有效期等。CA维护着一个动态变化的证书库(或叫证书目录),该证书库向网络中的所有用户开放。一个用户在和Alice通信之前,先在证书库中查找Alice的公钥证书,获得Alice的公开密钥,这样就可以和Alice进行保密通信了。当Bob把自己对某个消息的签名发给网络中另一用户时,需要在签名后附上自己的公钥证书,接收者收到后,先验证Bob的公钥证书的有效性,再用Bob的公钥验证签名。公钥证书较好地解决了公钥的真实性和有效性问题,使得PKI能够为网络用户提供较好的安全服务。但公钥证书库的管理和维护需要巨大的计算、通信和存储代价.

公钥加密

1.5 基于身份的密码体制

1984 年,Shamir 提出了基于身份的密码系统(identity-based cryptography),他以另外一种方式解决了公钥的真实性问题,避免了基于PKI的传统公钥密码系统中对证书的使用和验证过程。在基于身份的密码系统中,用户的公钥是一些公开的、可以唯一确定用户身份的信息,一般这些信息称为用户的身份(ID)。在实际应用中,用户的身份可以是姓名+通信地址、手机号码、身份证号码或E-Mail地址等。在使用基于身份的密码系统进行保密和认证时,由于我们已经知道对方的公开身份信息,所以就不需要在数据库中查找用户的公钥,也不需要对公钥 的真实性进行检验。因此,基于身份的密码系统无须公钥证书的存在在基于身份的系统中,所有用户的私钥都是由一个可信的第三方—–私钥生成中心PKG(private key generation center)利用它掌握的系统唯一的主密钥 (master key)产生的。因此,这样的系统中不可避免地存在一个固有的缺陷,即私钥托管问题。PKG 知道任何用户的私钥,因而不诚实的 PKG 可以窃听任何用户的通信,并可以伪造任何用户的签名。一些学者对如何化解基于身份的系统因私钥托管所带来的弊端做了一些探索,但无法从根本上解决问题。

基于身份的密码

1.6 无证书密码体制

无证书公钥密码系统(certificateless public key cryptography)正是为了克服基于身份的系统中的私钥托管(key escrow)问题而提出的,其概念由Al-Riyami 和 Paterson于 2003 年提出。与基于 PKI 的传统公钥密码系统相比,无证书的公钥密码系统和基于身份的系统一样不需要公钥证书,同时,无证书密码系统消除了基于身份的系统中的私钥托管问题。可以说,无证书公钥密码系统不仅很好地结合了上述两种密码系统的优点,而且从一 定程度上克服了它们的缺点,是一种性能优良、便于应用的公钥密码系统。

在无证书的公钥密码系统中,仍然存在一个可信的第三方密钥生成中心 KGC(key generation center),它拥有系统的主密钥(master key)。KGC的作用是根据用户的身份和系统主密钥计算用户的部分私钥,并安全地传送给用户。在安全地收到自己的部分私钥后,用户再使用自己的部分私钥和自己随机选择的一个秘密值生成自己完整的私钥公钥由自己的秘密值、身份和系统参数计算得出,因此也不需要再拥有一个公钥证书。之后,就可以用自己的私钥进行解密和签名。在这样的系统中,KGC 无法得知任何用户的私钥。从而,无证书密码体制有效克服了基于身份系统中的私钥托管问题.

无证书密码