相关文章推荐

uefi的代码是开源的,意味着任何人都可以获取到它去编写各种应用,其中也包括带有攻击性质的恶意程序。为了阻止这种恶意程序的执行,必须在uefi固件中实现一套信任机制,来验证哪些程序是有权限执行的,于是有了secure boot。

Secure boot的机制通过检验程序中的签名来辨别程序的执行权限,而签名是在固件编译时生成的,恶意程序如果没有签名,将被secure boot阻止执行。

二、密码学基础

Secure boot整个对程序的认证机制比较复杂,其中大部分涉及到了密码学相关技术,在全面认识secure boot之前有必要了解一下密码学的基本概念。

哈希函数(Hash Function)

哈希函数,又称散列函数,是一种将任意长度输入转换为固定长度输出的函数,输出的值通常称为哈希值或摘要。

哈希函数具有广泛的应用,包括:

文件校验:通过计算文件的哈希值,可以验证文件的完整性。
数字签名:通过使用哈希函数生成数字签名,可以确保数据的完整性和不可否认性。

常见的哈希函数包括SHA-256(Secure Hash Algorithm 256-bit)和MD5(Message Digest Algorithm 5)。SHA-256在安全性上更为强大,因此在许多应用中更为常见。

加密与解密(Encryption and Decryption)

加密是将信息转换为不易理解的形式,解密是将其还原为原始形式。常见的加密算法包括对称加密和非对称加密。

对称加密(Symmetric Encryption)

使用相同的密钥进行加密和解密。常见的算法有AES(Advanced Encryption Standard)。

非对称加密(Asymmetric Encryption)

非对称加密是在加密和解密时使用不同的密钥,这种密钥称为非对称密钥或公钥(Public Key)/ 私钥(Private Key)。非对称加密的优点是可以公开密钥,而私钥需要保密。这使得非对称加密可以用于身份验证和数字签名等应用。

公钥和私钥都可以用于加密,但它们的应用场景有所差异:

公钥加密: 公钥通常用于加密数据,而私钥用于解密。当某个信息需要被发送给拥有公钥的实体时,发送者可以使用接收者的公钥对信息进行加密,确保只有拥有相应私钥的接收者能够解密并阅读该信息。

私钥加密:在数字签名中,使用私钥对数据进行加密,生成数字签名。数字签名可以用来验证数据的完整性和不可否认性。

非对称加密的常见算法包括:

RSA:Rivest-Shamir-Adleman 算法,是目前最常用的非对称加密算法。
DSA:数字签名算法,用于生成数字签名。
ECC:椭圆曲线加密算法,具有更高的效率和安全性。

非对称加密的应用场景包括:

身份验证:用于验证用户的身份。
数据加密:用于加密数据,防止未授权用户访问。
数字签名:用于为数据签名,确保数据的完整性和不可否认性。

数字签名(Digital Signature)

数字签名是一种用于验证数字信息真实性和完整性的加密技术。数字签名通过使用 非对称加密算法 结合 哈希函数 实现,确保信息的发送者是合法的,并且发送的信息在传输过程中没有被篡改。

1.原始信息经过哈希函数处理,生成一个固定长度的哈希值(摘要)。这个哈希值是唯一的,即不同的输入会产生不同的哈希值。

2.发送者使用自己的私钥对生成的哈希值进行加密,形成数字签名。私钥是非对称加密系统中的私有密钥,只有发送者知道。

3.发送者将原始信息、数字签名以及公钥一起发送给接收者。

1.接收者使用发送者的公钥解密数字签名,得到哈希值。

2.接收者对接收到的原始信息再次应用哈希函数,得到一个哈希值。然后,接收者将通过解密数字签名得到的哈希值与重新计算的哈希值进行比较。

3.如果两个哈希值相匹配,说明原始信息在传输过程中没有被篡改,并且发送者是持有相应私钥的合法实体。

数字证书( Digital Certificate

在加解密技术中,公钥是公开的,在通讯过程中可能会有被伪造的风险,阻碍通讯,于是提供了一种验证公钥可靠性的方法,便是将其放到数字证书中,而数字证书是由权威机构颁发的,这样便可保证公钥的安全。数字证书包含有关特定实体(如个人、组织或计算机)的公钥、身份信息以及由证书颁发机构(CA)签发的数字签名,目的是提供一种方法来验证 公钥的真实性 ,并建立实体身份的信任链。

数字证书的主要组成部分如下:

1. Subject (Entity): 即主体(实体),证书的主体是数字证书所涉及的实体,可以是个人、组织、计算机或其他实体。

2. Public Key 即公钥,数字证书包含一个公钥。

3. Digital Signature 即数字签名,证书颁发机构(CA)使用其私钥对证书的信息进行数字签名,以确保证书的真实性和完整性。其他用户可以使用CA的公钥来验证签名,从而确保证书的来源是可信的。

4. Issuer (Certificate Authority): 即颁发者(证书颁发机构),颁发者是签发数字证书的证书颁发机构。CA是一个可信任的实体,其责任是验证证书请求者的身份,并签发包含其公钥的数字证书。

5. Validity Period 即有效期,数字证书具有有效期限,指定了证书何时开始生效和何时过期。这有助于确保证书信息的时效性,同时需要定期更新或重新颁发证书。

6. Certificate Serial Number 即证书序列号,证书颁发机构为每个签发的证书分配一个唯一的序列号,用于区分不同的证书。

公钥基础结构(Public Key Infrastructure,PKI)

前文介绍的几种安全技术,如何将它们联系起来,做成一个完整的安全验证流程呢?它便是PKI。 PKI是一种框架和体系结构,用于管理密钥、数字证书和相关的安全服务,以支持安全的通信和身份验证, 主要目标包括:

建立信任: PKI通过使用数字证书和加密技术,建立了一套信任体系,确保参与者的身份和通信的真实性。

身份验证: PKI提供了一种机制,通过数字证书对实体进行身份验证,确保通信的两方是合法的。

保密性: PKI通过使用非对称加密算法,确保通信内容的保密性,防止未经授权的访问和窃听。

数据完整性: PKI使用数字签名和哈希函数等技术,确保传输的数据在传输过程中没有被篡改,保持完整性。

密钥管理: PKI提供了一种框架来生成、分发、存储和管理密钥,确保密钥的安全性和有效性。

证书颁发: PKI通过证书颁发机构(CA)签发数字证书,将公钥与实体的身份信息绑定在一起。

证书撤销: PKI支持证书撤销机制,以及定期更新或吊销数字证书,防范安全风险。

数字签名: PKI使用数字签名技术,确保文档、数据或代码的真实性和来源可信。

三、数字证书的创建和验证

数字证书是为公钥而服务,目的就是为了保证公钥的数据准确,来源可靠。下面再来了解一下将公钥放到证书中,再从证书取出来的过程。

数字证书创建

密钥生成: 实体首先生成一对非对称密钥,包括公钥和私钥。

证书请求: 实体向证书颁发机构(CA)提交证书请求,其中包含公钥和一些身份信息(如名称、组织等)。

身份验证: CA对证书请求中的实体进行身份验证,确保请求者拥有私钥对应的控制权。

证书签发: CA使用自己的私钥对证书信息进行签名,形成数字证书。该证书包含实体的公钥、身份信息以及CA的数字签名。

证书发布: CA将数字证书发布给实体,实体可以将其分发给其他参与方。

数字证书验证

数字证书获取: 验证方获取要验证的数字证书。

获取CA公钥: 验证方获取CA的公钥,通常通过CA的数字证书或其他安全手段获得。

证书签名验证: 使用CA的公钥对数字证书中的数字签名进行验证,确保签名是由CA私钥生成的。

获取实体公钥: 从数字证书中提取实体的公钥。

信任链验证: 如果数字证书是由根CA签发的,验证方可能需要构建一个信任链,逐级验证证书的签发者,直到达到根CA。

证书撤销检查: 验证方检查证书撤销列表(CRL)或在线证书状态协议(OCSP),确保证书未被吊销。

验证结果: 如果数字证书通过了所有验证步骤,验证方可以信任其中包含的公钥,建立起与实体的信任关系。

以上是相关的基础知识,下一篇再来详细了解secure boot的验证过程。

版权声明:
作者:bin
链接: https://ay123.net/mystudy/bios/1720/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。 THE END

 
推荐文章