常见的加密算法主要分为对称加密、非对称加密和哈希摘要算法三大类,广泛应用于数据传输、存储及身份认证等场景
对称与非对称加密
对称加密使用同一密钥进行加解密,速度快,适合大量数据加密。常见算法包括AES(高级加密标准,目前主流)、DES及3DES(已逐渐淘汰);
应用场景:
大量数据的加密传输,如文件传输;例如wifi wpa2使用AES进行数据加解密;
性能要求较高的场景,如实时通信、视频流加密等;
非对称加密使用公钥和私钥配对,解决了密钥分发问题,安全性更高但速度较慢。主流算法有RSA(应用最广泛)、ECC(椭圆曲线密码,密钥短效率高)及Diffie-Hellman(密钥交换)
应用场景:
安全证书的签发和验证,如SSL/TLS协议中的数字证书。
身份认证和授权过程中的签名验证,如数字签名技术,ssh公钥认证。
需要公开分发公钥的场景,如电子邮件加密、软件代码签名等。
ssh连接git服务器时的公钥认证,本质上就是一个标准的数字签名生成与验证过程,交互过程如下:
1.ssh客户端连接git服务器时,客户端与服务器先完成 Diffie-Hellman 密钥交换,生成一个唯一的 session_id 和双方共享的 exchange_hash(包含协议版本、算法协商、双方临时公钥等数据的哈希);
2.服务器下发挑战:向客户端下发一段数据,要求客户端对一段协议定义的结构化数据进行签名。这段数据核心就是 exchange_hash + 认证上下文(用户名、认证方法等);
3.客户端生成数字签名:SSH 客户端用本地私钥对该挑战数据进行数字签名,算法一般是RSA;
4.服务器验证签名:服务器用你提前注册的公钥对签名进行数学验证。若验签成功,证明"客户端确实持有对应私钥",身份认证通过;
5.进入加密会话:认证完成后,双方切换到此前提协商的对称加密算法(如 AES-GCM/ChaCha20)加密后续所有 Git 流量。非对称加密仅用于认证环节。
总结:SSH 公钥认证 = 服务器发挑战 → 客户端用私钥生成数字签名 → 服务器用公钥验证签名。这是非对称密码学在身份认证中最经典、最安全的落地方式。
性能与效率对比:
对称加密算法运算相对简单,因此加密和解密速度非常快,适合对海量数据(如文件、数据库内容)进行实时加密处理。
非对称加密算法涉及复杂的数学运算,其加解密速度比对称加密慢得多,通常不直接用于加密大量数据
在实际应用中,为了充分利用两种加密算法的优势并弥补各自的不足,通常会采用混合加密方案。例如,在SSL/TLS协议中,非对称加密算法用于安全地交换对称加密算法的密钥,而后续的数据加密和解密则使用对称加密算法来完成。这种混合加密方案既保证了数据传输的安全性,又兼顾了加密和解密的性能效率。
哈希摘要算法
哈希算法不可逆,主要用于验证数据完整性而非加密内容。常见算法包括MD5(128 位,已不安全)、SHA-1(160 位,存在碰撞风险)及SHA-256(安全性高,推荐使用)。严格来说 MD5 和 SHA 属于摘要算法,但在广义加密技术中常被归类讨论
总结:随着算力提升,部分旧算法已不再安全。DES、MD5和SHA-1因存在被破解风险,不建议用于高安全场景 。当前推荐组合为:数据传输使用AES对称加密,密钥交换使用RSA或ECC,完整性校验使用SHA-256