- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Java Cryptography ArchitectureStandard Algorithm Name Documentation Java 6 的页面列出了 ECDHE 密码套件。因此,我希望它们在 Java 6 中得到支持。然而,无论是 OOTB Java 6 还是添加的 JCE Unlimited Strength 策略文件都无法启用它们。
本书Bulletproof SSL and TLS还表明 Java 6 支持 ECDHE,但需要注意:
Enable and prioritize ECDHE suites on the server. Java 6 and 7 clients support these, and will happily use them. (But do note that with Java 6 you must switch to using the v3 handshake in order to utilize ECDHE suites at the client level.)
我假设通过 v3 握手他指的是 SSLv3?我还没有尝试过,但即使可行,由于 POODLE 漏洞,SSLv3 也不是一个可行的选择。
我错过了什么?
最佳答案
Java 1.6 和更高版本中的 SSL/TLS 实现“JSSE”支持 ECDHE 套件如果有可用的 (JCE) 提供程序所需的 ECC 原语。 Java 1.6 OOTB 不包含这样的 ECC 提供程序,但您可以添加一个。 Java 7 和 8 包含 SunECC 提供程序。
这似乎是今天的热门话题。另见 https://security.stackexchange.com/questions/74270/which-forward-secrecy-cipher-suites-are-supported-for-tls1-0-protocols和 https://superuser.com/questions/848698/testing-cipher-suite-using-openssl-for-tomcat-server-is-resulting-in-wrong-manne(令我惊讶的是,它是从安全性迁移过来的)。
Ristic 的书无疑是指 v3 格式 ClientHello。 SSL2 和 SSL3 之间有一个主要的格式变化,SSL2 ClientHello 不能代表 ECC 的数据(特别是扩展)。 TLS 的所有版本(迄今为止)都使用与 SSL3 相同的格式,但具有(重要的)不同的内容。在 20 世纪早期,SSL 客户端通常使用 SSL2 format ClientHello,但content 允许升级到 SSL3 甚至 TLS1.0,以便成功对抗所有服务器,因为许多 SSL2仍在使用中。
大约 2006 年的 Java 1.6 客户端是过渡性的——默认情况下它使用 SSL2 格式 指定 版本 到 TLS1.0,但如果服务器同意 版本 SSL2 而不是更高版本,客户端异常中止,实际上是“SSL2 不安全”。这是由伪协议(protocol)字符串 SSLv2Hello
控制的,因此在 Java 1.6 客户端上,您应该 .setEnabledProtocols
来删除/排除它。
Java 7 和 8 仍然实现 SSLv2Hello
但不再默认启用它,因此默认使用 v3 格式,或者只要您指定协议(protocol)为(全部)SSL3 或更好。 7 和 8 还实现了 TLS1.1 和 1.2,而 6 没有,尽管默认情况下只有 8 在客户端启用它们。如果您要连接到仅支持 SSL2 的老式服务器,您应该只指定 SSLv2Hello
—— 当然,您应该非常努力地完全不这样做。
关于Java 6 ECDHE 密码套件支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323858/
因此,我尝试使用椭圆曲线 DH 的 OpenSSL EVP 方法执行 key 交换,以派生共享 key 。这对于在 GCM 模式下使用 AES 为自定义协议(protocol)提供强大的安全性是必要的
在我的场景中,Alice 和 Bob 已就使用哪条曲线达成一致。 Alice 生成公钥和私钥 Alice 将公钥发送给 Bob Bob 生成他的 key ,并根据他收到的 Alice 公钥生成 ses
我在 Windows 7 系统上使用 Oracle Java 8 (8u112) 和“适用于 JDK/JRE 8 的 Java 加密扩展 (JCE) 无限强度管辖策略文件”。为了提高我对安全套接字的理
我正在寻找示例 Java 代码来实现 ECDH 加密的密码。我已经找到了获取所需 key 的方法,但仍未找到加密文本的解决方案。如果有人可以提供一些指导,我们将不胜感激。 顺便说一下,我在为 Andr
我对 OpenSSL 库中的 ECDH 有疑问。 在文件'ecdhtest.c'的第159行,我们可以确认私钥的值如下: BN_print(out, a->priv_key); 但是,当我使用 Mak
我知道 ECDH 中的 key 大小取决于椭圆曲线的大小。 如果是256位曲线(secp256k1), key 将为: Public: 32 bytes * 2 + 1 = 65 (uncompres
我正在构建一个实现 ECDSA_METHOD 的 OpenSSL 引擎,其中包括签名创建和签名验证功能。由于 ECDHE 私钥的唯一用途是与签名创建相关,因此不需要从引擎导出 key 并将其呈现在其他
Java Cryptography ArchitectureStandard Algorithm Name Documentation Java 6 的页面列出了 ECDHE 密码套件。因此,我希望它
我正在尝试了解 HTTPS 的工作原理并进行一些实际测试。 我有一个通过 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 加密的 HTTPS 通信捕获的数据。 如果我没理解错的话
我正在尝试使用 ECDH key 实现 CMS 加密。引用 openssl CMS with ECDH EnvelopedData命令行运行完美,但我的程序出现错误 - Error Encryptin
我读过这篇文章document通过ECDH-CURVE25519算法生成 key 对。但是当我在 window.crypto.subtle.generateKey 中指定 ECDH-CURVE2551
我正在将一个方法从 nodeSJ 转换为 Java,但我无法使其正常工作。我一直在尝试计算派生共享 secret 。 希望有人能发现我在将 NodeJS 移植到 Java 时做错了什么。 NodeJS
前言:我不知道这个问题在这里问更合适还是在 Crypto 网站上问更合适。请随意移动或删除或任何适当的 SE 操作。 有人要求我帮助更新一些加密软件。一般来说,该软件已经执行了以下步骤,其中没有一个是
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我目前正在研究 ECDH key 交换实现。我为此使用 P-384 曲线。其他曲线也是可能的,但我认为实现应该非常相似。 客户端(Javascript)和服务器(Java)想要找到一个共享的 secr
我正在开发一个 iOS 应用程序,我想实现 ECDH 以确保安全。我使用这个应用程序(https://github.com/DigitalLeaves/AsymmetricCrypto)生成一对 ke
我正在尝试使用本地证书颁发机构,但我不断收到“ECDH 服务器 key 交换消息上的无效签名”错误。提前为这个问题的复杂性道歉。您可以通过以下方式从 github 获取完整的源代码: git clon
根据 RFC客户端发送使用服务器的 RSA 公钥加密的预主 key 。但是当他们使用 ECDHE 作为非对称算法时,客户端 key 交换消息将包含客户端的公钥。如果是这样的话?客户端何时发送预主 ke
我正在构建一个 Web API,我需要实现 ECDH 来执行端到端加密。在服务器端我有一个 C# 应用程序,在客户端我有一个 Javascript 应用程序。 我能够交换 key 、生成私钥并加密消息
我对 ECDH(椭圆曲线 Diffie-Hellman)加密有一个小问题。我使用 BouncyCaSTLe 库。 这是我生成 key 的函数: public static KeyPair genera
我是一名优秀的程序员,十分优秀!