今天整理的有关密钥管理的知识点主要来源于《商用密码》以及自己在学习过程中接触到的来自大佬的总结~~~
密钥的安全是保证密码算法安全的基础。 如何对密钥进行安全管理是密码产品、密码应用的设计开发人员关注的重点, 也往往是不了解或刚涉入密码领域的人所忽视的一项重要内容。
根据GM/T 0054-2018《信息系统密码应用基本要求》,信息系统中的密钥在其生命周期内涉及到生成、存储、导入和导出、分发、使用、备份和恢复、归档、销毁等环节。
1、密钥生成
密钥生成是密钥生命周期的起点,所有密钥都应当直接或者间接地根据随机数生成。
直接生成:随机数直接生成
间接生成:
(1)从口令派生:熵小,易遭受穷举搜索攻击,不推荐。
(2)密钥派生函数(Key Derivation Function,KDF):利用对称密码算法或者杂凑算法派生密钥。密钥协商过程中从共享秘密派生密钥。如SM2、SM9的密钥协商和加解密算法中使用的基于SM3的KDF。从主密钥派生,也叫密钥分散。主密钥 + 唯一标识 + 分散信息,派生密钥。
无论采用何种方式,密钥都应在密码产品内部产生。
2、密钥存储
为了保证密钥存储安全,可以将密钥存储在核准的密码产品中,或者在对密钥保密性和完整性保护后,存储在通用存储设备或系统中(如数据库)中。需要指出的是,并非所有的密钥都需要存储,一些临时密钥或一次一密的密钥在使用完就要进行销毁。
(1)存储在密码产品中
(2)加密保存在通用存储设备中
3、密钥导入和导出
密钥的导入和导出主要指密钥在密码产品中的进出,既可以在同一个密码产品中进行密钥的导入和导出(用于密钥的外部存储、备份和归档),也可以将密钥从一个密码产品导出后再导入到另一个密码产品中(用于密钥的分发)为了保证密钥的安全性,密钥一般不能明文导出到密码产品外部。安全的密钥导入和导出方式包括加密传输和知识拆分。
(1)加密传输
对称加密和非对称加密皆可。密钥的完整性保护和校验。
(2)知识拆分
• 基本要求:密钥拆分为多个独立的密钥分量,不能降低密钥安全性,不能将128比特密钥拆分为2个64比特密钥(该密钥的密钥空间从2^128降低到2^64);合成:密钥分量分别单独导入,在密码产品内合成。
• 知识拆分方案1:密钥拆分为几个长度相等的分量,导入时采用分量异或恢复密钥。
• 知识拆分方案2:门限算法拆分,如Shamir密钥分享方案(参见附录A),拆分为n份,至少需要t(t<n)份就可恢复密钥。
• GM/T 0028三级和四级要求拆分后的密钥分量通过可信信道传输。
4、密钥分发
密钥分发主要用于不同密码产品间的密钥共享。根据分发方法,密钥分发主要分为人工(离线)分发和自动(在线)分发。这两者的主要区别在于人工分发方式需要人工参与,在线下通过面对面等方式完成密钥的安全分发;而自动的分发方式一般借助密码技术在线自动完成密钥分发。
(1)人工分发
人工分发密钥指的是利用加密传输、知识拆分等手段通过人工将密钥从一个密码产品(如密钥管理系统、密钥分发系统等)分发到其他产品中,实现密钥共享。人工分发的效率较低,只适用于少量密钥的分发,一般用于根密钥(密钥加密密钥)的分发。人工分发过程必须保证以下几点:
①密钥由授权的分发者分发,并由授权的接收者接收。
②进行人工分发的实体是可信的。
③有足够的机制(如加密、紧急销毁机制等)保证密钥的安全性,提供对截取、假冒、篡改、重放等攻击手段的对抗能力。
(2)自动分发
对称密钥和公钥加密密钥的私钥可以通过数字信封、对称密钥加密等方式进行自动加密分发。自动分发的安全性主要通过密码技术本身来保证。
5、密钥使用
密钥一般只能在核准的密码产品内部使用。用于核准的密码算法的密钥,不能再被非核准的密码算法使用,因为这些算法可能导致密钥泄露。特别是,不同类型的密钥不能混用,一个密钥不能用于不同用途(加密、签名、MAC等),这主要有以下几个原因:
①将一个密钥用于不同的用途,可能会降低密钥的安全性。
②不同用途的密钥对密钥的要求互不相同。比如,加密密钥对可能会将其私钥归档以解密历史数据,而签名密钥对的私钥在其生命周期结束时应当立即销毁:如果一个密钥对同时用作加密和签名,将会产生矛盾。
③限制密钥的用途可以降低密钥泄露时可能造成的损害。
此外,虽然不需要保护公钥的保密性,但在使用前(如签名验证或者密钥协商过程)需要验证公钥的完整性,以及实体与公钥的关联关系,以确保公钥来源的真实性。
6、密钥备份和恢复、归档与销毁
密钥备份和恢复:密钥备份与密钥存储非常类似,只不过备份的密钥处于不激活状态(不能直接用于密码计算),只有完成恢复后才可以激活。
密钥归档:密钥在其生命周期结束时,应当进行销毁。但是出于解密历史数据和验证历史签名的需要,有些不在生命周期内的密钥可能需要持续保存,需要注意的是签名密钥对的私钥不应进行归档。
密钥归档与密钥备份在形式上类似,主要区别在于密钥归档是在密钥的生命周期之外(销毁之后)对密钥进行保存。
密钥销毁:密钥进行销毁时,应当删除所有密钥副本(但不包括归档的密钥副本)。密钥销毁主要有两种情况:正常销毁,应急销毁。