物联网安全 – 密码学
编者注:保护物联网不仅对于每个 IoT 应用程序中数据流和软件的完整性至关重要,而且对于与这些应用程序相关联的企业资源的完整性也至关重要。物联网安全是一个复杂的问题,需要一种系统的方法来了解可能的威胁和相应的缓解方法。
改编自 Perry Lea 的建筑师物联网。
第 12 章物联网安全
作者:佩里·利
密码学
加密和保密是物联网部署的绝对要求。它们用于保护通信、保护固件和身份验证。关于加密,一般要考虑三种形式:
对称密钥加密 :加密和解密密钥是相同的。 RC5、DES、3DES和AES都是对称密钥加密的形式。
公钥加密 :加密密钥公开发布,供任何人使用和加密数据。只有接收方拥有用于解密消息的私钥。这也称为非对称加密。非对称加密管理数据保密、验证参与者并强制不可否认。众所周知的互联网加密和消息协议,如椭圆曲线、PGP、RSA、TLS 和 S/MIME 都被认为是公钥。
加密哈希 :将任意大小的数据映射到位串(称为摘要)。这个哈希函数被设计为“单向”。本质上,重新创建输出哈希的唯一方法是强制每个可能的输入组合(它不能反向运行)。 MD5、SHA1、SHA2 和 SHA3 都是单向哈希的形式。这些通常用于对数字签名进行编码,例如签名固件映像、消息身份验证代码 s (MAC ) 或身份验证。在对密码等短消息进行加密时,输入可能太小而无法有效地创建公平的哈希;在这种情况下,盐 或非私有字符串附加到密码以增加熵。盐是键派生函数的一种形式 (KDF ):
点击查看大图
密码学的元素。以下是对称、非对称和散列函数。请注意对称和非对称加密中的密钥用法。 Symmetric 要求使用相同的密钥来加密和解密数据。虽然比非对称加密更快,但需要保护密钥。
对称密码学
在加密中,明文是指未加密的输入,输出被称为密文,因为它是加密的。加密标准是高级加密标准 (AES ) 取代了 1970 年代的旧 DES 算法。 AES 是 FIPS 规范和全球使用的 ISO/IEC 18033-3 标准的一部分。 AES 算法使用 128、192 或 256 位的固定块。大于位宽的消息将被拆分为多个块。 AES 在加密期间有四个基本的操作阶段。此处显示了通用 AES 加密的伪代码:
// AES-128 密码的伪代码
// 输入:128 位(明文)
// 输出:128 位(密文)
// w :44 个字,每个 32 位(扩展密钥)
state =in
w=KeyExpansion(key) //密钥扩展阶段(有效加密密钥本身)
AddRoundKey(state, w[0 , Nb-1]) //Initial Round
for round =1 step 1 to Nr–1 //128 bit=10 rounds, 192 bit =12 rounds, 256 bit =14 rounds
SubBytes(state ) //在密码中提供非线性
ShiftRows(state) //避免列被独立加密,这会
削弱算法
MixColumns(state) //转换每一列并增加扩散到
cipher
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) //生成一个子密钥
将它与状态结合起来。
end for
SubBytes(state) //最后一轮和清理。
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1] )
out =状态
滚动或拖动框的角到根据需要扩展。 ↑

分组密码表示基于对称密钥并对单个数据块进行操作的加密算法。现代密码基于 Claude Shannon 在 1949 年关于乘积密码的工作。密码操作模式是一种使用分组密码并描述如何重复应用密码来转换由许多块组成的大量数据的算法。大多数现代密码还需要一个初始化向量 (IV ) 以确保即使重复输入相同的明文也是不同的密文。有几种操作模式,例如:
电子码本 (ECB) :这是 AES 加密的最基本形式,但它与其他模式一起使用以构建更高级的安全性。数据被分成块,每个块都单独加密。相同的块会产生相同的密码,这使得这种模式相对较弱。
密码块链(CBC) :明文消息在加密前与之前的密文进行异或运算。
密码反馈链 (CFB) :类似于 CBC,但形成一个密码流(前一个密码的输出馈入下一个)。 CFB 依赖于先前的分组密码为正在生成的当前密码提供输入。由于先前密码的依赖性,CFB 无法并行处理。流式密码允许一个块在传输过程中丢失,但后续块可以从损坏中恢复。
输出反馈链(OFB) :类似于CFB,这是一种流密码,但允许在加密之前应用纠错码。
计数器(点击率) :将分组密码转换为流密码,但使用计数器。递增计数器并行馈送每个块密码,以实现快速执行。随机数和计数器连接在一起以提供分组密码。
带有消息验证码的 CBC (CBC-MAC) :MAC(也称为标签或 MIC)用于验证消息并确认消息来自指定的发件人。然后将 MAC 或 MIC 添加到消息中以供接收方验证。
这些模式最初是在 1970 年代末和 1980 年代初构建的,并由美国国家标准与技术研究所在 FIPS 81 中倡导为 DES 模式。这些模式为信息的机密性提供加密,但不能防止修改或篡改。为此,需要数字签名,安全社区开发了 CBC-MAC 进行身份验证。在建立像 AES-CCM 这样的算法之前,将 CBC-MAC 与一种传统模式结合起来很困难,它提供身份验证和保密。 CCM 代表 Counter with CBC-MAC Mode。

AES-CCM 使用双重密码:CBC 和 CTR。 AES-CTR 或计数器模式用于对流入的密文流进行一般解密。流入的流包含一个加密的认证标签。 AES-CTR 将解密标签以及有效载荷数据。从算法的这个阶段形成“预期标签”。算法的 AES-CBC 阶段将来自 AES-CTR 输出的解密块和帧的原始标头标记为输入。数据已加密;但是,身份验证所需的唯一相关数据是计算出的标签。如果 AES-CBC 计算出的标签与 AES-CTR 预期的标签不同,则数据有可能在传输过程中被篡改。
下图说明了传入的加密数据流,该数据流使用 AES-CBC 进行身份验证并使用 AES-CTR 进行解密。这确保了消息来源的保密性和真实性:
点击查看大图
AES-CCM 模式。

物联网技术