Bene, immaginiamo che il server S
fornisca un servizio a un determinato gruppo di client C1
e C2
con autenticazione basata su cert sicuro (si pensi a OpenVPN
, SSH
o altri servizi simili).
-
S
potrebbe utilizzare una CA attendibile o crearne una propria per lasciare cheC1
eC2
sappiano che è il veroS
(cosaOpenVPN
,HTTPS
, ecc. do). Ciò richiede che il certificato CA sia pre-condiviso con ciascun client. -
S
potrebbe presentare il suo certificato solo aC1
eC2
la prima volta che i client si collegano ad esso e il client verificherà se questo certificato è quello atteso (qualiSSH
,Syncthing
, ecc.)) .
Il fatto è:
- Alcuni sistemi (* cough * android ... * cough *) aggiungono semplicemente la CA personalizzata direttamente nel trust store globale (
OpenVPN
). - Anche il formato
p12
è piuttosto conveniente, mentrepem
è terribile per l'utente, ma spesso non abbiamo la scelta (perché ci sono 4 file? qual è la chiave di cui stavi parlando? qual è il certificato privato? ? perchéca.cert
non funziona come mio certificato privato? ...). - Gli utenti non gradiscono / non sono autorizzati a convalidare / digitare elementi su server e client per autenticarsi a vicenda (
Syncthing
). - Tuttavia non possono essere disturbati a controllare accuratamente un hash del certificato (
SSH
).
Un modo (forse terribile) per risolvere questi problemi (e crearne altri) sarebbe utilizzare direttamente S
chiave privata per firmare C1
e C2
certificati:
- Nessuna nuova CA da aggiungere al trust store a livello di sistema.
- Un solo file da gestire in entrambi i formati
p12
epem
. - L'utente non deve accedere a
S
. - L'utente non deve controllare nulla finché si fida del certificato firmato (tramite
HTTPS
/SSH
, ecc.). NB: questo problema di attendibilità è lo stesso quando devi ottenere il certificato CA su ciascun client.
Il fatto è che non ho mai sentito parlare di un simile piano. Penso che sia soprattutto perché non fornisce forti miglioramenti rispetto allo schema basato su CA, ma potrebbe essere dovuto al fatto che l'approccio è errato.
Quindi ci sono delle cattive implicazioni sulla sicurezza derivanti dall'uso di questo tipo di schema?
PS: sto chiedendo per curiosità perché non conosco nessun protocollo che usi questo schema, eppure sembra un po 'più semplice.