Lipești un jurnal într-un fir de asistență, un răspuns arată că acesta conține cheia ta privată, iar lipirea este permanentă. Defectul mai discret apare mai târziu, când fiecare adresă a devenit X și fișierul nu mai dovedește că clientul și serverul erau gazde diferite. O trecere de redactare elimină ceea ce acordă acces sau numește o persoană și păstrează ceea ce explică defectul. Aceasta este o transformare cu reguli, nu o ștergere cu o casetă de căutare.

Redactarea este o transformare, nu o ștergere

Un jurnal poartă structură, precum și valori: această adresă a vorbit cu aceea, la acest moment, iar handshake-ul s-a oprit la acest pas. Valorile sunt ceea ce face fișierul periculos de publicat. Structura este ceea ce îl face demn de publicat.

Ștergerea unor linii întregi le elimină pe amândouă deodată, motiv pentru care un jurnal scurtat adesea nu răspunde la nimic. Comprimarea fiecărei valori într-un singur token eșuează altfel, pentru că doi parteneri distincți devin un singur actor. Ambele treceri pot arăta ordonate și totuși distrug dovada. Testul este dacă un cititor care nu ți-a văzut niciodată rețeaua poate urmări secvența și ajunge la concluzia la care ai ajuns tu.

Mai întâi fragmentul, apoi curățarea

Decupează secțiunea din jurul defectului înainte de a edita ceva. Un fragment mai mic este mai ușor de inspectat și este mai puțin probabil să poarte ceva ce ai uitat că era în fișier. Păstrează originalul neatins într-un spațiu de stocare protejat până la închiderea cazului. Redactarea pierde informație, iar fișierul brut este singura cale de a răspunde la întrebarea ulterioară.

Citește fragmentul ca text simplu înainte de a te încrede că o comandă de export a eliminat părțile private, pentru că exportatorii rezumă și rotesc câmpuri în loc să le curețe. Modurile debug și verbose sunt locul cel mai probabil pentru un bloc de cheie sau o acreditare încorporată. Deschide fișierul într-un editor care afișează linii întregi, nu într-un vizualizator care răsucește și ascunde coada.

Ce trebuie să dispară și în ce ordine

Începe cu materialul care acordă acces, pentru că o ratare acolo încheie exercițiul: blocuri de chei private, parole, chei partajate în prealabil, tokenuri API, coduri de recuperare. Acestea nu doar identifică; sunt utilizabile de oricine citește firul. O trecere care elimină tot restul și lasă unul dintre ele a eșuat.

Apoi stratul de identitate: nume de utilizator, subiecți și numere de serie de certificat, identificatori de cont și orice cale care conține numele unei persoane. Nimic din toate acestea nu este utilizabil singur, dar împreună numesc o persoană, iar aceasta este partea de care un fir public nu are nevoie.

Apoi stratul de topologie, și aici intervine judecata. Adresele publice, intervalele interne și numele de gazdă pot fi înlocuite atunci când dezvăluirea lor nu servește niciunui scop de diagnostic, iar etichetele stabile bat spațiile goale. Ordinea contează pentru că straturile anterioare sunt absolute, iar ultimul este o decizie. Lucrul în această ordine te împiedică să petreci o oră cu numele de gazdă în timp ce un bloc de cheie stă la linia patruzeci.

Original kindReplace withKeep
Client addressCLIENT_AWhich side initiated
Server addressSERVER_BPort and protocol
UsernameUSER_1The failure that mentions it
HostnameHOST_1Resolution order

Nu distruge relațiile

Dă fiecărei valori reale un singur substituent și refolosește-l de fiecare dată când acea valoare apare. Dacă două adrese erau diferite, trebuie să rămână diferite după trecere, altfel cititorul va concluziona că clientul s-a conectat la el însuși. Consecvența este întregul mecanism: cititorul învață corespondența văzând o etichetă care revine. Un singur token refolosit pentru doi actori este cea mai rapidă cale de a face un jurnal ilizibil.

Ordinea și timpul fac parte din aceeași structură. Păstrează secvența intactă, iar dacă deplasezi momentele de timp, deplasează-le pe toate cu aceeași cantitate și spune asta într-o singură linie. Amestecarea orelor modificate cu cele reale este mai rea decât eliminarea lor, pentru că atunci golurile par dovezi ale unui lucru care nu s-a întâmplat niciodată.

Porturile, protocolul și direcția rămân așa cum sunt. Un substituent pe adresă nu necesită un substituent pe port.

Păstrează întrebarea la care jurnalul trebuie să răspundă

Notează câmpurile de care are nevoie un ajutor înainte de a începe editarea: textul exact, neconfidențial, al erorii, versiunile clientului și ale serverului, transportul și partea care a inițiat încercarea. Acestea sunt cele care îi permit unui străin să recunoască defectul. Ținerea listei lângă tine transformă trecerea într-o verificare, nu într-o speranță.

Când trimiți fișierul, adaugă o linie care spune ce a fost înlocuit, ca nimeni să nu petreacă o oră diagnosticând un nume de gazdă substituent. Documentația OpenVPN despre jurnalele de diagnostic enumeră câmpurile pe care le poartă jurnalele sale, și aceasta este lista pe care ești pe cale să o modifici. Întreabă înainte de a trimite un dump de memorie sau o captură de pachete și folosește canalul de asistență pe care îl poți verifica. Acele artefacte conțin mult mai mult decât jurnalul text, iar o parte nu este a ta de publicat.

Citește fragmentul final o dată, de la prima la ultima linie, inclusiv începutul și sfârșitul. Capturile de ecran merită mai multă neîncredere decât textul, pentru că poartă alte ferestre, nume de cont și elemente de meniu.

Articole similare