symbolicsoft/kyber-k2so
GitHub: symbolicsoft/kyber-k2so
符合 NIST FIPS 203 标准的纯 Go 实现,为 Go 项目提供简洁易集成的后量子密钥封装机制。
Stars: 127 | Forks: 17
# Kyber-K2SO
[](https://github.com/symbolicsoft/kyber-k2so/actions)
[](https://pkg.go.dev/github.com/symbolicsoft/kyber-k2so?tab=overview)
[](https://goreportcard.com/report/github.com/symbolicsoft/kyber-k2so)

**[Kyber-K2SO](https://github.com/symbolicsoft/kyber-k2so)** 是 Symbolic Software 对 [ML-KEM](https://csrc.nist.gov/pubs/fips/203/final) (FIPS 203) 的清晰实现,这是 NIST 标准化的基于模格的密钥封装机制。ML-KEM 是一种 IND-CCA2 安全的密钥封装机制 (KEM),其安全性基于在模格上求解容错学习 (LWE) 问题的难度。
## 安全免责声明
🚨 我们已付出巨大努力以确保本库的正确性、互操作性、安全性和可靠性。此外,该 API 未来不太可能发生变更。虽然此库可能已准备好用于生产环境,但它是按原样提供的,不提供任何保证。
## 功能与用法
在牢记上述安全免责声明的前提下,Kyber-K2SO 似乎适用于 Go 支持的任何环境:客户端应用程序、服务端应用程序等。在常规计算硬件上,所有操作仅需几毫秒。
### 功能
* **代码短小精悍,易于阅读。** Kyber-K2SO 保持简单,旨在提高可维护性并成为良好的教学资源。
* **API 简单。** 使用 `KemKeypair768()` 生成私钥和公钥,`KemEncrypt768(publicKey)` 生成并加密共享密钥,以及 `KemDecrypt768(ciphertext, privateKey)` 解密共享密钥。除了 ML-KEM-768,还提供 ML-KEM-512 和 ML-KEM-1024。
* **性能良好。** Kyber-K2SO 在 Go 编程语言支持的任何环境中进行常规使用都绰绰有余。
* **常量时间(大概率)。** 据我们所知,解密操作似乎以常量时间执行。鼓励进行进一步分析。
### 使用 Kyber-K2SO
```
go get -u github.com/symbolicsoft/kyber-k2so
```
```
package main
import (
kyberk2so "github.com/symbolicsoft/kyber-k2so"
)
func main() {
privateKey, publicKey, _ := kyberk2so.KemKeypair768()
ciphertext, ssA, _ := kyberk2so.KemEncrypt768(publicKey)
ssB, _ := kyberk2so.KemDecrypt768(ciphertext, privateKey)
}
```
将上述函数名中的 `768` 替换为 `512` 或 `1024`,即可调用 ML-KEM-512 或 ML-KEM-1024 来代替 ML-KEM-768。
### 运行测试
```
> go test -v
=== RUN TestSelf512
--- PASS: TestSelf512 (0.09s)
=== RUN TestSelf768
--- PASS: TestSelf768 (0.14s)
=== RUN TestSelf1024
--- PASS: TestSelf1024 (0.21s)
=== RUN TestMLKEM512Vector
--- PASS: TestMLKEM512Vector (0.00s)
=== RUN TestMLKEM768Vector
--- PASS: TestMLKEM768Vector (0.00s)
=== RUN TestMLKEM1024Vector
--- PASS: TestMLKEM1024Vector (0.00s)
PASS
ok github.com/symbolicsoft/kyber-k2so 0.431s
```
### 运行基准测试
```
> go test -bench=.
goos: linux
goarch: amd64
pkg: github.com/symbolicsoft/kyber-k2so
cpu: Intel(R) Core(TM) Ultra 9 275HX
BenchmarkKemKeypair512-24 52944 22653 ns/op
BenchmarkKemKeypair768-24 29696 40083 ns/op
BenchmarkKemKeypair1024-24 19209 60778 ns/op
BenchmarkKemEncrypt512-24 48856 23307 ns/op
BenchmarkKemEncrypt768-24 32428 39273 ns/op
BenchmarkKemEncrypt1024-24 19483 57528 ns/op
BenchmarkKemDecrypt512-24 36138 33402 ns/op
BenchmarkKemDecrypt768-24 25008 47869 ns/op
BenchmarkKemDecrypt1024-24 17690 67303 ns/op
PASS
ok github.com/symbolicsoft/kyber-k2so 15.135s
```
## 关于 Kyber-K2SO
Kyber-K2SO 由 [Symbolic Software](https://symbolic.software) 发布,采用 MIT 许可证。
[](https://github.com/symbolicsoft/kyber-k2so/actions)
[](https://pkg.go.dev/github.com/symbolicsoft/kyber-k2so?tab=overview)
[](https://goreportcard.com/report/github.com/symbolicsoft/kyber-k2so)

**[Kyber-K2SO](https://github.com/symbolicsoft/kyber-k2so)** 是 Symbolic Software 对 [ML-KEM](https://csrc.nist.gov/pubs/fips/203/final) (FIPS 203) 的清晰实现,这是 NIST 标准化的基于模格的密钥封装机制。ML-KEM 是一种 IND-CCA2 安全的密钥封装机制 (KEM),其安全性基于在模格上求解容错学习 (LWE) 问题的难度。
## 安全免责声明
🚨 我们已付出巨大努力以确保本库的正确性、互操作性、安全性和可靠性。此外,该 API 未来不太可能发生变更。虽然此库可能已准备好用于生产环境,但它是按原样提供的,不提供任何保证。
## 功能与用法
在牢记上述安全免责声明的前提下,Kyber-K2SO 似乎适用于 Go 支持的任何环境:客户端应用程序、服务端应用程序等。在常规计算硬件上,所有操作仅需几毫秒。
### 功能
* **代码短小精悍,易于阅读。** Kyber-K2SO 保持简单,旨在提高可维护性并成为良好的教学资源。
* **API 简单。** 使用 `KemKeypair768()` 生成私钥和公钥,`KemEncrypt768(publicKey)` 生成并加密共享密钥,以及 `KemDecrypt768(ciphertext, privateKey)` 解密共享密钥。除了 ML-KEM-768,还提供 ML-KEM-512 和 ML-KEM-1024。
* **性能良好。** Kyber-K2SO 在 Go 编程语言支持的任何环境中进行常规使用都绰绰有余。
* **常量时间(大概率)。** 据我们所知,解密操作似乎以常量时间执行。鼓励进行进一步分析。
### 使用 Kyber-K2SO
```
go get -u github.com/symbolicsoft/kyber-k2so
```
```
package main
import (
kyberk2so "github.com/symbolicsoft/kyber-k2so"
)
func main() {
privateKey, publicKey, _ := kyberk2so.KemKeypair768()
ciphertext, ssA, _ := kyberk2so.KemEncrypt768(publicKey)
ssB, _ := kyberk2so.KemDecrypt768(ciphertext, privateKey)
}
```
将上述函数名中的 `768` 替换为 `512` 或 `1024`,即可调用 ML-KEM-512 或 ML-KEM-1024 来代替 ML-KEM-768。
### 运行测试
```
> go test -v
=== RUN TestSelf512
--- PASS: TestSelf512 (0.09s)
=== RUN TestSelf768
--- PASS: TestSelf768 (0.14s)
=== RUN TestSelf1024
--- PASS: TestSelf1024 (0.21s)
=== RUN TestMLKEM512Vector
--- PASS: TestMLKEM512Vector (0.00s)
=== RUN TestMLKEM768Vector
--- PASS: TestMLKEM768Vector (0.00s)
=== RUN TestMLKEM1024Vector
--- PASS: TestMLKEM1024Vector (0.00s)
PASS
ok github.com/symbolicsoft/kyber-k2so 0.431s
```
### 运行基准测试
```
> go test -bench=.
goos: linux
goarch: amd64
pkg: github.com/symbolicsoft/kyber-k2so
cpu: Intel(R) Core(TM) Ultra 9 275HX
BenchmarkKemKeypair512-24 52944 22653 ns/op
BenchmarkKemKeypair768-24 29696 40083 ns/op
BenchmarkKemKeypair1024-24 19209 60778 ns/op
BenchmarkKemEncrypt512-24 48856 23307 ns/op
BenchmarkKemEncrypt768-24 32428 39273 ns/op
BenchmarkKemEncrypt1024-24 19483 57528 ns/op
BenchmarkKemDecrypt512-24 36138 33402 ns/op
BenchmarkKemDecrypt768-24 25008 47869 ns/op
BenchmarkKemDecrypt1024-24 17690 67303 ns/op
PASS
ok github.com/symbolicsoft/kyber-k2so 15.135s
```
## 关于 Kyber-K2SO
Kyber-K2SO 由 [Symbolic Software](https://symbolic.software) 发布,采用 MIT 许可证。标签:Client-side, EVTX分析, FIPS 203, Go, KEM, Kyber, LWE, ML-KEM, NIST标准化, Ruby工具, Server-side, 加密算法, 后量子密码学, 学习容错, 密码学库, 密钥封装机制, 抗量子计算, 日志审计, 格密码学, 模块格, 网络安全, 隐私保护, 零知识证明