天天看点

Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

一、密钥交换(Key exchange)

每一种加密算法都依赖于加密和解密密钥的使用,而对其中一些密钥进行保密是至关重要的。在对称加密的情况下,发送方和接收方共享一个秘密的密钥,其他人不应该知道。在发送方和接收方可以开始使用对称算法进行通信之前,他们必须以某种方式商定并交换他们将用于该通信会话的共享秘钥,这是一个挑战。

例如,Alice和Bob希望彼此进行秘密通信。他们希望密学能够为他们的通信保密,并保证他们真的在互相交谈。这需要他们交换一个共享的加密密钥。首先,Alice可能会去随机选择一个秘密密钥,但她必须以某种方式将其发送给Bob,但是她还没有一个安全的渠道来与Bob交流来传递密钥。

Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

如果她通过电子邮件或其他未加密的方式发送,像Mal这样的第三方可能会在运输过程中截获密钥,然后使用该密钥窃听Alice和Bob之间所有的后续通信。使这个问题更加复杂的是,当Bob从Alice那里收到这个密钥时,他没有任何方法来验证向他发送密钥的人真的是Alice。

Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

如果Mal很聪明,Mal可以冒充Bob,给Alice发送一个假钥匙,然后再冒充Alice给Bob发送同样的假钥匙。这将产生与截获Alice合法发送给Bob的密钥相同的效果,而Mal将能够窃听他们所有的通信。

带外密钥交换(Out-of-Band Key Exchange):

这个问题的简单答案是使用带外密钥交换(Out-of-Band Key Exchange)。这只是意味着Alice和Bob以某种他们都信任的方式交换密钥,使用不同的通信渠道。例如,Alice和Bob可能只是简单地见面。如果他们彼此认识,那么他们可以一起创建密钥,并将其保存在他们各自的设备上。或者,Alice可以创建一个密钥,将其保存在一个USB驱动器上,然后将该驱动器邮寄给鲍勃的一个可信的真实地址。如果Alice和Bob知道对方的声音,他们甚至可以通过电话交换密钥。然而,这些方法都有自己的挑战,因为它们都很耗时,Alice和Bob可能相隔很远,使得实际会面不现实。通过实物邮寄信件需要几天时间,而试图通过电话读取冗长的加密密钥则非常困难。

带内密钥交换(In-Band Key Exchange):

解决带外密钥交换问题的方法是使用带内密钥交换(In-Band Key Exchange)算法,允许Alice和Bob在网络上交换一个秘密密钥,即使他们事先没有一个安全的方式与对方交流。第二部分的DH算法即可做到这一点。

二、DH算法(Dffie-Hellman)

Diffie-Hellman密钥交换算法,也称为DH算法。解决了对称加密的密钥交换问题。该算法于1976年由三位密码学家发明。它以Ralph Merkle的工作为基础,由Whitfield Diffie和Martin Hellman将其变成一种实用算法。对Merkle来说,遗憾的是,他的名字没有包括在算法的名称中。

Diffie-Hellman的数学原理:

首先我们用颜色代替数字做一个比喻。假设Alice和Bob想就一个共同的、共享的秘密颜色达成协议,并且不想让其他人知道。下面是他们可能做到这一点的一种方法:

  1. 首先,Alice向Bob发送一个信息,告诉他一个共享公开的颜色。比方说,Alice选择了黄色,然后通过电子邮件告诉Bob这个颜色;
  2. 接下来,Alice和Bob各自选择一种秘密的颜色,他们没有告诉对方。也许Alice选择的是红色,Bob选择的是蓝色。然后,Alice和Bob各自拿着共享的颜色,黄色,与他们的秘密颜色混合。对Alice来说,黄色和红色组成橙色,对Bob来说,黄色和蓝色组成绿色;
  3. 然后,Alice给Bob发了一封邮件,告诉他,自己得到了橙色,而Bob则告诉Alice他得到了绿色;
  4. 最后,Alice和Bob现在有了通过将共享的黄色与他们伙伴的秘密颜色混合而产生的颜色。然后他们各自将自己的秘密颜色与这个颜色混合。Alice将绿色和红色混合得到棕色,而Bob将橙色和蓝色混合得到棕色。这两种棕色都是相同的,都是由相同的三种颜色,即黄色、红色和蓝色混合在一起形成的。这样,双方就知道了协商的秘密的颜色。
Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

以第三人称的视角来看,在整个交换的过程中,可以知道他们的公开共享颜色是黄色,交换了绿色和橙色,但不会知道Alice和Bob选择的两种秘密颜色,红色和蓝色,以及共同的秘密颜色棕色,因为这些从未通过电子邮件发送过。这就是Diffie-Hellman对颜色的作用。

数学原理有点复杂,但其工作方式是一样的。原理如下:

  1. Alice没有选择一个公开的颜色,而是选择了两个由变量p和g代表的数字,而且p必须是一个素数。然后Alice给Bob发了一条信息,告诉他用13代表p,用7代表g。
  2. 然后假设Alice选择了5作为秘密数字,我们称之为a。然后根据图中的公式得到A=11。其中a也可以称为Alice的私钥,A为Alice的公钥,并发送给Bob。
  3. 接着,Bob选择他自己的秘密数字,b=8。以和Alice相同的方式计算出自己的公钥B=3。然后将B发送给Alice。
  4. 最后,Alice和Bob通过图中的算法计算出最后的秘密S=9。S也就是双方交互的共享密钥信息。
Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

如果Mal观看了Alice和Bob之间的整个通信,她不会有足够的信息来重建这个密钥,就像她无法弄清共享秘密的颜色是棕色一样。当人们将Diffie-Hellman用于实际通信时,他们会选择大得多的p和g值来开始工作,这使得数学运算变得更加困难。

还有一个值得一提的Diffie-Hellman算法的变体。椭圆曲线Diffie-Hellman算法,或称ECDH算法,使用了类似的方法,但依赖于从椭圆曲线问题中得出的复杂性。

三、密钥托管(Key escrow)

强大的加密技术很难被击败,这给执法部门和其他政府机构带来了问题,他们认为自己有权访问加密的通信。这就是密钥托管(Key escrow)的概念发挥作用的地方。密钥托管技术,使执法部门能够获得加密信息。这个想法是,政府人员在访问托管的钥匙之前必须获得法院的命令,以保护其他个人的隐私。虽然这可能是一个合理的目标,但目前还没有一个合理的方法以安全的方式实施这种方法。

也许,部署密钥托管技术的最协调一致的努力发生在1993年,当时政府提出了一种被称为Clipper芯片的技术。该芯片可以进行加密,但它包括一个特殊的执法访问字段,即LEAF值,允许政府人员访问通信内容。Clipper芯片引起了巨大的公众争议,电子前沿基金会等团体与RSA等安全公司联合起来,公开反对Clipper芯片的政府后门。这些游说工作取得了成效,Clipper芯片从未被广泛采用。在进一步分析了Clipper芯片的算法后,安全研究人员发现,它包含了一些根本性的缺陷,这些缺陷首先会阻止其安全使用。

2016年,联邦调查局要求苹果公司协助他们获得一部加密的iPhone,而政府正将其作为刑事调查的证据。苹果反对这一要求,理由是削弱iPhone加密软件的安全性会危及数百万iPhone用户的安全。我们陷入了两种利益冲突的困境。当政府有合法签发的搜查令时,他们有获取信息的合法需要。但另一方面,消费者希望科技公司能够打造安全的产品,将各种不受欢迎的入侵者拒之门外。

Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

在有些情况下,企业需要恢复用户的加密密钥。这可能仅仅是因为用户忘记了他们的密码。或者是用户离开了组织,而企业领导需要访问用该用户的密钥加密的信息。一些加密产品,如微软Windows加密文件系统,在这些情况下提供了恢复代理的使用。恢复代理(Recovery Agents)拥有一个主密钥(Master key),可以解密组织中的任何信息。我们必须小心保护该密钥,因为它允许对组织中的所有加密数据进行全面访问。

四、密钥延伸(key stretching)

密钥延伸技术,可以通俗的理解为一种更慢的哈希算法。在密码学中,密钥延伸技术通常用来增加弱密码的安全性,使得暴力破解密码时花费的时间更长。任何系统中都会有弱密码的存在,尤其是人为设定的密码,通常都比较短,或者有规律可循,以致于容易被暴力破解出来,密钥延伸技术让这种攻击更难成功。其结合了两种不同的技术来增加加密密钥的强度:

  1. 首先,将加密密钥与一个被称为盐(salt)的值相结合,以让密钥更随机。这个过程被称为 “加盐”。
  2. 然后,它对产生的值进行散列,以增加密钥检查过程的时间,这可能不到一秒钟,但密钥延伸算法会重复这个过程数百或数千次,以消耗更多的计算能力。
    Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)
    我们的想法是,如果用户知道正确的密码,验证密码所需的一两秒并不是什么大问题。然而,如果攻击者试图猜测正确的密码,攻击者将不得不对每次猜测进行同样的计算,使每次猜测都需要几秒钟。当攻击者试图进行数百万次猜测时,这就会使事情变得缓慢。

两种密钥延伸的方法:

  1. 一种用于执行密钥延伸的算法是Password-Based Key Derivation Function 2,或者PBKDF2。这个功能使用加盐和散列来扩展一个密钥。大多数安全专家建议,任何使用这种功能的人都要重复“加盐”过程至少4000次,甚至更多。
  2. Bcrypt是一种基于Blowfish的类似算法。它使用该算法的散列方法与攻击相结合来加强密钥。

五、硬件安全模块(Hardware security modules)

密码学需要大量的数学计算,因此是相当缓慢的。工程师通常通过建造专门用于加密和解密的特殊用途计算机硬件来提高密码学的效率。硬件安全模块,或称HSMs,是一种特殊用途的计算设备,可以管理加密密钥,并以一种高效的方式进行加密操作。HSMs的购买和操作费用很高,但如果配置得当,它们可以提供极高的安全水平。它们的核心优势之一是,它们可以创建和管理加密密钥,而不把它们暴露给任何一个人,从而大大降低了这些密钥被破坏的可能性。

Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

云服务提供商通常在内部使用HSMs来管理他们自己的加密密钥,他们也向其客户提供HSM服务,作为管理客户密钥的安全方法,而不将其暴露给供应商。

在美国,使用HSM的政府机构必须遵循联邦信息处理标准(即FIPS)140-2中的要求。这份文件《加密模块的安全要求》包含了对机构如何使用HSM和其他加密硬件的详细要求。FIPS 140-2将HSM分为不同的级别,按安全等级递增的顺序排列:

  1. 安全级别1允许使用标准操作系统,不包括物理安全要求。它适合于低级别的安全应用,如标准计算机中的加密卡;
  2. 安全级别2增加了对物理安全的要求,包括使用防篡改的封条,并要求软件和固件根据通用标准认证为EAL2级;
  3. 安全等级3增加了更多的要求,例如,当有人试图篡改HSM时将其内容清零,并在允许访问加密密钥之前对操作员的身份进行认证。第三级还要求软件和固件在通用标准级别EAL3下运行;
  4. FIPS 140-2安全的最高级别,即安全级别4,对安全提出了极强的要求,包括对软件和固件使用共同标准级别EAL4。它还概述了严格的物理安全要求。
    Security+ 学习笔记16 密钥管理一、密钥交换(Key exchange)二、DH算法(Dffie-Hellman)三、密钥托管(Key escrow)四、密钥延伸(key stretching)五、硬件安全模块(Hardware security modules)

参考资料来源:

https://www.linkedin.com/learning/paths/become-a-comptia-security-plus-certified-security-professional-sy0-601

继续阅读