密码学应用基本概念


密码学技术 https://cryptobook.nakov.com/
(1) 传统的加解密方法:同一个密钥加解密,存在密钥传输过程中的泄密危险。
私钥算法(如 DES 和 AES)
(2) 公钥体系:两种应用场景
签名/验签和加密/解密,是公钥体系的两种完全不同的密码学应用。
首先公钥体系必然存在一对钥匙,即公钥和私钥。
两种应用:
加密/解密:面向的是数据接受者,提供"秘密的传输"。使用的密钥对是接收者的密钥对!解决的问题是如何秘密地传输一段消息给接收者。
签名/验签:面向的是数据发送者,提供"可信的背书"。使用的密钥对是发送者的密钥对!解决的问题是如何证明传输的这一段消息,确实地来自当前所号称的发送人。
1. 信息安全传输(接收者的密钥对,发送者使用接收者的公钥加密,接收者使用自己的私钥解密)
2. 签名(发送者的密钥对,发送者使用自己的私钥签名,接收者使用发送者的公钥验签)
流程参考:
https://blog.csdn.net/qq_43519886/article/details/106635562
https://blog.csdn.net/qq_44750892/article/details/120075922

(3) 一些术语

PKI: 公钥基础设施
参考: [公钥体系(PKI)等密码学技术基础](https://www.cnblogs.com/flythinking/p/12540565.html)
目前将数字证书存储在文件中的最常见编码模式有两种:
可分辨编码规则(DER):最常见,因为DER能处理大部分数据。DER编码的证书是二进制文件,文本编辑器无法读取,但Web浏览器和许多客户端应用程序可以进行数据处理。
隐私增强邮件(PEM):这是一种加密的电子邮件编码规则,可将DER编码的证书转换为文本文件。
PEM 是一种存储证书或密钥的文本格式*.pem, *.cer, *.crt, *.key.  其内容有固定的头尾。'--BEGIN' +label+' --' 和 '--END' +label+' --' 
label的类型可以是: CERTIFICATE, CERTIFICATE REQUEST, PRIVATE KEY 和 X509 CRL
PKCS7, PKCS8, PKCS12 都是公钥密码学标准中的内容, PKCS7 用来存储签名或加密后的数据,可以用原始的DER格式,也可以用PEM格式
PKCS8 用来存储私钥; PKCS12 除了PKCS7中的之外还可以存储私钥。
PKCS12的格式和PEM相比会复杂很多,在需要的时候,我们可以使用OPENSSL将PKCS12格式转换成为PEM格式:
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
当然也可以从PEM到PKCS12:
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
HMAC(Hash-based Message Authentication Code)关于密钥相关的哈希运算消息认证码

一、常见的加密算法可分为三类:对称加密算法、非对称加密算法和哈希算法。
1、对称加密算法
常见的对称加密算法有:AES、DES、3DES、IDEA、SM4 和 RC2/4/5 
(1) AES(Advanced Encryption Standard)又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 
(2) DES(Data Encryption Standard): DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行"异或"运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用16个循环, 使用异或, 置换, 代换, 移位操作四种基本运算。 
(3) 3DES:三重DES, 是DES 的常见变体,使用 168 位的密钥对资料进行三次加密的一种机制; 它通常(但非始终)提供极其强大的安全性。如果三个56位的子元素都相同,则三重 DES 向后兼容 DES。 
(4) IDEA(International Data Encryption Algorithm): 是一种类似于三重DES的数据块加密算法,它在DES算法的基础上发展而来。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。 IDEA算法设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。 由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,可极大地促进IDEA的发展和完善。
[参考文档](https://blog.csdn.net/jiayanhui2877/article/details/5315101) 
(5) SM4(国产密码)
(6) RC2,RC4,RC5 
(7) SSF33 中国自行研制的一种采用16字节密钥机制的对称加密算法,其工作原理目前保密。

2、非对称加密算法
参考文档:
[1] [非对称加密算法(RSA、DSA、ECC、DH)](https://blog.csdn.net/u014294681/article/details/86705999) 
常见的非对称加密算法有:RSA、DSA、DH、ECC 和 SM2 
(1) RSA(Ron Rivest, Adi Shamir, Leonard Adleman): 适用于数字签名和密钥交换, 秘钥至少为500位长, 1024位一般认为是安全的。 
(2) DSA(Digital Signature Algorithm):仅用于签名,是 Schnorr 和 ElGamal 签名算法的变种,被美国NIST作为DSS (Digital Signature Standard)。 DSA是基于整数有限域离散对数难题的。 
(3) DH(Diffie-Hellman): 仅用于密钥交换 
(4) ECC(Elliptic Curve Cryptography,椭圆曲线密码编码学):用于签名 
参考文档:
[1] [ECC椭圆曲线加解密原理详解](https://blog.csdn.net/sitebus/article/details/82835492)  
[2] [ECC椭圆曲线密码学的原理、公式推导、例子、Python实现和应用](https://zhuanlan.zhihu.com/p/42629724) 
ElGamal加密算法是基于迪菲-赫尔曼(DHM)密钥交换的非对称加密算法。
1985年,塔希尔·盖莫尔(Taher Elgamal)在他的论文《A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms》中提出ElGamal算法。
EC ElGamal是ECC的一种,把ElGamal移植到椭圆曲线上来实现。 
(5) SM2:签名或加密(国产密码)
非对称加密算法的应用: 
公钥加密,私钥解密
私钥签名,公钥验签 

3、哈希算法
常见的哈希算法有:MD2/4/5、SHA-1、SHA256 和 SM3(国产算法)
哈希算法的应用:数据完整性

二、各种算法性能比较
[参考文档](https://www.cnblogs.com/sunxuchu/p/5483956.html)

三、附录

0、对称算法主要有四种加密模式:
(1) ECB(Electronic Code Book) 电子密码本模式    
(2) CBC(Cipher Block Chaining)加密块链模式     
(3) CFB(Cipher Feedback Mode) 加密反馈模式 
(4) OFB(Output Feedback Mode) 输出反馈模式 

1、AES相关的缩写和概念
FT1~3 Forward table of AES
RT1~3 Reverse table of AES
GCM(Galois/Counter mode)
CTR(counter mode)
AES-ECB block encryption/decryption
AES-CBC buffer encryption/decryption
AES-CFB8 buffer encryption/decryption
AES-CFB128 buffer encryption/decryption
AES-OFB  buffer encryption/decryption
AES-CTR  buffer encryption/decryption
AES-XTS buffer encryption/decryption

加密用到的初始化向量解释(可不可以通俗的解释一下加密相关系统中的iv(初始化向量)? - 知乎)

2、加密芯片:ATECC608A
支持算法如下:
非对称:都是ECC 
ECDSA(FIPS186-3 Elliptic Curve Digital Signature)椭圆曲线数字签名
ECDH(FIPS SP800-56A Elliptic Curve Diffie-Hellman)椭圆曲线DH 
NIST Standard P256 Elliptic Curve:美国国家安全局建议使用的椭圆随机曲线 
解释如下:
NIST(National Institute of Standards and Technology, 美国国家标准与技术研究院)
secp256k1和secp256r1是椭圆曲线参数, 说明如下:
secp(Standards for Efficient Cryptography Parameters)
256: 256bit
k表示Koblitz曲线,ECC提出人之一
secp256r1,r表示random
NIST应该使用的是secp256r1曲线
secp256k1,比特币使用该曲线
参考文档:
[1](https://www.johndcook.com/blog/2018/08/21/a-tale-of-two-elliptic-curves/)  
[2](https://www.secg.org/sec2-v2.pdf) 

对称算法: AES-128
摘要算法: SHA-256 
芯片功能:  
1、秘钥存储,多达16个秘钥,证书或加密数据,读写速度1Mb/s,即128KBytes/s 
2、硬件对称、非对称加密算法 
3、秘钥管理(秘钥生成,小信息加密保护) 
4、安全引导 
5、高质量随机数发生器(Random Number Generator (RNG)) 
6、唯一的72位序列号

Atmel加密库简介:
CryptoAuthLib---Atmel加密库是一个任何需要使用Atmel加密芯片加密服务的应用或设备驱动的关键软件组件,用来同Atmel加密芯片进行通信或请求加密芯片的服务。它用C写成,可以运行在诸如像Atmel SAMD21 MCU, Windows PC机或嵌入式linux平台等主机上。
CryptoAuthLib是一个与Atmel加密芯片一起使用的软件库,它通常集成到固件和驱动程序中使用。
主机工程可参考: cryptoauth-d21-host
库模型设计思想:
device是一个混合对象,对象结构包含了加密芯片支持的所有命令列表,设备状态的数据。
ATCADevice 是一个表示Atmel加密设备的对象, 
ATCACommand 是一个表示设备有效方法的对象,
ATCAInterface 是一个物理接口(I2C,SWI等)对象, 目前每个设备只有一个独立的Interface
使用参考: 
https://blog.csdn.net/HowieXue/article/details/75193922

Atmel加密库命令
主机通过一些列命令与加密芯片进行交互。
如: ATmel 的加密库中列举的:
checkMac
Counter
DeriveKey // 提取key
ECDH
GenDig // 生成摘要
GenKey // 生成key
HMAC
Info
Lock
MAC
Nonce
Pause
PrivWrite // 私有写
Random
Read // 读
SHA
Sign // 签名
UpdateExtra
Verify // 验证签名
Write // 写
execution time map

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值