双向认证
双向认证 是什么?
双向认证通信的双方(客户端与服务器,或两个服务)在交换数据前互相以密码学方式证明身份的认证机制。
双向认证(mutual authentication 或 two-way authentication)要求连接两端互相验证对方身份,而不仅是服务器向客户端证明自身。如今主流实现是 mutual TLS(mTLS),在 RFC 8446 中针对 TLS 1.3 进行了定义,双方各自出示 X.509 证书并对照私有 CA 验证。其他示例包括 Kerberos 的 AP-REQ/AP-REP、SSH 主机+密钥认证、带证书的 IPsec IKEv2,以及包含 attestation 的 FIDO2/WebAuthn 流程。Istio、Linkerd、Consul 等服务网格,以及 Google BeyondCorp 等零信任架构都强制采用双向认证,使用短期 SPIFFE 身份验证每一次工作负载间调用。它可有效缓解冒充、中间人和"恶意服务"攻击。
● 示例
- 01
Istio 服务网格在 Kubernetes 集群中所有微服务之间强制 mTLS。
- 02
银行 API 在 OAuth 令牌之上,还要求由银行私有 CA 颁发的客户端证书。
● 常见问题
双向认证 是什么?
通信的双方(客户端与服务器,或两个服务)在交换数据前互相以密码学方式证明身份的认证机制。 它属于网络安全的 身份与访问 分类。
双向认证 是什么意思?
通信的双方(客户端与服务器,或两个服务)在交换数据前互相以密码学方式证明身份的认证机制。
双向认证 是如何工作的?
双向认证(mutual authentication 或 two-way authentication)要求连接两端互相验证对方身份,而不仅是服务器向客户端证明自身。如今主流实现是 mutual TLS(mTLS),在 RFC 8446 中针对 TLS 1.3 进行了定义,双方各自出示 X.509 证书并对照私有 CA 验证。其他示例包括 Kerberos 的 AP-REQ/AP-REP、SSH 主机+密钥认证、带证书的 IPsec IKEv2,以及包含 attestation 的 FIDO2/WebAuthn 流程。Istio、Linkerd、Consul 等服务网格,以及 Google BeyondCorp 等零信任架构都强制采用双向认证,使用短期 SPIFFE 身份验证每一次工作负载间调用。它可有效缓解冒充、中间人和"恶意服务"攻击。
如何防御 双向认证?
针对 双向认证 的防御通常结合技术控制与运营实践,详见上方完整定义。
双向认证 还有哪些其他名称?
常见的别称包括: 双向认证, 互相 TLS, mTLS。
● 相关术语
- network-security№ 1159
TLS(传输层安全)
由 IETF 标准化的加密协议,为两个联网应用之间的通信提供机密性、完整性与认证。
- network-security№ 157
证书固定
在应用中硬编码预期的证书或公钥,只有匹配时才接受 TLS 连接,从而抵御伪造或被攻破的 CA。
- network-security№ 878
公钥基础设施(PKI)
由政策、软件、硬件和可信机构组成的体系,负责签发、分发、验证和吊销数字证书,将身份与公钥绑定。
- network-security№ 156
证书颁发机构(CA)
可信第三方实体,负责颁发并签名数字证书,将公钥与已核验的域名或机构身份绑定在一起。
- identity-access№ 584
Kerberos
基于票据的网络认证协议,利用对称加密和受信的密钥分发中心实现跨服务的安全单点登录。
- identity-access№ 076
身份认证
在授予访问权限前,验证某个实体(用户、设备或服务)确实是其所声称身份的过程。