Oppure

Loading
09/05/05 23:34
angelo
Salve, qualcuno di voi ha degli esempi su
scambio di informazioni su chiavi asimmetriche
e firme digitali?

E' possibile salvare in locale nel programma stesso o in un file le chiavi private dell'altro utente?

l'idea e' questa, secondo la firma digitale
ad un certo punto io devo criptare il messaggio con la chiave privata dell'altro...
quindi vorrei avere in locale le chiavi salvate in qualche modo piu' o meno furbo.

cosa sono le Security API di java?

Ciao bel sito!
aaa
10/05/05 14:35
Zizzius
Hai visto quel bellissimo tutorial sullo scambio Diffie-Helmann, nella sezione Sicurezza & OS? :D
aaa
11/05/05 9:00
angelo
in effetti ho fatto un po' di casino,
intendevo ssl
che quando compilo ottengo delle eccezioni come questa:
No available certificate corresponds to the SSL cipher suites which are enabled

vi funziona ssl a voi?

import java.io.*;
import javax.net.*;
import javax.net.ssl.*;
import java.net.*;


public class SSLS{

public static void main(String args[]){



try {
int port = 1443;
ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault();
ServerSocket ssocket = ssocketFactory.createServerSocket(port);

// Listen for connections
Socket socket = ssocket.accept();

// Create streams to securely send and receive data to the client
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();

// Read from in and write to out...

// Close the socket
in.close();
out.close();
} catch(IOException e) {System.out.println(e.getMessage());
}
}
}

ciao
aaa
11/05/05 17:25
netarrow
Per far andare ssl in Java c'? la libreria JSSE(Java Secure Sockets Extension) cha va installata nel seguente modo:

---------
1) Copiare in JAVA_HOME/jre/lib/ext i file jcert-jar , jnet.jar e jsse.jar(se hai pi? installazioni Java, come su windows quella del jkd e quella del jre, o ne togli una o metti i jar da tutte e due le parti)

2) Apri il file java.security e cerchi le seguenti riche(# sono commenti):

security.provider.1=sun.security.provider.Sun
#altre righe
security.provider.2=sun.net.ssl.internal.ssl.Provider

se l'ultimo numero che hai ? per dire 4 invece che 2 dovrai mettere 5:

security.provider.5=sun.net.ssl.internal.ssl.Provider

(solito discorso, se hai altre installazioni di jre o le togli o modifichi anche il loro java.security).
-------

Il tuo codice non posso provarlo visto che non ho installato ssl sul pc adesso.

Per quanto riguarda le firme digitali con la privata firmi i dati e la pubblica potr? girare per il web senza problemi visto che pu? solo verificare, ti faccio vedere un esempio, a parametro dovrai passare il testo da firmare, io ho fatto con Prova, per usare frasi basta mettere tra ""(es."Testo di prova";):

-------
import java.security.*;
import sun.misc.*;//per usare BASE64, un byte normale ha 8 bits ma l'ASCI ne usa solo 7

public class Firma {

public static void main(String args[]) throws Exception {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA";);//genera copia con RSA
kpg.initialize(1024);//chiavi da 1024 bits
KeyPair kp = kpg.genKeyPair();//genera chiavi
byte[] dati = args[0].getBytes("UTF8";);//converti parametro in bytes
Signature sig = Signature.getInstance("MD5WithRSA";);//usa l'algoritmo MD5WithRSA di firma
sig.initSign(kp.getPrivate());//usa la privata per firmare
sig.update(dati);//inserisci i dati in chiaro
byte[] firmati = sig.sign();//firmali e metti in firmati
System.out.println("Firma: " + new BASE64Encoder().encode(firmati));//stampa la firma
sig.initVerify(kp.getPublic());//usa la pubblica per verificare
sig.update(dati);//controlla la firma sui dati dentro l'arry "dati"
if(sig.verify(firmati)) System.out.println("\nFirma valida su dati";);//controlla se sono validi
if(!sig.verify(dati)) System.out.println("\nFirma non valida, dati non ? la firma di dati";);//dimostra che usando i dati in chiaro come firma la verifica fallisce
}

}
-------

Questo esempio funziona l'ho provato(jdk 1.5, secondo lo standard dalla 1.3 in poi funziona).

Per salvare le chiavi esiste una tecnica che si chiama PBE(Password Based Encryption).
Questo argomento e altri sulla cifratura con java li ho trattati in un articolo: pierotofy.it/pages/guide/…

Magari potr? esserti utile, solo una pecca: uso una libreria di terzi visto che quella di Sun ? relataivamente limitata, cmq trovi esempi e libreria tutti qui: pierotofy.it/data/programs/Java/…

Se hai altre domande sempre disponibile, intanto per approfondire al meglio un argomento importante come la sicurezza ti consiglio "Sicurezza in Java" di Jess Garms e Daniel Somerfield, costava 40 euro quando l'ho preso.

ciao
Ultima modifica effettuata da netarrow 11/05/05 17:30
aaa
11/05/05 17:33
netarrow
caucho.com/quercus/faq/…

In quel sito c'? un tipo che ha il tuo stesso problema, magari la soluzione funziona anche a te.

ciao
aaa
12/05/05 16:48
angelo
thanks di tutto, ho installato un pacchetto open source che permette di avere chiavi di qualsiasi
dimensione, fa anche da server per i certificati.

Il tuo articolo mi e' servito a tanto.

Un consiglio, quando c'e' la finestra di login
non si vedono i due input text(login e pass), finche' non li si evidenziano col mouse o non ci si clicca dentro.
Ho konqueror 3.3.2 non so se avete lo stesso problema.
Ciao Ciao :k:
aaa