密码体制、数字签名及证书

      随着网络技术的发展,方便快捷的互联网使人民渐渐习惯从 Web 页或移动设备购物和交易,需要传输重要或敏感的数据,比如用户的银行账户、密码等,所以支付信息安全就成为电子支付必须要解决的问题。本篇文章将从密码体制、数字签名和证书三方面对支付安全进行整理描述,从而加深自己的记忆。

网络支付风险

      我们面临的网络支付风险主要有以下四个方面。

  • 身份识别问题
  • 支付信息被伪造、拦截和篡改
  • 支付信息泄露
  • 支付信息被抵赖

      我们生活中电子支付的安全工具就是为了应对上述问题,例如:

  • 数字证书:电脑或手机上安装数字证书后,即使账户支付密码被盗,也需要在已安装了数字证书的机器上才能支付,保障资金安全
  • 短信验证码:短信验证码是用户在支付时,银行或第三方支付通过客户绑定的手机,下发短信给客户的一次性随机动态密码
  • 动态口令:无须与电脑连接的支付安全工具,采用定时变换的一次性随机密码与客户设置的密码相结合
  • USB Key:连接在电脑 USB 接口上使用的一种支付安全工具,支付时需要插入电脑,才能进行支付

密码学

      密码技术是保障信息安全的核心技术,密码学是信息安全的基石。密码系统的两个基本要素是加密算法密钥管理加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。由于密码系统的反复使用,仅靠加密算法已难以保证信息的安全了。事实上,现代加密体制的安全主要依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息。

      根据密码算法所使用的加密密钥和解密密钥是否相同、能否由加密过程推导出解密过程(或由解密过程推导出加密过程),可将密码体制分为对称加密非对称加密

对称密钥加密

      又称私钥加密或会话密钥加密算法。即信息的发送方和接收方使用同一密钥去加密和解密数据。与公钥密钥加密算法比起来,对称加密算法还缺乏签名功能。最大的优势是加/解密速度快,适合于大数据量进行加密,但密钥管理困难。常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6、AES。

非对称密钥加密

      又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公钥,另一个由用户自己秘密保存,即私钥。信息发送者用公钥去加密,而信息接收者用私钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢的多。常见的非对称加密算法:RSA/ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。

      与非对称加密相关的数字签名常用哈希算法包括 MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HAMC-MD5、HMAC-SHA1。

      数据加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护信息的内容。网络安全使用密码学来辅助完成在传递敏感信息的机密性、鉴别、报文完整性、不可否认性的相关问题。

数字签名

      发送一份保密报文,发送者必须使用接收者的公钥对数据进行加密,一旦加密,只有接受方用其私钥才能加以解密。相反地,数字签名(digital signature)是公钥密码的逆应用:用私钥加密消息,用公钥解密消息。

      用私钥加密的消息称为签名,只要拥有私钥的用户都可以生成签名
      用公钥解密的签名的这一步叫验证签名,所有用户都可以验证签名(因为公钥是公开的)

      一旦签名验证成功,根据公私钥数学上的对应关系,就可以知道该消息是唯一拥有私钥的用户发送的,而不是随便一个用户发送的。由于私钥是唯一的,因此数字签名可以保证发送者事后不能抵赖对报文的签名。由此,消息的接收者可以通过数字签名,使第三方确信签名人的身份及发出消息的事实。当双方就消息发出与否及其内容出现争论时,数字签名就可成为一个有力的证据。

生成签名

一般来说,不直接对消息进行签名,而是对消息的哈希值进行签名,步骤如下。

  1. 对消息进行哈希计算,得到哈希值
  2. 利用私钥对哈希值进行加密,生成签名
  3. 将签名附加在消息后面,一起发送过去

验证签名

  1. 收到消息后,提取消息中的签名
  2. 用公钥对签名进行解密,得到哈希值 1。
  3. 对消息中的正文进行哈希计算,得到哈希值 2。
  4. 比较哈希值 1 和哈希值 2,如果相同,则验证成功。

证书

      证书实际上就是对公钥进行数字签名,它是对公钥合法性提供证明的技术。

      考虑这样一种场景:我们对签名进行验证时,需要用到公钥。如果公钥也是伪造的,那怎么办?如果公钥是假的,验证数字签名那就无从谈起,根本不可能从数字签名确定对方的合法性。
这时候证书就派上用场了。
      证书一般包含:公钥(记住证书中是带有公钥的),公钥的数字签名,公钥拥有者的信息
若证书验证成功,这表示该公钥是合法,可信的。

      接下来又有问题了:验证证书中的数字签名需要另一个公钥,那么这个公钥的合法性又该如何保证?我们需要一个可信的机构来颁发证书和提供公钥,只要是它提供的公钥,我们就相信是合法的。这个机构就是CA

CA(Certification Authority)

      CA 指的是认证机构,它是一个受到各方信任的权威机构,其职责是签发证书。从 CA 中心的建设背景来看,国内的 CA 中心大致分为三类:大行业或政府部门建立的 CA,如 CTCA、CFCA、CCCA 等;地方政府与公司共建的 CA,如 SHECA、天津 CA 等;商业 CA,如天威诚信公司。CA 有国际性组织和政府设立的组织,也有通过提供认证服务来盈利的组织。

      在中国,中国金融认证中心(China Financial Certification Authority,CFCA)是经中国人民银行和国家信息安全管理机构批准成立的国家级权威安全认证机构,是国家重要的金融信息安全基础设施之一。总而言之。CA 就是能够认定”公钥确实属于此人”,并能生成公钥的数字签名的组织或机构。

如何生成证书

  1. 服务器将公钥 A 给 CA(公钥是服务器的)
  2. CA 用自己的私钥 B 给公钥 A 加密,生成数字签名 A
  3. CA 把公钥 A,数字签名 A,附加一些服务器信息整合在一起,生成证书,发回给服务器。
    注:私钥 B 是用于加密公钥 A 的,私钥 B 和公钥 A 并不是配对的。

如何验证证书

  1. 客户端得到证书
  2. 客户端得到证书的公钥 B(通过 CA 或其它途径)
  3. 客户端用公钥 B 对证书中的数字签名解密,得到哈希值
  4. 客户端对公钥进行哈希值计算
  5. 两个哈希值对比,如果相同,则证书合法。

注:公钥 B 和上述的私钥 B 是配对的,分别用于对证书的验证(解密)和生成(加密)

证书作废

当用户私钥丢失、被盗时,认证机构需要对证书进行作废(revoke)。要作废证书,认证机构需要制作一张证书作废清单(Certificate Revocation List),简称 CRL
假设我们有 Bob 的证书,该证书有合法的认证机构签名,而且在有效期内,但仅凭这些还不能说明该证书一定有效,还需要查询认证机构最新的 CRL,并确认该证书是否有效

参考:
http://www.youdzone.com/signature.html

https://www.jianshu.com/p/9db57e761255

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

Copyright ©2019 guowj All Rights Reserved.

访客数 : | 访问量 :