OpenSSH - ssh-keygen - 在特定起点生成 DH-GEX 候选失败

OpenSSH - ssh-keygen - 在特定起点生成 DH-GEX 候选失败

我正在尝试ssh-keygen生成新的素数OpenSSH用于教育目的。当我没有通过起点时,生成会起作用(默认是根据手册页) 到ssh-keygen。但是目前我注意到,当我设置起点时,有两种行为。

第一个行为(起点为 0):

$ ssh-keygen -M generate -O bits=2048 -O start=0 moduli.candidates
Sat Jan  2 02:04:34 2021 Sieve next 67043328 plus 2047-bit
Sat Jan  2 02:05:08 2021 Sieved with 203277289 small primes in 34 seconds
Sat Jan  2 02:05:08 2021 Found 0 candidates

有人能解释一下为什么这不起作用吗?好吧,0这不是素数。但是当我在这里设置小素数(23和)时5,结果相同。7

第二种行为:

$ ssh-keygen -M generate -O bits=2048 -O start=005855CC185E774C46CA1745251F65F83DB68F2AAE0DF5F41D9D80B794F816ACA93DB11A20415D754763D483344CA40473854A7059E321DD5B6AF6D9E44556F8CFC607D0BD92DF968D30251A94F81BED3A86130CD3B50FDA55D60CFC3E85A6FBB29CA34FD28463DF0D32E1688167A5E3C694DA2044BC1BE090695F2CC712A4CA31CF94D9581EA46DC52980777D5D15C0E0A8D76FECB4C142EAEB67197C4F028790CBA69F85BAACF17AF60094A537E1331C00984AA3FE637F81236ED9EFCA850EEEDFC0F9AEC98202E8DBAE1B6F06149B924B7094B85A5C81C9689E08769A0FF3F1EFBECDA5509A5ED3D41340824EF583AE6259A714BF8ED50D24BCE4F983C329 moduli.candidates
Sat Jan  2 02:10:21 2021 Sieve next 67043328 plus 2047-bit
Sat Jan  2 02:13:27 2021 Sieved with 203277289 small primes in 186 seconds
Sat Jan  2 02:13:35 2021 Found 56141 candidates

这里我使用了上一个(工作)生成中的最小素数,并将最高有效字节归零。生成工作正常,但当我想筛选这个生成候选时,它也会失败:

$ ssh-keygen -M screen -f moduli.candidates moduli.safe
Sat Jan  2 02:19:02 2021 Found 0 safe primes of 0 candidates in 0 seconds

该文件肯定包含候选人:
这是第一位候选人:

$ head moduli.candidates
20210102011327 4 2 203277289 2046 0 5855CC185E774C46CA1745251F65F83DB68F2AAE0DF5F41D9D80B794F816ACA93DB11A20415D754763D483344CA40473854A7059E321DD5B6AF6D9E44556F8CFC607D0BD92DF968D30251A94F81BED3A86130CD3B50FDA55D60CFC3E85A6FBB29CA34FD28463DF0D32E1688167A5E3C694DA2044BC1BE090695F2CC712A4CA31CF94D9581EA46DC52980777D5D15C0E0A8D76FECB4C142EAEB67197C4F028790CBA69F85BAACF17AF60094A537E1331C00984AA3FE637F81236ED9EFCA850EEEDFC0F9AEC98202E8DBAE1B6F06149B924B7094B85A5C81C9689E08769A0FF3F1EFBECDA5509A5ED3D41340824EF583AE6259A714BF8ED50D24BCE4F983CBE5
[...]
$

以下是行数:

$ wc -l moduli.candidates
56141 moduli.candidates
$

设置起点的正确方法是什么ssh-keygen

答案1

我找到了解决方案。

ssh-keygen需要一个恰好为位大小减 1 的起点。ssh-keygen如果起点在范围内,则当前生成时不检查起点。

正确的起始点范围:
位大小2048
0x400x7f2040(随机)位

位大小4096
0x400x7f4088(随机)位

等等...

ssh-keygen目前,在生成候选值时,小于或大于的值可以起作用,但在详细模式下运行时,筛选/测试会失败并出现错误消息。

相关内容