Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Al Museo Alfa Romeo di Arese, Nutanix ha riunito clienti, partner ed esperti per .Next On Tour Italia e per mostrare come l’infrastruttura hybrid multicloud possa diventare il fondamento dell’innovazione, con una piattaforma capace di unificare applicazioni tradizionali, moderne architetture cloud-native e nuovi scenari basati sull’intelligenza artificiale
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Il Lenovo LOQ 15i Gen 10 (15IRX10) offre prestazioni convincenti grazie al Core i7-13650HX e alla RTX 5060 Laptop a 100W, mantenendo un prezzo competitivo tra 1100 e 1300 euro. Costruzione solida, buon display e ampia espandibilità lo rendono una scelta equilibrata per chi cerca un notebook gaming accessibile ma moderno.
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-12-2006, 12:15   #1
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
[JAVA] Autenticazione CRAM MD5

Salve a tutti.

Mi e' venuto in mente di usare qualcosa di meglio del semplice invio
password, quindi volevo implementare un'autenticazione di tipo cram, esempio:
http://en.wikipedia.org/wiki/CRAM-MD5

Quindi il server invia una stringa (casuale?) al client, il quale risponde
calcolando l'ambaradan e ritornando l'md5 (o sha...).

Ho scoperto che molte delle cose sono gia' fatte in java, vedi ad esempio
http://www.exampledepot.com/egs/java...to/GenMac.html

Il problema e' che l'esempio calcola l'hash usando un oggetto Key,
mentre da quello che ho capito io dovrei usare la password (una stringa)
come chiave...

Potete illuminarmi?

Grazie.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 11:15   #2
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
up

Solo questo:

La challenge string deve essere casuale?
o legata in qualche modo allo username?

Grazie
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 11:36   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da lovaz
La challenge string deve essere casuale?
Sì, deve essere generata da un buon generatore casuale...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 11:45   #4
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Grazie.

Quale potrebbe essere un buon seme?

Io avevo pensato a una cosa del tipo
System.currentTimeMillis() % username.hashCode()

in modo da legare tempo e username... oppure legando anche l'ip
dell'host di provenienza (+?).

Ha senso?
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 11:50   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Java ha già un generatore "sicuro"....ora non mi ricordo il nome della classe...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 11:56   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
SecureRandom
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 12:11   #7
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Grazie, ho scritto questo:

Codice:
	public byte[] generateChallengeString(int length)
	{
		SecureRandom srand = null;
		String algorithm = "SHA1PRNG";
		try {
			srand = SecureRandom.getInstance( algorithm );
		} catch (NoSuchAlgorithmException nsae) {
			logger.severe("RNG algorithm " + algorithm + "not available.");
			throw new RuntimeException(nsae);
		}
		
		byte[] challenge = new byte[length];
		srand.nextBytes( challenge );
		
		return challenge;
	}
Dovrebbe andare...

Al limite inserisco un tempo di "leasing",
oltre il quale la stringa non e' piu' valida - buona idea? pessima idea?
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 12:18   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ogni numero casuale deve essere utilizzato una sola volta
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2006, 12:20   #9
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Si', certo, una volta ottenuta la risposta l'array viene buttato...
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 11:21   #10
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Ok, passo al calcolo della risposta.

non riesco a dare in pasto una stringa (la password) all'oggetto Mac:

mac = Mac.getInstance( "HmacSHA512" ); // passo algoritmo

mac.init( ?? ); // qui dovrei dargli una Key - ma io ho una stringa!

// questo dovrebbe digerire la challenge string
// (di tipo byte[], generata con il metodo sopra )
byte[] digest = mac.doFinal( challengeString );

Mi conviene reimplementarmi l'algoritmo HMAC?

Grazie
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 11:37   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Come chiave usi la password dell'utente sul server...
Se sul server non hai la password in chiaro usa lo stesso algoritmo con cui salvi la password sul server per ottenere l'hash in locale ed usa l'hash come chiave dell'HMAC...

Il protocollo dovrebbe essere questo...supponiamo che la pass sia memorizzata sul server sottoforma di SHA1(password):

Client = C, Server = S

C->S: Username
S->C: challengeString
C->S: a = HMAC(SHA1(password), challengeString)
Il server si calcola HMAC(passwordFingerprint, challengeString) e verifica che sia identica ad a...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 11:46   #12
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Ok. Ma il problema sta in hmac, praticamente lo devo implementare io,
visto che non riesco ad usare l'hmac gia' fatto.

Grazie comunque.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 12:32   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971

http://en.wikipedia.org/wiki/HMAC
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 12:36   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non credo che ti convenga reimplementare l'HMAC...piuttosto implementa l'interfaccia Key
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 12:42   #15
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Non sembra difficilissimo.

E poi non mi e' ben chiaro cosa dovrebbero fare i metodi di Key,
e se la chiave deve rispettare certe condizioni, visto che
Mac.init() puo' lanciare l'eccezione
InvalidKeyException - if the given key is inappropriate for initializing this MAC.

Oppure potrei usare semplicemente questo?
http://www.exampledepot.com/egs/java...ty/Digest.html
da quanto ho capito concatena stringa e chiave e calcola l'hash.
E' meno sicuro?
Mi rendo conto che e' una domanda insensata - d'altra parte non devo
fare un sistema a prova di bomba, e' un semplice progettino.

Grazie
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 12:53   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
http://java.sun.com/j2se/1.5.0/docs/...etKeySpec.html

Non importa imlpementare l'interfaccia...si fa così !!!

Key secreteKey = new SecretKeySpec(passwordFingerprint, "MioAlgoritmo");
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2006, 13:05   #17
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Grazie mille!
Ho fatto un programmino di prova, sembra andare,
se avro' problemi ritornero'.
lovaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
Le pubblicità del frigorifero man...
Perso il segnale della sonda spaziale NA...
Una Xiaomi SU7 ha finito il suo parchegg...
Decine di associazioni contro i data cen...
Dongfeng batte Toyota e BYD: il suo moto...
Oltre NVIDIA: i server di Red Hat AI acc...
Grok diventa navigatore Tesla: Musk prom...
Broadcom/VMware e Siemens continuano a l...
NIO lancia il brand Firefly anche in Gre...
Trump annuncia una legge nazionale sull'...
Intel Arc B770: la scheda appare in un d...
Le Big dell'AI e Linux Foundation insiem...
I macchinari arrivano alla fabbrica BYD ...
Minori reclutati online per uccidere: l’...
Il Natale 'pesa' sull'ambiente: gli addo...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v