security - 使用 Java 中的 Web of Trust 通过 TLS 进行加密和身份验证

标签 security encryption ssl bouncycastle

对于我正在编写的程序,我想使用 TLS(或类似的东西)来封装我的应用程序的协议(protocol)。这将最大限度地减少我必须做的工作量以及我可能意外创建的漏洞数量。

虽然一个或多个服务器提供一些服务来帮助一个用户定位另一个用户(它注册 IP 地址/端口组合),但我的程序被设计为点对点的,但除此之外别无他用。我想让这个系统非常容错,所以让这些服务器充当证书颁发机构是 Not Acceptable ,因为服务器或其 key 的妥协会影响太多用户。因此,我计划使用 Web of Trust。

使用 TLS 的主要问题是原始的 TLS 1.2 规范 (RFC 5246) 没有规定使用 OpenPGP 证书。它似乎非常以 x.509 为中心。 RFC 6091 废弃了 RFC 5081 并扩展了 RFC 5246,规定了对 TLS 的扩展,它可以满足我的需求。问题是我不认为 BouncyCaSTLe 实现了这个扩展,而且我找不到实现的 Java 加密库。我也不想自己写/贡献给 BC,因为我真的很不擅长不犯错误,而且我也很懒。

另一个问题是 BouncyCaSTLe 提供了“一个轻量级的客户端 TLS API”,但是因为这个软件是 P2P 的,所以服务器端 API 也是必要的,这样我就可以使用 TLS连接是客户端。我很确定一旦握手完成,它就一样了。

问题: 有什么方法我仍然可以使用 TLS(我对此深表怀疑)?是否有像 TLS 这样专为 P2P 设计的协议(protocol),或者至少可以以这种方式运行(我相信 TLS 可以),但可以使用 OpenPGP 证书?如果两者都不是,我是否应该追求 this question 中解释的想法?并实现我自己的层,从 TLS 中获取概念?

RFC 链接:RFC 5246RFC 6091

最佳答案

据我所知,唯一支持 RFC 6091(即带有 openpgp 证书的 TLS)的库是 GnuTLS但我不知道你是否可以在 Java 中使用类似的东西。或者,您可以复制 SSH 语义,在其中使用自签名存储对等方的公钥 X.509 证书。

关于security - 使用 Java 中的 Web of Trust 通过 TLS 进行加密和身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721607/

相关文章:

wcf - 无法验证消息中的至少一个安全 token

asp.net - 使用ASP.NET MVC阻止ZmEu攻击

java - Java 中带有三位数字 key 的凯撒密码

python - 如何使用python读取加密文件夹

php - 如何构建 PHP/Node 代理以在 https 网站上呈现外部 http 图像?

.net - 为什么我本地 WCF 客户端的 IP 不是 127.0.0.1?

java - 如何保护用户页面免受暴力攻击

security - 确保 Zookeeper 安全,从哪里开始?

python - 加密 : AES Decryption

internet-explorer - 即 : Choosing a digital certificate from a blank list every first visit to my website