6 个版本
0.4.0 | 2021 年 7 月 25 日 |
---|---|
0.3.2 | 2021 年 6 月 18 日 |
0.3.1 | 2021 年 5 月 31 日 |
0.2.1 | 2021 年 5 月 23 日 |
#923 在 异步
每月下载量 25
42KB
589 行
PSEC (点对点安全临时通信) 是 TLS 1.3 的简化/适应版本,为 P2P 网络提供加密和认证的安全传输层,用于临时通信。PSEC 确保可否认性、前向保密性、未来保密性和可选的明文长度混淆。此 crate 是使用 rust 和 tokio 框架实现的该协议的实现。
免责声明
本 crate 的代码或 PSEC 协议未接受任何安全审计,因此不应被视为完全安全。本软件按“原样”提供,不提供任何类型的保证。
示例
use rand::rngs::OsRng;
use tokio::net::TcpStream;
use async_psec::{Session, Identity, PsecReader, PsecWriter, PsecError};
#[tokio::main]
async fn main() -> Result<(), PsecError> {
let identity = Identity::generate(&mut OsRng); //generate a new PSEC identity
//connect to another PSEC node listening on 10.152.152.10:7530
let stream = TcpStream::connect("10.152.152.10:7530").await.unwrap();
let mut psec_session = Session::from(stream); //wrap the TcpStream into a PSEC session
psec_session.do_handshake(&identity).await?; //perform the PSEC handshake
//encrypt a message, obfuscate its length with padding then send it
psec_session.encrypt_and_send(b"Hello I'm Alice", true).await?;
//receive then decrypt a message
println!("Received: {:?}", psec_session.receive_and_decrypt().await?);
}
安装
要将此 crate 添加到您的项目,请将以下内容添加到项目的 Cargo.toml 中
[dependencies]
async-psec = "0.4"
文档
API 文档可在此处找到:这里.
真实性
如果您想在关键项目中使用此 crate,我不建议使用 crates.io。相反,从仓库下载代码
git clone https://forge.chapril.org/hardcoresushi/async-psec
并将其添加到您的 Cargo.toml 中
[patch.crates-io]
async-psec = { path = "<path to the async-psec folder>" }
所有提交都应使用我的 PGP 密钥签名。 如果验证失败,请不要使用此 crate!
您可以使用以下方式从密钥服务器导入我的密钥
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 007F84120107191E
指纹:BD56 2147 9E7B 74D3 6A40 5BE8 007F 8412 0107 191E
邮箱:Hardcore Sushi <hardcore.sushi@disroot.org>
导入后,验证最新提交
cd async-psec
git verify-commit HEAD
这应该显示如下
gpg: Signature made <date>
gpg: using RSA key BD5621479E7B74D36A405BE8007F84120107191E
gpg: Good signature from "Hardcore Sushi <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: BD56 2147 9E7B 74D3 6A40 5BE8 007F 8412 0107 191E
依赖项
~6–18MB
~189K SLoC