{"id":95,"date":"2025-10-10T15:39:13","date_gmt":"2025-10-10T15:39:13","guid":{"rendered":"https:\/\/phonesstillexist.com\/?p=95"},"modified":"2025-10-10T15:39:44","modified_gmt":"2025-10-10T15:39:44","slug":"dsip-a-decentralized-protocol-for-secure-voice-video-and-messaging-technical-proposal","status":"publish","type":"post","link":"https:\/\/phonesstillexist.com\/index.php\/2025\/10\/10\/dsip-a-decentralized-protocol-for-secure-voice-video-and-messaging-technical-proposal\/","title":{"rendered":"DSIP: A Decentralized Protocol for Secure Voice, Video, and Messaging \u2014 Technical Proposal"},"content":{"rendered":"\n<p><strong>Version:<\/strong> Draft v0.3<br><strong>Status:<\/strong> Proposal<br><strong>Editors:<\/strong> James Ferris \u2014 <a href=\"mailto:jferris5@gmail.com\">jferris5@gmail.com<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">1. Abstract<\/h2>\n\n\n\n<p><strong>DSIP (Decentralized SIP)<\/strong> is a next-gen real-time communications protocol that replaces carrier registrars, phone numbers, and hop-by-hop trust with <strong>self-sovereign identity (DIDs)<\/strong>, <strong>cryptographically signed signaling<\/strong>, and <strong>distributed discovery\/presence<\/strong>. DSIP unifies <strong>voice, video, and messaging<\/strong> with end-to-end verifiability, selective privacy, optional micro-payments for relays, and straightforward interop with SIP\/PSTN during migration. DSIP requires <strong>verifiable geolocation<\/strong> to support emergency services and network optimization while preserving user consent and privacy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Motivation<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Identity is broken in PSTN\/SIP: spoofable CNAM, regulator\/cert chains, and numbers owned by carriers.<\/li>\n\n\n\n<li>Fragmentation: Calls\/messaging stuck in silos; no portable trust.<\/li>\n\n\n\n<li>Security: Mostly hop-by-hop assurances; weak end-to-end provenance.<\/li>\n\n\n\n<li>Mobility: IPs change constantly; discovery is centralized.<\/li>\n\n\n\n<li>Regulatory reality: We still need 911\/112 with reliable location and verifiable identity.<\/li>\n<\/ul>\n\n\n\n<p><strong>DSIP goal:<\/strong> Internet-native, decentralized comms with <strong>provable identity<\/strong>, <strong>resilient discovery<\/strong>, <strong>privacy by default<\/strong>, and <strong>built-in safety<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Core Principles<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Self-sovereign identity<\/strong> \u2014 Users\/devices control DIDs (no registrar lock-in).<\/li>\n\n\n\n<li><strong>End-to-end verifiability<\/strong> \u2014 Every DSIP message is signed; identity is intrinsic, not asserted.<\/li>\n\n\n\n<li><strong>Decentralized discovery<\/strong> \u2014 Presence via DHT; no single directory or registrar.<\/li>\n\n\n\n<li><strong>Privacy by design<\/strong> \u2014 Disposable DIDs, selective disclosure, E2EE, minimal metadata.<\/li>\n\n\n\n<li><strong>Programmable &amp; extensible<\/strong> \u2014 JSON\/CBOR envelopes, capability flags, optional payments.<\/li>\n\n\n\n<li><strong>Pragmatic interop<\/strong> \u2014 Gateways for SIP\/PSTN; optional ledger anchoring (not required).<\/li>\n\n\n\n<li><strong>Safety<\/strong> \u2014 Emergency routing with verifiable geolocation + consent.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">4. Identity Layer (DIDs)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 Methods<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Individuals\/devices: <strong>did:key<\/strong> (no hosting, derived from pubkey).<\/li>\n\n\n\n<li>Orgs\/brands: <strong>did:web<\/strong> (HTTPS + DNS\/TLS; human-readable).<\/li>\n\n\n\n<li>Optional: ledger-anchored (<strong>did:ion<\/strong>, <strong>did:ethr<\/strong>) for immutable audit trails.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4.2 DID Document (minimal)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"@context\": &#91;\"https:\/\/www.w3.org\/ns\/did\/v1\"],\n  \"id\": \"did:web:voice.example:users:alice\",\n  \"verificationMethod\": &#91;{\n    \"id\": \"#key-1\",\n    \"type\": \"Ed25519VerificationKey2020\",\n    \"controller\": \"did:web:voice.example:users:alice\",\n    \"publicKeyMultibase\": \"z6Mkun...\"\n  }],\n  \"authentication\": &#91;\"#key-1\"],\n  \"service\": &#91;{\n    \"id\": \"#dsip\",\n    \"type\": \"DSIPService\",\n    \"serviceEndpoint\": {\n      \"ws\": &#91;\"wss:\/\/relay.voice.example\/dsip\"],\n      \"libp2p\": &#91;\"\/ip4\/203.0.113.8\/udp\/443\/quic-v1\/p2p\/12D3KooW...\"],\n      \"turn\": &#91;\"turns:turn.voice.example?transport=udp\"],\n      \"sfu\": &#91;\"wss:\/\/sfu.voice.example\"]\n    }\n  }]\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.3 Human-friendly aliases<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>WebFinger<\/strong> <code>acct:alice@voice.example<\/code> \u2192 DID<\/li>\n\n\n\n<li><strong>DNS TXT\/SRV<\/strong> <code>_did.alice.voice.example TXT \"did=did:web:voice.example:users:alice\"<\/code><\/li>\n\n\n\n<li><strong>ENS\/Handshake (optional)<\/strong> <code>alice.voice<\/code> \u2192 DID<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Discovery &amp; Presence<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">5.1 Presence record (dynamic;homeserver)<\/h3>\n\n\n\n<p>Signed by the caller\u2019s <strong>DID key<\/strong> (and optionally by a <strong>device key<\/strong> for geo-attestations). Short TTL (60\u2013300s); includes sequence number to prevent replay.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"did\": \"did:web:voice.example:users:alice\",\n  \"endpoints\": {\n    \"libp2p\": &#91;\"\/ip4\/203.0.113.12\/udp\/443\/quic-v1\/p2p\/12D3K...\"],\n    \"ws\": &#91;\"wss:\/\/relay.voice.example\/dsip\/conn\/abcd\"]\n  },\n  \"geo\": { \"geohash\": \"dr5r\", \"method\": \"gps\", \"ts\": 1733871542 },\n  \"exp\": 1733871800,\n  \"seq\": 58,\n  \"sig\": \"base64url(signature-by-DID-key)\"\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.2 Lookup algorithm (caller)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Resolve DID \u2192 DID Doc (cache; HTTPS\/ledger verified).<\/li>\n\n\n\n<li>Fetch presence via DHT (<code>sha256(\"dsip-presence:\" + DID)<\/code>).<\/li>\n\n\n\n<li>Prefer direct endpoints; else use relay from DID Doc.<\/li>\n\n\n\n<li>If offline, store-and-forward <strong>encrypted envelope<\/strong> at callee\u2019s relay + push wake.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">6. Signaling Protocol (JSON\/CBOR over QUIC\/WS)<\/h2>\n\n\n\n<p>All DSIP envelopes are <strong>signed (JWS\/COSE)<\/strong> by the sender\u2019s DID key.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 Core messages<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"type\":\"dsip.invite\",\"id\":\"uuid\",\"ts\":1733871542,\n  \"from\":\"did:key:z6MkCaller\",\"to\":\"did:web:voice.example:users:bob\",\n  \"cap\":{\"ver\":\"1.0\",\"features\":&#91;\"webrtc\",\"payments\",\"e2ee\"]},\n  \"media\":{\"sdp\":\"v=0...\",\"codecs\":&#91;\"opus\/48000\/2\"]},\n  \"net\":{\"ice\":{\"ufrag\":\"...\",\"pwd\":\"...\"},\"candidates\":&#91;],\"hints\":{\"sfu\":&#91;\"wss:\/\/sfu.voice.example\"]}},\n  \"identity\":{\"proof\":\"DIDAuth-JWS\",\"credentials\":&#91; ]},\n  \"economics\":{\"rate_msat_per_sec\":0,\"dest\":null},\n  \"sig\":{\"alg\":\"Ed25519\",\"kid\":\"did:key:z6MkCaller#key-1\",\"jws\":\"...\"}\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.answer\",\"correlates\":\"uuid\",\"media\":{\"sdp\":\"v=0...\"},\"net\":{\"ice\":{\"ufrag\":\"...\",\"pwd\":\"...\"},\"candidates\":&#91;]},\"sig\":{\"alg\":\"Ed25519\",\"kid\":\"did:web:voice.example:users:bob#key-1\",\"jws\":\"...\"} }<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.ice\",\"correlates\":\"uuid\",\"candidate\":\"candidate:...\",\"sig\":{...} }<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.update\",\"correlates\":\"uuid\",\"changes\":{...},\"sig\":{...} }<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.bye\",\"correlates\":\"uuid\",\"reason\":\"hangup\",\"sig\":{...} }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Rich Caller ID (RCID)<\/h3>\n\n\n\n<p>Attach verifiable display info:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"type\":\"rcid.v1\",\n  \"displayName\":\"James Ferris\",\n  \"avatar\":\"ipfs:\/\/bafy...\/avatar.png\",\n  \"credentials\":&#91;\n    {\n      \"type\":&#91;\"VerifiableCredential\",\"DisplayNameCredential\"],\n      \"issuer\":\"did:web:voice.net\",\n      \"credentialSubject\":{\"id\":\"did:key:z6MkCaller\",\"displayName\":\"James Ferris\"},\n      \"proof\":{\"type\":\"Ed25519Signature2020\",\"jws\":\"...\"}\n    },\n    {\n      \"type\":&#91;\"VerifiableCredential\",\"ReputationScore\"],\n      \"issuer\":\"did:web:trustgraph.org\",\n      \"credentialSubject\":{\"id\":\"did:key:z6MkCaller\",\"score\":812},\n      \"proof\":{\"type\":\"Ed25519Signature2020\",\"jws\":\"...\"}\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. Media Plane<\/h2>\n\n\n\n<p>Transport: <strong>WebRTC (ICE\/DTLS\/SRTP)<\/strong>. Topologies: <strong>P2P<\/strong> for 1:1; <strong>SFU<\/strong> for groups; <strong>TURN<\/strong> when NAT blocks. E2EE groups via <strong>Insertable Streams\/SFrame<\/strong> or <strong>MLS<\/strong>.<\/p>\n\n\n\n<p><strong>SFU options:<\/strong> LiveKit (Go), mediasoup (C++\/Node), Jitsi Videobridge (Java), ion-sfu\/Pion (Go), Janus (C).<br><strong>TURN:<\/strong> coturn with short-lived REST credentials.<\/p>\n\n\n\n<p><strong>Payments\/metering (optional):<\/strong> INVITE may include <code>economics<\/code> intent. SFU\/TURN accepts a <strong>JWT<\/strong> with DID + prepaid balance\/reputation claims. Meter per-MB\/second; throttle on low balance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Messaging Layer<\/h2>\n\n\n\n<p><strong>1:1:<\/strong> Signal <strong>Double Ratchet<\/strong> (X3DH\/Noise bootstrap) using DID keys or published prekeys.<br><strong>Groups:<\/strong> <strong>MLS (RFC 9420)<\/strong>.<br><strong>Delivery:<\/strong> live over DSIP; offline via encrypted <strong>store-and-forward envelopes<\/strong> + push tokens.<\/p>\n\n\n\n<p>Message envelope:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"type\":\"dsip.msg\",\"id\":\"b9f8...\",\"ts\":1733871600,\n  \"from\":\"did:key:z6MkAlice\",\"to\":&#91;\"did:web:voice.example:users:bob\"],\n  \"content\":{\"enc\":\"v1\",\"ciphertext\":\"base64url(...)\",\"aad\":\"base64url(...)\"},\n  \"sig\":{\"alg\":\"Ed25519\",\"kid\":\"did:key:z6MkAlice#key-1\",\"jws\":\"...\"}\n}<\/code><\/pre>\n\n\n\n<p>Receipts, typing, edits:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.receipt\",\"for\":\"b9f8...\",\"kind\":\"delivered|read\",\"ts\":1733871700,\"from\":\"did:web:...#key-1\",\"sig\":{...} }\n{ \"type\":\"dsip.typing\",\"thread\":\"th-123\",\"state\":\"on|off\",\"ts\":1733871701,\"sig\":{...} }\n{ \"type\":\"dsip.msgUpdate\",\"for\":\"b9f8...\",\"patch\":{...},\"sig\":{...} }<\/code><\/pre>\n\n\n\n<p>Anti-spam: first-contact policy requiring <strong>Reputation VC<\/strong> or <strong>micro-payment\/PoW<\/strong>; rate limits at relays; community signed block\/allow lists.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Reputation &amp; Trust<\/h2>\n\n\n\n<p><strong>Verifiable Credentials:<\/strong> DisplayName, Organization, ReputationScore, Role (Support, Legal, etc.). <strong>Selective disclosure<\/strong> via ZK proofs. Client\/relay <strong>policy engine<\/strong> enforces issuer allowlists and thresholds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Privacy &amp; Security<\/h2>\n\n\n\n<p>Threats &amp; mitigations: caller ID spoofing (signatures + VC), replay (<code>ts\/id\/TTL<\/code>; presence <code>seq\/exp<\/code>), metadata leakage (encrypted envelopes; opaque push), key compromise (rotation; pinning), relay exposure (E2EE), correlation (ephemeral DIDs).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Network Components<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Client (DSIP Agent):<\/strong> DID wallet, resolver, presence publisher, signaling, media\/messaging engines.<\/li>\n\n\n\n<li><strong>Resolver mesh:<\/strong> caches DID Docs; verifies TLS\/DNSSEC\/ledger proofs.<\/li>\n\n\n\n<li><strong>DHT (libp2p\/Kademlia):<\/strong> presence overlay (region-bucketed).<\/li>\n\n\n\n<li><strong>Relay\/Homeserver:<\/strong> store-and-forward encrypted envelopes; push integration; policy.<\/li>\n\n\n\n<li><strong>SFU\/TURN:<\/strong> media relays; token auth; metering hooks.<\/li>\n\n\n\n<li><strong>Gateway:<\/strong> DSIP\u2194SIP\/PSTN B2BUA; identity translation best-effort.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Example Call Flow<\/h2>\n\n\n\n<p>1) Alice scans Bob\u2019s DID (QR).<br>2) Resolve Bob DID \u2192 DID Doc \u2192 presence record (DHT).<br>3) INVITE (signed) sent to Bob\u2019s endpoint (direct or via relay).<br>4) Bob verifies signature &amp; VCs \u2192 shows RCID with \u201cVerified by voice.net\u201d.<br>5) ANSWER; ICE completes; SRTP flows (direct\/SFU\/TURN).<br>6) Optional: micro-payment to SFU; call rating \u2192 Reputation VC updated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">13. Example Messaging Flow (offline callee)<\/h2>\n\n\n\n<p>1) Alice fetches prekeys from Bob\u2019s DID Doc \u2192 runs X3DH \u2192 establishes session.<br>2) Alice posts encrypted envelope to Bob\u2019s relay; relay issues push with opaque token.<br>3) Bob\u2019s phone wakes, retrieves envelope, decrypts, replies; subsequent messages go direct when online.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">14. Deployment &amp; Federation<\/h2>\n\n\n\n<p>Anyone can run resolver, relay, SFU, TURN nodes. DID:web integrity via DNSSEC\/TLS; did:key local; ledger optional. DHT bootstraps via public nodes; region sharding with geohash.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">15. Migration from SIP\/PSTN<\/h2>\n\n\n\n<p>Gateway mapping: <code>dsip.invite<\/code> \u21c4 SIP <code>INVITE<\/code>; RCID \u21c4 SIP <code>Identity<\/code>\/<code>P-Asserted-Identity<\/code> (limited); WebRTC \u21c4 RTP\/SRTP via B2BUA. Optional E.164 \u2194 DID mapping via VC (not public by default).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">16. Compliance<\/h2>\n\n\n\n<p>GDPR\/CCPA: local data control, explicit consent. NG911\/112: emergency DID namespaces + verifiable geolocation; SIP gateways for ESInets. Audit: optional ledger anchoring of key rotations\/VC hashes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">17. Economic Model<\/h2>\n\n\n\n<p>Free P2P; metered relays\/SFUs (msats\/sec or per-MB egress) via prepaid JWT tokens; reputation as collateral; anti-abuse via small costs + reputation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">18. Conclusion<\/h2>\n\n\n\n<p>DSIP provides a cryptographically verifiable, privacy-preserving, and developer-friendly foundation for global voice, video, and messaging\u2014without numbers, registrars, or centralized caller ID systems, and with robust paths for emergency services and interop.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">19. Emergency &amp; Safety Services<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">19.1 Emergency DID namespaces<\/h3>\n\n\n\n<p><code>did:web:911.us<\/code>, <code>did:web:112.eu<\/code>, etc. (government\/NGO-operated). DID Doc lists verified endpoints (relay\/SFU) + keys.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">19.2 Emergency call flow<\/h3>\n\n\n\n<p>1) Client selects region (GPS geofence or user setting).<br>2) Resolve <code>did:web:911.&lt;region&gt;<\/code>; verify DID Doc.<br>3) <code>dsip.invite<\/code> with <code>priority:\"emergency\"<\/code> + geo-attestation.<br>4) PSAP verifies: caller DID, VC, and device\/geo signatures; prioritizes routing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">19.3 Fallback<\/h3>\n\n\n\n<p>If DSIP unavailable, device falls back to native 911 (PSTN). DSIP\u2194NG911 gateways provide interop where required.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">20. Geolocation &amp; Device Attestation (Required)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">20.1 Geolocation tiers<\/h3>\n\n\n\n<p>1: GPS\/GNSS (\u00b15m) \u2014 Emergency, trust, routing<br>2: Wi-Fi\/Cell (\u00b150m) \u2014 General calls<br>3: IP geolookup (\u00b110km) \u2014 Fallback only<br>Devices without 1 or 2 run in <strong>limited mode<\/strong> (no emergency).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">20.2 Signed geo-attestation (dual-sig)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"did\": \"did:key:z6MkUser...\",\n  \"location\": {\n    \"lat\": 42.746, \"lon\": -73.759, \"alt\": 72,\n    \"accuracy\": 5, \"timestamp\": 1733871542,\n    \"method\": \"gps\",\n    \"signature\": \"sig-by-device-secure-element\"\n  },\n  \"seq\": 84, \"exp\": 1733871800,\n  \"sig\": \"sig-by-DID-key\"\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">20.3 Privacy modes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Normal: not shared; DHT region bucketing only (geohash).<\/li>\n\n\n\n<li>Trusted call: E2E share with peer.<\/li>\n\n\n\n<li>Emergency: share with <code>did:web:911.*<\/code> only.<\/li>\n\n\n\n<li>Reputation proof: ZK region proof (no exact coords).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">20.4 Certification levels<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bronze: software location verification.<\/li>\n\n\n\n<li>Silver: GNSS + secure element signing.<\/li>\n\n\n\n<li>Gold: GNSS + continuous attestation + tamper detection (<strong>required for emergency<\/strong>).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">21. Appendices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">21.A DSIP Error Model<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \"type\":\"dsip.error\",\"correlates\":\"uuid\",\"code\":403,\"reason\":\"policy:reputation-too-low\",\"sig\":{...} }<\/code><\/pre>\n\n\n\n<p>4xx caller issues (auth, policy); 5xx callee\/relay issues (capacity, unavailable); 6xx global failures (blocked).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">21.B Encrypted store-and-forward envelope<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"type\":\"dsip.envelope.v1\",\n  \"to\":\"did:web:voice.example:users:bob\",\n  \"from\":\"did:key:z6MkCaller\",\n  \"payload_enc\":\"base64url(ECIES(X25519)+AES-GCM ciphertext of dsip.invite or dsip.msg)\",\n  \"nonce\":\"r4nd\",\n  \"exp\":1733873260,\n  \"sig\":\"base64url(signature-by-sender)\"\n}<\/code><\/pre>\n\n\n\n<p>Relays store envelope + minimal metadata (size, TTL); content unreadable to operator. Push notifications carry only <code>{relay, envelope_id}<\/code> (opaque).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">21.C Presence DHT Keys<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Presence key: <code>sha256(\"dsip-presence:\" + DID)<\/code><\/li>\n\n\n\n<li>Region bucket: <code>sha256(\"dsip-presence:geo:\" + geohash_prefix)<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">21.D Name &amp; DID Discovery<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WebFinger: <code>\/.well-known\/webfinger?resource=acct:user@domain<\/code><\/li>\n\n\n\n<li>DNS TXT: <code>_did.user.domain.tld TXT \"did=did:web:domain.tld:users:user\"<\/code><\/li>\n\n\n\n<li>ENS text record: <code>did=did:web:domain.tld:users:user<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">21.E Minimal Client Checklist<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DID wallet (did:key + did:web resolve)<\/li>\n\n\n\n<li>Resolver cache (TLS\/DNSSEC pinning)<\/li>\n\n\n\n<li>Presence publisher (DHT; TTL\/seq\/sig)<\/li>\n\n\n\n<li>Signaling (INVITE\/ANSWER\/ICE\/UPDATE\/BYE)<\/li>\n\n\n\n<li>WebRTC glue (P2P + SFU + TURN)<\/li>\n\n\n\n<li>Messaging (X3DH\/DR; MLS groups)<\/li>\n\n\n\n<li>Encrypted envelopes + push wake<\/li>\n\n\n\n<li>RCID rendering (VC verification)<\/li>\n\n\n\n<li>Reputation policy engine<\/li>\n\n\n\n<li>Emergency mode + geo-attestation<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DID<\/strong> \u2014 Decentralized Identifier<\/li>\n\n\n\n<li><strong>VC<\/strong> \u2014 Verifiable Credential<\/li>\n\n\n\n<li><strong>DHT<\/strong> \u2014 Distributed Hash Table<\/li>\n\n\n\n<li><strong>SFU<\/strong> \u2014 Selective Forwarding Unit<\/li>\n\n\n\n<li><strong>TURN<\/strong> \u2014 Traversal Using Relays around NAT<\/li>\n\n\n\n<li><strong>MLS<\/strong> \u2014 Messaging Layer Security<\/li>\n\n\n\n<li><strong>RCID<\/strong> \u2014 Rich Caller ID (verifiable)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Version: Draft v0.3Status: ProposalEditors: James Ferris \u2014 jferris5@gmail.com 1. Abstract DSIP (Decentralized SIP) is a next-gen real-time communications protocol that replaces carrier registrars, phone numbers,&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/phonesstillexist.com\/index.php\/2025\/10\/10\/dsip-a-decentralized-protocol-for-secure-voice-video-and-messaging-technical-proposal\/\">Continue reading<span class=\"screen-reader-text\">DSIP: A Decentralized Protocol for Secure Voice, Video, and Messaging \u2014 Technical Proposal<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":73,"footnotes":""},"categories":[11,8,9,10],"tags":[],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-future","category-sip","category-technical-proposal","category-unified-communications","entry"],"_links":{"self":[{"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":5,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":100,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/posts\/95\/revisions\/100"}],"wp:attachment":[{"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phonesstillexist.com\/index.php\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}