Ho avuto questa idea qualche ora fa, ma ovviamente esiste già e c'è persino un RFC .. .
Perché non pubblichiamo l'impronta digitale per il certificato SSL / TLS tramite DNS? Abbiamo bisogno di DNSSEC per assicurarci che la risposta sia legittima e dobbiamo assicurarci che i server dei nomi siano in un ambiente sicuro, ma a parte questo non vedo problemi che SSL / TLS non ha già.
Questa modifica sposterebbe l'autorità per proteggere tutto il nostro traffico crittografato dalle autorità di certificazione (CA) ai server dei nomi DNS. Questo potrebbe essere un problema perché in questo caso, tutti i provider DNS (che hanno DNSSEC) dovrebbero diventare ambienti ad alta sicurezza come le CA ora. Ma non dovrebbero essere già tutti i nameserver? La maggior parte dei siti Web utilizza semplicemente http per il traffico sensibile e la maggior parte delle persone non noterebbe se non è presente un lucchetto quando accede a Google. Direi che hanno già un'enorme responsabilità.
Se non ci si fida dei server dei nomi del dominio, potremmo includere invece le impronte digitali nei server di root, ma non sono sicuro di quanto carico extra sarebbe.
Un altro problema è che DNSSEC non è ancora ampiamente implementato. Ma il motivo della mia richiesta è perché l'IETF sta considerando di supportare la crittografia in http / 2.0 senza richiedere la verifica del certificato "per semplificare la distribuzione".
A mio parere, la sicurezza dovrebbe essere fatta correttamente o per nulla. Non dare alle persone un falso senso di sicurezza. Ma se cambieremo comunque i protocolli (aggiorneremo tutti i server web), potremmo anche implementare DNSSEC e farlo nel modo giusto (autenticato).
I problemi / modifiche in breve:
- dobbiamo fidarci dei nameserver (root?) invece di una tonnellata di CA;
- dobbiamo aggiungere un tipo di record dns o estendere l'uso del record sshfp; e
- dobbiamo supportare più ampiamente dnssec.
Mi manca qualcosa? Perché stiamo pagando un dollaro superiore per i certificati SSL / TLS quando tutto ciò che dobbiamo fare è pubblicare l'impronta digitale del certificato su un canale autenticato?
Il punto di crittografia non autenticato in http 2.0 è di incoraggiarlo abilitandolo senza dover modificare alcuna altra configurazione. Sono contrario perché è inutilmente lento (un altro roundtrip per lo scambio di chiavi, che è particolarmente grave all'estero o con qualsiasi perdita di pacchetti) e difficilmente aggiunge sicurezza. Potrebbe anche fornire un falso senso di sicurezza. Dal lato positivo, offusca il traffico.
Questa proposta di utilizzare il DNS rende un po 'più di lavoro implementare la crittografia sui server Web, ma lo rende (almeno quasi) sicuro quanto il normale SSL / TLS mantenendo comunque una disponibilità diffusa di crittografia molto elevata (non mi aspetto che manterremo i prezzi incredibilmente alti per un server dei nomi sshfp / httpfp / tlsfp abilitato come con i certificati). La crittografia non autenticata potrebbe essere ancora l'ultima risorsa quando tutte le altre opzioni (certificato firmato, certificato memorizzato, impronta digitale pubblicata in modo sicuro) non sono disponibili (anche se non dovrebbero essere mostrate all'utente perché fornisce un senso di sicurezza completamente falso), ma io sono non sono sicuro che valga anche il rallentamento.
Se non è possibile utilizzare i server di root per questo, potremmo anche utilizzare i server dei nomi del dominio come "ambienti ragionevolmente sicuri" (normale lucchetto) e utilizzare un certificato firmato da una CA per EV (barra verde). Quindi chiedi alle persone di cercare la barra verde quando fanno banking online. I server dei nomi hanno già una grande responsabilità, quindi potrebbe essere abbastanza sicuro anche se non possiamo aspettarci che siano sicuri come una CA. Almeno sarebbe un sistema molto più flessibile; Sono limitato al mio dominio e a un sottodominio per qualsiasi certificato a prezzi ragionevoli (e il sottodominio è già occupato da "www.").
Di nuovo la mia domanda in breve: c'è qualche ragione per cui non usiamo un sistema simile a SSHFP per https, se DNSSEC erano ampiamente disponibili?