security - Diffie-Hellman 密钥交换中的 2048 位部分指的是哪里?
问题描述
我查阅了有关 Diffie-Hellman 密钥交换算法的各种来源,并且了解了其操作背后的逻辑。但是,我看到了“Diffie-Hellman 2048 位密钥交换”的表达,我有点难以理解 2048 位的值与什么实体相关联。
给定公式:
是否涉及:
- 素数模p的大小,
- 生成的公钥A的大小,
- 或结果共享秘密的大小?
我主要倾向于第一选择,但我无法通过多个来源进行验证。此外,据我所知,质数随着向大数移动而变得越来越少。如果这两个陈述都是真的,那么我想知道可以用 2048 位表示的素数的数量是否足以进行 Diffie-Hellman 密钥交换操作。那么,当我们选择 2048 位作为 p 的大小时,p的候选素数只是那些可以用 2048 位严格表示的素数,还是超出此范围的素数?
解决方案
简而言之,DH KEX 算法要求 Alice 和 Bob 公开决定两个 PRIME 数字,g
并且p
(在您上面引用的等式中)。通常g
是一个很小的质数并且p
相当大,通常在 2000 到 4000 位长之间。正如您正确指出的那样,生成具有特殊属性的素数可能需要大量计算,因此许多实现都使用固定的 Diffie-Hellman 参数。
另外,您可以检查weakDH,它显示了对通过 TLS 协议的仍然可选择的 DH 实现(512 位长)的可能攻击,使用筛计算得到p
DH 方程的值。
推荐阅读
- javascript - 单击后获取单击元素的问题
- python - Matplotlib 底图 drawcoastlines() 也画一条直线
- flutter - 从 Dart 中的字符串中删除特定字符
- firebase - 如何向主题发送通知
- css - 隐藏子元素的一部分
- python-3.x - 如何在不涉及机器学习算法的情况下实现无与伦比的井字游戏版本?
- typescript - 基本 React Native + TypeScript + redux-forms
- python - Python 的 Subprocess 输入管道在特定机器上不断中断
- javascript - React 钩子、函数组件和 Redux
- algorithm - 我应该如何使用链表在图中找到最短路径