Ja, DNS ist unsicher. Wenn Sie wirklich wissen möchten, dass Sie mit dem gewünschten Server sprechen, müssen Sie den Server authentifizieren. Also machen wir das. Wir vertrauen nicht darauf, dass DNS sicher ist, und implementieren die Sicherheit, die wir an anderer Stelle benötigen, beispielsweise TLS (Transport Layer Security).
TLS (die moderne Sicherheitsschicht von HTTPS) zwingt den Server dazu, dem Client ein Zertifikat zu senden, das den Namen und den öffentlichen Schlüssel des Servers angibt. Dieses Zertifikat wird von einer vertrauenswürdigen dritten Partei, der Zertifizierungsstelle (Certificate Authority, CA), verschlüsselt signiert. Die CA-Signatur bestätigt, dass das Zertifikat den richtigen öffentlichen Schlüssel für den benannten Server anzeigt.
Um zu beweisen, dass der Server der rechtmäßige Eigentümer des Zertifikats ist (und nicht irgendein Betrüger, der ein gültiges Zertifikat gestohlen hat), beweist der TLS-Handshake, dass er den geheimen privaten Schlüssel kennt, der einen übereinstimmenden Satz mit dem öffentlichen Schlüssel im Zertifikat bildet. Dies geschieht natürlich, ohne den privaten Schlüssel selbst preiszugeben.
Es gibt einen Vorschlag zum Schutz von DNS, der DNSsec genannt wird, aber er hat sich seit Jahren herumgesprochen und scheint nirgendwohin zu gehen. Es kann nie weit verbreitet werden. Es gibt jetzt einen Vorschlag für "DNS über HTTP" (DoH, ausgesprochen "D'oh!"), Der DNS durch HTTPS sichern könnte.