|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
Visual basic crittografia semplice
Ho creato tempo fa un programma che dato un testo qualsiasi riusciva tramite due tipi di chiavi a criptare il messaggio!
L'utente non deve fare altro che inserire il testo e scegliere fra due chiavi. O casuale: Semplicemente chiedo all'utente una parola segreta o una frase che poi tramite un semplice algoritmo ho trasformato in chiave numerica... O chiave utente: ovvero un qualsiasi valore numerico deciso dall'utente Il programma è molto semplice: prende ogni carattere e lo codifica in ascii... dopo di che lo moltiplica per la chiave utente e al risultato si aggiunge 3 (numero scelto da me...) in questo modo un qualunque testo può essere criptato e decriptato solo con l'ausilio di quella determinata parola o numero scelto dall'utente! Il programma è gia stato creato ed è funzionante ma vorrei migliorarlo e per questo ho alcune domande da porvi: - come posso migliorare il processo di criptazione? ad un occhio inesperto la sfilza di numeri che rappresentano il testo sono incomprensibili ma se uno scopre la chiave non ci vuole molto a tornare al testo di partenza - Secondo voi il mio sistema è efficacie? effettivamente è sicuro solo fino a quando uno non scopre la chiave... però ricordate che la chiave può essere un qualsiasi valore numerico che sia da -infinito a + infinito quindi scoprire la chiave non è semplicissimo. Mi sono studiato tutti i sistemi di critpazione più famosi (des, 3des, blowfish...) e mi piacerebbe riuscire a creare un programma che utilizzi tali metodi... ma gli algoritmi usati sono troppo complicati per me! e non conosco le funzioni necessarie (Uso il vb da meno di 6 mesi.... ho 17 anni) |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 485
|
Quote:
Quote:
Per rispondere alla domanda dell'efficacia...direi di no. Non verrebbe approvato dall'NSA o utilizzato per la protezione di dati sensibili. Dipende l'importanza dei dati da proteggere e chi è il potenziale attaccante, perchè basta un minimo di conoscenze sulle tecniche di analisi crittografica e un pò di pazienza per decifrare ogni testo o ricavarsi la chiave. Quali difficoltà hai trovato con il DES? Perchè è un algoritmo basato su tabelle di sostituzione/permutazione. Non richiede grosse conoscenze matematiche e su internet si trovano già pronte le varie S-box e tabelle di sostituzione/permutazione/espansione ( ti eviti, cosi, di doverle scrivere tutte). Per l'AES altrettanto. Esistono varie implementazioni (più o meno ottimizzate). L'algoritmo "originale" richiederebbe l'implementazione dell'algebra in GF( 2^8), ma anche per queste operazioni esistono delle tabelle apposite che evitano ogni "grana matematica". Quali sono le funzioni che non conosci? Ultima modifica di Dânêl : 30-12-2011 alle 08:13. |
||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Prima regola della crittografia: non tentare di inventare il tuo personale algoritmo.
Il mio personale consiglio è di usare una libreria già fatta e testata. Ma se proprio vuoi sporcarti le mani, comincia da qualcosa di semplice da implementare almeno, tipo RC4 (guarda su wikipedia per l'algoritmo). Non è più un algoritmo sicuro, ma per cominciare... non so poi che ambizioni tu abbia...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Il più semplice in assoluto credo sia Tea(Tiny Encryption Algorithm). Sono una decina di righe di codice C per l'encryption e altrettante per la decryption.
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
Intanto grazie a tutti per le risposte complete e in tempi brevi!
Le difficoltà che ho trovato sono semplicemente la mancanza di buoni manuali! il mio libro di testo che usiamo a scuola ti spiega le base, arrey creazione di file ma non entra nello specifico... visto che alcune funzioni non si usano nemmeno a scuola... e su internet non ho trovato molto... Io voglio fare questo programma non per grossi scopi ma semplicemente per imparare il più possibile su questo linguaggio non pretendo di creare un nuovo sistema di crittografia come des e blowfish che ci hanno messo anni a creare! il mio era un idea iniziale A scuola abbiamo abbandonato il vb e stiamo facendo java... solo che ho voluto creare questo programma anche per non dimenticarmi nulla del vb... poi magari lo riscrivo in java |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
vorrei aggiungere a Daniel
"Il "problema" principale del tuo algoritmo è che è facilmente attaccabile tramite l'analisi statistica del messaggio (perchè ad una lettera del testo in chiaro corrisponde sempre la stessa lettera del testo cifrato)." non mi sembra... nel senso supponiamo che il testo sia aria con chiave utente pari a 1 verrebbe 97 114 105 97 con chiave utente 2 388 456 420 388 anche variando la chiave di un unità il testo cifrato varia notevolmente! almeno mi sembra eh! vi posto il codice scritto per allegato Funzionano entrambi e sono lunghi perchè ho messo molti controlli... fatemi notare tutto quello che c'è di negativo.... Ultima modifica di Hannibal.l : 30-12-2011 alle 12:58. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Come puoi vedere la 'a' sia con chiave 1 che con chiave 2 è sempre cifrata con uno stesso carattere. Morale della favola: mi passo il ciphertext scrivendomi le occorrenze di ogni carattere e troverò che alcune sono molto più presenti di altre. Se il testo è in inglese posso presumere che la lettera che compare più spesso è una 'e', se il testo è in italiano posso presumere sia una 'a'. Ci sono tabelle di frequenza delle lettere per ogni alfabeto. Certo, magari ci sarà da lavorarci un po' ma vai tranquillo che si scopre il plaintext qualsiasi sia la chiave
|
|
|
|
|
|
#8 | |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
Quote:
" 329508 341172 294516 335340 338256 323676 93312 326592 332424 323676 300348 332424 282852 317844 317844 282852 93312 297432 282852 93312 335340 288684 303264 306180 297432 323676 93312 169128 198288 93312 " sono d'accordo che ci sono alcuni caratteri ripetuti e uno sa che possono essere o uno spazio o una letterà ma senza la chiave come può sapere che c'è scritto? o sbaglio? anche con il brute force visto che la chiave può andare da - infinito a + infinito... per fare un esempio può essere -234 come 45 l'attacco bruteforce non lo ritengo l'ideale no? poi queste sono le idee di me che sono completamente inesperto se dite che va migliorato sono d'accordissimo |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 485
|
Ha già detto tutto ndakota.
Le parole chiave per determinare la sicurezza di un algoritmo di crittografia sono confusione e diffusione. A causa della sua semplicità il tuo algoritmo non gode di nessuna delle due. Il fatto che una lettera del testo in chiaro sia riportata nel testo cifrato sempre con lo stesso simbolo lo espone agli attacchi ad analisi statistica. Spiego brevemente: ogni lettera dell'alfabeto ha una certa ricorrenza statistica nel vocabolario, cosi come certe sequenze di lettere ( "ch", "chi"). Questi valori statistici vengono utilizzati per determinare (in via probabilistica inizialmente, per poi arrivare a certezza dopo qualche tentativo) se al numero 388 del testo cifrato corrisponde una A piuttosto che una Z. Hai presente il gioco da settimana enigmistica dove ti danno un testo formato da soli numeri e ti viene chiesto di trovare il testo originale? Il procedimento per risolvere il giochino e decifrare un testo cifrato con il tuo algoritmo sarebbe esattamente lo stesso. Sarebbe lievemente più sicuro se il valore moltiplicativo, oltre ad essere in funzione della chiave, fosse derivata dall'intorno dell'i-esimo carattere. In questo modo alla lettera A corrisponderebbe di volta in volta un simbolo del testo cifrato diverso. Per concludere ti faccio un esempio di come potrei decrittografare ( in parte) aria: 97 114 105 97 97 è una lettera finale. In italiano non ci sono parole che finiscono per una consonante, perciò 97 corrisponderà ad una delle vocali. 114 sarà sicuramente una consonante (non mi pare ci siano parole che inizino con due vocali) e di consequenza 105 sarà un'altra vocale ( o l'h). Magari potrei verificare tra tutte le parole in italiano di 4 lettere quali hanno la lettera iniziale uguale a quella finale (e restringerei il campo non di poco, magari esiste una sola parola con queste caretteristiche...chi lo sa) Essendo il testo troppo corto non è possibile determinare con certezza i valori di 114 e 105 ( e di 97 sappiamo solo con certezza che si tratta di una vocale), ma con un testo più lungo.... penso di aver reso l'idea. PS: hai risposto mentre scrivevo. Dai un'occhiata qui ( non so se le frequenze sono adatte, ma è giusto per dare una idea) http://it.wikipedia.org/wiki/Analisi_delle_frequenze Come vedi la a ha una frequenza dell'11,74% . In un testo sufficientemente lungo, la frequenza sarà all'incirca la stessa. Per cui se crei la tabella delle frequenze di un testo cifrato e trovi un carattere con quella frequenza, sarà molto probabilmente una a ( di sicuro non sarà una z). Procedendo per ogni carattere e sistemando quelli che non quadrano ecco decifrato il testo. Ultima modifica di Dânêl : 30-12-2011 alle 17:16. |
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
"Ha già detto tutto ndakota.
Le parole chiave per determinare la sicurezza di un algoritmo di crittografia sono confusione e diffusione. A causa della sua semplicità il tuo algoritmo non gode di nessuna delle due." che vuol dire? ahah confusione e diffusione in che senso? però non credo di sbagliare nel dire che in fondo seppur semplice l'algoritmo è in parte efficace no? con la crittoanalisi si può decifrare solo in parte un testo e non facilmente no? è un inizio giusto? Comunque mi avete convinto che non è cosi difficile tornare al testo di partenza... allora quel'è secondo voi un metodo di criptazione "confuso" "diffuso" semplice ed efficacie? |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 485
|
Quote:
http://it.wikipedia.org/wiki/Confusione_e_diffusione Con la crittoanalisi, se l'algoritmo non è sicuro, è possibile decifrare un testo in toto. La difficoltà dipende solo dall'efficacia dell'algoritmo e dalla quantità di testo a disposizione (più testo si ha, più efficace è questo genere di attacco). Come suggerito da shinya RC4. Richiede molto meno codice di altri algoritmi (operazioni su matrici, cosi come gli altri d'altronde). @shinya per quale motivo non è più considerato sicuro? Stallings ( ho studiato crittografia dal suo libro) dice che un attacco a rc4 con chiave sufficientemente lunga (128bit) non è realistico (e menomale, altrimenti anche l'AES scricchiolerebbe). E i problemi di sicurezza che si sono avuti con il WEP non erano dovuti a RC4 in se, ma al sistema di generazione delle chiavi. Cosa c'è che non so?
|
|
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 17
|
Dove le hai imparate tutte queste cose? che lavoro fai se posso chiedere? le hai imparate online?
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 485
|
Sui cari vecchi libri di carta. Un qualsiasi testo di crittografia ( come lo Stallings che ho nominato poco fa) contiene questo e tanto altro comprese le spiegazioni dei vari algoritmi di crittografia. Online nemmeno proverei. Se non si conosce bene la materia non si sa cosa cercare (perchè il mondo della crittografia è molto vasto) e nemmeno valutare la qualità delle informazioni (che è la cosa più importante). Meglio affidarsi alla sicurezza (quasi totale) dei libri.
Nessun lavoro per il momento, studente prossimo alla laurea |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
L'RC4 paga la sua semplicità in termini di sicurezza: questa è molto debole e l'algoritmo è violabile con relativa facilità e velocità tanto che il suo uso non è più consigliabile. L'RC4 mostra infatti un comportamento non da vero PRNG: l'analisi del flusso di dati casuali denota una certa periodicità nei primi 256 byte. Ecco perché molte implementazioni dell'algoritmo scartano questi byte facendo eseguire un ciclo di 256 iterazioni a vuoto prima di iniziare ad utilizzare il keystream. Un'altra debolezza è relativa alla forte correlazione che c'è fra la chiave ed il keystream tanto che nel 2005 è stato trovato un modo per violare una connessione wireless protetta con WEP in meno di un minuto. Insomma, di sicuro è debole. Tant'è che anche gli autori hanno proposto migliorie. Se non sbaglio tra i cinque candidati a diventare l'AES, poi vinto da Rijndael, c'era l'RC6 infatti. Comunque, se per trovare la chiave di un crittosistema devi provare 2^128 combinazioni di chiavi, ad oggi, il crittosistema non è assolutamente debole. Ce ne vuole. Il problema è se si riesce, scoprendo qualche debolezza, ad abbassare questo spazio delle chiavi. Poi ricordo che AES è scalabile: può essere usato con chiavi da 128, 192 e 256 bit. Ultima modifica di ndakota : 30-12-2011 alle 19:08. |
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 250
|
La cosa più importante di un sistema di sicurezza (sicuramente una delle più importanti) è che non sia basato sulla "segretezza", ovvero non violi il cosiddetto principio di "security through obscurity". In soldoni, non bisogna fare affidamento sul fatto che l'algoritmo sia noto solo allo sviluppatore dell'applicazione, ma anzi deve essere diffuso il più possibile in modo che se ne trovino le vulnerabilità. La forza degli algoritmi più robusti (tipo RSA o diffie-helmann) risiede nell'impossibilità dei calcolatori attuali di risolvere alcuni problemi matematici. Gli algoritmi sono ovviamente pubblici e DEVONO esserlo per potere essere utilizzati in aree sensibili dell'informazione. Per il resto, il nucleo della questione è solo la potenza di calcolo dei nostri pc. E poco altro..
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
L'algoritmo RC4, sebbene sia considerato insicuro, è ancora robusto se utilizzato oculatamente e con chiavi a 128 bit. Il problema della violazione dell'algoritmo WEP delle Wi-Fi non era relativo all'algoritmo RC4 in sé, quanto piuttosto al modo con cui l'RC4 deriva la chiave nel Key Scheduling Algorithm. Per questo è consigliabile utilizzare l'RC4 passandogli eventuali chiavi base già preprocessate tramite algoritmi di hashing quali MD5 o SHA1 (anche questi considerati violati in teoria). Se guardi, molti certificati SSL utilizzano ancora l'algoritmo RC4 con key a 128 bit, tuttavia con derivazione della chiave base pre-processandola tramite MD5/SHA1.
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: Ultima modifica di eraser : 30-12-2011 alle 22:22. |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
|
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
L'utilizzo delle password non è un'applicazione pratica di security through obscurity?
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 250
|
No, perchè il focus è sugli algoritmi non sulle chiavi che, per definizione, devono essere segrete (non tutte ovviamente, vedi chiavi pubbliche di RSA).
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:33.




















