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

MIT 许可证

42KB
589

PSEC (点对点安全临时通信) 是 TLS 1.3 的简化/适应版本,为 P2P 网络提供加密和认证的安全传输层,用于临时通信。PSEC 确保可否认性、前向保密性、未来保密性和可选的明文长度混淆。此 crate 是使用 rusttokio 框架实现的该协议的实现。

免责声明

本 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