Newsgroup: it.comp.www.asp
Titolo: Crittografia Password

Qualcuno a idea di come crittografare in modo abbastanza sicuro un password?
MI spiego come fate a non far leggere il programma di crittografia?
Se lo metto in Javascript me lo leggono se lo metto in ASP o uso i cookies o
devo mandare la Password in chiaro quindi diventa inutile!
Come anche con i cookies e ASP se uno scarica tutto il sito lo scopre lo
stesso
                                                        Falexio



Lo scopo della crittografia non e' impedire all'utente di sapere la
propria password, ma quello di evitare che, leggendo il database in
cui la password e' memorizzata, si possa risalire alla stessa.
E' una sicurezza per l'utente che l'amministratore del sistema
non possa fare "login" con la password dell'utente.
Ovviamente in genere questo non si verifica perche' l'amministratore
ha altro da fare.
Se ti preoccupa l'invio della Password verso il Web Server,
puoi implementare SSL e quindi fare in modo che tutte le
transazioni tra il client ed il server siano criptate.
Se uno ti scarica tutto il sito, non serve a niente nessuna password
e chi e' in grado di scaricarti tutto il sito se ne frega di andarle
a vedere.
Davide

 stesso
Creare un programmino di crittografia in Javascript non mi sembra proprio il
caso, preferisco utilizzare ASP.
Prima di tutto devo farti una piccola precisazione che, scaricando un sito
qualsiasi creato in ASP, quello che viene copiato è il codice risultante
dall'elaborazione della procedura scritta in ASP quindi il sorgente ASP vero
e proprio (salvo eventuali M$BUG) è al sicuro.
Io ho già creato funzioni di questo tipo e, sino ad oggi, ancora nessuno è
riuscito a "scavalcare" questi muri.
Dici che la password deve sempre essere messa in chiaro .... ma ti sbagli,
supponiamo di avere due pagine: prima.asp e dopo.asp.
La pagina "prima.asp" verrà utilizzata per richiedere e verificare la
password quindi, se corretta, richiamare la pagina "dopo.asp" però, prima di
inviarla alla pagina "dopo.asp", "prima.asp" procede a codificarla e quindi
"dopo.asp" dovrà avere la funzione opposta per decodificarla.
Il problema essenziale è proprio la creazione della funzione di
criptaggio-decriptaggio che devono essere il più "difficili" da sproteggere,
ma non troppo .... altrimenti ti potrebbe capitare ciò che è successo a me,
ho creato una funzioncina alquanto veloce (in esecuzione) di criptaggio solo
che, avendola resa troppo complessa, non sono ancora riuscito a creare la
funzione di decriptaggio !!!
Se vuoi potrei darti qualche ideuzza (non sorgenti) per qualche semplice
algoritmo di codifica-decodifica.
Michele Mariotti

 writes:
f> Qualcuno a idea di come crittografare in modo abbastanza sicuro un password?
f> MI spiego come fate a non far leggere il programma di crittografia?
Ci  sono anche  algoritmi che  pur se  li leggi  ti serve  a  poco. Si
chiamano algoritmi trapdoor e sono utilissimi per le password (cercare
"trapdoor algorithms").  Li devi  implementare lato server (oddio, ASP
non credo  vada molto bene perché  hai bisogno di giocare  coi bit dei
dati, una dll  istanziata va meglio) e poi  controlli il risultato con
la pwd memorizzata.
Rimane il problema  della password che passa in chiaro  per la rete, e
lì solo SSL offre qualche protezione (nessuna protezione totale).
La sicurezza  totale potresti averla con algoritmi  a chiave pubblica,
ma  è  un  qualcosa  di  impensabile  per  una  applicazione  WWW  non
corporate.
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+
| Attenzione: rispondo ad ogni invio di pubblicità non richiesta | 
| o spam di qualsiasi altro genere con un messaggio al provider  |
| di competenza. Ai sensi della legge sulla privacy NON avete il |
| permesso di utilizzare i miei dati per questi scopi.           |
+----------------------------------------------------------------+

Scusa se mi intrometto ma vorrei tentare di capire meglio come funzionano le
password:
Non capisco bene lo scopo di cifrare/decifrare la password.
Essendo codice ASP tutto gira sul server,quindi in ogni caso l'utente manda
tramite il browser la password in chiaro.
Per quello che ho capito, riferendomi al tuo esempio, tu cifri la pwd in
prima.asp e la decifiri in dopo.asp ma come vengono inviati i dati a
prima.asp?  Dovrai avere una form html che li invia (ed anche se è creata
tramite asp sempre html è per il browser). Quindi il passaggio dal client
alla pagina asp che la cifra è in chiaro.
Forse c'è ancora qualcosa che mi sfugge.
Ciao Marco.

 alla pagina asp che la cifra è in chiaro.
No, non ti è sfuggito nulla anzi, hai centrato uno dei problemi che si
devono assolutamente correggere: Inviando dati da un form, sia utilizzando
il metodo GET che POST li invia sempre in chiaro. Le soluzioni che possono
essere applicate sono molte, limitate dalla fantasia e dalla conoscenza di
chi crea la pagina. Un paio di esempi esplicativi potrebbero essere questi:
1. Invio dati in binario
Nei FORM, l'attributo che gestisce la modalità in cui vengono inviati i dati
(enctype) è, per default, settato come 'application/x-www-form-urlencode',
insufficente per inviare grandi quantità di dati in formato testo o testo
contenente caratteri non ASCII o dati in formato binario (es: file di
immagini). E' possibile però modificare questo valore in modo da poter
supplire a queste mancanze utilizzando 'multipart/form-data':
<FORM ENCTYPE="multipart/form-data" ...>
In questo modo tutti i valori vengono trasmessi in formato binario.
Naturalmente la procedura per leggere questi valori cambia infatti,
utilizzando il normale comando Request.Form(..) non si ottiene nulla. Per
leggere questi valori bisogna creare una procedura che possa leggere i dati
in formato binario e li converta in formato testo.
A questo proposito potrei consigliare di dare uno "sguardo" all' articolo
http://www.asptoday.com/articles/20000316.htm
 il cui scopo è quello di
permettere l'upload di file senza l'utilizzo di componenti esterni,
utilizzando proprio il metodo di invio dei dati da form in binario e quindi
si potrà leggere (e copiare / scaricare) il sorgente che permette la lettura
dei dati in binario e la loro relativa conversione.
2. Protezione fittizzia on JavaScript
Anche con JavaScript è possibile "alterare" i dati inviati da un form basta
infatti che, per esempio, il tasto di invio non sia di tipo SUBMIT ma BUTTON
e che, intercettando l'evento OnClick, venga richiamata una procedura (o
funzione) JavaScript che modifichi il valore dei vari campi, naturalmente
nella pagina in cui questi dati verranno letti dovrà essere presente la
funzione inversa.
Mi scuso per la lunghezza del messaggio e, sopratutto, se non sono riuscito
a spiegarmi al meglio.
Michele Mariotti


Grazie per le informazioni e per i suggerimenti.
Il messaggio è lungo poichè pieno di informazioni utili.
Ciao Marco.