În timp ce codificarea bazată pe 64 nu are intenția de a cripta, nu este deloc de gândit că procesul de codificare ar putea fi temperat într-un fel, încât să creeze o criptare. Cu siguranță, nu sunt prima persoană care s-a gândit la o astfel de încercare de criptare folosind codificarea base64. Prin urmare, aș vrea să întreb ce tipuri de strategii de criptare base64 sunt cunoscute?
Comentarii
- Ca un cod de flux pe 6 biți?
- , în general, criptarea are loc înainte ca datele să fie rulate prin Base64
- Am ‘ am văzut schemele de criptare base64 utilizate anterior, dar toate acestea ar putea fi banale întreruptă. Această întrebare are sens, deoarece oamenii ar putea căuta algoritmi de genul acesta. Cu toate acestea, bunul simț înseamnă probabil că indicăm că baza64 nu este menită ca un cifru și este rezultatul confuzării codificării cu criptarea. că premisa acestei întrebări este greșită: că o schemă de codificare poate fi utilizată pentru criptare. Acest lucru ar putea duce la voturi negative, chiar dacă întrebarea este cel puțin interesantă pentru mulți criptografi de început.
- Poate tangențial relevant: crypto.stackexchange.com/questions/62425/… , crypto.stackexchange.com/questions/5862/… și crypto.stackexchange. com / questions / 45215 / …
Răspuns
Aceasta este preluată din intrare Wiki pentru Base64:
Dacă într-adevăr destinat manipulării codificării Base64 pentru a furniza criptarea, aceasta ar putea fi realizată la nivelul Indexului evidențiat mai sus. Ai avea nevoie de o cheie secretă, o funcție de derivare a cheii adaptată pentru a crea o semință cu entropie ridicată care a pornit apoi un generator de numere pseudo-aleatorii. Ieșirea generatorului (6 biți) va fi apoi XORed cu Indexul pentru a schimba codarea fiecărui caracter. Și această tehnică poate fi inversată pentru a descifra mesajul criptat.
Vedeți că totul este un pic de deranj. În mod tradițional, creați textul cifrat și apoi îl codificați. În afară de decuparea unei secvențe aleatorii tipice de 8 biți la 6 biți, volumul de lucru este identic cu tradiționalul cifru de flux De fapt, aveți nevoie de 33% de calcule suplimentare, dar asta nu este nici aici, nici acolo.
S-ar putea să fiți primul care s-a gândit la această variantă Base64, deoarece nimeni nu pare să fie conștient de un comportament similar. Acest lucru ar trebui să funcționeze.
Comentarii
- Vă mulțumim pentru această sugestie interesantă! De fapt, aveam în vedere lucruri simple, cum ar fi permutarea asocierii tabelului cu litere pe 6 biți. Sau introducerea unei chei și să aibă o operație xor bit în fiecare literă care trece prin cheie sau similar.
- @Kagaratsch Ei bine, cred că ne gândim la ‘ linii. Pentru a vă permite ‘ veți avea nevoie de funcționalitate PRNG și pentru a conecta o cheie la un PRNG, ‘ veți avea nevoie de un fel de funcție de derivare a cheii, altfel există ‘ va fi o nepotrivire între formatul cheii și formatul / starea necesară pentru a opera PRNG. Dacă pur și simplu permutați fără o cheie sau utilizați ciclul caracterului dvs. cheie, schema ‘ nu este foarte sigură și este crypto.SE la urma urmelor 🙂
- @PaulUszak Acest nume tehnic este de fapt destul de evident imediat ce îl cunoașteți … ‘ se numește pur și simplu ” cifru XOR „. 😉 Cu toate acestea, rețineți că analiza de frecvență o va sparge în mod trivial. Același lucru este valabil și pentru atacurile cunoscute în text clar. Oh, și pentru a fi complet în ceea ce privește denumirea tehnică: atunci când aruncați un prng, un astfel de ” cifru XOR ” se transformă într-un ” flux de cifrare „. Dar probabil că știați deja asta, nu ‘ nu?
- @PaulUszak Nu sunt sigur de ce spuneți ” nu „. De asemenea, puteți avea încredere că știu ce înseamnă ” ciclism „. Un cifru XOR trece prin aceeași cheie din nou și din nou și în aceeași ordine, așa cum ați descris. Verificați ” exemplu ” al link-ului wiki respectiv; se potrivește cu descrierile tale 100% …
a bitwise xor operation on each letter cycling through the key
șiCycling round through the key means that the plain text will be XORed with the same sequence over and over, and in the same order.
– acele ‘ numite ” cifru XOR „. Nu există nicio greșeală sau decalaj lingvistic. - Orice mod în care modificați acest tip de bază64 poate fi luat în considerare în (a) definirea unui cifru pe șiruri de octeți și apoi (b) aplicarea bazei standard 64 la ieșirea sa, maparea șirurilor de octeți în text simplu. ‘ nu are sens să fuzioneze (a) și (b) – nu adaugă nici o securitate și complică inutil descrierea atât a cifrului subiacent, cât și a bazei standard implicite64.
Răspuns
Acest lucru nu are sens. Nu există o cheie secretă în base64: codificarea și decodarea base64 sunt funcții publice pe care oricine le poate evalua.
Singurul mod în care base64 este legat de criptografie este acela că este convenabil să codificați textul cifrat dintr-un anumit criptosistem, care este distribuite uniform în șiruri de 8 biți, într-un set limitat de US-ASCII care nu vor fi amestecate sau respinse în contexte limitate la text simplu, cum ar fi XML.
Comentarii
- +1 (… și base64 produce ieșiri mai scurte decât codarea hexagonală, motiv pentru care a fost dezvoltat și de ce tinde să fie frecvent utilizat în aplicații.)
- Este perfect sens 🙂 Întrebarea a fost pusă ca ipotetică și PO caută posibilități de implementare. Nu există ‘ nicio lege naturală care să impună ca toată criptarea să fie extrem de eficientă. Trebuie doar să cripteze / decripteze. Știți că oamenii încă construiesc motoare cu aburi și sunt foarte mândri de ele ..?
- @PaulUszak Nu are sens ca base64, o transformare publică între două reprezentări echivalente de date, este un tip diferit de obiect dintr-o schemă de criptare care implică secrete necunoscute de un adversar. Orice mod în care modificați interfața și elementele interne ale bazei 64 pentru a pune un fel de cheie și cifru în ea pot fi incluse în transformarea standard a reprezentării bazei 64 și a unor cifre subiacente a căror securitate este irelevantă pentru partea bazei 64. Dacă ați realizat o mașină Enigma alimentată cu abur, ați spune că ați modificat conceptul de putere cu abur într-o schemă de criptare?
- @SqueamishOssifrage Da.
Răspuns
Regula de aur a criptografiei ar trebui să fie: „Nu pentru că tu nu poți citi textul, acesta este criptat”. Base64 nu este destinat să fie utilizat pentru a crea text cifrat și nu trebuie utilizat în acest scop.
Metodele de criptare se bazează întotdeauna pe un secret sau artefacte care asigură faptul că numai actorii comunicării pot inversa text cifrat. Dacă nu, la fel ca la Base64, atunci nu este criptare.
Base64 este destinat codificării binare ca text cu diferite avantaje față de alte scheme de codificare. Confidențialitatea nu se numără printre aceste avantaje.
Răspuns
Da, există un interes în criptarea bazei din amonte64: este economia în iterații. Când criptăm date și apoi le codăm, trebuie să realizăm cel puțin două bucle: una pe criptarea datelor și cealaltă pe codificarea datelor generate. Criptând în amonte putem reduce la o buclă și, prin urmare, obțineți performanțe semnificative.
@ e-sushi: Într-adevăr, nu există multe exemple, cu excepția celui care folosește o singură buclă: php_base64encrypted
Există, probabil, și alte modalități de a face mai bine, dar demonstrează că este posibil …
Edit: îmi pare rău, nu sunt foarte familiarizat cu acest site.
Comentarii
- Puteți oferi un exemplu (link către hârtie sau ceva) de un astfel de `interes în criptarea bazei din amonte64`? Am încercat să găsesc mai multe informații folosind motorul meu de căutare preferat , dar cumva am eșuat. Prin urmare, un indicator ar fi mult aprox eciat.
- Codificarea Base64 este un proces fluxabil (de ex. permite un flux de date să fie codificat incremental pe măsură ce ‘ este generat, fără a fi nevoie să îl citiți mai întâi pe toate). Astfel, ar fi perfect posibil ca o schemă de criptare convențională să își alimenteze ieșirea într-un codificator de bază64 incremental, fără a fi nevoie să ” să facă cel puțin două bucle ” peste date. Singurul motiv pentru care acest lucru nu este ‘ realizat mai frecvent este probabil faptul că, pentru fluxurile de date suficient de lungi pentru a face acest lucru util, ‘ De obicei, este mult mai eficient să omiteți codarea bazei 64 și să le transmiteți și / sau să le stocați ca date binare brute.