密码基础知识【密钥生命周期管理】


密钥生命周期管理

密钥的安全是保证密码算法安全的基础。如何对密钥进行安全管理是密码产品、密码应用的设计开发人员关注的重点,也往往是不了解或刚涉入密码领域的人所忽视的一项重要内容。

**密钥生命周期指的是密钥从生成到销毁的时间跨度。**不同的密钥有不同的生命周期:签名密钥对可能有数年的生命周期;而一些临时密钥(如IPSec协议中的会话密钥)的生命周期为单次会话,使用完毕后立即销毁。一般而言,使用频率越高的密钥要求其生命周期尽量短。单个密钥的生命周期也不是固定的,如果密钥泄露,其生命周期应立即终止并销毁密钥。 此外,有些与安全相关的敏感参数也应该视同密钥进行安全防护,包括但不限于用户口令、密钥生成和密码计算过程中使用的随机数或中间结果(如SM2签名算法中使用的随机数和密钥协商过程中生成的共享秘密)。 根据 GM/T0054-2018《信息系统密码应用基本要求》,信息系统中的密钥在其生命周期内涉及到生成、存储、导入和导出、分发、使用、备份和恢复、归档、销毁等环节,以下具体介绍每个环节。

1.密钥生成

密钥生成是密钥生命周期的起点,所有密钥都应当直接或间接地根据随机数生密钥生成的方式包括利用随机数直接生成、通过密钥派生函数(Key Derivation Function,KDF)生成。其中,后一种方式被认为是随机数间接生成,因为派生函数使用的主密钥、共享秘密信息的生成都与随机数相关。无论采用何种生成方式,密钥都应在密码产品内部产生。此外,利用用户口令派生密钥也是一种常见的方式:通过实体唯一标识和其他相关信息,从口令中派生出密钥。口令生成密钥的密钥空间依赖于口令的复杂度,但是相比于密钥的预期复杂度(比如SM4密钥空间为 2128),口令仅提供小得多的熵(8位数字口令提供227的密钥空间),极大地降低了穷举搜索攻击的难度。因此,这种密钥派生方式不推荐使用,尤其不能用于网络通信数据的保护,仅在某些特定环境(如加密存储设备)中使用。

密钥生成时一般会伴随生成密钥控制信息,包括但不限于密钥拥有者、用途、密钥索引号、生命周期起止时间,这些信息可以不进行保密性保护,但是应进行完整性保护以确保密钥被正确使用。下面介绍密钥生成的两种主要方式。

1)利用随机数直接生成

密钥的安全性直接取决于随机数利用随机数直接生成是密钥生成的常见方式,发生器的质量,因此需要使用核准的随机数发生器进行密钥生成。在使用随机数直接作为密钥时,应检查密钥是否符合具体算法的要求(如SM2、SM9算法私钥值须小于椭圆曲线群的阶),必要的时候进行调整或者重新生成新的随机数作为密钥。

2)通过KDF生成

在有些场景中,密钥可能不是由随机数发生器直接生成的,而是通过某个秘密值进行派生。该秘密值与其他相关数据(如随机数、计数器等)一同作为KDF的输入,由KDF 生成指定长度的密钥。KDF的设计应保证从派生的密钥无法推断出秘密值本身,同时,也必须保证从某个派生的密钥无法推断出其他派生的密钥。KDF 一般基于对称密码算法或密码杂凑算法来构造。

KDF生成密钥主要有以下两种情形

(1)在密钥协商过程中从共享秘密派生密钥。这种情形主要发生在密钥协商过程中。通信双方在密钥协商过程中,首先利用Difie-Hellman、MQV 等算法获得一个共享秘密。该共享秘密一般不直接作为密钥,而是将该共享秘密作为密钥材料利用 KDF 生成密钥。这种密钥派生方式的主要示例包括SM2/SM9的密钥协商和公钥加密算法中使用的基于 SM3 的 KDF。

(2)从主密钥派生密钥。这种密钥派生的方法也称为密钥分散。对于一些需比如大规模分发智能IC卡时,发卡方无法保存每个要生成大量对称密钥的场景,实体的密钥。一种常见做法就是发卡方保存主密钥,根据实体唯一标识和其他相关信息,从主密钥中派生出每个实体单独的密钥。使用时,发卡方可以根据主密钥、实体唯一标识重新生成该密钥,然后进行身份鉴别或者加密通信等后续操作。

2.密钥存储

为了保证密钥存储安全,可以将密钥存储在核准的密码产品中,或者在对密钥进行保密性和完整性保护后,存储在通用存储设备或系统(如数据库)中。需要指出的是,并非所有密钥都需要存储,一些临时密钥或一次一密的密钥在使用完就要立即进行销毁。

1)存储在密码产品中

密码产品的密钥防护机制,可以用于保护密钥在存储过程中的保密性和完整性。密码产品中的密钥一般采取分层次的方式,逐层进行保护;下层的密钥利用上层的密钥加密密钥进行保护;对于顶层的密钥加密密钥,则需要采取严格的安全防护措施(如微电保护)在密码产品中密文存储,以防止密钥被非授权地获取和篡改。

2)加密保存在通用存储设备中

对于某些应用场景,由于密钥数量较大,密码产品本身只负责密码计算,而将密钥存储在通用存储设备或系统(如数据库)中。这种情况下,需要利用密码算法不能简单地只采用密码杂对密钥进行必要的保密性和完整性保护。需要指出的是,凑算法进行完整性保护,因为它无法阻止恶意的篡改。

3.密钥的导入和导出

密钥的导入和导出主要指密钥在密码产品中的进出,既可以在同一个密码产品中进行密钥的导入和导出(用于密钥的外部存储、备份和归档),也可以将密钥从一个密码产品导出后再导入到另一个密码产品中(用于密钥的分发)。为了保证密安全的密钥导入和导出方式钥的安全性,密钥一般不能明文导出到密码产品外部。包括加密传输和知识拆分。

1)加密传输

利用加密算法进行密钥的导入和导出是最简单和高效的方法。对称加密技术和非对称加密技术都可以完成密钥的导入和导出,但前提是通信双方需要预先共享一个密钥加密密钥或获取被导入方的公钥。同时,为了保证密钥的完整性,在密钥的导入和导出过程中,需要加入完整性保护和校验机制。**利用非对称加密技术完成的密钥加密一般称为数字信封。**SM2加密和解密算法自身具有完整性校验的功能,可以直接用于密钥加密传输。

2)知识拆分

知识拆分是指将密钥拆分为几个独立的密钥分量,导出到密码产品外部;导入时,每个密钥分量单独导入,最终在密码产品内部进行合成。常见的知识拆分方法,有以下两类。

a)将密钥K拆分成若干个与其长度一致的分量K1,…,Kn,导入时利用异或计算恢复出原有密钥,即K=K1⊕ …⊕ Kn。

b)利用门限算法进行拆分:利用Shamir秘密分享方案,将K拆分为n个密钥分量。只有大于等于t(t

需要注意的是,知识拆分不应当降低密钥的安全性,简单地将密钥截取为若干段的方式是不允许的,如将一个 128 比特的 SM4 密钥拆成两个 64 比特的密钥分量。因为对于任何一个密钥分量的持有者而言,该密钥的密钥空间从2128降低到264,极大降低了穷举搜索攻击的难度。

除了禁止密钥的明文进出,高安全等级的密码产品(如符合GM/T0028-2014安全三/四级的密码模块)还要求,进行知识拆分后的密钥分量要通过可信信道传输。可信信道在密码模块和发送者或接收者之间建立安全可信的通信链接,用以安全传输未受保护的关键安全参数、密钥分量和鉴别数据。可信信道能够在模块定义的输入或输出端之间及模块到目的终端的通信链路上,防止窃听以及来自恶意实体、恶意进程或其他装置的物理篡改或逻辑篡改。

4.密钥分发

密钥分发主要用于不同密码产品间的密钥共享。根据分发方法,密钥分发主要分为人工(离线)分发和自动(在线)分发。这两者的主要区别在于人工分发方式需要人工参与,在线下通过面对面等方式完成密钥的安全分发:而自动的分发方式一般借助密码技术在线自动完成密钥分发。

1)人工分发

人工分发密钥指的是利用加密传输、知识拆分等手段通过人工将密钥从一个密码产品(如密钥管理系统、密钥分发系统等)分发到其他产品中,实现密钥共享。人工分发的效率较低,只适用于少量密钥的分发,一般用于根密钥(密钥加密密钥)的分发。人工分发过程必须保证以下几点: ①密钥由授权的分发者分发,并由授权的接收者接收。 ②)进行人工分发的实体是可信的。 ③有足够的机制(如加密、紧急销毁机制等)保证密钥的安全性,提供对截取、假冒、篡改、重放等攻击手段的对抗能力。

2)在线分发

对称密钥和公钥加密密钥对的私钥可以通过数字信封、对称密钥加密等方式进行自动加密分发。自动分发的安全性主要通过密码技术本身来保证。

5.密钥的使用

密钥一般只能在核准的密码产品内部使用。用于核准的密码算法的密钥,不能再被非核准的密码算法使用,因为这些算法可能导致密钥泄露。特别是,不同类型的密钥不能混用,一个密钥不能用于不同用途(加密、签名、MAC 等),这主要有以下几个原因。

①将一个密钥用于不同的用途,可能会降低密钥的安全性。

②)不同用途的密钥对密钥的要求互不相同。比如,加密密钥对可能会将其私钥归档以解密历史数据,而签名密钥对的私钥在其生命周期结束时应当立即销毁;如果一个密钥对同时用作加密和签名,将会产生矛盾。

③限制密钥的用途可以降低密钥泄露时可能造成的损害。 此外,虽然不需要保护公钥的保密性,但在使用前(如签名验证或者密钥协商过程)需要验证公钥的完整性,以及实体与公钥的关联关系,以确保公钥来源的真实性。

6.密钥的备份和恢复

密钥备份的主要目的是保护密钥的可用性,作为密钥存储的补充以防止密钥的意外损坏,密钥备份与密钥存储非常类似,只不过备份的密钥处于不激活状态(不能直接用于密码计算),只有完成恢复后才可以激活。密钥备份需要保护备份密钥的保密性、完整性及其与拥有者身份和其他信息的关联关系。密钥备份时一般将备份的密钥存储在外部存储介质中,需要有安全机制保证仅有密钥拥有者才能恢复出密钥明文。密钥备份或恢复时应进行记录,并生成审计信息;审计信息应包括备份或恢复的主体、备份或恢复的时间等。

7.密钥归档

密钥在其生命周期结束时,应当进行销毁。但是出于解密历史数据和验证历史签名的需要,有些不在生命周期内的密钥可能需要持续保存,需要注意的是签名密钥对的私钥不应进行归档。

密钥归档与密钥备份在形式上类似,主要区别在于密钥归档是在密钥的生命周期之外(销毁之后)对密钥进行保存,在现有系统中该密钥已经不再使用;而密钥备份则针对仍在生命周期内的密钥。 密钥归档时,也应当继续对这些密钥提供安全保护,以保证历史加密数据的安全性。密钥归档时应进行记录,并生成审计信息,审计信息应包括归档的密钥和归档时间等。

8.密钥销毁

密钥的销毁是密钥生命周期的终点。密钥生命周期结束后,要对原始密钥进行销毁,并根据情况重新生成密钥,完成密钥更换。密钥进行销毁时,应当删除所有密钥副本(但不包括归档的密钥副本)。密钥销毁主要有两种情况。 ①正常销毁。密钥在设计的使用截止时间到达时自动进行销毁,比如,临时密钥在使用完毕时应当立即销毁。 ②)应急销毁。密钥在已经泄露或存在泄露风险时进行的密钥销毁。对于存储在密码产品中的密钥,一般配备了紧急情况下自动销毁密钥的机制:当密钥所有者发现密钥存在泄露风险时,可能需要手动提前终止密钥的生命周期,进行密钥销毁。

篮球客app下载
笔记本怎么弹出光驱