Asymmetrische Verschlüsselung


  • Mod

    hustbaer schrieb:

    Wird nicht beim Signieren genau das gemacht? Also die Bedeutung von private und public Key umgedreht?

    Die Benutzung ja, aber den private-key halt man ja trotzdem geheim. Das hat cooky451 schon in der ersten Antwort erklärt, warum das geht.

    Was ich mich frage ist, hätte man bei der Erzeugung der beiden Schlüssel auch sagen können, der andere ist nun der public-key? Die beiden Schlüssel werden schließlich auf unterschiedliche Weise erzeugt, also kann es schon einen mathematischen Unterschied machen. Ich frage mich, welchen. Irgendeinen Grund wird es wohl geben müssen, wieso man immer den einen von beiden für die Veröffentlichung nimmt und den anderen geheim hält.



  • Rein mathematisch gesehen sind public und private key doch völlig symmetrisch. Das eine ist halt das Inverse vom anderen. Insofern verstehe ich die Frage nicht. 😕



  • SeppJ schrieb:

    hustbaer schrieb:

    Wird nicht beim Signieren genau das gemacht? Also die Bedeutung von private und public Key umgedreht?

    Die Benutzung ja, aber den private-key halt man ja trotzdem geheim. Das hat cooky451 schon in der ersten Antwort erklärt, warum das geht.

    Upps, hab den Beitrag von cooky nicht so weit gelesen, sorry 🙂

    SeppJ schrieb:

    Was ich mich frage ist, hätte man bei der Erzeugung der beiden Schlüssel auch sagen können, der andere ist nun der public-key? Die beiden Schlüssel werden schließlich auf unterschiedliche Weise erzeugt, also kann es schon einen mathematischen Unterschied machen. Ich frage mich, welchen. Irgendeinen Grund wird es wohl geben müssen, wieso man immer den einen von beiden für die Veröffentlichung nimmt und den anderen geheim hält.

    Naja, wenn die Sache in der anderen Richtung nicht sicher wäre, dann wäre doch auch das Signieren mit RSA nicht sicher. Und das - nehme ich an - wäre dann weithin bekannt.



  • Jester schrieb:

    Rein mathematisch gesehen sind public und private key doch völlig symmetrisch. Das eine ist halt das Inverse vom anderen. Insofern verstehe ich die Frage nicht. 😕

    Das kommt auf das Verfahren an. Bei RSA vielleicht, das habe ich nicht im Kopf, bei den anderen Verfahren müsste man mal schauen. Die Notation ist auf jeden Fall so eindutig gewählt, damit auch Verfahren, die keinen Tausch erlauben, funktionieren.

    @SeppJ
    Beim Signieren wird AFAIK der private key veröffentlicht. Das macht auch Sinn, denn in dem Fall muss der signierende zeigen können, dass er den Schlüssel besitzt der dafür notwendig ist ein Nachricht zu verschlüsseln. Und das ist nach Konvention die Aufgab des public Keys. Ich erinnere mich noch, dass genau dies ein riesiger Knoten bei mir in der Vorlesung war.



  • otze schrieb:

    Jester schrieb:

    Rein mathematisch gesehen sind public und private key doch völlig symmetrisch. Das eine ist halt das Inverse vom anderen. Insofern verstehe ich die Frage nicht. 😕

    Das kommt auf das Verfahren an. Bei RSA vielleicht, das habe ich nicht im Kopf, bei den anderen Verfahren müsste man mal schauen.

    SeppJ hat doch ganz explizit RSA erwähnt.


  • Mod

    otze schrieb:

    @SeppJ
    Beim Signieren wird AFAIK der private key veröffentlicht.

    Nein, nein, nein. Ganz sicher nicht. Das hast du falsch verstanden. Du verschlüsselst die Nachricht (bzw. einen Teil davon) mit dem private-key, so weiß der Empfänger, dass der Autor der Nachricht der Besitzer des geheimen private-keys zum bekannten public-key ist. Der private-key darf niemals, niemals jemandem gezeigt werden.

    hustbaer schrieb:

    Naja, wenn die Sache in der anderen Richtung nicht sicher wäre, dann wäre doch auch das Signieren mit RSA nicht sicher. Und das - nehme ich an - wäre dann weithin bekannt.

    Du kannst aus der verschlüsselten Nachricht nicht auf den Schlüssel zurück rechnen, selbst wenn du die Nachricht kennst. Sonst wäre das Signieren mit RSA nicht sicher. Und das - nehme ich an - wäre dann weithin bekannt.

    Jester schrieb:

    Rein mathematisch gesehen sind public und private key doch völlig symmetrisch. Das eine ist halt das Inverse vom anderen. Insofern verstehe ich die Frage nicht.

    Ahh, das wollte ich wissen. Bloß verstehe ich nicht, wie du zu dieser Aussage kommst 😞
    Ich berechne N=p*q und phi = (p-1) * (q-1). Die Zahl e (encrypt), den späteren public-key, wähle ich teilerfremd zu phi(N) und kleiner als phi(N). Und dann wähle ich d… 💡 … Jetzt habe ich es gerade kapiert, während ich schreibe. Natürlich ist durch die geforderte Beziehung d*e kongruent zu 1 mod phi sicher gestellt, dass d auch eine passende Wahl für e gewesen wäre und umgekehrt. Irgendwie ist mir das bisher nie aufgefallen.



  • SeppJ schrieb:

    hustbaer schrieb:

    Naja, wenn die Sache in der anderen Richtung nicht sicher wäre, dann wäre doch auch das Signieren mit RSA nicht sicher. Und das - nehme ich an - wäre dann weithin bekannt.

    Du kannst aus der verschlüsselten Nachricht nicht auf den Schlüssel zurück rechnen, selbst wenn du die Nachricht kennst. Sonst wäre das Signieren mit RSA nicht sicher. Und das - nehme ich an - wäre dann weithin bekannt.

    Und, wegen der symmetrie, wäre dann ja auch das verschlüsseln mt RSA nicht sicher. Und das wäre wohl wirklich wirklich bekannt. 😉



  • otze schrieb:

    @SeppJ
    Beim Signieren wird AFAIK der private key veröffentlicht.

    Das ist doch Quatsch. Der Private-Key (d) ist per Definition das, was geheim bleibt und der Public-Key (n,e) ist per Definition das, was veröffentlicht wird.

    Encryption: c = m^e mod n
    Decryption: m = c^d mod n

    Signieren: s = m^d mod n
    Verifizier.: m = s^e mod n

    Es gilt: (me)d = m^(e*d) = m^(d*e) = (md)e mod n
    (Das ist das, was Jester mit Symmetrie meint)

    e wird typischerweise sehr klein gewählt (3, 65537 oder so etwas ähnliches) und d ergibt sich aus e und n. Ohne die Primfaktoren von n zu kennen, ist die Berechnung von d aber schwierig. Da d sehr groß ist, ist das Potenzieren mit d sehr aufwändig. Man kann das mit einem Trick noch ein bisschen beschleunigen (chinesischer Restsatz).

    Und natürlich sollte man nicht dasselbe Schlüsselpar sowohl zum Ver/Entschlusseln als auch zum Signieren verwenden. So werden z.b. bei einer aktuellen GnuPG Version per Default zwei RSA Schlüsselpaare erzeugt. Eins zum Signieren und eins für die Ver/Entschlüsselung.

    Das "m" in den obigen Formeln ist auch nicht wirklich eine "Nachricht" sondern ein "verschleierter" (PSS,OAEP) Hash oder symmetrischer Schlüssel.

    Die Botschaft, die jeder mitnehmen sollte: Sowas baut man nicht einfach mal eben so nach. Die sichere Schlüsselerzeugung und Anwendung überlässt man lieber von fachmännischen Händen gebauten und gut getesteten Bibliotheken.



  • dfsdfsdf schrieb:

    Ist es auch möglich, die Bedeutung der Schlüssel umzukehren?
    Also verschlüsseln mit private, entschlüsseln mit public key.

    Bei RSA, ja. Das nennt man dann aber nicht "verschlüsseln", sondern "signieren".

    Verfahren, die auf andere mathematische Probleme zurückgehen sind eher beschränkt auf eine der beiden Aktionen. Aus dem Kopf weiß ich nicht mehr, wie die funktionieren. Es gibt da z.B. die Elgamal-Verschlüsselung. Die hat weniger mit Signaturen zu tun. Aber basierend auf demselben mathematischen Problem gibt es dann auch Signaturverfahren, z.B. DSA. Der Trend scheint aktuell zu sein, letztere Verfahren (Elgamal, DSA) mit elliptischen Kurven zu verheiraten. Das ist einerseits weniger rechenintensiv und andererseits sind die Ergebnisse, also z.B. Signaturen, kürzer. Es gibt meines Wissens nach auch einen nicht zu verachtenden Teil der Kryptopäpste, die dem elliptic curve-Kram etwas mehr Vertrauen als RSA schenken.

    Bzgl RSA kann ich noch den 29C3-Vortrag "Facthacks" empfehlen:
    http://www.youtube.com/watch?v=IuSnY_O8DqQ



  • otze schrieb:

    @SeppJ
    Beim Signieren wird AFAIK der private key veröffentlicht.

    Das ist definitiv Quatsch!


Anmelden zum Antworten