securitatecriptografiepasswords

OneTimeSecret vs PrivateNote: de ce contează unde criptați

OneTimeSecret criptează pe serverele sale. PrivateNote criptează înainte ca secretul să părăsească dispozitivul.

Updated 23 septembrie 20266 min de cititPrivateNote.ai

Ambele trimit un link temporar. OneTimeSecret criptează pe serverele sale, deci secretul ajunge acolo ca text lizibil. Dacă adăugați o frază de acces, și ea ajunge la serviciu. PrivateNote criptează mai întâi pe dispozitivul dumneavoastră. Serviciul primește doar mesajul criptat. O frază de acces opțională rămâne pe dispozitiv și protejează cheia dacă altcineva obține linkul.

Key takeaways

  • Ambele criptează linkuri temporare, iar diferența este locul în care are loc criptarea.
  • OneTimeSecret criptează pe server, astfel că secretul și fraza de acces ajung la serviciu la creare și din nou la recuperare.
  • PrivateNote criptează mai întâi pe dispozitiv, iar cheia rămâne la client; o frază de acces o înfășoară local dacă linkul este expus.

OneTimeSecret și PrivateNote rezolvă aceeași problemă practică: mutarea unei parole, a unei chei API, a unui cod de recuperare sau a unei note confidențiale printr-un link temporar, în loc să lase text în clar în e-mail sau în chat. Destinatarul deschide linkul, iar încărcătura stocată poate dispărea după ce este citită sau când se atinge timpul de expirare.

Ambele produse criptează încărcătura. Diferența importantă este locul în care are loc criptarea.

OneTimeSecret criptează după ce secretul ajunge pe serverele sale, astfel că serviciul vede mai întâi textul lizibil. PrivateNote criptează mai întâi pe dispozitivul dumneavoastră, astfel că serviciul primește doar mesajul criptat.



OneTimeSecret: criptare pe server

În fluxul obișnuit OneTimeSecret, expeditorul trimite secretul prin TLS. Aplicația primește textul în clar, îl criptează pe server și stochează încărcătura criptată.

Aceasta oferă o protecție reală pentru datele stocate. Obținerea doar a stocării criptate nu dezvăluie neapărat conținutul, când materialul necesar pentru decriptare nu este disponibil atacatorului.

Compromisul de arhitectură apare înainte de stocare. TLS protejează secretul cât circulă între browser și OneTimeSecret, dar aplicația trebuie să prelucreze textul în clar ca să îl cripteze. Serverul de aplicație se află, așadar, în interiorul limitei de încredere criptografică.

Un proces de aplicație rău intenționat sau compromis în acel moment ar putea accesa secretul înainte să fie criptat pentru stocare. Criptarea pe partea clientului elimină această dependență anume, criptând secretul înainte să ajungă la serviciu.


Fraza de acces OneTimeSecret nu schimbă limita de criptare

Documentația OneTimeSecret descrie o frază de acces opțională. Când se folosește o frază de acces, OneTimeSecret spune că secretul este criptat pe serverele sale cu fraza de acces furnizată de expeditor. Spune că nu stochează fraza de acces însăși; în schimb, păstrează un hash bcrypt folosit ca să verifice fraza de acces la recuperare. Conform documentației sale, acel hash nu poate decripta el însuși secretul, iar secretul stocat, protejat prin frază de acces, nu poate fi decriptat fără fraza de acces originală.

Recuperarea folosește aceeași limită de pe server. Destinatarul furnizează fraza de acces către OneTimeSecret prin TLS. Serviciul o verifică și efectuează decriptarea pe server înainte să returneze textul în clar.

Aceasta înseamnă că procesul aplicației are acces la secret și la fraza de acces când are loc criptarea și prelucrează din nou fraza de acces și textul în clar rezultat în timpul recuperării. Un proces de aplicație rău intenționat sau compromis, care operează în oricare dintre aceste puncte, ar putea captura acele informații. Aceasta este o consecință a locului în care se execută criptarea și decriptarea, nu o afirmație că OneTimeSecret înregistrează sau folosește abuziv acele valori.

Documentația publică OneTimeSecret nu stabilește, prin ea însăși, fiecare detaliu al ierarhiei interne de chei — de exemplu, precis cum se combină materialul de chei de pe server, cheile per secret, derivarea cheilor și fraza de acces furnizată. Nu este nevoie să speculăm asupra acestor detalii de implementare pentru această comparație. Proprietatea documentată relevantă este că criptarea și decriptarea au loc pe partea serviciului.

OneTimeSecret

Secret + frază de acces

Server

Text cifrat

Secretul pe care vreți să îl trimiteți și fraza de acces, când setați una, călătoresc ambele către server prin TLS. Criptarea rulează pe acel server. Ce rămâne în stocare este text cifrat.

Auto-găzduirea poate face rezonabilă încrederea în acel server

OneTimeSecret are codul-sursă deschis. O organizație își poate rula propria instanță în interiorul unui perimetru de securitate al întreprinderii, în loc să trimită secretele către serviciul public.

În acea implementare, a avea încredere în serverul de aplicație înseamnă a avea încredere în infrastructura pe care organizația o operează deja. Textul în clar ajunge în continuare la acel server, pentru că criptarea are loc tot acolo. Partea de cealaltă parte a limitei o reprezintă gazdele, operatorii și copiile de rezervă ale organizației. Pentru o echipă care acceptă deja aceste sisteme ca parte din drumul pe care îl parcurge un secret, criptarea pe server poate fi o alegere rezonabilă. Ea îngustează golul dintre modelele de amenințare de pe server și de pe client, pentru că operatorul nu mai este un serviciu din afară.


PrivateNote criptează înainte de încărcare

O notă PrivateNote standard este criptată înainte de încărcare. Browserul expeditorului, sau un proces local CLI, extensie Chrome, extensie de editor ori MCP, generează o cheie aleatoare și criptează încărcătura cu AES-256-GCM. Se încarcă doar text cifrat. TLS transportă acel text cifrat din browser către Cloudflare Worker al PrivateNote. Cheia de decriptare este plasată în fragmentul URL, partea de după #, de exemplu https://privatenote.ai/note/abc123#…. Fragmentul este tratat pe partea clientului și nu este inclus în cererea HTTPS (RFC 3986, §3.5; Standardul URL). Cloudflare Worker primește un identificator de notă și returnează text cifrat prin aceeași conexiune TLS. Browserul păstrează fragmentul și decriptează local.


O frază de acces protejează cheia dacă este compromis canalul linkului

O frază de acces pe PrivateNote face o treabă diferită de o frază de acces pe OneTimeSecret. Nota este deja text cifrat înainte să părăsească dispozitivul. Dacă adăugați o frază de acces, browserul derivă din ea o cheie de înfășurare cu Argon2id și folosește acea cheie de înfășurare ca să cripteze cheia notei. Fragmentul URL ține apoi cheia înfășurată. Destinatarul are nevoie de link și de fraza de acces. Browserul desface cheia local și abia apoi decriptează nota.

PrivateNote nu primește fraza de acces. Cererea de creare poartă text cifrat, un salt și parametrii de care browserul destinatarului are nevoie ca să încerce fraza de acces local. Nu există un hash pe server a cărui sarcină să fie verificarea frazei de acces. O frază de acces greșită eșuează decriptarea pe dispozitiv.

Fraza de acces protejează în plus, local, cheia de pe partea clientului dacă este compromis canalul care poartă linkul. Canalul vede atunci o cheie înfășurată, nu o cheie care poate deschide nota de una singură. Nu acesta este mecanismul care ține PrivateNote în afara căii textului în clar. Acea separare există deja la o notă standard, cu sau fără frază de acces. Partajați fraza de acces pe un canal diferit de link. Același mesaj prăbușește cele două straturi într-unul singur — aceeași regulă ca la partajarea unei parole în siguranță.

PrivateNote

Secret

Criptare locală

Text cifrat

Server

Frază de acces

Argon2id local

Înfășurare cheie

Fragment URL

Cheie
Criptarea locală produce cheia de pe partea clientului și textul cifrat. Argon2id înfășoară acea cheie, iar cheia înfășurată rămâne în fragmentul URL. TLS transportă doar textul cifrat către Cloudflare Worker.

Aceeași separare, câte o proprietate pe rând.

OneTimeSecret + frază de accesPrivateNote + frază de acces
Criptarea încărcăturiiServerDispozitivul expeditorului
Textul în clar ajunge la serviciuDaNu
Fraza de acces ajunge la serviciuDaNu
Rolul frazei de accesParticipă la protecția pe serverDerivă o cheie locală de înfășurare
Verificator sau material stocatVerificator bcrypt și încărcătură criptată, conform documentației OneTimeSecretSalt, parametri de înfășurare Argon2id și text cifrat
Unde se execută decriptareaServerul de aplicație OneTimeSecretDispozitivul destinatarului

Tratarea cheilor în PrivateNote este descrisă la Cum funcționează: cheia de conținut este înfășurată cu Argon2id, iar cheia înfășurată circulă în link.


Ipoteza de încredere rămasă pentru clientul web

Criptarea pe partea clientului într-un browser nu este o aplicație web fără încredere. Criptografia poate rula local, în timp ce JavaScriptul care o implementează este livrat de site. Browserul are încredere în codul pe care îl primește pentru acea sesiune.

Cineva care poate modifica acel JavaScript — prin aplicație, un CDN sau pipeline-ul de implementare — ar putea schimba clientul și captura chei într-o sesiune viitoare de browser. Aceasta este o defecțiune diferită de furtul unei baze de date. O compromitere a stocării expune text cifrat. Livrarea de cod rău intenționat atacă punctul terminal cât timp cheia este efectiv prezentă.

O extragere ulterioară a bazei de date nu poate fabrica chei de pe partea clientului care nu au fost stocate niciodată acolo. Un client compromis activ poate ataca secretele tratate în acea sesiune. Aceeași ipoteză este scrisă în modelul de amenințare PrivateNote: codul aplicației livrate nu a fost modificat cu rea intenție, iar dispozitivele expeditorului și ale destinatarului sunt de încredere în momentul criptării și al decriptării.

Software-ul instalat îngustează acea dependență de o pagină proaspăt descărcată. Un CLI, o extensie de editor sau o aplicație nativă rulează cod pe care l-ați instalat. Acești clienți depind în continuare de sistemul de operare, de semnare, de dependențe și de canalul de actualizare. Uneltele pentru dezvoltatori folosesc aceeași separare ca browserul: criptați local, încărcați text cifrat, lăsați cheia în fragment.


Durata de viață și confidențialitatea

Un link de unică folosință răspunde la două întrebări separate. Cât timp ar trebui să existe încărcătura criptată? Și cine o poate decripta cât timp există? Distrugerea ei după recuperare sau după expirare scurtează fereastra. Nu decide cine ar fi putut să o citească în acea fereastră. Durata de viață și confidențialitatea se susțin reciproc. Una nu ține locul celeilalte.

Distincția este cea mai netă când încărcătura este autoritate: chei API, acreditări de bază de date, tokenuri cloud, coduri de recuperare, parole de infrastructură. Un serviciu de partajare a secretelor există pentru că expeditorul vrea mai puține sisteme cărora să le încredințeze acea informație. Dacă intermediarul trebuie doar să poarte un obiect criptat opac, să impună expirarea și să îl șteargă, serverul poate face acea muncă fără să primească secretul sau cheia care îl deschide.


Unde stă limita

„Criptat” nu vă spune unde stă limita de încredere. Standardul care merită folosit este o limită de încredere minimă: principiul privilegiului minim aplicat la cine trebuie să vadă textul în clar. În ingineria criptografică modernă, scopul nu este doar să aveți încredere că un server se comportă corect, ci să reduceți necesitatea matematică a încrederii, din capul locului.

OneTimeSecret descrie un sistem criptat pe server. Cu protecție prin frază de acces, spune că secretul stocat nu poate fi decriptat ulterior fără fraza de acces și că o compromitere a serverului ar lăsa secretul în siguranță atât timp cât acea frază de acces rămâne necunoscută. O frază de acces slabă poate fi forțată prin încercări. Dacă este slabă, acea compromitere poate lăsa secretul recuperabil. Textul în clar și fraza de acces ajung la OneTimeSecret la creare, pentru că criptarea are loc pe serverele sale, iar fraza de acces este trimisă înapoi la recuperare, ca acele servere să poată decripta.

PrivateNote face o alegere de arhitectură diferită. Încărcătura este criptată înainte să ajungă la serviciu, iar cheia standard a încărcăturii rămâne pe partea clientului. O frază de acces, când setați una, protejează în plus acea cheie de pe partea clientului, local, dacă este compromis canalul care poartă linkul. Ea nu este trimisă către PrivateNote.

OneTimeSecret criptează secretul dumneavoastră. Clientul care folosește serviciul PrivateNote îl criptează înainte ca serviciul să îl primească. Această distincție nu depinde de presupunerea că vreunul dintre furnizori ar fi rău intenționat. Ea reduce întrebarea la arhitectură: de câte sisteme este nevoie să aibă acces la textul în clar pentru ca serviciul să funcționeze?


Întrebări frecvente

Stochează OneTimeSecret secretul în text în clar?

Documentația lor spune că nu. Criptează pe serverele lor. Cu o frază de acces, spun că stochează secretul criptat și un hash bcrypt al frazei de acces, nu fraza de acces, și că hashul nu poate decripta secretul.

Dacă setez o frază de acces pe OneTimeSecret, este secretul ascuns față de serverele lor?

Nu în timpul creării și nici la recuperare. OneTimeSecret spune că secretul și fraza de acces sunt furnizate serverului său, astfel încât serverul să poată efectua criptarea. Când destinatarul deschide linkul, trimite fraza de acces înapoi prin TLS, iar decriptarea rulează pe serverele OneTimeSecret înainte ca textul în clar să fie returnat. După criptare, OneTimeSecret spune că aruncă fraza de acces în text în clar, păstrează doar un hash bcrypt și nu poate decripta secretul stocat fără fraza de acces originală.

Ce protejează o frază de acces PrivateNote?

Cheia de pe partea clientului, dacă este compromis canalul care poartă linkul. Nota însăși este deja criptată pe dispozitivul dumneavoastră cu AES-256-GCM. Argon2id derivă local o cheie de înfășurare din fraza de acces, iar acea cheie de înfășurare criptează cheia notei. Linkul ține apoi o cheie înfășurată. PrivateNote primește text cifrat și un salt. Nu primește fraza de acces și nici cheia brută. O notă standard este criptată înainte de încărcare chiar și fără frază de acces. Trimiteți fraza de acces pe un canal separat de link.

Poate criptarea pe partea clientului să protejeze împotriva unui server PrivateNote compromis?

O compromitere a datelor stocate sau a API-ului: da, în sensul că criptarea pe partea clientului izolează încărcăturile necitite, pentru că serverul nu are cheia standard a încărcăturii. O extragere ulterioară a bazei de date nu poate fabrica chei care nu au fost stocate niciodată acolo. Livrarea de cod client rău intenționat: nu. Un atacator care poate schimba JavaScriptul livrat unei sesiuni viitoare de browser ar putea încerca să captureze cheia cât timp este prezentă. Clienții instalați reduc acea dependență de o pagină proaspăt descărcată.


Surse primare

Informațiile de arhitectură despre OneTimeSecret au fost verificate față de documentația sa publică la 23 septembrie 2026. Implementările produselor și documentația se pot schimba.

Criptați înainte ca secretul să părăsească dispozitivul

Scrieți nota în browser. Clientul o criptează local, pune cheia în link și poate proteja acea cheie cu o frază de acces pe care serverul nu o primește niciodată.

PrivateNote on LaunchNest