Päringuvoog
Mis juhtub, kui sa ühe saadad
Kaks HTTP-päringut eraldavad sinu ekraanil olevat märget kellegi teise ekraanil olevast. See leht järgib mõlemat, nimetab piirid, millega sa kokku puutud, ja kirjeldab, mis läheb valesti, kui midagi valesti läheb. See käsitleb märkmeid; failide jagamine kulgeb teist teed, mis on lõpus kokku võetud. Krüptograafiliste parameetrite kohta vaata turvalisuse lehte.
Esimene päring: jagamise loomine
Kõik kuni selle hetkeni toimub sinu masinas. Sa kirjutad märkme, brauser genereerib juhusliku 128-bitise saladuse, tuletab sellest AES-256-GCM võtme ja krüpteerib. Alles siis lahkub vahekaardilt midagi:
POST /api/notes
{ "blob": { "v": 1, "alg": "A256GCM", "ciphertext": "...", "iv": "...",
"hasPassword": false, "wrappedKey": null, "kdf": null },
"ttlSeconds": 86400 }
200 OK
{ "id": "Ku3nV8pQ2xLd" }Server valideerib ümbriku, salvestab selle värskelt genereeritud 12-märgilise identifikaatori alla ja määrab aegumise. Tal ei ole mingit võimalust vaadata, mida ta äsja salvestas. Vastuseks on identifikaator ja ei midagi muud.
Seejärel paneb sinu brauser lingi kohapeal kokku, ühendades identifikaatori saladusega:
https://klassified.app/n/Ku3nV8pQ2xLd#<secret>. Osa, mis jääb pärast
märki #, ei olnud kunagi ei päringus ega vastuses.
Teine päring: selle avamine
GET /api/notes/Ku3nV8pQ2xLd
200 OK
{ "blob": { "v": 1, "alg": "A256GCM", "ciphertext": "...", "iv": "...",
"hasPassword": false, "wrappedKey": null, "kdf": null } }Worker toob kirje, kustutab selle ja tagastab krüptogrammi. Dekrüpteerimine toimub saaja
brauseris, kasutades fragmendis olevat saladust. Teine päring sama identifikaatori kohta saab
vastuseks 404.
Parooliga kaitstud jagamine lisab saaja poolel ühe sammu, mitte ühe päringu: salvestatud ümbrik kannab pakitud võtit koos soola ja iteratsioonide arvuga ning brauser peab selle enne dekrüpteerimist parooliga lahti pakkima. Server ei osale parooli kontrollimises ega saaks seda küsimise korral kontrollida.
Piirid
Neid jõustatakse serveri poolel. Ületamine tagastab vea, mitte ei kärbi sisu.
| Piir | Väärtus | Märkused |
|---|---|---|
| Minimaalne TTL | 5 minutit | Piisavalt lühike, et anda saladus kõne ajal otse üle. |
| Maksimaalne TTL | 24 tundi | Teadlik ülempiir. Saladus, mis peab seisma nädala, on saladus, mis tahab paroolihaldurit, mitte linki. |
| Märkme sisu maht | 200 000 baiti | Krüptogramm koos kodeeringu lisakuluga, seega praktiline avateksti piir on veidi madalam. |
| Faili suurus | 10 MB | Faili kohta, igas paketis sama. Suuremad ülekanded jäävad väljapoole seda, milleks see tööriist on mõeldud. |
| Krüptoümbrik | 8192 baiti | Metaandmete ümbris on meelega pisike; piir on olemas selleks, et vigased esitused varakult tagasi lükata. |
| Identifikaator | 72 bitti | 12 base64url märki, dekrüpteerimisvõtmest sõltumatu. |
Kuidas aegumine tegelikult käitub
TTL, mille sa valid, antakse salvestuskihile edasi aegumisajana; seda ei jälgi mingi meie käivitatav taustatöö. Sellel on üks tagajärg, mida tasub selgelt välja öelda: aegumine on kiire, aga mitte silmapilkne. Oma TTL-i ületanud jagamine ei ole enam kättesaadav, kuid aluseks olev kirje vabastatakse salvestuskihi enda ajakava järgi, mitte täpselt sel sekundil, kui kell saab täis.
Praktikas tähendab see, et TTL on kättesaadavuse ülempiir, mitte täpselt ajastatud hävitamissündmus. Nende ohumudelite puhul, milleks see tööriist on ehitatud, sellel vahet ei ole. Kui sinu oma puhul on, peaks see su otsust muutma.
Lugemisel kustutamine ja TTL-i järgi aegumine on kaks sõltumatut mehhanismi ning mõlemad on igal jagamisel aktiivsed. Jagamise lõpetab see, kumb enne juhtub. TTL on see, mis tagab, et link, mida keegi kunagi ei ava, ei jää lõputult seisma.
Tõrkestsenaariumid
Link jõuab kohale juba ära kasutatuna
Vestlusrakenduste lingieelvaatajad, ettevõtete e-posti turvaskannerid ja URL-i liivakastid kõik laadivad linke, et neid uurida, ja igaüks neist võib olla esimene lugeja. Kui saaja avab lingi ja näeb „ei leitud“, ilma et ta oleks seda varem avanud, tuleks enne vea oletamist välistada seletus, et esimesena jõudis kohale automaatne klient.
Aitavad nii lingi saatmine kanali kaudu, mis URL-e lahti ei paku, kui ka paroolirežiimi kasutamine, mille puhul pelk laadimine midagi ei avalda.
Kaks inimest avavad selle samal hetkel
Laadimine ja kustutamine on eraldi toimingud lõppkooskõlalise võtme-väärtuse hoidla vastu. Lähestikku saabuvad päringud võivad mõlemad õnnestuda enne, kui kumbki kustutamine jõustub. Ühekordne kättetoimetamine on tugev vaikeseadistus, mitte tehinguline garantii. Seda käsitletakse põhjalikumalt turvamudeli all.
Link on terve, aga sisu ei avane
Tavaliselt on tegu kärbitud fragmendiga. Vestlusrakendused ja e-kirjade tsiteerimine murravad
või lõikavad pikki URL-e mõnikord ära ning märkide kadumine pärast märki # annab lingi,
mis jõuab õige kirjeni, kuid puuduliku võtmega. Klient kontrollib saladuse pikkust ja teatab
vigasest võtmest, selle asemel et näidata dekrüpteerimise ebaõnnestumist, nii et see on valest
paroolist eristatav.
Keegi ei saa seda taastada, ka meie mitte
Lähtestamise teed ei ole. Meil ei ole võtit, seega kadunud link või unustatud parool muudab jagamise jäädavalt loetamatuks ja ära kasutatud jagamine on läinud. Käsitle ühekordset linki kättetoimetamise vahendina, mitte kunagi salvestuskohana.
Failid kulgevad teist teed
Failide jagamine ei järgi ülalkirjeldatud voogu. Selle loomiseks on vaja sisse logitud kontot kinnitatud e-posti aadressiga, sest failide hoiustamisel on paketipõhine kvoot, mis peab kellegagi seotud olema. Kättesaamine käib kahes, mitte ühes sammus: saaja brauser küsib kõigepealt ümbriku metaandmeid ja seejärel faili ennast. Salvestatud koopia kustutatakse hetkel, mil allalaadimise lõpp-punkt selle väljastab, mitte siis, kui saaja on salvestamise lõpetanud, nii et keset ülekannet katkenud ühendus kaotab faili lõplikult.
Krüpteerimine on identne, samade primitiivide, parameetrite ja võtmekäsitlusega. Erinevad on konto nõue, kvoot ja lisanduv edasi-tagasi päring.
Edasi lugemiseks
- RFC 3986, URI Generic Syntax, jaotis 3.5, selle kohta, miks fragment serverini kunagi ei jõua.
- W3C, Web Cryptography API, brauseriliides, mis krüpteerimist teeb.
- Cloudflare, How KV works, salvestuskihi ühtlustumise ja aegumise käitumise kohta.