--------------------------- 摘要 数字签名 数字证书
用户A:
A_privateKey
A_publicKey
李四: 拥有A_publicKey
王五: 拥有A_publicKey
示例1:
王五给用户A写信, 写完后用用户A的公钥加密, 然后发给用户A。
用户A收到加密信件后,用私钥解密,看到信件内容。
示例2:
用户A给王五回信,写完后用户Hash函数(MD5/sh1)生成信件摘要(digest),然后通过私钥给摘要进行加密生成数字签名(signature).
将签名和信件一起发给王五.
王五收到信件和签名后,用用户 A的公钥对签名解密得到摘要(digest),从而证明是用户A发的信件.
王五再对信件内容进行Hash函数再与摘要对比,一致说明信件内容未被篡改。
示例3:
李四为了欺骗王五,偷偷将王五保存的公钥A_publicKey 换成李四_publicKey,然后冒充用户A给王五回信.
李四通过Hash函数MD5(信件内容)生成摘要,然后通过李四_private私钥进行对摘要加密生成数字签名,最后将数字签名和信件一起发给王五.
王五收到后通过李四公钥对数字签名进行解密得到摘要,然后通过Hash函数MD5(信件内容)比对摘要一致性,说明信件内容未被篡改。
其实是完美欺骗,怎么解决?
示例4:
由于王五无法确认自己的公钥是用户A还是李四的,所以上当受骗,王五有个办法分辨:
让用户A找CA中心申请一个CA证书,CA证书中心用自己的私钥,对用户A的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
从此以后用户A给王五回信时,除了数字签名还附上数字证书(CA公钥),王五收到数字证书(CA公钥)后通过CA公钥解开证书得到用户A的公钥,对比拥有的公钥辨别是否是用户A的公钥。
总结:
(1)信息 + HASH = 摘要 摘要 + 私钥 = 数字签名(给收方做对比用的,验证收发内容是否一致)
(2)公钥 + 相关信息 + CA私钥 = 数字证书(验证发送者是否正确,是可信任的公钥)
对摘要Hash函数: MD5、SHA1、SHA256、SHA512
------------------- Hash函数、加密
Hash函数(散列算法):单向不可逆
MD5、SHA1、SHA256、SHA512、md4、CRC-32
对称加密: 加密和解密使用同一个密钥,特点:速度快,适用数据加密
DES、3DES、AES
非对称加密: 加密和解密使用不同密钥(私钥和公钥),特点: 由于计算量大至速度慢,但是安全,适用数字签名及数据量小
RSA、DSA、ECC
国密:
中国国家标准的密码算法,国家密码管理局认定.
SM2:基于椭圆曲线密码学的非对称加密算法,类似于国际上的ECDSA。-> 非对称加密
SM3:一种密码散列函数,设计上与SHA-256类似。---------------> Hash函数
SM4:一种对称密钥加密算法,类似于AES,用于数据加密。---------> 对称加密
SM9:也是一种基于标识的加密算法。-------------------------> 非对称加密
------------------- https 传输
Web服务器的https的SSL/TLS证书: 协议版本: TLSv1.2 TLSv1.3;
先SSL/TLS握手通过非对称加密算法,再传输数据通过对称加密算法.
一句话: SSL/TLS证书使用非对称加密算法来安全地交换密钥进行握手,然后通过对称加密算法进行数据传输保证效率。
注: 非对称采用公钥加密,私钥解密。
指定了协议版本,服务器将只接受使用TLSv1.2和TLSv1.3版本的连接。
------------------ OpenSSH 和 OpenSSL
OpenSSH 是使用 SSH 协议进行远程登录的连接工具。OpenSSH 提供了大量的安全隧道功能、多种身份验证方法和复杂的配置选项。
包含组件如: ssh、scp、sftp、sshd、ssh-keygen产生RSA或ECDSA密钥,用来认证用。
OpenSSL 包含众多加解密算法,在 1.1.1 版本后支持了国密算法SM2、SM3以及SM4。
查看版本: ssh -V
OpenSSH_9.4p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
OpenSSH是一个网络协议,用于提供安全的数据传输。SSH的主要功能包括:
安全远程登录:允许用户通过加密的方式远程登录到服务器。
远程命令执行:在远程服务器上安全地执行命令。
文件传输:通过SCP(Secure Copy Protocol)或SFTP(SSH File Transfer Protocol)安全地传输文件。
端口转发:通过SSH隧道实现端口转发,增强安全性。
X11转发:允许远程显示图形界面。
OpenSSL是一个开源的加密工具包,提供了一个广泛的加密库,包括以下功能: 加密工具
加密算法:提供包括对称加密和非对称加密在内的多种加密算法。
证书管理:用于生成、管理和验证X.509证书。
SSL/TLS协议:支持SSL和TLS协议的实现,用于安全通信。
密码生成:可以生成安全的随机密码。
加密文件:能够加密和解密文件。
密钥管理:生成、存储和管理密钥。