[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Gennaio 2006 ml@sikurezza.org
Soggetto: Re: [ml] Idea di algoritmo di autenticazione
Mittente: matteo
Data: Tue, 24 Jan 2006 08:53:21 +0100 (CET)
billiejoex ha scritto:

Salve a tutti. Premetto che non sono assolutamente pratico di crittografia
quindi le cose riportate di seguito potrebbero essere concettualmente errate
se non addirittura inapplicabili. In ogni caso, provo a chiedere ugualmente
il vostro aiuto. :-)
Sto sviluppando un semplice applicativo di port knocking daemon in cui il
server, previa ricezione di determinati pacchetti TCP con flag SYN attivo
mandati dal client su determinate porte, nella giusta sequenza, esegue un
comando (nel dettaglio: l'apertura di una porta tramite iptables).
Il programma allo stato attuale è completo ma gradirei aggiungere
un'ultioriore funzione di sicurezza implementando un rudimentale sistema di
autenticazione.
Il problema di un applicativo di questo tipo è che non stabilendo una
connessione TCP vera e propria (di fatto i pacchetti viaggiano solo dal
client verso il server) non dà modo di implementare algoritmi di cifratura a
chiave pubblica, ad esempio.


L'idea (malsana) che mi è venuta è stata quindi questa:

- Il client manda, all'interno del pacchetto TCP, un hash MD5 risultante dai
valori di [password + data locale + ora_locale (hh:mm:ss)] (ad es:
"mia_password|1-17-2006|15:23.33" = "uijXHuxjX9Xj9").
- Il server riceve il pacchetto (diamo per scontato che il server al momento
della ricezione del pacchetto riporti il medesimo orario di sistema
(15:23:33)) ed esegue la medesima di funzione di hash
("mia_password|1-17-2006|15:23.33" = "uijXHuxjX9Xj9"). Se i due hash
collimano si assume che l'autenticazione sia avvenuta in modo corretto e il
port knocking daemon può eseguire il comando.


Utilizzando un sistema di questo tipo il valore di hash trasmesso è sempre
variabile e un attaccante che sniffa l'hash alle ore 15:23:33 del 1-17-2006
non potrà impiegare lo stesso hash un minuto dopo, ad esempio. Tolte le
debolzze "di terze parti" (es: se l'ora di sistema delle due macchine è
diversa non funziona un bel niente) quella appena descritta può apparire
un'idea sensata?

Piccolo contributo, attendendo gli esperti.

Sinceramente non capisco perché non puoi usare le chiave privata del client per autenticare il messaggio. Il server con la chiave pubblica verifica che quel messaggio è stato scritto dal client.
Dentro va bene scriverci il timestamp da te proposto e la psw con l'hash. Ma anche qui potresti criptare con la chiave pubblica del server.


Dipende dal contesto. Ma se non hai problemi a far avere al server le chiavi pubbliche dei client, io manderei un messaggio criptato ed autenticato.
In più potresti usare la chiave pubblica per identificare il client e la password nel pacchetto per identificare il singolo utente.


Eventualmente puoi implementare e rendere disponibili entrambe le soluzioni (md5 e chiave pubblica/privata), per far scegliere all'utente.

Ciao a tutti
Matteo

--
Matteo Paoli -- http://matteo.lilik.it


LEGGE DI MASTERSON SULLA DISTRIBUZIONE DEL GHIACCIO
Tutti nella vita hanno la stessa quantità di ghiaccio. I ricchi d'estate e i poveri d'inverno. tratto da "La Legge di Murphy per la Sinistra", Longanesi&C






[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005