问题标签 [diffie-hellman]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cryptography - 我有 P & G——如何使用 Wincrypt API 生成 Diffie-Hellman 密钥对?
这里有一篇 MSDN 文章,但我并没有走得太远:
在这里失败NTE_BAD_DATA
。我正在使用MS_DEF_DSS_DH_PROV
. 是什么赋予了?
cryptography - 我正在为 Diffie-Hellman 使用 Wincrypt——我可以以纯文本格式导出共享密钥吗?
好的——感谢Mike,我能够让 Wincrypt 生成一个 Diffie-Hellman 密钥对。我想通了导出公钥,以及如何导入对方的公钥。根据文档,在导入对方的公钥后,共享的秘密就被计算出来了。伟大的。
我现在需要掌握那个共享的秘密,但我认为这是不可能的。除非我调用将算法 id 从更改为其他类型,否则只需调用失败CryptExportKey
类型即可。但我不想要别的东西,我想要共享的秘密。然而,API 似乎旨在阻止这种情况。PLAINTEXTKEYBLOB
CryptSetKeyParam
CALG_AGREEDKEY_ANY
有什么想法吗?我应该注意到这里的问题是我只写了 WiFi 保护设置实现的一个方面。所以协议是为我定义的,对方没有给我HCRYPTKEYs。
encryption - Diffie-Hellman 代替 SSL?
是否可以使用 Diffie-Hellman 密钥交换算法来加密网页上的客户端-服务器通信来代替 SSL?如果可以,有什么缺点(即为什么标准使用需要证书颁发机构的 SSL)?我的理解是 Diffie-Hellman 可用于秘密建立共享密钥,然后可用于加密任何进一步的通信。
cryptography - IPSec 密钥交换协议如何工作?
我需要完全理解 IPSec Phase 1 协商。现在,我将其分解为 3 个步骤:
- 算法协商
- 密钥交换数据
- 鉴别
我正在使用 Wireshark 来调查这个过程,到目前为止我完全理解了第一部分(算法协商)。
我目前的问题在于第二部分:密钥交换数据。
使用的算法是 AES-CBC-256bit、Pre-shared key、MD5 & 1024 bit Group。
“ISAKMP 有效负载”->“KeyExchange 有效负载”->“KeyExchangeData”超出了我的范围……我不知道它是什么……一个 MD5 的预共享密钥?是加密的吗?
c - Diffie-Hellman 中的参数选择
也许在这里问这个问题不太合适......无论如何,我正在尝试使用gmp库来实现DH,但我遇到的问题是:
有一次,当我进行测试以观察输出时,尽管选择了大的素数和私钥值:
- p 大约有 300 多位十进制数
- a、b 的长度约为 100 位
最后我得到了一个非常小的共享密钥,十进制可能小于 10^8 ......
这个问题并没有出现很多次,事实上,在所有的观察过程中,也只出现过一次……但是,这也不是那么好。
所以我想知道是否有一些方法可以避免这种情况......非常感谢
android - Android 上的 DH 密钥对生成时间
这是我用来生成 DH 密钥对的代码:
(当然,没有必要的 try/catch)。
我已经完成了一些迭代运行此类代码并改变密钥大小的测试(特别是从 128 以 128 步上升到 1024。1024 将是所需的大小。
首先,运行每个大小生成 10 次以使结果的标准偏差最小,这会产生很大的结果波动,平均而言,创建密钥(1024 位)所需的时间是:683027ms,四舍五入创建密钥需要11 分钟。
问题是:
- 其他人得到相同的结果吗?
- 是否需要进行一些优化以缩短时间?
- 高波动取决于什么?(即生成 1024 位密钥可能需要 18 秒到 30 分钟...)
已在 Nexus-One 手机上运行测试
提前感谢您对“问题”有所了解
问候
silverlight - Silverlight 中的 Diffie-Hellman
我正在尝试设计一种安全方案,用于加密 silverlight 客户端和我创建的 php web 服务之间的应用程序级数据。由于我正在处理一个公共网站,我从服务中提取的信息是公开的,但我提交给网络服务的信息是不公开的。网站还有一个用于管理的后端,因此从 web 服务推送和拉取到 silverlight 管理后端的所有应用程序数据自然也必须加密。
Silverlight 不支持适用于公共网站的非对称加密。对称加密只能在后端起作用,因为用户不会登录公共网站,因此无法导出基于密码的密钥。仍然对称加密会很棒,但我无法将私钥安全地保存在 Silverlight 客户端中。因为它要么必须被硬编码,要么必须从某种配置文件中读取。这些都不被认为是安全的。所以... B计划。
我最后的选择是实现 Diffie-Hellman 算法,该算法通过密钥协议支持对称加密。然而,Diffie-Hellman 容易受到中间人攻击。换句话说,不能保证任何一方都可以确定彼此的身份,从而使通信在接收方不知情的情况下被截获和更改成为可能。因此建议使用私有共享密钥对密钥协商握手进行加密,以便确认任何一方的身份。
这让我回到了导致我需要使用 Diffie-Hellman 的最初问题,如何在 silverlight 客户端中使用私钥而不在代码或 xml 文件中对其进行硬编码。
我对这个完全不爱了……有什么答案吗?
编辑:
请记住,这是关于我自己推出的自定义 PHP Web 服务。
我找到了一个可以在 Silverlight 中使用的 RSA 实现。使用它来加密 Silverlight 客户端和 PHP Web 服务之间的 DiffieHellman 密钥协议的握手似乎很安全,随后还使用它来加密商定的对称密钥(它本身是从密钥的结果生成的)通过散列进行交换)。
在此之后,我几乎可以保证所有进入Web 服务的通信都没有被拦截、修改然后重新传输 (MITM)。但是我相信它仍然是可能的;从技术上讲,攻击者冒充 Silverlight 客户端并向 Web 服务发送消息(假设他们发现了 url)。
由于攻击者不知道我的自定义 Web 服务的“秘密 api”,因此提供了未经授权访问的安全性,因此他们无法与之通信。
打破这种情况的唯一方法是使用攻击者可能怀疑有效的任何字符串来暴力破解 Web 服务,以尝试从 Web 服务获取响应。我认为您不能蛮力使用可变长度的字符串。听起来不切实际。
有人看到这种方法有问题吗?
elliptic-curve - Diffie-Hellman 密码学的椭圆曲线版本如何工作?
椭圆曲线 diffie hellman 计算看起来与此处定义的标准曲线有什么不同:
还是只是选择 g、a、p 和 b 的特定方式?无论如何选择g,a,p和b?
silverlight - RSA 加密的 Diffie-Hellman 握手
RSA 加密的 Diffie-Hellman 握手能否实现安全通信?我正在加密从 silverlight 客户端到 php webservice 的通信。silverlight 客户端通过将 RSA 公钥加密的 DH 参数发送到 Web 服务来启动他们的密钥协议。只有 web 服务有私钥,所以不可能进行 MITM 攻击。Web 服务将纯文本答案发送回客户端,并商定密钥。然后,此密钥用于使用 AES 加密 Web 服务和 silverlight 客户端之间的通信,该 AES 也使用 RSA 公钥加密。
有人看出缺陷吗?
java - 如何在 Android 中为 Diffie-Hellman 密钥协商算法生成参数集
我正在从事与移动/服务器安全相关的项目。我现在正忙于生成 Diffie-Hellman 密钥协议部分。它在服务器端程序中运行良好,但在移动端无法运行。因此,我认为它不适用于 Android。
我使用以下类来获取参数。它返回一个逗号分隔的 3 个值的字符串。第一个数字是素数模 P。第二个数字是基生成器 G。第三个数字是随机指数 L 的位大小。
我的问题是代码有什么问题,或者它不能用于 android?我应该做什么样的改变?
您的建议和指导对我很有帮助。提前非常感谢。
问候,
塞比