Sign in

    moonrelay

    MoonRelay —— DERP 形包级加密中继(assume a malicious relay;限速+每端缓冲+优雅疏散,线全自研)

    relay
    p2p
    derp
    networking
    moonbit
    Download zip
    Author
    Version
    0.1.0
    License
    Apache-2.0
    Last updated
    5 hours ago
    Downloads
    5

    #moonrelay

    DERP 形包级加密中继(MoonBit):中继面只见密文(assume a malicious relay——包级加密 per-recipient,密钥不落中继)、资源 边界(限速三层 + 每端缓冲上界)、准入缺省拒、优雅重启疏散(停新 收留 → 广播迁端点 → 存量排空);线全自研(帧头 version 位,旧字节 含义永不变)。泵决策面(限速器/降级判定/配对窗/疏散编排)纯函数 + 时间注入,sim 回放。

    血统明示:iroh DERP 形与优雅疏散思想、RustDesk relay 资源面结构 思想(限速三层/降级窗)——思想与结构参考,实现与线全自研 (clean-room,Apache-2.0)。

    #包结构

    包内容
    thy1016/moonrelay/core帧面(七型词表 + version 位)+ 加密面(per-recipient 记录信封)+ 泵纯核(限速/降级/配对/疏散/缓冲);依赖 async + mooncry
    thy1016/moonrelay/server服务端 IO 面:FrameReader 流分帧 + PeerRegistry 端点册 + RelayServer 六幕处理环
    thy1016/moonrelay/cmd服务端装配入口(lib/cmd 分立)
    thy1016/moonrelay/examples/relay_demo六幕对打 demo(密语转发 + 疏散 + 停新拒,exit 0)

    状态:0.1.0。0.x 实验期,API 仍可能随反馈调整;未经独立安全 审计。结构事实与契约见 spec.md;纪律底卷见 const.md。

    #特性

    • 恶意中继律落数据面:FORWARD 载荷 = 端点侧记录信封密文 (HKDF-SHA256 per-recipient 派生 + AES-GCM seq-nonce),服务端 转发面零解析零落地;认证失败统一拒因,不漏认证 oracle。
    • 资源边界三层:单端令牌桶 + 全局总桶 + 降档惩罚桶(累计跨窗 均值超阈粘性降档,冷启动豁免);每端缓冲上界,丢而不堵。
    • 准入缺省拒:server 库面无门不开(宪法律:禁止缺省无门开放); 入口显式开才算数。
    • 优雅疏散:停新收留 → EVACUATE 广播迁端点 → 存量排空收尾。
    • 纯核回放:限速器/降级判定/配对窗/疏散编排全纯函数 + now : Int64 注入——决策面确定性 sim 回放,IO 面薄壳。
    • 线自研:帧头 version 位,协商不上断连不猜;追加新型不挪旧型。

    #安装

    moon add thy1016/moonrelay

    消费包 moon.pkg 按需添加 import:thy1016/moonrelay/core (@core)、thy1016/moonrelay/server(@server)。

    #快速上手

    起一台中继(一行;缺省政策 AcceptAll = 入口显式开,库面缺省拒):

    moon run cmd --target native -- 0.0.0.0:24417

    端点侧密语(FORWARD 载荷 = 记录信封;中继只见密文):

    // 发端:per-recipient 派生 + 封包
    let sender = @core.RecordSender::new(
    session_key=session_key, // 32B;生产 CSPRNG
    recipient_id=b"bob",
    )
    let envelope = sender.seal(plaintext=b"千里传音")
    // FORWARD 帧载荷 = envelope,中继 opaque 直递
    // 收端:同 session 同 recipient 派生即对齐,开信封(滑窗防重放)
    let plaintext = receiver.open(wire=envelope)

    六幕对打(注册 → 密语 → 疏散 → 停新拒,exit 0):

    moon run examples/relay_demo --target native

    #文档

    • spec.md —— 结构事实与契约(范围 / 形状锚 / 验收门 / 演进承诺)
    • const.md —— 宪法(恶意中继律 / 线自研律 / 纯核律 / 守卫律)

    #License

    Apache-2.0