Buongiorno Andrea,

che ne dice di questa scaletta?

 * All'iscrizione al sito, per ogni entità (utenti, membri del
   comitato, amministratori, etc) viene generata lato client una coppia
   di chiavi, privata e pubblica.
 * Entrambe vengono passate lato server e salvate a DB (la privata è
   protetta da passphrase, che può o meno essere la password di login,
   in base ai criteri di sicurezza decisi per password e passphrase)
 * Ad login il sito passa al lato client la sua privata protetta
 * Ogni volta che un'entità deve inviare un messaggio ad una o più
   entità, lo crittografa lato client con la/le chiave/i pubblica/che
   del/dei destinatario/i, che l'applicazione lato server gli fornisce
   a richiesta.
 * L'invio del messaggio consiste nel passaggio dal client del mittente
   al server del messaggio crittografato (e qualunque altro metadato le
   possa essere utile, come ad esempio il/ destinatario/i, timestamp,
   checksum del messaggio in chiaro, etc)
 * Alla prima (o ad ogni, in base al livello di sicurezza che desidera
   ottenere) necessità di decrittografare un messaggio ricevuto,
   l'applicazione lato client richiede l'inserimento della passphrase,
   estrae la chiave privata, decrittografa il messaggio e lo mostra a
   video.

Ovvio che lo spostamento dell'intelligenza lato client richiede un bello sforzo a livello di progettazione e sviluppo, oltre a rendere molto rischiose eventuali vulnerabilità lato client (in particolare xss), ma in questo modo è implementata crittografia end-to-end e direi che, a meno di brute force sulle passphrase delle chiavi private - che comunque può evitare "salando" la chiave privata con una ulteriore password lato client -, è preclusa la possibilità di leggere alcunché ad alcun amministratore o malintenzionato che dovesse prendere il controllo della macchina.

Saluti,

    Andrea Zwirner



On 13/05/2015 09:39, Andrea Ranaldi wrote:
Non so se puó essere utile ma provo a descrivere grossolanamente un
programmino che mi hanno fatto buttare giù al volo e la soluzione che
ho operato.

Titolo: Un portale web, gli utenti devono poter mandare delle
comunicazioni con degli allegati ad un comitato, monitorare gli accessi
ai messaggi e soprattutro io amministratore non voglio e non devo poter
conoscere il contenuto di messaggi ed allegati.

Svolgimento: ad ogni membro del comitato ho creato una chiave rsa, la
privata protetta da password. Quando arriva una comunicazione memorizzo
sul database soltanto il cheksum del testo, id e data. In un'altra
tabella creo un messaggio per ogni membro del comitato con il testo
crittato da una chiave AES  casuale e critto la chiave con la chiave
pubblica del membro destinatario, identica cosa per gli allegati. Ad
ogni accesso al messaggio il membro inserisce il token d'accesso alla
chiave privata, il token d'accesso non viene mai memorizzato. Io non
conosco il token quindi non posso decrittare la chiave aes quindi non
posso conoscere il mesaggio.

E venne il cane che morse il gatto che si mangió il topo....

Debolezze: ho la chiave ssl del webserver, tcpdump su 443 e leggo il
post del token..... ma sarebbe un auto attacco con i diritti di
root.... difficile da impedire :) log esterni per monitorare gli
operazioni dell'amministratore ed è passata la paura.

Ovviamente questa é una soluzione economica e casalinga, dipende dal
grado effettivo di sicurezza di cui necessiti, da me é stata accettata.

Appena avró tempo studieró un modo 'buono ed indolore' per delegare la
decrittazione al client.

Il mio temino da due cent
Andrea
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List


*Andrea Zwirner*
*email*: [email protected]
*mobile*: +39 366 1872016

Linkspirit         Via Luigi Moretti 2 - 33100 Udine UD
*tel:* +39 0432 1845030 - *fax:* +39 0432 309903
*web:* www.linkspirit.it - *email:* [email protected]


Logo Please consider your environmental responsibility before printing this email.


Rispondere a