Mi piacerebbe avere una connessione affidabile (come in TCP) crittografata (autenticità, integrità, riservatezza) tra il programma A e il programma B. Io sono il creatore di entrambi A e B. Voglio A per comunicare solo con B e viceversa. A e B non hanno intenzioni malevole l'una contro l'altra, quindi se A dice a B che è A, B può fidarsi.
Ora ci sono diversi modi per farlo, inclusi, ma non limitati a:
- A e B hanno lo stesso certificato autofirmato
- A e B hanno ciascuno il proprio certificato che è:
- self-signed; in questo caso A aggiunge il certificato di B al suo elenco di autorità di certificazione e viceversa
- firmato dall'altra parte; Credo che ogni parte si fida di sé.
- firmato da me, un'autorità di certificazione con un solo operatore, utilizzando la mia chiave privata.
...
Quale approccio è il migliore e perché?
Sono abbastanza nuovo per la crittografia in generale e trovo questo molto confuso. Sono sicuro che questo è un problema che si presenta frequentemente in molte applicazioni, quindi sono sicuro che ogni approccio ha i suoi pro e contro e che probabilmente non ho nemmeno elencato l'approccio migliore. So che la sicurezza delle informazioni è un campo minato quindi qualsiasi consiglio è il benvenuto.