ブラインド署名バウチャーと匿名アクセス資格情報

AeroNyx2026年6月29日約6分で読めます52 回表示

AeroNyx VPN の blind voucher と Blind Vault RFC 9474 admission を、rollout、replay、issuer、privacy boundary までソースに基づいて説明します。

AeroNyx は異なる 2 つの認可経路で blind signature 技術を使います。どちらも identity linkage を減らしますが、rollout と replay guarantee は同じではありません。このページは Rust main の実装、deployment-controlled な範囲、credential から推論してはいけない情報を明確にします。

2 つの資格情報経路

VPN は finalized blind-signature credential で ClientHello を認可します。Blind Vault V2 は RFC 9474 credential で random self-authenticating encrypted-storage lease を作ります。V1 admission は linkable one-time bearer compatibility で、blind issuance ではありません。

資格情報経路現在の状態Replay/償還モデル
VPN ClientHello voucher実装済み、reject_invalid compatibility rolloutVoucherVerifier に one-time spend なし
Blind Vault V2 admissionRust 実装済み、deployment/config controlledAtomic one-time spend と idempotent exact retry
Blind Vault V1 admissionCompatibility のみ、新規統合は V2 推奨Atomic one-time spend だが issuance は linkable

プライバシー不変条件

目標は issuance identity を redeeming node に渡さず認可することです。Signer、entitlement backend、storage node、operator console は別の trust/data boundary であり、request-level record を結合すると unlinkability が失われます。

  • Redeeming node は wallet/account identity なしで権利を検証します。
  • Blind signer は blinded bytes と public key ID のみ受け取り entitlement identity を受けません。
  • Credential secret、token、randomizer、spend/lease ID、private key を log/Nodeboard に出しません。
  • Synthetic/aggregate counter を per-user traffic と join しません。
  • Wallet の blind-signing warning とは無関係で、未知の transaction を承認する仕組みではありません。

VPN ハンドシェイクバウチャー

Client は bounded AVCH trailing extension を送ります。Rust は credential fields だけを解析し、epoch public key を設定済み issuer directory から取得して 1 時間 cache し、randomized SHA-384 RSA-PSS blind signature を検証します。Wallet/account ID は不要です。

text
ClientHello fixed frame
  + magic: AVCH
  + voucher_length: u16 little-endian
  + voucher JSON (maximum 2048 bytes)
json
{
  "token": "base64-final-credential-message",
  "signature": "base64-finalized-blind-signature",
  "msg_randomizer": "base64-32-byte-randomizer",
  "epoch": "issuer-key-epoch"
}

Client が entitlement service より前に message を blind して初めて issuer flow は blind になります。Identity-linked token への通常署名は同じではありません。Final token、signature、randomizer、epoch は bearer secret であり log 禁止です。

VPN の現在の展開境界

VPN は現在 reject_invalid compatibility mode です。Malformed/invalid voucher は handshake 前に拒否しますが、missing voucher は old client 移行のため受け入れます。Mandatory enforcement と表現してはいけません。

text
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error

VoucherVerifier は signature と aggregate outcome を検証しますが、VPN token を atomic spend せず one-time table も持ちません。Node-enforced one-time redemption は未実装で、sharing、replay、quota、expiry は versioned issuance contract の課題です。

Blind Vault V2 admission

Blind Vault V2 は node-signed issuer epochs を取得し、RFC 9474 message を blind、isolated issuer の signature を local finalize して /api/vault/v1/lease に送ります。Public API と pinned issuer が有効な deployment でのみ動作します。

http
GET  /api/vault/v1/issuers
POST /api/vault/v1/lease
POST /api/vault/v1/put
POST /api/vault/v1/pull
POST /api/vault/v1/delete
Content-Type: application/vnd.aeronyx.blind-vault-v1
text
client blinds RFC 9474 admission message
  -> entitlement backend authorizes issuance
  -> isolated blind issuer signs blinded bytes only
  -> client finalizes signature
  -> node verifies active public epoch
  -> atomic spend marker + random self-authenticating lease
  -> ciphertext storage operations use lease-scoped keys/capabilities

Issuer の分離と鍵ローテーション

Private operation は別 process aeronyx-blind-issuer にあります。Input は version、public key fingerprint、bounded blinded RSA bytes のみで、account model、storage DB、redemption visibility を持ちません。Software key と将来の HSM/KMS に同じ custody interface を使えます。

Public epoch は canonical DER、SHA-256 key ID、validity、max lease TTL を持ちます。Update は別の pinned authority、monotonic generation、active epoch continuity、atomic persistence が必要で、rollback と still-valid epoch removal は fail closed です。

Atomic spend、冪等性、replay

V2 は finalized credential verification、domain-separated spend ID、lease creation を 1 つの immediate SQLite transaction で commit します。Spent credential は 2 つ目を作れず、同じ既存 lease への exact retry は idempotent です。

V1/V2 は one-time spend table を共有しますが scheme-separated です。V1 raw ticket は linkable、V2 spend ID は unlinkable。この replay protection は Blind Vault のもので、VPN VoucherVerifier には適用できません。

可観測性と Nodeboard

Operator UI は aggregate validity、capacity、signer health、coarse failure bucket のみ表示できます。last_observationlast_error に token、wallet、lease、request、per-user dimension を追加してはいけません。

許可される集約証拠:

  • VPN valid/invalid/missing/malformed totals と ratios
  • Issuer active-key、key-count、reload、capacity、rate、timeout、circuit-breaker counters
  • Blind Vault aggregate lease、live-object、ciphertext-byte、expiry、cleanup health
  • Coarse mode、epoch availability、last observation、privacy-boundary status

公開禁止:

  • raw voucher token、signature、randomizer、blinded message、spend ID
  • wallet/account/payment/membership/social identity
  • per-user redemption history、lease/object/capability/request ID
  • client public IP、destination、DNS、route、message、browsing metadata
  • issuer private key、provider error、ciphertext、plaintext、wallet-level traffic

脅威モデルと制限

Blind signature は issuance/redemption linkage を減らすだけです。Timing、region、capacity、client compromise、issuer collection、credential theft、collusion、traffic correlation は blind relay、encryption、bounded logs、route diversity、deployment separation が必要です。

  • issuer collection と redemption timing の相関
  • credential theft/sharing/resale/client storage compromise
  • versioned redemption policy 前の VPN voucher replay
  • malicious/colluding issuer、backend、node、operator
  • timing/region/capacity/traffic correlation
  • key rotation rollback、inactive epoch、broken continuity
  • aggregate telemetry が per-user history に拡張されること

ソースマップ

Source は意図的に VPN verification、isolated signing、wire contract、Blind Vault admission/API/config、health reporting に分離されています。Code review でも ownership boundary を維持します。

レイヤーリポジトリパス役割
VPN verifiercrates/aeronyx-server/src/voucher_verifier.rsAVCH parse、epoch key discovery、final voucher verify、aggregate rollout metrics。
Blind signercrates/aeronyx-blind-issuer/src/signer.rsIdentity-free RSA blind-signing policy と custody abstraction。
Issuer APIcrates/aeronyx-blind-issuer/src/api.rsAuthenticated bounded signing、public epochs、pressure control、aggregate health。
Wire contractscrates/aeronyx-core/src/protocol/blind_vault.rsRFC 9474 admission、key epoch、spend ID、frame、signature contract。
Blind Vault servicecrates/aeronyx-server/src/services/blind_vault.rsV1/V2 admission と atomic spend+lease。
Blind Vault APIcrates/aeronyx-server/src/api/blind_vault.rsIssuers/lease/put/pull/delete route と coarse error。
Blind Vault configcrates/aeronyx-server/src/config_blind_vault.rsIssuer/update authority pin、TTL bound、monotonic rotation validation。
Health/reportingcrates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rsVoucher secret/wallet traffic なしの aggregate status。

開発ルール

Crypto semantics、rollout policy、one-time spend、observability、tests、全言語 docs が一致して完了です。異なる credential system を 1 つの marketing promise にまとめず、狭く正確な claim を選びます。

  1. VPN と Blind Vault semantics を name/code/telemetry/docs で分離する。
  2. Missing を許可中は mandatory VPN voucher と宣言しない。
  3. Atomic spend contract なしに VPN one-time redemption を宣言しない。
  4. Blind signer に account/wallet/lease/node/redemption context を入れない。
  5. Epoch continuity、fail-closed authority、transaction atomicity を保つ。
  6. Aggregate health のみ公開し credential/identity dimension を記録しない。
  7. Semantic change 時に tests、Nodeboard contracts、全翻訳を更新する。

Blind Vault の暗号化連絡先と任意メッセージアーカイブ