26 Stimmen

Kann man mit einem privaten Schlüssel verschlüsseln und mit einem öffentlichen Schlüssel entschlüsseln?

(Disclaimer: Ich weiß, wenn Sie etwas über Krypto wissen, werden Sie mir wahrscheinlich sagen, warum ich es falsch mache - ich habe genug gegoogelt, um zu wissen, dass dies die typische Antwort zu sein scheint.]

Stellen Sie sich Folgendes vor: Sie haben eine zentrale Behörde, die Anmelde-Cookies für einen bestimmten Bereich ausstellen möchte. Auf dieser Domäne vertrauen Sie nicht unbedingt jedem, aber Sie haben ein paar wichtige Endpunkte, die in der Lage sein sollten, das Cookie zu lesen. Ich sage "einige", aber in der Praxis kann die Zahl der "vertrauenswürdigen" Partner sehr groß sein. Das Cookie enthält nicht viele Informationen - einen Benutzernamen, einen Zeitstempel, ein Ablaufdatum, eine Zufallszahl. Er sollte natürlich aus Leistungsgründen klein bleiben, auch nach der Verschlüsselung (in einem vernünftigen Rahmen). Nun gibt es zwei Sicherheitsprobleme:

1) Wir vertrauen nicht jedem Webserver in dieser Domäne die Benutzerdaten an. Aus diesem Grund sollte die Möglichkeit, das Cookie zu lesen, auf diese vertrauenswürdigen Partner beschränkt werden. 2) Wir vertrauen diesen Partnern zwar, dass sie die Daten unserer Nutzer schützen, möchten aber dennoch, dass die zentrale Stelle fälschungssicher ist (wiederum in einem vernünftigen Rahmen).

Wenn wir nun einen privaten RSA-Schlüssel für die Behörde generieren und ihn geheim halten und den öffentlichen Schlüssel nur an die "vertrauenswürdigen Partner" weitergeben, sollten wir in der Lage sein, mit dem privaten Schlüssel zu verschlüsseln und ihn für jeden lesbar zu machen, der den öffentlichen Schlüssel hat. Was mir nicht ganz klar ist: Müsste die Nachricht immer noch signiert werden, oder wäre die Entschlüsselung ein Beweis dafür, dass sie mit dem privaten Schlüssel erzeugt wurde? Wäre dieses Schema in irgendeiner Weise besser oder schlechter als die Verbreitung eines symmetrischen Schlüssels an alle beteiligten Parteien und die Verwendung dieses Schlüssels zum Verschlüsseln, während der private Schlüssel lediglich zum Signieren verwendet wird? Und natürlich können Sie mir gerne sagen, wie dumm diese Idee ist, aber bedenken Sie, dass praktische Argumente wahrscheinlich überzeugender sind als das Aufwärmen von Alice und Bob.

Oh, und Hinweise zur Implementierung wären willkommen, auch wenn man die Grundlagen bei Google finden kann, wenn es irgendwelche Probleme gibt, wäre das sehr hilfreich!

0voto

Chris Owens Punkte 1017

Als Alternative zu Ihrem Schlüsselverteilungsansatz, der für Ihre Anwendung geeignet sein kann oder auch nicht, können Sie Folgendes verwenden Kerberos verwendet symmetrische Verschlüsselungsschlüssel, einen einzigen hochgradig geschützten Bastion-Server, der das gesamte Schlüsselmaterial kontrolliert, und einen ausgeklügelten Satz von Protokollen (siehe die Needham-Schroder-Protokoll )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X