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, 数据保护, 网络安全, 网络流量审计, 通知系统, 通知系统, 隐私保护, 零知识证明相关