Cifrare Chiave pubRSA Client con chiave pubRSA Server

di il
1 risposte

Cifrare Chiave pubRSA Client con chiave pubRSA Server

Ciao a tutti,
e da qualche giorno che provo ad implementare il protocollo di sicurezza che mi sono creato.
Tale protocollo è un ibrido tra Crittografia a chiave pubblica e a chiave simmetrica.
Praticamente il fine è avere la mutua autenticazione tra due dispositivi, tramite un server sicuro a cui entrambi sono registrati, che farà da garante.

Questo è la parte del protocollo che mi da problemi, uso la tipica convenzione crittografica(Alice,Bob,ecc..):

1. Registrazione Alice(dispositivo), con ricezione chiave pubblica del
Server per poterlo:
(1) Alice ? CA: {Alice, Server}KPub CA
(2) CA ? Alice: { KPub S }KPriv CA
(3) Alice ? Server: {Username, Password, NA, KPub A} KPub S
(4) Server ? Alice : { {KAS}KPriv S , NA , OK/Error,} KPub A


KAS è la chiave simmetrica, che conoscono solo il Server e Alice.
KPriv S è la chiave segreta del Server, usata come firma digitale.
KPub S è la chiave pubblica del Server.
KPub A è la chiave pubblica di Alice.
K Pub CA è la chiave pubblica della CA, generata dalla CA ed installata nel software
dei Client.
KPriv CA è la chiave privata della CA, generata dalla CA.
NA è il parametro nonce che Alice invia al Server e che il Sever rinvia ad Alice per
dimostrare che è stato lui ad inviare il messaggio, senza di esso Eve che intercetta il
messaggio potrebbe disturbare la comunicazione.


Ok. Mi sono creato un certificato con keytool Java e ho estratto le chiavi RSA(2048) pub e priv, che saranno del Server, questo perchè non ho una CA e quindi simulo la cosa così.
Ora arriva il dunque, cioè quando vado a creare il messaggio (3) Alice ? Server: {Username, Password, NA, KPub A} KPub S , dove cifro i dati utente e la keyPub utente con la keyPub del Server, in java mi da errore, dicendomi che supero il limite di byte che possono essere cifrati:

javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes
	at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:337)
	at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:382)
	at javax.crypto.Cipher.doFinal(Cipher.java:2086)
	at app.ClientRSA.main(ClientRSA.java:105)
dimenticavo di dire che metto tutti i dati in un oggetto JSON e lo cifro:

{"pubKey": "(chiave pubblica)", "usename":"Pippo","nonce":55,"password":"pippo2000"}
quindi creo un nuovo oggetto JSON e ci metto dentro il testo cifrato, e lo invio al Server.

Se cifro solo i dati funziona tutto, ma se metto la pubKey(che è bella grande devo diere) anche, crasha.

Qualcuno conosce un codifica snella da usare, altre librerie RSA(tipo openSSL)che non danno questi problemi, oppure bho ? qualsisi consiglio è ben accetto!:D

Grazie!
Ciao.

1 Risposte

  • Re: Cifrare Chiave pubRSA Client con chiave pubRSA Server

    Io ho un problema diverso magari tu lo hai già fatto
    CLIENT RSA verso REST WS
    Devo svolgere un esercizio
    Mi è stato dato compito di creare un RSA client .
    MI hanno dato due file e le API di un servizio REST a cui fare la chiamata .

    un file client-rsa-private-key.pem
    un file client-rsa-public-key.pub

    un indirizzo https://....../signature
    protocollo SHA

    é la prima volta che creo un client così
    non mi dovevano dare anche un certificato ?
    Avete dei link dove possa trovare esempi ? non ne ho trovati molti on line
    Non so bene da dove iniziare . devo usare keytool?
Devi accedere o registrarti per scrivere nel forum
1 risposte