跳到正文
>_ITDITDWeb 安全平台

术语表

公钥密码是什么 — 用公钥与私钥这对密钥进行加密与签名

公钥密码使用公钥与私钥这一对密钥:公钥用来加密和验证签名,私钥用来解密和签名。本文讲解它如何支撑 TLS(HTTPS)、数字签名与 Passkey,以及务实的防御要点:不要自造加密、保护好私钥。

发布于 2026-07-04 更新于 2026-07-04 1 分钟阅读

「公钥」和「私钥」这两个词随处可见——TLS(HTTPS)、数字签名、Passkey 等等。这里不涉及攻击手法,只讲公钥密码的思路,以及实务中值得掌握的防御要点。

公钥与私钥的角色

密钥成对出现,角色恰好相反——这正是关键所在。

公钥
可以随意分发。用于加密/验证签名
私钥
只有本人持有。用于解密/生成签名
一旦泄露
私钥一旦泄露就可能被冒充身份、被解密→立即吊销并重新签发
公钥可以随意分发。用公钥锁住的东西,只有对应的私钥才能打开。签名则是反方向工作的。

它被用在哪里

加密(私密的往来)

  • 对方的公钥加密后发送
  • 只有持有对应私钥的本人才能解密
  • 在 TLS 中,用于「安全地共享一把对称密钥」

数字签名(证明真实性)

  • 发送方用私钥生成签名
  • 接收方用公钥验证,确认本人身份与是否被篡改
  • 用于 TLS 证书、软件分发、Passkey 认证

真实的 TLS(HTTPS)混合式的:先用公钥密码安全地共享一把对称密钥,之后的通信再用快速的对称加密来保护。Passkey 也是用设备内的私钥签名、用服务器的公钥验证,从而实现抗钓鱼的认证。

需要做对的地方

1

不要自造加密

即便理论正确,也会因随机数质量、填充、时序差异等实现细节而被攻破。请使用标准协议与久经考验的库,避免自定义实现。

2

严密保护私钥

私钥不要放进代码或仓库。把它隔离到专用的保管处(密钥库/密钥管理服务),并让运维具备在泄露时**吊销并重新签发(轮换)**的能力(→ 不要把机密放进公开目录)。

3

把密钥长度和算法保持在最新

推荐值会随时代变化。不要放任过时的密钥长度或已弃用的算法,要紧跟最新推荐。证书可用 Let's Encrypt 等自动续期。

本站的观点:使用者的责任在于『密钥管理』

公钥密码本身很强,通常没必要去费力破解它。现场的事故并非出在加密的数学上,而是出在私钥的存放位置、吊销机制、以及被放任的老旧配置这些运维层面。本站也是把私钥隔离在公开面之外,一旦怀疑泄露就按「已被读取」的前提立即轮换。加密不要自造,而是搭上标准——这才是最安全的捷径。

延伸阅读

FAQ

Q公钥密码与对称(共享密钥)密码有什么区别?
A

对称密码用同一把密钥加密和解密,速度快,但难点在于如何把这把密钥安全地交给对方。公钥密码使用公钥与私钥这一对密钥,公钥可以分发给任何人。实际的 TLS(HTTPS)是混合式的:先用公钥密码把一把对称密钥安全地共享出去,之后大量的数据再用快速的对称加密来保护。

Q数字签名是如何证明『是真的』的?
A

发送方用自己的私钥对数据生成签名,接收方用发送方的公钥来验证这个签名。由于私钥只有本人持有,验证通过就意味着『持有该公钥的人签署了它,且内容未被篡改』。TLS 证书和软件分发的真实性确认,都依赖这套签名机制。

Q我可以自己实现加密吗?
A

请避免。即便理论正确,加密也会因实现细节(随机数质量、填充、时序差异等)而被攻破。防御的原则是『不要自造,使用久经考验的库与标准协议』。请设计好密钥的生成、保管、吊销(轮换)流程,并让密钥长度和算法紧跟最新推荐。