Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie sicher ist folgende Verschlüsselungs-Idee?
Regenwurm
myCSharp.de - Member



Dabei seit:
Beiträge: 300
Herkunft: Zentralschweiz

Themenstarter:

Wie sicher ist folgende Verschlüsselungs-Idee?

beantworten | zitieren | melden

Hallo zusammen,

Wie vielleicht aus meinem letzten Thread [erledigt] Eigentliches Programm über eine Server-Applikation starten. herauszulesen war, probiere ich mein Programm vor unbefugtem Zugriff "zu schützen".

Nun, da ihr mir von der Methode des direkten Programmes über einen Launcher laden abgeraten habt, dachte ich mir, dass ich wichtige Packete die vom Server -> Client gesendet werden einfach verschlüssle.

Jetzt ist die Frage, wie sicher ist das Ganze?

Das Ganze ist so aufgebaut dass der Server & der Client einen identischen public Key besitzen (sei es mal 1234).

Sobald der Client sich nun mit dem Server verbindet, sendet der Server dem Client einen private key (der jedesmal neu & einzigartig generiert wird).
Dieser wird jedoch nicht roh übergeben, sondern mit dem public key verschlüsselt.
Alle weiteren wichtigen Packete die der Server dem Client senden muss, werden nun mit dem private key verschlüsselt.

Der Sinn dahinter wäre, dass niemand den Packetverlauf "einfach so" ablesen könnte.
Das einzige Problem was ich sehe ist, dass jemand irgendwie den hart gecodeten public key rausfindet. Ist das machbar?

Und wie sicher ist sonst das Ganze?


Gruss,
Regenwurm
ServiceStack & Angular = =)
private Nachricht | Beiträge des Benutzers
der-schlingel
myCSharp.de - Member

Avatar #avatar-3239.jpg


Dabei seit:
Beiträge: 820
Herkunft: Österreich/Wien

beantworten | zitieren | melden

Ja natürlich ist das möglich. Denn irgendwo muss er im Code stehen und dort greift schon der Reflector.

Außerdem finde ich die Vorstellung, dass du einen fixen Public-Key hast der auf beiden Seiten gleich ist und dazu ständig einen neue Private-Keys ermittelst simpel gesagt abenteuerlich. (Gibt es da schon eine Implementierung?)

Außerdem: So wie ich das verstanden habe, werden die Pakete ja dann doch entschlüsselt damit sie verwendet werden können. An diesem Punkt kann dann sowieso jeder mitlesen.
As a man thinketh in his heart, so he is.
- Jun Fan
Es gibt nichts Gutes, außer man tut es.
- Erich Kästner
Krawutzi-Kaputzi
- Kasperl
private Nachricht | Beiträge des Benutzers
Regenwurm
myCSharp.de - Member



Dabei seit:
Beiträge: 300
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Der Client ist selbstverständlich obfuscated.
Ja, die Implementierung besteht bereits.

ok.. das ist natürlich - sch... ;)


gruss
ServiceStack & Angular = =)
private Nachricht | Beiträge des Benutzers
Timur Zanagar
myCSharp.de - Member

Avatar #avatar-3412.jpg


Dabei seit:
Beiträge: 1559

beantworten | zitieren | melden

Hallo Regenwurm,

Ich würde das ganze überhaupt nicht selber schreiben, sondern die Funktion vom Betriebssystem nutzen.

Du kannst über Gruppenrichtlinien den kompletten Netzwerkverkehr verschlüsseln lassen und du selber musst dich nicht darum kümmern. Das wird z.B. auf den Buchhaltungsrechnern verwendet.
private Nachricht | Beiträge des Benutzers
Zicore
myCSharp.de - Member



Dabei seit:
Beiträge: 413

beantworten | zitieren | melden

Hallo Regenwurm,

den Public key kann man irgendwie sowieso auslesen.
Darum ist er auch public.

Du kannst es aber so machen, das du Packete mit public key verschlüsselst die sich nur mit dem Private key entschlüsseln lassen :)

Allerdings halte ich das ganze immernoch nicht für Sinnvoll :)

mit einem Obfusktiertem code macht man es den leuten schon schwer genug.

André
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

huhu,

Wenn dann gehst Du die Sache eh verkehrtherum an.

Wenn ich einen Public-Key von A besitze, dann kann ich damit etwas verschlüsseln, was nur noch mit dem Private-Key von A entschlüsselt werden kann.

Also müssen Server und Client die public-Keys tauschen. Das läuft dann z.B. so:

Server zu Client Kommunikation:
Server verschlüsselt mit pub-Key-Client => Client entschlüsselt mit PrivKeyClient
Client zu Server Kommunikation:
Client verschlüsselt mit pub-Key-Serve r=> Server entschlüsselt mit PrivKeyServer

Allerdings ist dann immer nur die Verbindung verschlüsselt. Die Daten lokal musst du ja entschlüsseln um sie nutzen zu können, damit sind sie zu diesem Zeitpunkt auch immer abgreifbar.

:-)

Xynratron

PS: die Schlüssel kann man auch zur Laufzeit erzeugen und dann tauschen. Dann brauchts keine fix hinterlegten Schlüssel.
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers