tuna4ll/noctahash

GitHub: tuna4ll/noctahash

用 Rust 实现的抗 GPU、ASIC 和侧信道攻击的内存硬密码哈希算法。

Stars: 1 | Forks: 0

# NoctaHash 用 Rust 实现的内存硬密码哈希算法。 ## 概述 NoctaHash 是一个生产级的密码哈希系统,旨在抵御 GPU、ASIC 和侧信道攻击。它具有内存硬度、时间硬度以及具有确定性结果的真正并行执行能力。 ## 功能特性 - 内存硬度:抵御 GPU/ASIC 攻击 - 时间硬度:可配置的计算时间 - 混合混合:数据独立和数据依赖阶段 - 真正的并行性:多线程执行 - 恒定时间操作:抗侧信道攻击 - 安全内存管理:自动清零 ## 安装 添加到 `Cargo.toml`: ``` [dependencies] noctahash = "0.1.0" ``` ## 用法 ``` use noctahash::{noctahash, verify}; // Create hash let hash = noctahash("password", None, 3, 64, 4, "base64")?; // Verify password let is_valid = verify("password", &hash); ``` ### 自定义盐值 ``` let salt = b"your_32_byte_salt_here"; let hash = noctahash("password", Some(salt), 3, 64, 4, "base64")?; ``` ## 参数 - **time_cost** (1-16777216):迭代次数 - **memory_cost_mb** (≥1):内存使用量(兆字节) - **parallelism** (1-255):并行通道数量 - **encoding**:"base64" 或 "hex" ### 推荐设置 | 用例 | time_cost | memory_mb | parallelism | |----------|-----------|------------|-------------| | 开发环境 | 1 | 16 | 2 | | 生产环境 | 3 | 64 | 4 | | 高安全性 | 4 | 128 | 4 | ## 哈希格式 ``` $noctahash$v=1$t=3,m=64,p=4$$ ``` ## CLI ``` cargo build --release ./target/release/noctahash [time_cost] [memory_mb] [parallelism] ``` ## 安全性 - 最小盐值长度:16 字节(推荐:32 字节) - 恒定时间比较 - 安全内存清零 - PRF 输入的域分离 - 固定旋转常数(无数据依赖旋转) ## 性能 现代硬件上的典型性能: - `t=3, m=64, p=4`:约 500ms - `t=2, m=32, p=2`:约 150ms - `t=1, m=16, p=1`:约 50ms ## API ### 函数 - `noctahash(password, salt, time_cost, memory_mb, parallelism, encoding)` - 创建哈希 - `verify(password, hash_string)` - 验证密码 - `NoctaHashCore::new(time_cost, memory_mb, parallelism)` - 创建核心实例 - `NoctaHashCore::compute(password, salt)` - 计算原始哈希 ## 构建 ``` cargo build --release ``` ## 测试 ``` cargo test ``` ## 许可证 MIT ## 作者 **Tuna4L** - [GitHub](https://github.com/Tuna4LL)
标签:Argon2替代, NoctaHash, ProjectDiscovery, Rust, 侧信道攻击防护, 内存困难, 加密算法, 可视化界面, 安全开发库, 密码哈希, 密码学, 并行计算, 恒定时间算法, 手动系统调用, 抗ASIC, 抗GPU, 数据保护, 网络安全, 网络流量审计, 通知系统, 通知系统, 隐私保护, 零知识证明相关