🌈WebNativeπŸš€ Private File Sharing R&D Preview

A (Super Quick) Primer on the WebNative File System 🍱

WebNative File System Review Stack 1st & 3rd Party Dev’s App Business Logic & View API Platform Abstractions WebNative SDK ⬆ Apps ⬇ Core Technology Broadcast Collaboration, Chat, Instant Sync Soft Realtime Store Durable Structured Store WebNative Database O ine & Async Sharing Exchange Store Durable File Store WebNative File System Durable Data Command/Mutation UCAN ffl Auth & ID Global: Aggregation, Forms, Feeds Gossip Broadcast Read/Query Cryptree Networking DNS, IPFS, PubSub, Matrix Identity did:key

WebNative File System Review Grouped by User, Not by App Bob’s Photo Gallery πŸ–Ό Alice’s Stu Bob’s Stu f f f Alice’s Music Player 🎢 Carol’s Stu Carol’s Videogame πŸ‘Ύ

WebNative File System Review Hard & Soft Links β€’ Hard links β€’ New for the web! β€’ Direct reference β€’ 2 pointers ~ duplicate β€’ Soft links β€’ Like a symlink or web link β€’ 2 pointers ~ latest β€’ May break β€’ Always some version available

WebNative File System Review WNFS Layout alice.fission.name Private Public Photos Avatars Apps Photos Family Photos Apps My Gallery Shared By Me Keys and Keys Keysand and Pointers Pointers Pointers Shared w/ Me Keys and Pointers

WebNative File System Review Private Nodes πŸ™ˆ CBOR Binary Encrypted Node πŸ”’ AES256 + πŸ”‘ Virtual Node = Index πŸ”‘ πŸ”‘ Metadata πŸ”‘

WebNative File System Review Subtree Read Access

WebNative File System Review Encrypted Tree Scrambles Structure πŸ”‘

Private File Sharing Mechanics Fast Async File Exchange πŸ“₯πŸ€πŸ“€

Private File Sharing Mechanics WNFS Layout alice.fission.name Private Public Photos Avatars Apps Photos Family Photos Apps My Gallery Shared By Me Keys and Keys Keysand and Pointers Pointers Pointers Shared w/ Me Keys and Pointers

Private File Sharing Mechanics The Problem β€’ Sharing credentials is trivial when you are both online β€’ What when a user is o ine? β€’ Trust keys to a server? β€’ Password? β€’ That’s less secure & clunky! ffl β€’ Requires out of band communications: email / SMS / in person

Private File Sharing Mechanics The Solution: Key Exchange πŸͺ† β€’ DH is very battle tested βš” β€’ Standardize on RSA-2048 (at least for now) β€’ Contains a 256-bit AES key β€’ Each device needs its own exchange keys (non-exportable) β€’ Used exclusively for exchange (not your main DID key) β€’ Exchange key (transfer data) β€’ Signing key (sign data) RSA-2048 AES-256 Files

Private File Sharing Mechanics File Sharing did:key:zStEksDrxkwYmpzqB did:key:zStEksDrxkwYmpzqB StEksDrxkwYmpzqBdAQjjx1P dAQjjx1PRbHG3fq4ChGeJcYU dAQjjx1PRbHG3fq4ChGeJcYU RbHG3fq4ChGeJcYUYU44a4C YU44a4CBUExTTjeCbop6Uur YU44a4CBUExTTjeCbop6Uur BUExTTjeCbop6Uur Human Readable Name πŸ”‘ Symlink

Private File Sharing Mechanics How to Broadcast Public Keys? β€’ Use the file system itself! β€’ Roughly like a .well-known β€’ Public keys are… public (safe to broadcast) β€’ Deterministic discovery by name β€’ DNS (username) ➑ WNFS(user) ➑ Exchange Keys

Private File Sharing Mechanics Plug the Leaks! 🚿 β€’ Store in private the same tree as the private file system β€’ Index name is di erent / the space is huge β€’ More than the number of atoms in the known universe 🌌 β€’ hash(${senderExchangeKey}${recipientExchangeKey}) β€’ You know all of your keys, and all of their keys β€’ O(|recipientKeys|) creation, O(|senderKeys|) lookup ff β€’ Typically in low single digits, fast on human time scales, infrequent

Private File Sharing Lookup User Entry (stable) Foreign Entrypoint(s) β€” Set 1 πŸ”‘ πŸ”‘ Symlink(s) Implied Name πŸ”‘ πŸ”‘ Foreign Entrypoint(s) β€” Set 2 πŸ”‘ β€’ Entrypoint names: hash(encryptAES(${impliedName}${setVersion})) Symlink(s)

Private File Sharing Mechanics Don’t You Forget About Me 🎢 User Entry (stable) Sender Private WNFS πŸ”‘ Implied Name πŸ”‘ Foreign Entrypoint(s) πŸ”‘ Symlink(s) Receiver Private WNFS

Private File Sharing Mechanics What Does This Get Us? β€’ Async sharing β€’ Secure β€’ Performant β€’ Automated discovery of new files β€’ Key based β€’ Possible to do anonymous link-based sharing β€’ Builds on existing WNFS implementation

πŸ˜„ Thank You πŸŽ‰