Newsgroup: it.comp.sicurezza.crittografia
Titolo: VB & Crittografia

Ho creato un algoritmo di crittografia in VB.
Vorrei sapere fino a che punto è sicuro (voi siete mille volte più esperti
di me nel campo) e a quanti bit è la crittografia (ancora non ho capito da
dove si calcolano).
La password in teoria può essere lunga fino a 2 miliardi di caratteri, ma
nel programma è "autolimitata" a 64 caratteri.
Avrete forse capito che in crittografia sono un mezzo niubbo.
Vi posto il codice che ho creato:
'Crittatura dati da inviare
Public Function CrittaDati(Stringa As String, Password As String) As String
Dim i As Long
Dim z As Integer
Dim Carattere, SommaPass As Integer
Dim StringaCritt As String
StringaCritt = ""
SommaPass = 0
For i = 1 To Len(Password)
SommaPass = SommaPass + Asc(Mid(Password, i, 1))
    If SommaPass > 255 Then
        SommaPass = SommaPass - 255
    End If
Next
i = 1
z = 1
Do While i < Len(Stringa) + 1
    If z > Len(Password) Then z = 1
    Carattere = CInt(Asc(Mid(Stringa, i, 1))) + CInt(Asc(Mid(Password, z,
1))) + CInt(SommaPass)
    If Carattere > 255 Then
        Carattere = Carattere - 255
    End If
    StringaCritt = StringaCritt & Chr(Carattere)
    z = z + 1
    i = i + 1
Loop
CrittaDati = StringaCritt
End Function
'Decrittatura Dati Ricevuti
Public Function DecrittaDati(Stringa As String, Password As String) As
String
Dim z As Integer
Dim i As Long
Dim Carattere, SommaPass
Dim StringaDecritt As String
SommaPass = 0
For i = 1 To Len(Password)
SommaPass = SommaPass + Asc(Mid(Password, i, 1))
    If SommaPass > 255 Then
        SommaPass = SommaPass - 255
    End If
Next
i = 1
z = 1
Do While i < Len(Stringa) + 1
    If z > Len(Password) Then z = 1
    Carattere = CInt(Asc(Mid(Stringa, i, 1))) - CInt(Asc(Mid(Password, z,
1))) - CInt(SommaPass)
    If Carattere < 0 Then
        Carattere = 255 + Carattere
    End If
    StringaDecritt = StringaDecritt & Chr(Carattere)
    i = i + 1
    z = z + 1
Loop
DecrittaDati = StringaDecritt
End Function
Il programma che critta i files invece potete scaricarlo, con i sorgenti
sotto licenza GPL, dal sito comune di VB 
www.it-lang-vb.net
Si chiama "FileSuite - Utilità Files"
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no
web: 
http://www.nicolaottomano.it

ah dimenticavo. prima di crittare faccio un base64.



| Il programma che critta i files invece potete scaricarlo, con i sorgenti
| sotto licenza GPL, dal sito comune di VB 
www.it-lang-vb.net
Se l'algoritmo per crittare è quello che hai postato ti prego di
avvertire fin dalla descrizione l'utente della debolezza dell'algoritmo,
è vero che la licenza GPL ti toglie in teoria da ogni problema, ma non è
mai bello se qualcuno ti denuncia perché i suoi dati "crittati" sono
stati letti 0=)
Lapo
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAj/fJEMACgkQaJiCLMjyUvvo+ACg885kQIku9hHBKRBJq3qnGKm+
6mMAn1KUKPX9j2oIKNR3JqNX4gv08pcU
=GL4l
-----END PGP SIGNATURE-----

Innanzitutto grazie per il link che mi hai postato.
Vorrei specificare (per rendere partecipi anche coloro che non conoscono VB)
ciò che fa il mio algoritmo:
1-Somma i caratteri Ascii della password e ne ottiene uno solo (se la somma
supera i 255 ritorna a 0 e così via)
2-Somma al testo in chiaro la password
3-Somma al testo ottenuto la somma dei caratteri ascii
Per esempio
pippo        'testo in chiaro
pluto         'password
In ascii (a fianco ho tradotto in caratteri stampati)
112 105 112 112 111 +    pippo
112 108 117 116 111 +    pluto
054 054 054 054 054 =    66666
--------------------------
023 012 028 027 021       ???.§
Credi quindi che l'algoritmo sia molto vulnerabile?
Mi vergogno di pensare che mi hanno "scardinato" l'algoritmo già dal
rinascimento.. datemi il tempo di nascere almeno!    :)
Cmq questo algoritmo (e relativo programma) li ho creati come tesina d'esame
di maturità (insieme all'algoritmo di codifica di huffmann, ma quella è
un'altra storia..) quindi mi servivano solo come esempi. (Ma mi riprometto
di avvisare chi scarica il mio programma).
Inoltre vorrei chiederti:
Ho un algoritmo Blowfish a 64Bit per VB.
E' abbastanza sicuro? (te lo chiedo perchè implementarlo nella mia
applicazione sarebbe una cosa praticamente immediata).


  [X.509 available]  ,''`.
Linux Reg. User #263663/NEW Machine: #216144 (Debian Sarge/SID) : :' :
On the Web: 
http://www.quagliata.eu.org
 - My GPG Key:0x5539D8E4 `. `'
On ICQ: 48618109 - On Jabber: 
qu...@jabber.org/@jabber.linux.it
   `-

azz!
(l'espressione si commenta da sè)    :-)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
quaqo wrote:
| 112 105 112 112 111 032 116 111 112 111 108 105 110 111 032 112 105
112 112 111 +
| 112 108 117 116 111 112 108 117 116 111 112 108 117 116 111 112 108
117 116 111 +
| 054 054 054 054 054 054 054 054 054 054 054 054 054 054 054 054 054
054 054 054 =
|
- 
----------------------------------------------------------------------------------
|[023 012 028 027 021]198 023 027 027 021 019 012 026 026 197[023 012
028 027 021]
|
| La crittoanalisi di Babbage (IX secolo) permette di decifrare il
| crittogramma grazie a questa `falla'...
Babbage non mi ricordo, ma la tecnica descritta qualche secolo prima da
Leon Bttista Alberti era circa: trovare tutte le ripetizioni (come ad
esempio quei due "[023 012 028 027 021]" di cui parla quaqo) e farne il
massimo comun divisore: probabilmente sarà la lnghezza della chiave.
A quel punto, metti che la chiave è di 5 caratteri, fai l'analisi delle
frequenze su tutti i primi caratteri, poi su tutti i secondi... etc. etc..
Ovviamente per ognuna delle 5 "classi" applicherai la tecnica base
dell'analisi delle frequenze e via... (in breve: confronti la frequenza
"campionaria" dei simboli trovati e la frequenza "media" dell'itailano o
altre linghe, un po' come su "a simbolo uguale lettera uguale" della
setitmana enigmistica).
BTW: non ti preoccupare del fatto che il tuo algoritmo sia stato
"rotto", sperimetnare è l'unico modo per imparare
e ricorda che un attacco al tuo algoritmo non è mai (o almeno non
dovrebbe esserlo!) un attacco alla tua persona, perché anche i grandi
sbagliano quindi non c'è nessuna vergogna nel farlo ;-)
ogni cosa va benissimo finché è per divertirsi, per le cose "serie"
ovviamente conviene usare algoritmi "testati", ma quello è chiaro...
Ottomano Nicola wrote:
| Ho un algoritmo Blowfish a 64Bit per VB.
| E' abbastanza sicuro?
No, non lo è.
Mi spiego: blowfish è un buon algoritmo (nel senso che non si trovano a
oggi "scorciatoie" per aggirarlo) ma 64 bit di chiave oggi come gogi
sono irrimediabilmetne pochi. Anche la "strada lunga" (forza bruta
ovvero rovare le chiavi una ad una) con 64 bit di chiave è "fattibile".
BTW: dato che devi usare qualcosa di serio, usa AES e non blowfish.
e con chiave da almeno 128 bit.
e la chiave non è la password ma è l'hash (ripetuto MOLTE volte) della
password stessa.
(in caso ne parliamo in più dettaglio in un altro thread)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAj/fdmMACgkQaJiCLMjyUvuFKgCfa9bEWsp3t9b/K3XmQ2QSe3/k
QUkAnAs39m2Ra7x9nUUGMXhgP2sqt9fm
=4WKa
-----END PGP SIGNATURE-----

 (in caso ne parliamo in più dettaglio in un altro thread)
Mi aggrego e  propongo  anche  un  piccolo  dibattito:  Rijandael vs
Serpent? :)


Non posso far altro che ringraziarvi per l'interessamento al mio problema.
Se vi serve una mano su VB postate su it.comp.lang.visual-basic
Sono sempre a disposizione per suggerimenti [dovrei essere il vostro
equivalente nel mio campo...;-)  ] .
Nicola Ottomano
PS L'algoritmo cmq mi serve per crittare alcuni dati di magazzino prima di
spedirli via winsock. Non sono dati sensibili ma la sicurezza non è mai
troppa...


 troppa...
Sicuramente, per VB, esiste qualche libreria che implementa
AES o altro in modo decente, se ti va d'andare sul  sicuro,
altrimenti potresti provare a scrivere tutto te... :)
Basta scaricarsi la documentazione... E` matematica in mag-
giorparte.


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
quaqo wrote:
| Mi aggrego e  propongo  anche  un  piccolo  dibattito:  Rijandael vs
| Serpent? :)
Ti darò la stessa risposta che ho letto in "Pratical Criptography" (sì,
mi spiace, ma per un bel po' tutti i miei pensieri saranno modificati da
quella lettura, dopotutto è veramente illuminante in alcuni punti ^_^^):
Serpent è forse più sicuro, ma Rijandael è comunque *lo* standard
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAj/foegACgkQaJiCLMjyUvtcgACfaGlRlKdWuyKQAGCLK7V5NT7q
SFAAoIsXnuWIzr0GTUUZn/9gUqvmVPBg
=WMpx
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
quaqo wrote:
| Sicuramente, per VB, esiste qualche libreria che implementa
| AES o altro in modo decente, se ti va d'andare sul  sicuro,
| altrimenti potresti provare a scrivere tutto te... :)
Ho detto Rijndael invece di AES, ma rileggiti il mio primo reply ;-)
| Basta scaricarsi la documentazione... E` matematica in mag-
| giorparte.
Beh, oddio, non direi "matematica", alla fine è un cifrario simmetrico,
non ha 'sta gran matematica...
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAj/fp30ACgkQaJiCLMjyUvsALgCg5RsARuOj7FxtCgtEoIHxbm26
JVcAoPLzszVg5OM7SA5L2CaIfRha5v4R
=QPMz
-----END PGP SIGNATURE-----

 non ha 'sta gran matematica...
Beh... Apposta... Non e` difficilissimo da implementare...


 Serpent è forse più sicuro, ma Rijandael è comunque *lo* standard
Io avevo letto (forse ricordo male)  che Serpent offre maggiori
margini di sicurezza (riutilizza concetti propri del DES) ma e`
lento nel software poiche` compie molte volte calcoli semplici.
Rijandael ha invece meno passaggi pero` piu` complessi,e quindi
offre un ottimo compromesso.
Mi ricordo pure -pero`-che e` possibile implementare Serpent in
hardware, eliminando il problema della lentezza  e  godendo dei
vantaggi in termini di memoria per lo storage e della sicurezza
relativa a concetti gia` ritenuti sicuri.
Inoltre mi pare che Serpent non  lamenti  un  notevole  calo di 
prestazioni all'aumentare della lunghezza della chiave...Mentre


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
quaqo wrote:
| Io avevo letto (forse ricordo male)  che Serpent offre maggiori
| margini di sicurezza (riutilizza concetti propri del DES) ma e`
| lento nel software poiche` compie molte volte calcoli semplici.
Più che altro il design di Serpent è più "conservativo", nel senso che
usa solo operazioni già largamente usate in passato (mentre AES usa cosa
più nuove e meno variabili).
Resta il fatto che in ambito lavorativo è una scelta sicurametne
migliore AES peril semplice fatto che se scegli Serpent e lo "rompono"
magari ti becchi una denuncia, se scegli AES e lo "rompono"...
sciuramente no, perché nessuno può dirti di aver sbagliato avendo scelto
"lo" standard.
Questo è un argomento che poco c'entra con la sicurezza ma che
sicuramente ha il suo peso in ambito lavorativo =)
E comunque ricordiamoci che stiamo confrontando una porta d'accaio di
20cm con una di 19cm, quando spesso il resto della casa è fatto con 5cm
di mattoni...
(sempre su "quel" libro ho letto cose molto sconsolanti, proprio sul
"resto della casa"...)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAj/gHVIACgkQaJiCLMjyUvvOZACfd3Cbs5imgIqvD/LmnzpWCNnF
c3MAn3Cw6YT+1TXxhalhnHKLdvruFTdd
=Z0mk
-----END PGP SIGNATURE-----

 E comunque ricordiamoci che stiamo confrontando una porta d'accaio di
(snip)
Immagino che -in futuro- darai altre (ben volute) informazioni... A
noi che non abbiamo il libro... :P
