商密学习(1.2): 密码算法和密钥管理

写在前面:

结合最近的工作与学习,我决定把日常学习的内容进一步总结形成文档,放在这里方便时刻查看,也能分享帮到有需要的小伙伴,内容由我整理自各类书籍与互联网博文,未经允许禁止转载,如有侵权联系我删除,谢谢

上一期:商密学习(1.1): 密码基础知识-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_51744133/article/details/140498786?spm=1001.2014.3001.5502

目录

1.4 密码算法

对称密码算法

公钥密码算法

密码杂凑算法

密码算法分析概要

1.5 密钥管理

密钥生命周期管理(密钥管理的核心)

对称密钥管理

公钥基础设施

数字证书结构


1.4 密码算法

现代密码学理论中,算法是密码技术的核心。分为对称密码算法、公钥密码算法和密码杂凑算法三个类别。

图4 密码算法分类

对称密码算法

两种主要形式:序列密码(流密码)和分组密码(块密码)

序列密码:将密钥和初始向量(Initial Vector,IV)作为输入,通过密钥流生成算法输出密钥流(扩展密钥序列),然后将明文序列与密钥流进行异或,得到密文序列。特点在于密钥流可在明文序列到来前生成,加密操作只需一次异或,执行速度快,占用资源少。

分组密码:对明文信息进行分组,将明文分组、密钥、初始向量一同输入,通过分组加密算法输出密文分组。主要有七种工作模式

ECB模式将明文分组直接单独进行加密得到密文分组。 直接加密明文分组

CBC模式将明文分组先与前一个密文分组(或IV)异或再加密得到密文分组。 对明文分组与前一个明文分组的异或结果加密

CFB模式将前一个密文(或 IV)进行加密后再与明文异或得到密文。 先加密前一个密文再与明文异或

OFB模式将 IV 进行加密得到密钥流,再将该密钥流与明文异或得到密文。 先生成密钥流再与明文异或CTR模式将计数器加密后再与明文分组异或得到密文分组。

其中,CFB、OFB、CTR三种模式属于流密码。

详见分组加密算法的几种工作模式 - 十一度 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/11sgXL/p/13607083.html

序列密码算法:

ZUC(祖冲之密码算法)——密钥长度128bit,由128bit种子密钥和128bit比特初始向量共同产生32bit位宽密钥流。算法结构三层逻辑,上层16级线性反馈移位寄存器(LFSR),中间层比特重组(BR),下层非线性函数F。

基于ZUC的两种算法包括机密性算法(128-EEA3)和完整性算法(128-EIA3)

GM/T 0001.1-2012gmbz.org.cn/main/viewfile/20180117202410524608.html

chacha20算法——国际算法,密钥长度256bit,安全强度256

分组密码算法:

SM4——128bits密钥,32轮运算,加密过程与解密过程完全一致,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。密钥长度和分组长度均为128bits、32轮非平衡Feistel网络结构。

GM/T 0002-2012:gmbz.org.cn/main/viewfile/20180108015408199368.html

DES算法——分组长度为56bit密钥+8bit奇偶校验位,16圈迭代加密64bit明文的分组密码算法

AES算法——分组长度固定128bit,128bit、192bit、256bit秘钥,支持CBC模式。16字节(一字节8bit)密钥对应10轮,24字节密钥对应12轮,32字节对应14轮

SM1 算法——分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中

公钥密码算法

打破了加解密使用相同密钥的限制,解决密钥管理难题,包括公钥加密和私钥签名两种主要用途。一般建立在公认的计算困难问题之上。

公钥密码体制包括基于大整数因子分解问题困难性的RSA密码算法;基于离散对数(包括有限域的离散对数问题,如ElGamal;椭圆曲线上的离散对数问题,如SM2);后量子密码(如基于格的密码)

公钥加密算法:运算操作复杂度高,一般比对称密码算法加密速度慢,主要用于短数据的加密,如建立共享密钥。

数字签名算法:主要用于确认数据完整性、签名者身份真实性、签名行为不可否认性等。使用私钥签名,公钥进行验证。

SM2——基于椭圆曲线上的离散对数困难问题,包括:数字签名算法、密钥交换协议、公钥加密算法三部分,私钥256bits,公钥512bits,引入了随机数(需要保密),密文随机,密文比明文长96bytes,签名长度512bits(签名+密钥)

SM9——标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。

RSA——基于大整数因子分解难题,实际应用时确保两个素数随机产生,计算乘积n时用了相同的素数则通过计算公因子方法就可将n进行因子分解。

密码杂凑算法

密码杂凑算法也称作“散列算法”或“哈希算法”,现行业内统称密码杂凑算法,简称“杂凑算法”或“杂凑函数”。密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂凑值。

杂凑算法的性质

  • 抗原像攻击(单向性):给定杂凑值h,找到消息M使得h=H(M)是困难的。杂凑函数是单向的。
  • 抗第二原像攻击(弱抗碰撞性):为一个给定的消息M1找出一个输入M2使得H(M1)=H(M2)在计算上是困难的。输入的微小变化会使得输出的杂凑结果有很大不同。
  • 强抗碰撞性:找到两个消息M1、M2使得H(M1)=H(M2)是困难的。

杂凑算法有多种构造方式,常见Merkle-Damgard(M-D)结构和海绵结构

M-D结构:MD5、SHA-1、SHA-2和SM3

海绵结构:SHA-3

若压缩函数抗碰撞,则杂凑算法抗碰撞(其逆不一定为真)

杂凑算法最直接应用:产生消息摘要,在不安全信道不能独立验证完整性,要与密钥配合使用,称为HMAC(Keyed-hash Message Authentication Code),此外也常与公钥密码算法一同使用产生数字签名。

MD5 不安全——512bits分组,生成128bits摘要值(16字节)

SHA-1 不安全——生成160bits摘要值(20字节),SHA-1的变体可以产生192bit和256bit的消息摘要。

SHA-2——(224bits、256bits(32字节)、384bits、512bits四种输出)

SHA-3 目前无有效攻击

SM3算法:分组长度是512bit,生成256bit杂凑值(32字节)。输出长度为256bits。对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值

HMAC(有密钥的杂凑)密码算法,HMAC计算时调用了2次完整的杂凑函数。

密码算法分析概要

柯克霍夫斯(Kerckhoffs)原则:评估一个算法安全性时,必须假定攻击者不知道密钥但知道算法所有细节。基于此,密码算法的安全性基于密钥的保密而不是所用算法的隐蔽性。

密码分析按照攻击者获取信息能力分为唯密文攻击、已知明文攻击、选择明文攻击和选择密文攻击四种方式。

唯密文攻击(Ciphtext Only Attack,COA)只知道密文,推出明文或密钥,一般用穷举攻击。

已知明文攻击(Known Plaintext Attack,KPA)知道部分的明文和密文对,推出密钥和加密算法。

选择明文攻击(Chosen Plaintext Attack,CPA)知道明文就知道密文,目标为推出密钥。

选择密文攻击(Chosen Ciphertext Attack,CCA)知道密文就知道明文,目标为推出密钥。

对称密码的分析:差分类攻击和线性类攻击

差分类攻击:特定区别的明文加密后的变化传播攻击算法

密码分析(一):差分密码分析-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_43734797/article/details/124055427

线性类攻击:已知明文攻击,寻找明密文之间“有效“逼近表达式,恢复密钥

密码分析(二):线性密码分析-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_43734797/article/details/124324247

公钥密码的分析

公钥密码的设计一般都做到可证明安全,即证明底层数学问题困难,上层公钥密码安全,因此针对公钥密码的分析集中于对底层困难问题的分析

杂凑函数的分析

与分组密码分析常相通,差分攻击、模差分攻击、中间相遇攻击等,围绕杂凑三个性质展开

侧信道分析

实际应用中的密码系统会通过物理装置泄露信息,如能量消耗、电磁辐射、运行时间,无需实施入侵和破解密码算法就能分析获取密钥等敏感数据,侧信道分析对密码算法实现的实际安全构成巨大威胁。

1.5 密钥管理

密钥生命周期管理(密钥管理的核心)

密钥生命周期——密钥从生成到销毁的时间跨度。一般而言使用频率越高要求生命周期尽量短,若密钥泄露其生命周期应立即终止并销毁密钥。

1.密钥生成:随机数直接生成、密钥派生函数(KDF),在KDF中①由共享秘密派生密钥。②从主密钥派生密钥(密钥分散)。

2.密钥储存:密码产品中/加密后存在通用储存器

3.密钥导入导出(备份归档、密钥分发):①加密传输,非对称加密密钥->数字信封,SM2加解密有完整性校验,可直接用于密钥加密传输。②知识拆分,将密钥拆分为分量导出,导入时进行合成。知识拆分不应降低密钥安全性,安全三/四级需要走可信信道。

4.密钥分发(产品间密钥共享):①人工分发:只适用少量,一般用于根密钥。②自动分发:数字信封,对称密钥加密。

5.密钥使用:①同一密钥不同用途会降低安全性。②不同用途的密钥安全要求也不同。③应限制密钥用途以降低泄露危害。

6.密钥备份与恢复:保护密钥可用性,备份密钥处于未激活状态,完成恢复后可激活。

7.密钥归档:出于解密和验证历史的需要对生命周期结束的密钥归档(签名私钥不归档)

8.密钥销毁:销毁所有(不包括归档)的副本。①正常销毁:达到使用截止时间。②应急销毁:已泄露或有泄露风险。(对于公钥体系,私钥销毁公钥撤销)

图5 密钥生命周期

详见:密钥管理——密钥生命周期管理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/fwy000305/article/details/125278123

对称密钥管理

相对于公钥管理,对称密钥管理最具特色的是对称密钥的分发,即通信双方建立相同的对称密钥进行安全通信。

点到点结构:通信双方共享一个人工分发的KEK(Key Encrypting Key,密钥加密密钥),双方需要通信时,通信发起方产生新的DK(Data Key, 数据密钥,有时也称会话密钥),用KEK加密DK,并将加密后的DK发送给另一方,实现DK的在线自动建立。

缺点:双方手动建立KEK,n个成员组网就有n(n-1)/2个KEK。大型网络中密钥分发存在问题。

基于密钥中心的结构:每个通信方和密钥中心共用一个KEK,通信双方之间无KEK,n个成员组网只有n个KEK。

两种密钥中心:密钥转换中心(Key Transfer Centre,KTC),DK 由发起方产生;密钥分发中心(Key Distribution Centre,KDC),DK由KDC产生。

GM/T 0051-2016 gmbz.org.cn/main/viewfile/20180110030656385882.html

公钥基础设施

公钥基础设施(Public Key Infrastructure,PKI)是基于公钥密码技术用于提供信息保密性、信息来源真实性、数据完整性、行为不可否认性等安全服务。

PKI主要解决公钥属于谁的问题,谁拥有公钥配对的私钥。

PKI系统组件

基于由CA构建的信任,完成公私密钥的绑定

  • 证书认证机构(Certification Authority,CA)具有自己公私钥对,为他人签发证书,用自己私钥证实用户公钥信息
  • 证书持有者(Certification Holder)持有证书和证书中公钥对应的私钥。
  • 依赖方(Relying Party)使用他人证书来实现安全功能的通信实体。
  • 证书注册机构(Registration Authority,RA)作为CA与申请者的交互接口负责信息检查管理工作。审查通过后要求CA签发证书。
  • 资料库(Repository)用于实现证书分发,储存,供依赖方下载。
  • 证书撤销列表(Certificate Revocation List,CRL)包含所有被撤销证书标识,验证者根据最新CRL判断证书是否被撤销。
  • 在线证书状态协议(Online Certificate Status Protocol,OCSP)请求-响应协议,实时检查证书撤销状态。
  • 轻量目录访问协议(Lightweight Directory Access Protocol,LDAP)CA将新签发的证书与证书撤销链送到LDAP目录服务器供用户查询下载
  • 密钥管理系统(Key Management System,KM)为其他实体提供生成、备份、恢复、托管等功能。

PKI(HTTPS)体系详解 - precedeforetime - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/precedeforetime/p/13390761.html

数字证书结构

数字证书又称公钥证书,包含公钥持有者信息、公开密钥、有效期、扩展信息以及由CA对以上信息进行的数字签名。

数字证书由三个域组成

  • 基本证书域(tbsCertificate)包含主体名称、颁发者名称、主题公钥、证书有效期等信息
  • 签名算法域(signatureAlgorithm)包含证书签发机构签发该证书使用算法的标识符
  • 签名值域(signatureValue)包含对签名算法域进行签名的结果

GM/T 0015-2023gmbz.org.cn/main/viewfile/20240611164502027717.html

数字证书——密码学笔记(六)_数字证书的域-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_40397257/article/details/119137514

双证书体系:我国双证书体系中用户拥有两个私钥,签名私钥和加密私钥,签名私钥用户本地生成并专有掌握,对应“签名证书”,加密密钥用于解密和密钥交换,由可信密钥管理中心生成并和用户共同掌握。

下一篇:

商密学习(1.3): 密码协议和密码功能实现-CSDN博客SSL协议是网景公司推出Web浏览器时推出的,旨在保证web传输的重要或敏感数据的安全性的通用协议,采用B/S(浏览器/服务器)架构为典型实现方式,有数据加密、完整性保护、数据源鉴别、抗重放攻击等功能。实现信息来源真实性的核心是鉴别,使用密码技术可安全实现对实体的鉴别,常用方式有①基于对称密码、公钥密码等密码技术的鉴别 ②基于静态口令的鉴别 ③基于动态口令的鉴别 ④基于生物特征的鉴别。作为MQV的一个变种,具有鉴别通信双方真实性能力,通信双方经过两次(可选三次)信息传递过程,计算由双方确定的一个公钥。https://blog.csdn.net/m0_51744133/article/details/140585126

  • 31
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Draina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值