Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

Client<->Server Authentifizierungsproblem

Diskussion: Client<->Server Authentifizierungsproblem im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige Hoi, mal wieder was von mir Ich frag mich hier gerade, ob es eine Methode gibt, mit die eine ...

Antwort
Alt 09.09.10, 02:30   #1 (permalink)
 
Registriert seit: 12.01.09
lone.wolf Leistung: Z3
lone.wolf eine Nachricht über AIM schicken
Likes: 1
Standard Client<->Server Authentifizierungsproblem

Anzeige

Hoi, mal wieder was von mir

Ich frag mich hier gerade, ob es eine Methode gibt, mit die eine Server Anwendung EINDEUTIG feststellen kann, dass es sich bei den zu ihm verbindenden Clienten um einen für den Server speziell entwickelte Clienten handelt.

Falls das Problem nicht in diese Sparte passt, wäre ich sehr erfreut darüber, wenn ein Mod sich darum kümmern könnte.

Mein bisheriger Gedanke:
-Server generiert einen Buffer, verschlüsselt es mit <Server.PrivatKey> und schickt es dem Client
-Client entschlüsselt mit <Server.PublicKey>, ~verunstaltet den Buffer, verschlüsselt ihn mit <Client.PrivatKey> und schickt es dem Server
- Server entschlüsselt mit <Client.PublicKey> und prüft, ob der Buffer dem vorberechnetten (siehe Veruntaltung) entspricht.

Die Schwachstelle hier ist, dass man eine Applikation zu 100% reverse-engineer'en kann. Somit wären die Keys im Clienten aufdeckbar und joa... der Gedanke ist leider Kloreif. Und sonst fällt mir auch nichts ein.

Gute Nacht *gähn,
MfG


Geändert von lone.wolf (09.09.10 um 02:34 Uhr)
lone.wolf ist offline   Mit Zitat antworten
Alt 09.09.10, 16:00   #2 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

Hardwaretokens sind vermutlich keine Option. Man könnte den Server dem Clienten auch Assembler schicken, den der dann ausführen soll. Ist zwar ne Top-Sicherheitslücke aber relativ schwer zu knacken, denke ich...
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 09.09.10, 19:33   #3 (permalink)
 
Registriert seit: 05.10.05
Inliferty Leistung: 8086
Inliferty eine Nachricht über ICQ schicken
Likes: 5
Standard

Zitat:
Zitat von csde_rats Beitrag anzeigen
Hardwaretokens sind vermutlich keine Option. Man könnte den Server dem Clienten auch Assembler schicken, den der dann ausführen soll. Ist zwar ne Top-Sicherheitslücke aber relativ schwer zu knacken, denke ich...
Ein Hardwaretoken würde nur den Client-PC identifizieren jedoch nicht die Applikation selbst.
Zum gesendeten Assemblercode - Warum sollte die nachgebaute Applikation nicht den Code ausführen?

lone.wolf so wie du dein Problem schilderst ist es 100% nicht möglich die Applikation genau zu identifizieren.
Natürlich kann man den Aufwand jedoch hoch halten, nur steht dann irgendwann nicht der Sinn des Programmes im Hintergrund?

MfG
Inliferty
Inliferty ist offline   Mit Zitat antworten
Alt 09.09.10, 20:03   #4 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

Weil ein manipulierter Server dann beliebigen Code ausführen kann!?
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 09.09.10, 22:53   #5 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von lone.wolf Beitrag anzeigen
Hoi, mal wieder was von mir

Ich frag mich hier gerade, ob es eine Methode gibt, mit die eine Server Anwendung EINDEUTIG feststellen kann, dass es sich bei den zu ihm verbindenden Clienten um einen für den Server speziell entwickelte Clienten handelt.
Verstehe ich das richtig?
Du willst also, dass nur eine ganz bestimmte Applikation mit dem Server kommunizieren kann?

Um das wirklich sicher zu machen, würde ich einen RSA verschlüsselten Diffie-Hellman einsetzen. Ist zwar extrem viel Overhead, aber sicherer geht es wohl im Moment nicht.
Knackpunkt ist in deinem Szenario dann, dass du den privaten Schlüssel aus Hardware-Spezifischen Faktoren des Klienten bildest und dem Server den öffentlichen Schlüssel hinterlässt - Jetzt nicht beirren lassen, die Rollen der Schlüssel müssen natürlich getauscht werden, was aber keine Rolle spielt
blue182 ist offline   Mit Zitat antworten
Alt 09.09.10, 23:55   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
man könnte hier mit clientseitigen SSL-Zertifikaten arbeiten, so könnte sich sowohl der Server beim Client ausweisen, als auch der Client beim Server.

Alternativ bietet sich noch das Challenge-Response-Protokoll an. Der Server sendet eine Zufallszahl an den Client, der Client signiert diese Zahl (z.B. mit RSA 'entschlüsseln') und der Server überprüft dann die Signatur (z.B. bei RSA mit dem public key verschlüsseln).

Dabei hat der Server den Public-Key des Clients zuvor gespeichert und im Client wird der private Key mitgeliefert.

So erfolgt aber nur die Authentifizierung, man müsste dann noch gucken wie man die Verbindung sichert (z.B. zuvor per Diffie-Hellman einen Schlüssel austauschen).
Das Challenge-Response-Protokoll wäre eine Vereinfachung von der Authentifizierung per Client-SSL-Zertifikat. Um beides zu haben (sichere Verbindung UND gegenseitige Authentifizierung), wäre in der Tat SSL mit Server und Client-Zertifikat zu empfehlen, insbesondere da es dort schon viele fertige Implementierungen gibt.


Allerdings, wenn ich dich richtig verstanden habe, machst du dir auch sorgen, dass jemand auf Clientseite angreifen könnte und das Programm stehlen könnte und wo anders ausführen könnte.
Dies ist in der Tat ein Problem und lässt sich mit Kryptographie selber nicht lösen.

Das sicherste wäre ein Hardware-Token bzw. eine Smartcard, die man dem legitimen Benutzer aushänigt. Dieser würde dann die entsprechenden kritischen Operationen durchführen.

Dies ist aber denk ich mal wenig praktisch. Ansonsten musst du dein Programm so gegen reverse-engineering schützen, dass die Geheimisse geschützt bleiben. Das dies funktioniert, zeigt z.B. Microsoft, Skype und diverse Computerspielehersteller.
Da diese Schutzmechanismen auf Geheimhaltung basieren, wo genau die geheimen Daten nun abgespeichert werden, findet man kein Patentrezept wie man dies anstellt. Überlicherweise erfordern diese Programme eine Online-Registeriung.

Man könnte es so machen, dass der User einen Aktivierungscode bekommt. Dann nach der (erfolgreichen) Registeriung könnte der Client ein entsprechendes SSL-Clientzertifikat runterladen und es zukünftig zur Kommunikation nutzen. Dieses müsste aber entsprechend gut im Dateisystem / auf dem Computer versteckt werden, so dass ein Angreifer es nicht finden kann.

Evt. ist auch der Microsoft Key Container nützlich, sofern die Applikation für Windows gedacht ist.

Hoffe das hilft weiter
Elderan ist offline   Mit Zitat antworten
Alt 10.09.10, 00:05   #7 (permalink)
 
Registriert seit: 05.10.05
Inliferty Leistung: 8086
Inliferty eine Nachricht über ICQ schicken
Likes: 5
Standard

Zitat:
Zitat von csde_rats Beitrag anzeigen
Weil ein manipulierter Server dann beliebigen Code ausführen kann!?
Das ist schon klar, aber es geht hier nicht um manipulierte Server
Und wenn wir uns ehrlich sind:
Ließt du bei jedem Update deines Anti-Virus, Firewall, Firefox, Chrome, ... den Changelog und überprüfst nachher noch ob es wirklich ein Update des Herstellers ist?
Und nichteinmal dann ist sicher, ob die Datei nicht kompromittiert wurde.
Ein Beispiel das mir jetzt gerade dazu einfällt wäre eine frühere Version von putty.

@blue182:
Soweit ich dein Konzept verstanden habe willst du den Schlüssel aus der Hardware bastln.
Problem wäre hier wiederrum, das nur die Hardware, jedoch nicht die Software verifiziert für den Gebrauch ist.

MfG
Inliferty
Inliferty ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » Client<->Server Authentifizierungsproblem
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61