java - 黑客可以通过从客户端的信任库中提取证书来创建 MITM 攻击吗?
问题描述
我对 SSL 比较陌生,终于在 Java 中完成了 SSL 的代码实现后,我很好奇潜在的缺陷。
我的代码由两个组成SSLSockets
(其中一个SSLServerSocket
在服务器端),并且使用了单向 SSL 身份验证。服务器包含一个带有 CA 签名证书的 KeyStore,客户端有一个带有相同 CA 签名证书的 TrustStore。如果我的理解是正确的,那么 SSL 握手以及其他许多事情可以确保对等证书是合法的,并且它与客户端 TrustStore 中的证书相匹配。
有了这些知识,是否有人可以反编译我的客户端代码并从 TrustStore 文件中提取 CA 签名的证书,以创建带有包含 CA 签名证书的 KeyStore 的恶意服务器?如果我的逻辑是正确的,这将允许中间人攻击。
解决方案
信任库中的证书仅用于验证服务器证书是否有效,即本地受信任。无论如何,这些 CA 证书通常是公开的,即攻击者不需要从客户端信任库中提取它。
如果攻击者能够将新的 CA 证书注入客户端信任存储区,情况会有所不同。在这种情况下,客户端还将信任攻击者 CA 颁发的证书,这使得攻击者可以冒充 MITM 其他站点。
推荐阅读
- python - gpu 未完全使用,模型在 cpu 中的运行时间与在 gpu 中运行的时间相同
- reactjs - 带有 babel 的 webpack 显示错误模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):
- activerecord - Yii2 activerecord不返回数据库触发值
- go - go-run 在相对子模块上给我一个错误“找不到包”
- c# - C# WPF 套接字自动断开连接。为什么?
- javascript - Vue数据属性在放入时不会更新
tag
- postgresql - Monitor postgres 9 queries
- flutter - Change the datetime format in flutter for this week's first day
- cuda - Why is this cuda program printing 0?
- javascript - Show only Checked Options using Jquery