HN 日本語サマリー

← 一覧へ戻る
科学・技術

RSA-896

RSA-896 (saweis.net)

191 pointsby madars76 コメント

要約

Stephen A. Weis氏は、2026年9月19日にClaudeと協力してRSAチャレンジ数RSA-896を素因数分解したことを報告しています。記事では、RSA-896の数値とその2つの大きな素因数pおよびqが示されています。

全文翻訳

RSA-896

RSA-896 は、私が2026年9月19日にClaudeと共に素因数分解したRSAチャレンジ数です。詳細は追って公開します。簡単に言うと、ClaudeはCADO-NFSをGPUで実行できるように移植するために使用されました。これは、通常のジョブ間のアイドル時間を活用し、最大2048基のGPUからなるフリートで低優先度ジョブとして実行されました。計算は10日間にわたって実行され、Anthropicで約30 GPU-年の計算時間を費やしました。

この作業は、General Number Field Sieve (GNFS) アルゴリズムの実行時間を有意に改善するものではありません。展開されているRSA-2048キーのセキュリティに影響を与えるものではありません。しかし、RSA-1024キーが、データセンター規模のGPUフリートを持つ多くの攻撃者に対して脆弱であることを実証しています。

RSA-896 = 
4120234369866595438555313653325759481798116998443279828454556264
3387644556524842619809887042316184187926142024718886949256093177
6375033421130982397485150944909106910269861031862704114880866970
5649029036536588674337317208131041051908642547932826013912576240
33946373269391
p = 
636606729769440499166579950236036751749912014371509557713570027
508971809534551913252252094954941974952859310861988904737359709
200557919
q = 
647218161102195448058768698177623951380616936266986989243011933
572862870905830904361851542450154852431416136790787107595965374
752513489

Polynomial Parameters

使用した多項式は次数6、alpha -11.12、Murphy E 5.293e-10、Res(f,g) = -8Nで、以下の通りでした。

Y0: -13251813291383946856267859335343621268178701
Y1: 73476233331852469840135261
c0: 47116807724228742541747038893184760096436784698070199672
c1: -32945633819741939141253692412171597093977742630162
c2: -2025961670739321318539049635089452233067707
c3: 195344412542670829135241100477177798
c4: 4560157188630514979797057951
c5: -203811845861588319720
c6: -608639391360
skew: 20926672.028

Sieving Parameters

              side 0 (rational)    side 1 (algebraic, degree 6)
  lim         2^32 - 1             2^32 - 1
  lpb         37                   40
  mfb         74  (2 large primes) 120 (3 large primes)

  Special-q:  prime, on side 1
  qmin:       6.0e9
  qmax:       4.90e10 (frontier at the stop)
  Coverage:   about 98.7% of that range was completed. Work in flight
              at the stop was dropped.
  Sieve area: A = 33, a fixed 2^17 x 2^16 region.

  From about 4 hours in, cells with i and j both even were skipped.
  That leaves 3/4 of the cells and gave identical relations in testing.

  We sieved at lpb 37/40 but built the matrix at 37/39. That dropped
  35.0% of the relations.

Batch Smoothness Detection

  None. Both sides were sieved over the whole range. Cofactors were
  factored by ECM on the GPU with B1 = 500 and B2 = 25000. The budget
  was 35 curves, or 100 for a piece that can only be two large primes.
  Our batch prefilter stayed off because it does not pay above mfb 96.

Yield

  Special-q sieved:   1.774e9 (q, root) pairs
  Relations found:    37.81 G
  Kept as unique:     29.05 G
  Per special-q:      21.3 found, 16.4 unique (average)

  Those counts cover 267,724 of the 267,969 work blocks. The final
  unique set was 29,076,172,342 relations.

  Test sieve on the final polynomial, one H100, before the sublattice
  change (multiply ms/q by 0.88 for the rate afterwards):

    q         found/q   unique/q   ms/q   duplicates
    6e9       32.1      32.1       380     0.0%
    3e10      19.4      13.9       372    28.2%
    4e10      17.7      12.2       370    31.0%
    5.5e10    16.4      10.7       369    34.5%

  Production agreed with this:

    part of the run           found/q   unique/q
    first 134 M special-q     29.8      28.3
    last 130 M special-q      17.1      11.4

Time pre Special-Q

  In H100 GPU-seconds, not core-seconds. The host CPU only does the
  q-lattice reduction.

    definition                                          s per special-q
    sieving + cofactorization inside a work unit        0.333
      (before the sublattice change)                    0.377
    median over whole work units, incl. process start   0.340
    all allocated GPU time in the sieving window,
      divided by special-q completed                    0.361

  The last figure includes work redone after preemptions. It comes to
  177,929 GPU-hours, or 0.022 GPU-s per unique relation.

  CPU reference, not like for like: stock las at A = 33 took 290 to 334
  core-s per special-q on Graviton3, and about 163 physical-core-s on a
  Xeon 8559C. That test used the RSA-260 polynomial with lim 2^31 and
  lpb 37/38.

Duplicates

  23.2% of relations found (8.76 G of 37.81 G).

  The siever removed them on the fly. A relation was dropped if a
  smaller special-q in [qmin, q) would also find it, so the raw set was
  never stored. The filter's own (a,b) check then found 0 duplicates in
  the 29.08 G lines.

Filtering and Matrix

  Input:        18,895,476,871 unique relations at 37/39, plus 7.76 M
                free relations, against 20.10 G columns
  After purge:  5,913,776,340 x 5,913,776,180, weight 154.6 G
  After merge (the matrix solved):
                rows      1,482,375,753
                columns   1,482,341,556
                nonzeros  296,475,150,709 (200.0 per row)

  The 32 heaviest columns (20.4 G nonzeros) were held out as a dense
  block and handled at the characters step. Counting them, the matrix
  has 213.8 nonzeros per row.

  Block Wiedemann: m = n = 3584, as 56 sequences of width 64, with
  827,234 iterations each.

Calendar Time

  Total 10.07 days (870,124 s) on up to 256 preemptible nodes of
  8 H100 each.

    phase                      wall hours
    polynomial selection       14.9
    test sieving, launch        2.2
    sieving                    90.9
    filtering                  21.9
    Krylov                     58.8
    Krylov check, lingen       40.2
    mksol, gather               7.4
    characters, square root     5.3

  Notes:
  - Polynomial selection ran on 128 nodes.
  - Sieving includes three whole-fleet outages of 35 to 90 minutes.
  - Filtering was about 3.1 h of actual work on 8 nodes. The rest went
    to a preemption, a false alarm in a pre-solve audit, and preparing
    the matrix for the solve.
  - The first half of lingen ran alongside Krylov. The Krylov window
    includes a fleet relaunch.
  - Lingen was restarted four times.
  - mksol lost about 3 h to an out-of-memory failure.