Punkt-zu-Punkt Verschlüsselung



  • Gerade bin ich dabei mir ein kleines Programm zu entwickeln, mit dem ich Nachrichten von einem Client, über einen Server, zu einen anderem Client schicken kann. Im Grunde ist das auch nicht so schwer, aber ich dachte mir ich probier mal eine Punkt-zu-Punkt Verschlüsselung aus. So dass jedes Gespräch seinen eigenen Key hat.

    Nur verstehe ich nicht ganz, wie das genau funktioniert. Am liebsten wäre mir, dass jeder Client den Key auf dem Client selber speichert. Im Prinzip können dann Gespräche zwischen 2 Clients nur mit diesem Key entschlüsselt werden. Aber ich stehe dann vor dem Problem, dass ein Client dann nicht den Computer wechseln kann und sich von woanders aus einloggt. Da er den Key nicht hat.

    Dann dachte ich, man könnte den Key ja auf dem Server speichern, aber das will ich eigentlich nicht. Ich glaube das steckt auch nicht hinter dem Sinn des Konzepts.

    Müsste man dann theoretisch, wenn der Client sich von woanders einloggt, den Key vom anderen Client abfragen? Damit die Nachrichten wieder entschlüsselt werden können?

    Oder wie genau funktioniert das mit der Punkt-zu-Punkt Verschlüsselung?



  • Dein Problem wurde schon vor Jahren gelöst: nennt sich Asymetrische Verschlüsselung. Du denkst aber aktuell noch in symetrischer Verschlüsselung, die aber nur für eine Person sinnvoll ist. Sobald zwei Personen/Parteien im Spiel sind, hilft das einem nicht weiter.

    https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem

    Wird auch bei OpenPGP und auch bei https benutzt.

    https://de.wikipedia.org/wiki/OpenPGP



  • Die asymmetrische Verschlüsselung war mir schon bekannt. Dann müsste jeder Client eigentlich nur einen privaten Schlüssel haben, da, soweit ich weiß aus dem privatem auch der öffentliche generiert werden kann.

    Ist halt noch die Frage, wo dieser private Schlüssel dann genau liegt? Bei einer Client zu Client Kommunikation wäre es ja sinvoll, diesen auch auf dem Client liegen zu haben. Aber wie gesagt, was ist wenn der Client seinen Rechner wechselt?



  • Hallo

    Wieso sollte er wenn er den Client wechselt nicht einen neuen Schlüssel haben, mit denn dann die Verbindung aufgebaut wird. Punkt-zu-Punkt Verschlüsselung bedeutet ja nur, dass die Verschlüsselung zwischen den Clients ausgehandelt wird, aber nicht das jeder User den gleichen Schlüssel besitzen muss. Außer du willst ihn über den Schlüssel hinweg authentifizieren. Dann muss aber der User selbst dafür verantwortlich sein, dass er seinen Schlüssel von Rechner A nach Rechner B transportiert.

    So ist es ja z.B. auch bei SSH. Wenn du dort mit Schlüsseln arbeitest, dann legst du dir entweder für jeden Rechner auf dem Arbeitest einen eigenen an, oder du legst eine Kopie deines privaten Schlüssel auf jeden Rechner ab.

    Gruß Marc-O



  • Mathematischer Beweis der KRÜPTO Sicherheit!

    Bekannt ist:
    1. Eine One Time Pad Verschlüsselung ist unknackbar sicher
    2. Das erste Bit der Eingabe Daten wird mit One Time Pad verschlüsselt

    Folgerung: Das erste Bit ist unknackbar verschlüsselt!!!

    Das heisst: der Zustand des Ausgabe Bits hat nichts mit dem des
    Orginal Bits zu tun, er ist nicht von reinem Zufall zu unter scheiden.

    Nun wird das nächste Eingangs Bit mit dem vollkommen zufälligen und
    unbekannten vor herigen Orginal Eingangs Bit verschlüsselt!

    Folgerung:Das zweite Bit ist auch unknackbar verschlüsselt!

    Man kann nun sehr gut sehen, wenn man etwas mathematische Kenntnisse
    besitzt- der Fach Mann spricht hier von Induktion-, das jedes darauf
    folgende Bit genauso unknackbar ist !!!!!!1!1!1



  • Ich bin mir noch nicht sicher, aber ich werde es wohl so machen. Jemand startet ein Gespräch und generiert einen Private Key, der bei ihm gespeichert wird. Danach wird ein Public Key erzeugt und zum Empfänger gesendet. Dieser speichert den Key bei sich auf dem Rechner.

    Die Lösung gefällt mir an sich gut, aber bleibt dennoch das Problem, dass man dann an den Rechner gebunden ist. Es sei denn man transferiert die Keys auf einen neuen Rechner. Dafür könnte man ja eine Funktion ins Programm einbauen um die Keys zu exportieren und importieren.



  • Hallo Bennisen,

    es gibt da schon verschiedene Ansätze mit unterschiedlichen Vor- und Nachteilen.

    Der heiße Scheiß für "mobile messaging"-ähnliche Anwendungen ist aktuell das Signal Protokoll, was auch inzwischen bei WhatsApp im Einsatz ist. Schau Dir mal im Wikipedia-Artikel den Abschnitt "Eigenschaften" an. Das ist schon echt nett. Nachteil ist allerdings, dass sich beide Seiten einen Schlüssel merken müssen, der sich regelmäßig ändert. Das macht die Nutzung mit mehreren Clients/Geräten schwierig, weil man einen "Zustand" einer "Chat-Verbindung" irgendwie zwischen den Geräten sicher synchronisieren müsste.

    Wenn Du stattdessen in Richtung OpenPGP gehst, bist du einen "Zustand" einer "Chat-Verbindung" los. OpenPGP ist quasi zustandslos. Du brauchst natürlich die gleichen Schlüssel auf allen Clients aber diese sind langlebig und ändern sich nicht ständig. Damit verlierst Du aber einige der guten Eigenschaften, die das Signal Protokoll so interessant machen: "forward security" und "plausible deniability" (oder die Authentizität von Nachrichten statt forward security).

    Heutzutage, mit der Datensammelwut von ominösen Einrichtungen, ist forward security sehr interessant. Wenn ein Gerät/Client kompromitiert wird, willst du nicht, dass damit auch alle vergangenen verschlüsselten Nachrichten, die vielleicht aufgezeichnet wurden, entschlüsselbar werden. Wenn einem das wichtig ist, müsste man natürlich auch regelmäßig Chats auf dem Gerät/Client löschen. Aber die Schlüssel, die ein Signal/WhatsApp-Client speichert, reichen nicht dazu, vergangene Chiffrate zu entschlüsseln. Das ist ziemlich cool.


Log in to reply