sovereignbase/hardware-bound
GitHub: sovereignbase/hardware-bound
利用WebAuthn设备绑定在浏览器中创建硬件绑定的凭证,并从中派生出稳定的熵字节,用于引导本地加密状态,无需存储种子材料。
Stars: 0 | Forks: 0
[](https://www.npmjs.com/package/@sovereignbase/hardware-bound)
[](https://github.com/sovereignbase/hardware-bound/actions/workflows/ci.yaml)
[](https://codecov.io/gh/sovereignbase/hardware-bound)
[](LICENSE)
# 硬件限制
创建一个设备绑定的浏览器凭证,并从中派生出稳定的熵字节,使本地优先和零知识应用无需存储自己的种子材料即可引导加密状态。
公共 API 刻意保持简洁:
- `createDeviceBinding(displayName)`
- `deriveDeviceEntropy()`
## 安装
```
npm install @sovereignbase/hardware-bound
# 或者
pnpm add @sovereignbase/hardware-bound
# 或者
yarn add @sovereignbase/hardware-bound
# 或者
bun add @sovereignbase/hardware-bound
# 或者
deno add jsr:@sovereignbase/hardware-bound
# 或者
vlt install jsr:@sovereignbase/hardware-bound
```
## 使用方法
```
import {
createDeviceBinding,
deriveDeviceEntropy,
} from '@sovereignbase/hardware-bound'
const created = await createDeviceBinding('Ada Lovelace')
if (!created) throw new Error('Device binding failed')
const entropy = await deriveDeviceEntropy()
if (!entropy) throw new Error('Entropy derivation failed')
console.log(entropy)
```
## API
### `createDeviceBinding(displayName, signal?)`
为当前 origin 创建设备绑定,成功返回 `true`,失败返回 `false`。
### `deriveDeviceEntropy(signal?)`
从现有设备绑定派生出确定性熵字节,返回:
- `Uint8Array`
- `false`
返回的字节包括:
1. credential `rawId`
2. 第一个 PRF 输出
3. 第二个 PRF 输出
## 行为特性
- 无存储。
- 无网络。
- 导出的两个函数不会抛出库错误。失败时返回 `false`。
- 旨在作为本地加密状态的引导材料,而非通用身份验证库。
## 测试
- Node 环境的单元测试和集成测试。
- Playwright 浏览器测试。
- 浏览器矩阵:Chromium、Firefox、WebKit、Pixel 5 模拟器、iPhone 12 模拟器。
## 许可证
Apache-2.0
标签:FIDO2, MITM代理, npm包, TypeScript, VS Code插件, WebAuthn, 前端安全, 加密状态, 安全插件, 密码学, 密钥派生, 手动系统调用, 数据可视化, 本地优先, 浏览器API, 浏览器凭证, 熵生成, 特征检测, 自定义脚本, 设备绑定, 零知识应用