Krueger
Omule - sa fim clari - desi algoritmul pentru Twofish, sa zicem, este cunoscut, analizat, descris, disecat prin toate colturile internetului. Cu toate acestea, dat fiind un fisier criptat, fara parola - nu se pot recupera informatiile initiale (plaintext). Rezistenta algoritmului consta nu in faptul ca el e secret, ci in faptul ca toata lumea il stie, dar nimeni nu e capabil sa recupereze o informatie codata cu el (fara a avea cheia).
Deci "algoritmii aia [NU] au fost sparti"...
Intr-adevar, se fac cercetari despre cum s-ar putea recupera plaintextul integral in conditiile in care ai o fisierul codat plus o parte din parola sau o parte din plaintext. Dar realizarea propriu-zisa a treburilor astora ma depaseste cu mult...
Prin criptarea parolei, inteleg ca, daca utilizatorul da parola "baubau", programul tau sa foloseasca un algoritm ireversibil (nebijectiv) de codare al parolei astfel incat pentru criptarea propriu-zisa sa foloseasca "47m2jkngahapog7sec" sau ceva de genul. Normal ca parola nu este ascunsa in fisierul criptat - d'oh !
Nu te supara pe mine - ca nu o spun cu intentie rea - dar nimeni nu are incredere intr-un algoritm din asta super-secretizat - pentru ca e ca si cum ai zice "Pot sa fiu invizibil, dar doar atunci cand nu se uita nimeni"... de fapt, tu zici "algoritmul meu e imbatabil, atat timp cat nu-l stie nimeni"... Si oricum, securitatea propriu-zisa e o proprietate care nu tine de cat de obscur si complicat (imbarligat, mai degraba) e algoritmul. NU! E o proprietate care se demonstreaza doar cu multe cunostiinte de matematica, teoria numerelor, probabilitatilor, teoria analitica a numerelor etc - cunostinte pe care, lasa-ma sa te asigur, niciunul dintre noi nu le stapaneste.
"Procedura de criptare nu tine numai de parola si de parola aleatoare. Procedura prin care se obtine cheia de decodare din fisierul respectiv este extrem de complicata si nu tin doar de parola. "
Bun, dar de ce mai depinde? Adica eu asa as pune problema: ai niste chei aleatoare pe care le ascunzi (eventual) in fisierul criptat la diverse locatii dependente DE parola. Apoi, aceste chei aleatoare, in combinatie cu parola propriu-zisa produc in mod miraculos - decriptarea fisierului. Bun, pana aici e clar. De ce altceva mai poate depinde decriptarea fisierului? Eventual de dimensiunea setului de data, dar nu mi se pare esential.
Si...cheia care se foloseste pentru criptare - pe cati biti e?
Dupa cum ti-am mai zis, nu trebuie sa reinventezi roata de fiecare data cand construiesti o masina - poti sa imprumuti idei de la predecesori (retele Feistel, metode de codare a cheilor) si sa introduci concepte noi (codare pe blocuri de dimensiuni variabile, criptare folosind fisiere-cheie, metode cripto-stenografice hibride etc). Altfel risti ca dupa multa cercetare si munca asidua sa descoperi o treaba care se stia de 30 de ani. Multa lume face o confuzie imensa si crede ca un algoritm de criptare "home-made" este mai rezistent la criptanaliza diferentiala si alte tehnici decat un algoritm clasic. Cand oamenii de la ... Fortele Aeriene ale SUA, sa zicem... adopta un algoritm de codare nou... motivul lor cu siguranta nu este "Bah, il luam p-asta, ca-i al dracu' de intortocheat si clar nu-l stie nimeni"
Si apropo - daca la decriptare introduci o parola gresita - iti da un CRC failure sau vreo eroare? Sau iti decripteaza aiurea? Si mai mult - optiunea asta este la latitudinea utilizatorului?
Sunt convins ca poti inova si poti imbunatati ceea ce exista deja facut si cercetat - dar atata timp cat esti dispus sa inveti de altii. Primatul negatiei experientei anterioare nu te poate duce foarte departe, din pacate. Si eu am avut o tentativa de a inova in domeniul criptografiei, dar cand am citit cat de MULTA MATEMATICA SUPERIOARA (teoria numerelor, in special) e necesar ca sa poti garanta siguranta unui algoritm, am zis ca e un domeniu mult prea avasat pentru ca eu sa mai pot crea ceva semnificativ, cel putin cu cunostintele de acuma.
Lucreaza intre 64 si 512b in functie de nivelul de codare, etc din considerente , in special, de viteza.
Ce intelegi prin "nivel de codare" ? E ceva gen grad de securitate? Si isi alege utilizatorul nivelul asta de codare?
Multa bafta... si toate cele bune.
PS. Inteleg ca ai examene, ca si eu am... dar tot imi place sa-mi fac timp pentru discutiile astea - extrem de utile pentru ambele parti, zic eu :smile: Chiar, la ce faculta dai?
Iti ramasesem dator cu un raspuns la numeroasele tale intrebari... Eu sincer nu pricep de ce este atat de important sa faci public algoritmul. Cand vorbesti de securitate de gandesti automat ca nu este pentru ochii tuturor. Nu vad de ce sa ajuti pe cei ce sparg protectiile... Cred ca subestimati importanta algoritmului. La urma urmei cheia spre exemplu, indiferent cat este ea de elaborata este inutila fara un algoritm care sa o utilizeze eficient. Eu o sa fiu atipic si nu o sa public algoritmul.
Pentru partea cu parola asta mai intrebat asta ti-am raspuns. Si nu cr4ed ca ai inteles cu functioneaza cheia cu parola si cea aleatorie.
Exista 2 tipuri de chei. Una nascuta din idea ca odata pierduta ea poate fi totusi recuperata prin reintroducerea parolei. Cu alte cuvinte chestia cu parola nu este conventionala, bagi parola si se decodeaza ci pur si simplu este o metoda de a regenra o cheie pierduta. Dimensiunea cheii protejate protejate prin parola variaza in functie de lungimea parolei.
Cheia aleatorie nu mai poate fi recuperata, asigura maxima protectie. Dimensiunea cheii aleatorii este de 16.465 octeti.
Si eu sunt sigur ca mai este mult de mers pana departe. Oricum programul nu a fost gandit, nici algoritmul de altfel, pentru o utilizare intr-o companie uriasa pe fisiere de ordinul zecilor de GB si in care se doreste o securitate draconica. Programul se adreseaza firmelor mici\ si de ce nu mijlocii dar si angajatului de rand care are nevoie sa transporte de la serviciiu acasa cateva date confidentiale.
Si daca tot veni vorba gradul de securitate poate fi marit exponetial printr-o cheie de dimensiune mai mare cat si printr-o procesare a unui bloc mai mic sa zicem de 16b. Dar acest lucru scade mult performanta in termeni de viteza...
Da cand vorbesc de nivelul de codare ma refer la algoritm (complexitatea acestuia), dimensiunea blocului procesat si lka cativa factori care influenteaza codarea. Da se poate asimila cu grad de securitate. Da isi poate alege. Insa cand alege sa codeze cu cheie se presupune ca doreste sa utilizeze cele mai puternice setari si astfel numai are voie sa modifice gradul de securitate.
Inca o data iti multumesc pentru urari... cat despre facultatea pe care vreau sa o urmez ea este automatica.
pt Mega_Bytu: De ce ar utiliza cineva programul meu:
1. este rapid (30mb codati in 15 sec)
2. este necunoscut (adica nu exista gloate de hackeri gata sa anihileze protectia), desi poate nu are un algoritm f puternic ca unele arhicunoscute
3. necesita extrem de putine resurse. in idle foloseste 2-2,5mb ; in timpul codarii aprox 10mb... foarte putin pentru standardele de azi.