enigma
收藏资源简介:
该数据集是一个用于解决特定RSA因数分解挑战的软件解决方案包,旨在破解一个460位(约139位十进制数字)的RSA半素数。它针对在线挑战平台设计,需在4小时计算时限和256 MB临时存储空间约束下运行。解决方案基于CADO-NFS工具包,采用General Number Field Sieve(GNFS)算法,流程包括轻量级算法尝试、GMP-ECM预测试和完整的CADO-NFS步骤(如多项式选择、格筛等)。包中包含主程序脚本(breaking_rsa.py)、Dockerfile和平台接口代码,通过智能存储策略应对有限资源挑战。适用于密码学研究和教育,演示大规模整数因数分解算法在实际约束下的实现。
This dataset is a software solution package for addressing a specific RSA factorization challenge, which aims to crack a 460-bit (roughly 139 decimal digits) RSA semi-prime. It is tailored for online challenge platforms, and is required to operate under the constraints of a 4-hour computation time limit and 256 MB of temporary storage. The solution is built upon the CADO-NFS toolkit, leveraging the General Number Field Sieve (GNFS) algorithm. Its workflow encompasses lightweight algorithm trials, GMP-ECM pre-tests, and full CADO-NFS procedures including polynomial selection, lattice sieving, and more. The package contains the main program script (breaking_rsa.py), Dockerfile, and platform interface code, and tackles limited resource constraints via intelligent storage strategies. It is applicable to cryptography research and education, showcasing the implementation of large-scale integer factorization algorithms under practical operational constraints.
数据集概述:Breaking RSA — GNFS (CADO-NFS) solver
这是一个针对 Enigma SN63 Breaking RSA 挑战的专用解决方案,旨在解决 460-bit(约139位十进制数字) 的RSA挑战。该方案特别针对现有方案(YAFU SIQS)在4小时时限内无法完成的问题而设计。
核心特性
- 算法:采用通用数域筛法(GNFS),相较于现有方案(YAFU SIQS)使用的二次筛法(QS),在100-110位以上的数字上性能显著提升,是139位RSA挑战的当前最优算法。
- 目标:在给定硬件约束(24核CPU、约85GB RAM、无root权限、256MB可写tmpfs)下,于4小时内完成460位RSA分解。
算法流水线
| 阶段 | 方法 | 目的 |
|---|---|---|
| 0 | 试除法、完全平方检验、有界Pollard ρ(Brent)、短Pollard p−1 | 快速处理小规模或退化输入 |
| 0.5 | 短GMP-ECM预测试(ECM_PRETEST) |
低成本的保险措施,用于处理意外小或不平衡的因子 |
| 1 | CADO-NFS(多项式选择→格筛→过滤→线性代数→平方根) | 针对真实挑战规模的核心引擎 |
关键挑战与解决方案:256MB可写空间
该方案面临的主要瓶颈是验证器提供仅256MB的可写/tmp(tmpfs),而139位GNFS需要数GB的临时空间。为此引入了三级暂存空间方案:
CADO_WORKDIR:用户显式覆盖设置(例如使用主机挂载的ramdisk),最可靠。- 现有大tmpfs:自动检测并使用已有的、空间充足的tmpfs(如
/dev/shm、/tmp)。 - 自建RAM tmpfs:通过
unshare和mount无root权限地在内存中创建一个大尺寸tmpfs(默认60GB)。这是唯一无需root权限获取大容量可写空间的方法,但依赖于验证器主机对无特权用户命名空间和tmpfs挂载的支持。
GPU支持
- 主要瓶颈(筛选阶段,耗时70-85%)为CPU密集型任务,GPU不加速此阶段。
- GPU(如RTX PRO 6000)可辅助多项式选择阶段,通过设置
USE_GPU_POLYSELECT=1启用,但这属于可选的增强功能。
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
CADO_NFS |
/opt/cado-nfs/cado-nfs.py |
CADO主程序路径 |
CADO_THREADS |
os.cpu_count() |
CADO工作线程数 |
CADO_WORKDIR |
自动(RAM) | 强制指定暂存工作目录 |
CADO_EXTRA_ARGS |
— | 传递给cado-nfs.py的额外参数 |
CADO_TIMEOUT |
无 | CADO运行的软超时时间(秒) |
SCRATCH_MIN_GB |
3 |
信任现有tmpfs所需的最小可用空间(GB) |
RAMDISK_SIZE_GB |
60 |
自建tmpfs的大小(GB) |
USE_USERNS_RAMDISK |
1 |
是否尝试使用无特权用户命名空间创建ramdisk |
USE_GPU_POLYSELECT |
0 |
是否使用CADO的CUDA多项式选择 |
ECM_PRETEST / ECM_CURVES / ECM_B1 |
1 / 40 / 250000 |
阶段0.5的ECM参数 |
RHO_BUDGET |
2000000 |
Pollard ρ算法的预算 |
构建与测试
- 构建:使用Docker构建,并会克隆GMP-ECM和CADO-NFS官方仓库,在构建时执行CADO的烟雾测试以验证正确性。
- 本地测试:
- 管线与小型N测试:直接运行
breaking_rsa.py脚本,用于验证输入解析、阶段0分解、输出协议等。 - 工作台测试:使用Enigma仓库的
workbench模块,可指定不同难度进行模拟测试。
- 管线与小型N测试:直接运行
当前状态
- ✅ 封装逻辑、输入输出协议、自验证、阶段0和0.5、降级处理及暂存空间逻辑均已实现并通过本地测试。
- ⚠️ 尚未在真实硬件上验证:
- 在24核CPU上,460位的CADO-NFS能否在4小时内完成。
- 无权限的RAM-tmpfs方案是否被验证器沙箱允许。使用
CADO_WORKDIR可规避风险。




