@atlasauth/pca-fndsa-wasm (英语)
这个 FN-DSA (Falcon, FIPS 206) 签名后端 页:1 @atlasauth/pca量子后套间
登记。 它提供密钥生成、签名和——常设仲裁院核查人实际执行的操作
—— 说 签名验证,用于两个标准化参数集:
| 变体 | 警卫 | 校验密钥 | 签名密钥 | 签名 |
|---|---|---|---|---|
fn-dsa-512 | 猫 一 | 897 B类 | 1345 B类 | 666个B级 |
fn-dsa-1024 | 猫咪,5号 | 1793 B类 | 2369 B号 | 1280 B (韩语) |
安装
npm i @atlasauth/pca-fndsa-wasm
这是后端 @atlasauth/pca 用于FN-DSA套房;通常作为附属于 @atlasauth/pca。 。 。 .
节点20分 这个 .wasm 包内的文件船和已安装的文件船 dist/ 目录; 不需要构建步骤或 Rust 工具链来使用它 .
经审查的边界( 无手卷加密)
每一次FN-DSA/猎鹰行动——ntrugen关键一代,猎鹰 sign_dyn 高斯取样器+
FFT 和 NTT 签名验证——通过纯Rust fn-dsa 托马斯的箱子家庭
波宁语Name ("猎鹰"作者),箱子.io 0.4.0,汇编到WebAssembly (crate/) (中文(简体) ). 这是
粗鲁塞克语Name- 被推荐的继任者 pqcrypto-falcon元数据a
箱子连接在一起 fn-dsa-kgen 编号 : fn-dsa-sign 编号 : fn-dsa-vrfy 编号 : fn-dsa-comm。 。 。 . 无 会 议 日 程 和 议 程
梯形数学,FFT/NTT,离散-高斯采样器或密钥/签名编码是
此处被重新执行.
这个箱子只添加了非晶体胶:由SHAKE256种子决定的RNG(由SHAKE256所制造)
fn-dsa自己的再出品SHAKE256,因此Keygen/signing可以再出作已知的答案测试)并
固定缓冲器 C-ABI 组装在 crate/src/lib.rs。 。 。 .
fn-dsa实值#![no_std], 用途 无分配器 (所有工作状态都在内部的固定大小阵列中) 键/生成器结构——没有Vec编号 :Box并且没有外部 超过rand_core+ 键zeroize,所以它的目标wasm32-unknown-unknown纯的玫瑰花,没有 经常预算: 无进口 (模块瞬间带有空导入对象). 与pqc_kyber, (中文(简体) ), 没有[patch.crates-io]需要供应商副本。 这个#![no_std]cdylib 必须保持 定义 全球 分配器,因为板条箱图显示alloc符号(不可脱落/将胶水零化); 已运出的被转移定义为 终止分配 可证明从未援引的 在WebAssembly为两个参数集验证回转绿色.
API 密码
import {
keygen, sign, verify, // FN-DSA keygen / sign / verify (per variant)
sizes, // byte lengths for a variant's vk / sk / sig
SEED_BYTES, MSG_CAP, // 32; max message length
type FnDsaVariant, // 'fn-dsa-512' | 'fn-dsa-1024'
} from '@atlasauth/pca-fndsa-wasm';
const { verifyingKey, signingKey } = keygen('fn-dsa-512', seed /* 32 B */);
const sig = sign('fn-dsa-512', signingKey, message, sigSeed /* 32 B */);
const ok = verify('fn-dsa-512', verifyingKey, message, sig); // -> boolean
瓦斯马是 no_std,运行时无分配器,即时 空导入对象,并且已经
通过线性内存中的固定静态缓冲器驱动(镜像) @atlasauth/pca-mpc-wasm 编号 :
@atlasauth/pca-mpc-lwe-ot-wasm) (中文(简体) ). 信件和签名是原始的 FN-DSA 方案
DOMAIN_NONE 财务报告和审定财务报表 HASH_ID_RAW (没有呼叫员预发).
构建测试( T)
pnpm build:wasm # cargo build --release --target wasm32-unknown-unknown + copy artifact + cargo clean
pnpm build # tsc
pnpm test # vitest: round-trips, cross-implementation vectors and negative cases through the wasm binding
FN-DSA计算器的原生回程和篡改测试 crate/src/lib.rs (单位:千美元)cargo test) (中文(简体) ).
标准状态(诚实)
FN -DSA是,我们是 FIPS 206,最终待决:NIST尚未发布最终标准文本. 这个
fn-dsa 箱子跟踪草稿并警告说 密钥编码、 信件预隐藏和域
1.0发布前的分离可能改变,所以这里产生的密钥和签名不是
保证与最终的FN-DSA标准互通. 跟踪标准并重置
fIPS 206着陆时的箱子.
- 签名/ 键源 为: 最佳常时: FN-DSA(Falcon) 签名是已知的硬项
由于其浮动点离散-高斯取样器,
继续
wasm32(没有本地的IEEE-754ABI担保)fn-dsa使用便携式 FP 模拟,使 一次最努力的时间。 这是原始人的侧道边界,不是 破坏它的安全. - 核查 ——常设仲裁院核查员唯一使用这一后端的是 公用钥匙操作数字 : 它没有秘密,也没有浮点.
何等为证而何为非
FN-DSA还没有正式的测试矢量. 如2026-10-09日的检查,NIST ACVP-Server 寄存器没有FN-DSA/Falcon/FIPS 206测试文件(它有ML-DSA和SLH-DSA),FIPS 206仍然是一个 因此没有使用FN-DSA官方矢量。 本套装中的任何内容均不声称对 NIST FN-DSA载体.
什么官话 猎鹰回合-3 已知答案文件( Falcon 向 NIST PQC 提交的原始文件)
存档, 512和1024各有100个条目, 由 sha256 键入 test-vectors/falcon-round3/做掩护,
和他们所不能达到的
- 键:在转码后可用. 猎鹰和FN-DSA的原始草案 编码相同的关键材料 不同的( 组合系数的位序, 以系数形式表示的公钥相对于 NTT) 域名,FN-DSA签名密钥中额外的公钥散列). 每个正式的密钥对都是被转码的,a 签名是通过后端生成的,并且通过转码的原始公钥进行验证,用于 所有200个条目。 未译码的圆-3编码被否决.
- 签署:不兼容. 回合-3签名 hash 不同输入并使用可变长 集装箱,所以FN -DSA 验证拒绝它们。 检验表明这一点而不是假设.
- KAT种子的关键生成:未测试.
测试内容包括:
- 交叉执行,双向. 联合国机构会议以外的会议
同名草稿( C 库)
pornin/c-fn-dsa- 单独的代码基础和语言 红色fn-dsa装在垃圾桶里的箱子) 装在垃圾桶里的验证 垃圾桶生产的签名被接受 由C执行。 FN-DSA-512和FN-DSA-1024都带有空,短和1000字节的信息. 向量是生成的,不是官方的,在固定中被贴上这样的标签. - 负案. 对于每个交叉执行签名,签名的每个单位翻转都是 拒绝, 以及修改后的信件, 不同的校验密钥, 错误的页眉字节, 非零 编码 和错误的校验密钥。 输入大小错误, 错误的字段和预期名称 尺寸.
- 决取相取. 密钥和签名从种子中复制 bit- for-bit.
限制 :
- C执行部分与Rust板条箱分享其作者(和对草案的解读),因此同意 显示两个代码基础正确执行同一个草稿,而不是显示草稿是NIST将公布的.
- 原始- Falcon 库( 例如 liboqs 0.1.6. 0) 使用不同的密钥编码和信件 他们拒绝FN-DSA的秘密密钥, 他们不能 用于交叉核对签名.
- 种子密钥生成没有被草案指定; C 和 Rust 执行会获得不同的密钥 从同一个种子,所以按键通过互操作性来比较,而不是平等.
- 签名的常年行为和在相机上的密钥生成没有被测量.
使用时使用@ atlasauth/ pca
@atlasauth/pca 登记册 fn-dsa-512 财务报告和审定财务报表 fn-dsa-1024 作为签名套件,并加载此软件包作为其验证和签名后端。 如果后端无法加载, FN-DSA 验证失败被关闭 .
建立来源
运出 wasm/pca_fndsa_wasm.wasm 由 Rust 源创建于 crate/ 联合国 Cargo.lock),且为位元可再生产.
| 文物 | wasm/pca_fndsa_wasm.wasm |
| 萨瓦256 | 95c1cd16fb135c4a524a5ff19548d5d1a5ce43fc1f00e19f4465b5111d8903ad |
| 目标 | wasm32-unknown-unknown, (中文(简体) ), --release --locked 通过 crate/build-wasm.sh (路径调整;选择级别) s, LTO, , (英语), panic = "abort",剥去) |
| 工具链 | b940084d7 2026-09-28),货物 1.99.0 |
| 锁定的箱子 | fn-dsa 0.4.0(及其被锁入的中转箱) |
校验 : bash crate/build-wasm.sh && shasum -a 256 wasm/pca_fndsa_wasm.wasm (需求数) rustup target add wasm32-unknown-unknown) (中文(简体) ). 脚本通过 --remap-path-prefix 货物登记簿和生锈烟囱,以及 -Cdebuginfo=0,因此构建是路径独立的:没有宿主路径被嵌入,同样的sha256来自任意的取出位置.
许可证
麻省理工 - 见LICENSE.