Laden...

C#/Flash - Game: Encryption Problem

Erstellt von guest vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.022 Views
Thema geschlossen
G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren
C#/Flash - Game: Encryption Problem

Hallo, ich arbeite momentan an einem Flashgame.
Flash verbindet sich hierbei mit einem C# Server.

Alles funktioniert.
Ich verschlüssle die Nachrichten zwischen Client/Server mithilfe RSA's (public key Verschlüsselung)

Doch ein Problem habe ich:
Wie kann ich dem Client (für die Entschlüsselung) den private Key zukommen lassen?
Über ein Packet senden ist ja keine gute Idee, weil dann ja jemand den private key sniffen kann.

Wie funktioniert das? Habe ich evtl. das Konzept noch nicht ganz begriffen?

extinct

F
10.010 Beiträge seit 2004
vor 11 Jahren

Asymetrische Verschlüsselung bedeutet das mit einem Schlüssel verschlüsselt und mit einem anderen (zugehörigen Schlüssel) entschlüsselt wird.
Der private Schlüssel gehört auf die Server (sichere) Seite, dann kannst Du zum entschlüsseln den public (öffentlich) Key einfach mitgeben.

G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren

Wird nicht mit dem public key verschlüsselt und mit dem private key entschlüsselt?
Weil wenn man mit dem private key verschlüsselt und den public key entschlüsselt, kann ja jeder die Nachricht entschlüsseln, da der Key ja public ist. Nennt man das dann nicht signieren? Oder habe ich einfach das Konzept der asymmetrischen Verschlüsselung nicht verstanden?

extinct

C
2.121 Beiträge seit 2010
vor 11 Jahren

Doch das siehst du schon richtig.
Lies dich in SSL ein, da gibt es ein Verfahren zum Austausch von Schlüsseln. Wie genau das geht weiß ich nicht, aber Browser die auf https Seiten unterwegs sind machen z.B. das gleiche.

Oder einfacher: Generiere im Client ebenfalls einen privaten Schlüssel und übergib den verschlüsselt an den Server (mit privatem Key des Servers).

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo guest,

du hast die Situation, welchen Schlüssel man wofür benutzt, und den Unterschied zwischen Verschlüsseln und Signieren, korrekt beschrieben. Anderseits ist der zweite Satz von FZelle auch richtig. Das heißt, dass der private Schlüssel nicht übertragen werden sollte, sondern nur der öffentliche. Für bidirektionale Kommunikation generiert jeder Teilnehmer also sein eigenes Schlüsselpaar, behält seinen privaten und überträgt den öffentlichen Schlüssel an seinen Kommunikationspartner.

herbivore

PS: Eine Alternative wäre Diffie–Hellman key exchange.

G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren

Ok, also um alles nochmals einfach zusammenzufassen:

  1. Der Server generiert ein Schlüsselpaar
  2. Dann wird das Packet (mit dem public oder private key?) verschlüsselt.
  3. Das Packet wird losgeschickt mit dem public key drin.
  4. Das Packet wird vom client (mit dem public oder private key?) entschlüsselt.
  5. Alle sind glücklich ausser die Cracker.

extinct

1.378 Beiträge seit 2006
vor 11 Jahren
  1. Client verschlüsselt Anfrage an Server mit dem Public-Key des Servers und sendet diese ihm.
  2. Server entschlüsselt Anfrage mit seinem Private Key und Antwortet ggf. in dem er seine Antwort mit dem Public-Key des Clients verschlüsselt und ihm übermittelt.
  3. usw. usf.

Asymetrische Verschlüsselung ist soweit ich mich erinnern kann recht rechenintensiv, weswegen man nach dem Aufbau der Verbindung, innerhalb der asymetrischen Verschlüsselung, einen generierten symetrischen Schlüssel austauschen kann, um dann anschließend symetrisch weiter zu kommunizieren.

Lg, XXX

G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren

Und soll jetzt der Client den private key bekommen, um die Antwort zu entschlüsseln?

extinct

16.835 Beiträge seit 2008
vor 11 Jahren

Wenn beide Seiten den privaten Key kennen ist das relativ sinnfrei.
Der private Key wird immer nur zum Entschlüsseln verwendet.

Willst Du auf beiden Seiten entschlüsseln würde ich es als sauberen Weg bezeichnen, wenn es zwei öffentliche und zwei private Keys gibt - jeweils für Server und Client.
Da sinkt schon mal die Gefahr, dass "jemand" beide private Keys erhält.

Aber eben aufgrund der Last ist xxxprod's genannter Weg eher gängig.

G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren

Ok, und wie sieht das jetzt praktisch aus?
Wie bekommt man das hin, dass beide private keys (der auf dem server und der auf de client) für die Entschlüsselung benutzt werden koennen. Da blick ich nochnicht ganz durch.

extinct

16.835 Beiträge seit 2008
vor 11 Jahren

Google-Suche nach c# asymetric cryptography

Bitte beachte in Zukunft [Hinweis] Wie poste ich richtig? 1.1 und auch 2.3.( Ich hab nämlich keine Lust ständig Deine Full-Quotes zu entfernen 😉

G
guest Themenstarter:in
21 Beiträge seit 2012
vor 11 Jahren

Sowas in der Art habe ich schon 100000000 mal in google eingegeben, bin aber mit den Antworten nicht klar gekommen.

Ich will doch nur wissen, wie das funktioniet, dass beide private keys zum entschlüsseln funtionieren. Ich meine wenn man auf dem Server einen private key generiert und auf dem client einen anderen, kann das ja irgendwie garnicht funktionieren mit dem entschlüsseln. Weil es 2 verschiedene Keys sind.

extinct

D
31 Beiträge seit 2010
vor 11 Jahren

Wieso sollte das nicht funktionieren?!

Server Generiert Schlüsselpar A(privat)/B(öffentlich)
Client Generiert Schlüsselpar X(privat)/Y(öffentlich)
Server sendet seinen öffentlichen Schlüssel (B) an Client. (unverschlüsselt)
client sendet seinen öffentlichen Schlüssel (Y) an Server. (unverschlüsselt)
Server sendet Nachrichten jetzt nur noch mit Y verschlüsselt -> Client kann mit X entschlüsseln.
Client sendet Nachrichten jetzt nur noch mit B verschlüsselt -> Server kann mit A entschlüsseln.

ist das denn so schwer zu verstehen?

1.346 Beiträge seit 2008
vor 11 Jahren

Man kann es auch so machen, dass der Server an den Client den öffentlichen Schlüssel überträgt. Der Client generiert einen zufälligen key für eine symmetrische Verschlüsselung (zB Aes), verschlüsselt den Key mit dem Public key und sendet diesen an den Server. Dieser kann den Schlüssel mit dem Private Key entschlüsseln. Ab da wird dann symmetrisch verschlüsselt. Die asymmetrischen Verschlüsselungsalgorythmen sind auch eher nicht für große Datenmengen zu gebrauchen, eignen sich aber perfekt zum übertragen von symmetrischen Schlüsseln.

Hinweis von herbivore vor 11 Jahren

Spätestens jetzt sollte es aber wirklich klar sein. Es wurde ja nun schon mehrfach konkret gesagt, welcher Teilnehmer welchen Key wofür verwendet.

Thema geschlossen