Sto lavorando a un progetto per animali domestici che (alla fine, quando è pronto) consentirà trasferimenti di file sicuri (c'è di più oltre a questo, ma il resto non è particolarmente rilevante). Mi piacerebbe utilizzare la libreria OpenSSL, poiché sembra essere la libreria di crittografia gratuita più completa (e ho bisogno di supporto per la crittografia simmetrica di base e l'hashing, oltre a SSL/TLS).SSL/TLS senza certificati
Sto cercando di implementare uno schema di sicurezza simile a in SSH. Fondamentalmente, un utente si collegava al mio computer con TLSv1 (SSLv3.1). Mi piacerebbe che la connessione avesse successo indipendentemente dalla sicurezza. Quindi, voglio essere in grado di ispezionare il pubblico chiave (non un intero certificato) che l'utente ha utilizzato. Tale chiave sarebbe confrontata con le chiavi pubbliche conosciute e, se corrispondesse, l'utente sarebbe autorizzato ad accedere a un determinato insieme di comandi. Se non corrispondesse, l'utente avrebbe la possibilità di utilizzare la connessione per richiedere l'aggiunta della sua chiave pubblica alla mia raccolta, ma a parte questo non sarebbe in grado di accedere ai miei servizi.
Non ho alcun bisogno particolare di certificati qui. Sarebbe molto più semplice per me se potessi saltare tutti i dettagli del certificato e lavorare solo con le chiavi di crittografia non elaborate. Questo perché questo modello segue un modello di web-of-trust, non il modello gerarchico utilizzato dalla maggior parte delle connessioni SSL/TLS, quindi non ho bisogno di certificati CA o firmati.
Sfortunatamente, la documentazione della maggior parte di OpenSSL è, beh, inesistente. Tutti gli articoli pertinenti che trovo sembrano occupati con l'impostazione di una connessione SSL/TLS "standard", in cui il certificato del server viene verificato fino a un insieme di certificati radice. Questo può essere utile, ma è difficile per me capire come far funzionare queste connessioni SSL non tradizionali.
Qualcuno può suggerire qualche articolo o documentazione che potrebbe aiutarmi a capire come realizzare questo?
(L'uso di OpenSSL non è impostato su pietra e potrei passare a un'altra libreria se fornisce un modo migliore per farlo, oltre a hashing [SHA-512] e crittografia simmetrica [AES]. m mirando a indirizzare Linux, ma sarebbe bello se il prodotto finale fosse trasferibile a Windows, così anche i miei amici potrebbero usarlo.)
Confrontare una chiave pubblica con un elenco di chiavi pubbliche consiste essenzialmente nell'utilizzare una password, che sconfigge l'intera PKI-ness di https e ssl. Il suggerimento di creare e utilizzare certificati autofirmati è buono se si controllano sia il software client che quello server (in modo che sia possibile configurare la relazione di fiducia). –
@AdamLiss, no, non è uguale alla password: l'utente non deve mai inviare la chiave privata, mentre l'utente dovrebbe inviare la password. (E confrontare i certificati autofirmati in una lista equivale a paragonare le loro chiavi pubbliche.) – Bruno
Tuttavia, non sto utilizzando la PKI. L'idea è che se sei il mio "amico" (ho la tua chiave pubblica/cert), puoi scaricare i file (che specifichi) dal mio computer PLUS che posso scaricare da MY friends. Il problema è che non puoi vedere da dove provengono i file (cioè, se A e B sono amici e B e C sono amici, A può scaricare da C a B, ma non sa nulla di C) . Almeno, questa è l'idea in poche parole. [OneSwarm] (http://www.oneswarm.org/) mi ha dato l'ispirazione per questo progetto. – Ethan