密码学基本知识

 本文记录密码学基本知识。

Crypto Basics

Symmetric and Asymmetric Authentication

 Authentication(认证)可以通过两种手段实现:Symmetric (对称)和Asymmetric (非对称)。在对称加密中,host与client具有相同的密钥;对应地,如果应用中使用私钥公钥则为非对称加密。

 Asymmetric也被称作public-key infrastructure (PKI,公钥基础设施)。如果系统中存在公钥概念,则为非对称。公钥可以对任何人公开,任何人可以使用公钥向私钥持有人发送加密信息;私钥持有人可以利用私钥加密信息。

 对应地,由于对称加密使用相同的密钥,只有持有密钥的双方才能通讯。

 对称加密更为简洁,但是密钥的存储有更高风险;非对称加密更为复杂,但是安全性更高。

Encryption and Authentication

 Encryption(加密):用于保护信息,防止被预期外的人读取。

 Authentication(认证):确保某些事物真实性。在密码学中,认证用于判断信息是否真实。

 简单来说,加密就是编码与解码,认证则为验证发送者的身份以及信息的完整性。

Hashing vs. Encryption

 哈希函数(散列函数):将一组文本通过数学运算得到一个特定长度的值。该值一般称为hash value, hash, compression, fingerprint, message digest, 或者digest。

 hash value表征了原始的一组文本,但通常长度小于原始文本。哈希运算为单向运算,无法通过哈希值获取原始信息;简单来说,当信息被压缩后,则无法被恢复。对于哈希运算,任何原始文本的改变均会导致digest的该表,所以哈希运算可以用于制作数字签名,用以确定和认证发信人和信息。哈希运算常被用于安全密码存储,文件鉴定,消息认证码(message authentication coding , MAC)以及非对称签名验证操作。

 加密:基于加密,数据可以被加密和还原。对于一个给定的密钥,输入与输出是一一对应的。如果收信人没有密钥,则无法还原得到原始数据。加密是可逆的,所以被用于需要获取原始信息的场合。然而,发信人的确认和信息的完整性无法通过加密获取,因此需要认证过程。

基本术语

 Encryption:为追求机密性,对信息进行编码与解码。加密本身无法进行认证;

 Authentication:用于检查发信人身份信息以及信息的完整性。信息本身无需加密;

 Symmetric authentication:主机与从机使用同一个密钥,双方的密钥都必须进行保护。对称加密执行相对更快;

 Asymmetric authentication:使用公钥/私钥对。从机必须谨慎保管私钥,主机无需保存私钥。公钥与私钥具有数学上的相关性,但是无法通过公钥而推算出私钥。相对对称加密,非对称加密的计算量会增加;

 Key Storage:基于硬件的密钥存储更为安全,因为硬件存储更难进行攻击;

 Hash functions:将一组文本通过数学运算得到一个特定长度的值,通常比原有文本长度小。哈希函数常用于认证以及加密操作。哈希函数为单向晕眩,即通过哈希值无法推导出原有的文本内容。

 Challenge-Response:由主机向从机发起一个挑战(通常为一个随机数),从机需要给出一个回应用于验证从机的真实性。回应通常为一个表征了密钥的哈希值。然后,主机端也会同时进行回应运算,进而比对两个回应的一致性。

 MAC (Message Authentication Code):使用密钥和密码算法(例如SHA256)生成一个值(称为MAC值),改制可以用于确保数据未被修改。挑战-回应中的回应即为一个MAC。

 Sign/Verify:Sign:为一种认证操作,即生成一组数据的哈希摘要(hash digest),再使用私钥加密生成一个签名。Verify:收信人将收到的信息进行哈希计算,然后将收到的数据签名使用发信人的公钥进行解密。如果二者吻合,则签名有效。

 ECDSA (Elliptic Curve Digital Signature Algorithm):为一种简洁标准的利用sign/verify提供非对称加密的方法,其基于Elliptic Curve (ECC)算法进行签名。ECDSA具有2个阶段:1. 认证公钥; 2. 认证从机(或者配件)的私钥。

 ECDH Key Agreement (Elliptic Curve Diffie-Hellman):为一种简洁标准的利用sign/verify提供非对称加密的方法,其使用匿名密钥协议,允许持有椭圆曲线公钥/私钥对的双方在一个非保密信道上建立一个共享密钥。共享密钥可以直接作为密钥使用,或者生成一个新的密钥用于后续的对称加密通讯。基于ECC加密具有多种Diffie-Hellman协议。

 Root certificate:为一个公钥,证明Root Certificate Authority (CA)身份。最常见的商用应用均基于ITU-T X.509标准,其通常包含一个来自于Certificate Authority (CA)的数字签名。数字证书基于信任链(a chain of trust)进行认证,数字证书的信任锚(trust anchor)即为Root Certificate Authority (CA)。

 Public-key cryptography:基于私钥和公钥的系列算法。私钥公钥对数学上是相关的,从算法上报证无法通过公钥获取私钥。公钥被用于加密文本或者验证签名。私钥被用于解密密文或者制作数字签名。非对称的定义就在于使用不同的key进行相反的功能;而对称加密使用相同的密钥进行相关计算。公钥算法基于数学分析,目前被证明对于integer factorization, discrete logarithm, and elliptic curve relationships尚无有效解法。

“CIA” The Three Pillars of Security

 Confidentiality:确保信息只被目标收信人读取。通常使用加密与解密实现;

 Integrity:用于确保接收到的信息未被修改,使用加密函数实现。对于对称加密,一般使用密钥对数据进行哈希计算,然后将计算得到的MAC值同数据一起发出;接收方进行同样的运算成成MAC值进行比对。对于非对称加密,一般使用sign/verify确保数据完整性。

 Authenticity:用于验证信息的发信人身份真实性。对于对称加密,通常基于向发信人发起挑战,发信人基于密钥对挑战进行哈希计算得到MAC值并发送回去。发起挑战方将进行同样的计算并比对MAC值的一致性。

基于ECDSA实现非对称加密

 基于目的划分,基于ECDSA的非对称加密可以划分为2个过程:一是基于ECDSA算法验证从机的公钥;而是基于ECDSA算法认证从机的私钥与已得到认证的公钥是具备相关性的。

 对于过程一,还有一个隐含目标是验证全部证书链,指导信任根(i.e.the certificate authority or “issuer”)。

 如果以上2个过程全部验证通过,则可以确认从机真实性。

Making the ECDSA certificates

 证书的建立在工厂完成。

 证书由2个部分构成:1. 证书数据; 2. 签名。

Asymmetric Authentication: Making the ECDSA certificates

 证书数据由3部分构成:1. 静态数据;2. 动态数据; 3. 从机的公钥。

 静态数据为样板文件,存储基本信息,如公司的名字、地址以及其它不变的信息。动态数据则为串号、日期、时间、到期日期等。从机的公钥为证书数据的第三部分。注意,从机的公钥和私钥是成对的。从机中存储的私钥永远无法读取。

 除证书数据外,签名是证书的另一部分。在证书中,证书数据有2种目的:1. 作为证书的一部分; 2. 经过哈希运算,再通过签名算法生成签名。证书数据与证书签名共同构成了完整证书。

 签名流程具体如下:

  1. 复制证书数据;
  2. 将证书数据通过哈希晕眩得到哈希值(digest)。ECDSA P-256指定32byte长度的digest,要求哈希算法为SHA256。得到digest后,该值已经准备就绪供sign module使用;
  3. sign module中安全地存储了signer的私钥,安全意味着没有人可以获得这个私钥。sign module基于ECC签名算法,利用signer的私钥对证书数据的digest进行签名,其结果则为证书数据的签名。签名同原有的证书数据共同构成了完整的证书。

Asymmetric Authentication: Creating the Signer’s Certificate

 signer的证书用于建立与certificate authority(CA, issuer, 凭证管理中心)的链接。signer的证书通过CA对signer的证书数据签名实现。

Asymmetric Authentication ECDSA is a two phased process

Phase 1, Part 1: Verify Client’s Public Key

 ECDSA过程分为2个阶段。阶段1为验证从机和signer的公钥。阶段1将从机和signer的签名链接到issuer(CA)的签名,即建立了信任根。阶段2为验证从机的私钥。当确认从机公钥与私钥的关联性,且已经链接到信任根时,则说明验证通过。

 对于阶段1,首先验证从机的公钥。具体流程如下:

  1. 主机请求从机发送信息,包括从机的证书以及signer的证书;
  2. 主机提取从机证书的数据内容(包括从机的静态数据、动态数据和公钥)和signer模块生成的签名;
  3. 主机提取signer证书的数据内容(包括signer的公钥)以及CA生成的签名;
  4. 主机对2组证书的数据进行哈希运算,生成2组32byte的digest(P-256 curve),对别为从机的digest和signer的digest;
  5. signer的公钥、从机证书数据的digest和从机的签名参与ECDSA验证计算。用于验证从机的公钥。

Phase 1, Part 2: Verify Issuer’s Signature

 阶段1还需要验证signer的证书,用于验证信任根。具体流程如下:

  1. 主机对signer的证书数据进行哈希运算,得到digest;
  2. issuer(CA)的公钥预先存储在MCU中,issuer(CA)的公钥、signer证书数据的digest、signer的签名参与ECDSA验证计算。用于验证signer的证书。

Asymmetric Authentication: ECDSA is a two phased process (Phase 2: Verify Private Key)

 当阶段1通过后,进入阶段2。阶段2的目的是验证从机的私钥。

 阶段2的具体流程如下:

  1. 主机生成一个随机数挑战,将其发送给从机;
  2. 从机基于ECDSA签名引擎,利用从机的私钥对随机数进行签名,并将其发送给主机;
  3. 主机使用相同的随机数、从机的公钥以及从机发回的应答进行ECDSA验证计算。如果ECDSA计算成功,则主机可以确认从机的真实性。
文章目录
  1. 1. Crypto Basics
    1. 1.1. Symmetric and Asymmetric Authentication
    2. 1.2. Encryption and Authentication
    3. 1.3. Hashing vs. Encryption
    4. 1.4. 基本术语
    5. 1.5. “CIA” The Three Pillars of Security
    6. 1.6. 基于ECDSA实现非对称加密
      1. 1.6.1. Making the ECDSA certificates
      2. 1.6.2. Asymmetric Authentication: Making the ECDSA certificates
      3. 1.6.3. Asymmetric Authentication: Creating the Signer’s Certificate
      4. 1.6.4. Asymmetric Authentication ECDSA is a two phased process
        1. 1.6.4.1. Phase 1, Part 1: Verify Client’s Public Key
        2. 1.6.4.2. Phase 1, Part 2: Verify Issuer’s Signature
        3. 1.6.4.3. Asymmetric Authentication: ECDSA is a two phased process (Phase 2: Verify Private Key)
|