Arhitectura de securitate
Ce este protejat—și ce nu
Poftim creează o conexiune autentificată și temporară între două browsere. Conținutul fișierelor și metadatele sunt criptate înainte de a intra în transportul WebRTC. Serviciul nu a trecut încă printr-un audit de securitate independent, așa că această pagină documentează proiectarea și limitele ei, în loc să prezinte o insignă de audit.
Rezumat
Pe scurt
- Conținutul fișierelorCriptat cap-la-cap
- Numele, tipurile și dimensiunile declarate ale fișierelorCriptate
- Cheile de sesiuneDerivate pe dispozitive
- Autentificarea parteneruluiSecret QR + frază de potrivire
- Transport directPreferat când este disponibil
- Transport prin releuCriptat și nestocat
- Evaluare independentăNefinalizată
Model de amenințare
Limita promisiunii
Conceput să protejeze împotriva
Un server de semnalizare sau un releu care citește ori modifică conținutul fișierelor; un observator pasiv al rețelei care citește fișierele transferate; cadre criptate reluate sau reordonate; și un al treilea dispozitiv care intră într-o sesiune deja revendicată.
În afara protecției
Un dispozitiv, browser, extensie sau pagină compromise; un destinatar care salvează ori redistribuie un fișier; analiza traficului; fișiere nesigure acceptate de la altcineva; și defecțiuni de tip refuz de serviciu sau de disponibilitate.
Fraza de potrivire ajută la depistarea unei conexiuni care nu derivă aceleași chei de sesiune. Compar-o pe ambele ecrane înainte să continui.
Asociere și chei
Chei noi pentru fiecare conexiune
Protecția fișierelor
Criptate înainte de transport
AES-256-GCM sigilează fiecare mesaj de control și fiecare bucată de fișier cu un contor monoton. Cel care primește respinge cadrele repetate, impune ordinea bucăților și verifică o amprentă SHA-256 cap-la-cap înainte de a raporta un fișier ca primit.
Metadate vizibile
Criptarea nu ascunde conexiunea în sine
- Conținutul fișierelorNu ajunge în formă lizibilă
- Numele și tipurile fișierelorCriptate
- Cheile de criptareNu ajung la server
- Identificator de sesiune opac și rolVăzute de semnalizare
- Adrese IPProcesate de infrastructura de conexiune
- Momentul conexiunii și volumul aproximativObservabile
- Istoric al transferurilorNu este creat de aplicație
Partenerii conectați direct pot afla adresa de rețea unul altuia. „Ascunde-mi adresa de rețea” forțează transportul prin releul TURN, astfel încât partenerul nu primește o rută directă, dar infrastructura releului tot procesează ambele adrese.
Limitare importantă
Browserul trebuie să aibă încredere în pagina livrată
Fragmentul din codul QR nu este trimis în cererea HTTP, dar codul JavaScript care rulează în pagină îl poate citi. O instalare, un browser sau o extensie compromise ar putea citi materialul de asociere, cheile de sesiune sau fișierele în clar.
Pagina de transfer folosește o politică de securitate a conținutului restrictivă, cu script-src 'self', resurse doar din aceeași origine, HTTPS cu HSTS, protecție împotriva încadrării și o politică no-referrer. Niciun script terț, niciun cod de publicitate sau de analiză nu are voie să se execute acolo — politica livrată împreună cu pagina refuză orice origine externă, așa că este o proprietate a instalării, nu o promisiune despre ce am ales noi să includem.
Paginile de documentare pe care le citești acum — aceasta, cum funcționează, confidențialitatea și restul — sunt livrate sub o politică separată, mai permisivă, care permite Google Analytics după consimțământ. Ele nu conțin material de sesiune, nici chei și niciun fel de date de fișiere. Pagina de transfer și paginile care o descriu nu sunt, în mod intenționat, aceeași suprafață de securitate.
Aceste măsuri reduc expunerea; nu elimină nevoia de a avea încredere în codul livrat de poftim.app.
Sesiuni și infrastructură
De scurtă durată și intenționat sărace
Compatibilitatea browserelor
Browsere actuale, cu diferențe practice
Poftim are nevoie de canale de date WebRTC, de suport Web Crypto pentru ECDH P-256, HKDF și AES-GCM, de module JavaScript și de descărcări de tip blob.
Este conceput pentru Safari actual pe iPhone și macOS, pentru browserele Chromium actuale pe Android, Windows, macOS și Linux și pentru Firefox actual. Salvarea fișierelor mari, suspendarea în fundal și comportamentul memoriei diferă de la o platformă la alta.
O matrice formală de testare, versiune cu versiune, pentru browsere și pentru dimensiunea maximă a fișierelor nu a fost încă finalizată. Până atunci, ține ambele pagini deschise și ecranele aprinse și evită să consideri garantată o anumită dimensiune maximă.