非对称加密与密钥对
了解 RSA 和椭圆曲线密码学,以及公钥/私钥对如何在无需共享秘密的情况下实现安全通信。
非对称加密与密钥对 是 CoddyKit 上的免费 Security+ Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Security+ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Security+ Academy 课程共包含 4 节课。
非对称加密的工作原理
非对称加密(也称为公钥密码学)使用数学上相互关联的key 对:一个可以自由分发的公钥,以及一个必须保密的私钥。使用公钥加密的数据只能使用对应的私钥解密,反之亦然。这种精巧的设计解决了对称加密中的 key 分发问题:您可以公开共享公钥而不会损害安全性,因为只有您的私钥能够解密发送给您的消息。
RSA:使用最广泛的算法
RSA(Rivest-Shamir-Adleman)是部署最广泛的非对称加密算法,于 1977 年发明。它的安全性依赖于分解两个大素数乘积在数学上的困难性。RSA 支持 1024、2048 和 4096 位 key 长度——2048 位 RSA 是当前建议的最低标准,需要长期安全性时则使用 4096 位。RSA 用于 TLS 中的 key 交换(尽管正逐渐被 ECDHE 取代)、证书中的数字签名,以及 S/MIME 电子邮件加密。
# Generate an RSA 2048-bit key pair
openssl genrsa -out private.pem 2048
# Extract the public key
openssl rsa -in private.pem -pubout -out public.pem
# Encrypt with public key (only private key can decrypt)
openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out encrypted.bin
# Decrypt with private key
openssl rsautl -decrypt -inkey private.pem -in encrypted.bin椭圆曲线密码学(ECC)
椭圆曲线密码学(ECC)使用短得多的 key 长度,即可达到与 RSA 相当的安全性。256 位 ECC key 提供的安全性与 3072 位 RSA key 大致相当。这种高效率使 ECC 非常适合移动设备、物联网硬件以及重视性能的 TLS 连接等资源受限环境。ECC 依赖于椭圆曲线离散对数问题在数学上的困难性。常见的 ECC 算法包括ECDSA(椭圆曲线数字签名算法)和 ECDH(key 交换)。TLS 1.3 要求使用基于 ECC 的 key 交换。
# Generate an ECC key pair using the P-256 (secp256r1) curve
openssl ecparam -name prime256v1 -genkey -noout -out ec_private.pem
# Extract public key
openssl ec -in ec_private.pem -pubout -out ec_public.pem
# ECC 256-bit ~ RSA 3072-bit in security strength
# Much faster operations, smaller keys = faster TLS handshakes公钥的使用:加密方向
理解 key 的使用方向对 Security+ 考试至关重要。有两种不同的使用场景,它们的 key 角色正好相反。对于用于保密的加密:发送方使用接收方的公钥进行加密,只有接收方能使用其私钥解密。对于用于身份验证的数字签名:签名者使用自己的私钥加密哈希值,任何人都可以使用签名者的公钥进行 Verify。弄反这些方向是考试中常见的错误——请记住:公钥加密,私钥解密;私钥签名,公钥 Verify。
使用非对称 key 的数字签名
数字签名使用非对称密码学来提供身份验证、完整性和不可否认性。流程如下:(1) 发送方计算消息的哈希值;(2) 使用其私钥加密该哈希值以创建签名;(3) 将消息和签名一起发送。接收方执行以下操作:(4) 使用发送方的公钥解密签名以还原哈希值;(5) 独立地对收到的消息计算哈希值;(6) 比较两个哈希值——匹配则证明消息真实且未被篡改。
# Sign a document with ECDSA private key
openssl dgst -sha256 -sign ec_private.pem -out document.sig document.txt
# Verify the signature with the public key
openssl dgst -sha256 -verify ec_public.pem -signature document.sig document.txt
# Output: Verified OK (or Verification Failure)非对称加密为何速度慢
与对称加密相比,非对称加密的计算开销很大,通常慢 100 到 1000 倍。这是因为非对称算法需要对大数执行复杂的数学运算(RSA 的模幂运算、ECC 的曲线点乘法)。因此,非对称加密绝不会直接用于加密大批量数据。相反,它用于安全交换一个较小的对称会话 key,然后由对称 key 加密实际数据。这种混合方案结合了两种方案的安全优势。
Key 对的生成与存储
妥善管理 key 对至关重要。私钥应在硬件安全模块(HSM)中生成,或存储在加密的 key 存储中,绝不能以未受保护的明文文件形式存储。key 对具有有限的有效期,期限过后必须重新生成。对于基于证书的 key 对,私钥绝不能离开生成它的设备或 HSM。私钥遭到泄露意味着攻击者可以冒充 key 所有者,并解密使用对应公钥加密的所有消息。
公钥基础设施背景
非对称 key 对只有在您能够信任某个公钥确实属于其声称的对象时,才能提供安全性。如果没有信任机制,攻击者就可能用自己的公钥替换预期接收方的公钥,发起典型的中间人攻击。公钥基础设施(PKI)通过让受信任的证书颁发机构(CA)对证书进行数字签名来解决这一问题,将公钥与经过验证的身份绑定起来。当您访问 HTTPS 网站时,浏览器会根据其信任的 CA 验证服务器证书,从而确认公钥确实有效。
RSA 与 ECC 对比
在 RSA 和 ECC 之间进行选择时,请考虑三个因素。key 大小效率:256 位 ECC 的安全性相当于 3072 位 RSA。性能:ECC 速度明显更快,尤其是在移动设备和物联网设备上。采用情况:RSA 具有更广泛的旧版支持;TLS 1.3 要求使用 ECC,现代安全标准也越来越多地要求使用 ECC。只要按照当前建议的 key 大小正确实现,两者都仍被认为是安全的。Security+ 考试要求您了解这些权衡,以及每种算法适用的场景。
量子计算对非对称加密的威胁
非对称加密正面临来自量子计算机的长期威胁。Shor 算法在足够强大的量子计算机上运行时,可以在多项式时间内解决因数分解问题(破解 RSA)和离散对数问题(破解 ECC),从而使目前安全的密钥长度变得可以破解。NIST 已经选定了包括 CRYSTALS-Kyber(密钥封装)和 CRYSTALS-Dilithium(数字签名)在内的后量子密码算法,用于替代 RSA 和 ECC。处理具有长期敏感性数据的组织现在就应开始规划向后量子密码的迁移。
非对称加密的应用场景
非对称加密是您日常使用的许多安全机制的基础。HTTPS:TLS 握手使用 RSA 或 ECC 交换会话密钥。SSH:公钥身份验证使用密钥对替代密码。代码签名:软件供应商使用私钥为代码签名;您的操作系统使用公钥进行验证。S/MIME 电子邮件:使用收件人的公钥加密邮件,并使用您的私钥进行签名。比特币/区块链:交易使用 ECDSA 私钥签名。了解这些机制在实际中的应用方式,有助于您理解考试题目的背景。
# SSH public key authentication
# Generate ED25519 key pair (modern, faster than RSA)
ssh-keygen -t ed25519 -C 'alice@company.com'
# ED25519 is based on elliptic curves - fast and secure
# Public key goes to server: ~/.ssh/authorized_keys
# Private key stays local: ~/.ssh/id_ed25519 (protect with passphrase)快速检查
测试您对本课 CompTIA Security+ (SY0-701) 知识点的理解程度。
课程回顾
本课中您学到了:非对称加密使用数学关联的密钥对;RSA和ECC是主流算法(ECC 使用更短的密钥即可实现更快的运算);公钥加密用于保证机密性,私钥签名用于身份验证;非对称加密虽然速度较慢,但解决了密钥分发问题。接下来我们将学习哈希与数据完整性。
常见问题解答
「非对称加密与密钥对」课时是免费的吗?
是的 — 「非对称加密与密钥对」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Security+ Academy 课程的其余内容,请升级到 CoddyKit PRO。 Security+ Academy 课程共包含 4 节课。
「非对称加密与密钥对」这节课中我会学到什么?
了解 RSA 和椭圆曲线密码学,以及公钥/私钥对如何在无需共享秘密的情况下实现安全通信。 你通过在浏览器中直接运行的动手代码来练习 Security+ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Security+ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Security+ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「非对称加密与密钥对」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Security+ Academy 课中编写并运行代码吗?
能。每节 Security+ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。