Sichere Kommunikation 2er Parteien

Sancheck

Legendäres Mitglied
Hallo,
wenn ich eine sichere Kommunikation zwischen 2er Parteien über ein OnlineSkript umsetzen möchte hier meine Idee:

User A hat Passwort
User B hat Passwort

User A kreiert einen Public Key A und einen Private Key A
User B kreiert einen Public Key A und einen Private Key B

Der Private Key von User A wird synchron verschlüsselt mit dem (Passwort von User A+Salt) abgespeichert
Der Private Key von User B wird synchron verschlüsselt mit dem (Passwort von User B+Salt) abgespeichert und kann so nur durch User B entschlüsselt werden.

User A sendet Nachricht an User B
User A verschlüsselt mit Public Key von B und nur B kann entschlüsseln

User B sendet Nachricht an User A
User B verschlüsselt mit Public Key von A und nur A kann entschlüsseln


Abspeichern im System tu ich lediglich den MD5 Hash des Passworts. So kann jemand der sich in die DB hackt, nicht auf die Daten zugreifen.
Weil ihm das Rohpasswort fehlt, das er für das entschlüsseln benötigt, kommt er nicht an die Daten.
 
Moin,

wenn Du auf dem Server entschlüsselst gibt es genug Angriffsvektoren für jeden, der eh schon an Deine DB gelangt ist
wink.gif

Außerdem würde ich - wenn ich ein entsprechend hohes Sicherheitsbedürfnis habe, das Verschlüsselung erfordert - keinem Dienst vertrauen, der technisch in der Lage wäre, die Verschlüsselung selber zu umgehen (im einfachsten Fall könnte Dein Script ja die unverschlüsselten Botschaften oder das unverschlüsselte Passwort in einer zweiten Datenbank mitloggen). Von der unverschlüsselten Übertragung durchs Netz mal ganz zu schweigen.
Nebenbei bemerkt ist MD5 in zeiten von GPU-Cracking hoffnungslos überholt
wink.gif


Ohne sichere End to End Verschlüsselung macht das keinen Sinn - und dann kann man direkt mit den Keys arbeiten und spart sich Passwörter uä.

Krypto-Zeug sollte man den Experten überlassen (und nein, ich bin keiner ^^)
 
Schwachpunkt ist in jedem Fall der Server - die Clientkommunikation kann man auf verschiedenen Wegen sicher machen, z.B. schon nur mit SSL.

Server security ist hier eher gefragt als Crypto.

Dafuer brauchst Du einen Dedicated Server, mit Debian und PHP/Suhosin mit ModSecurity und Fail2ban bin ich bisher gut gefahren.

P.S. eine andere Frage ist, wie Du die Sicherheit der Clients gewaehrleisten moechtest.
 
Die Frage ist halt, welches Sicherheitsbedürfnis man für den Service und den Usern gegenüber erreichen will.

Sicher gibt es nicht, nur "sicherer"
wink.gif


SSL an sich ist mit guten Zertifikaten soweit ich weiß nicht geknackt, kann aber durch MITM-Attacken recht einfach umgangen werden wenn der User nicht aufpasst, von gestohlenen Root-Zertifikaten wie in den letzten Jahren auch vorgekommen, mal ganz zu schweigen. Auch ein Server ist nie 100%ig sicher sobald er eingeschaltet ist.

PH hat natürlich auch recht mit der Client-Seite, ein simpler Keylogger und alles was später an fancy Technik kommt ist für die Katz.

Jeder Punkt in der Kette User -> Netz -> Server -> Applikation -> Datenbank -> und zurück ist ein Angriffsvektor und jeder zusätzliche Punkt außer dem unvermeindlichen Client -> Client ist zusätzliches Risiko.

Eine sehr viel sichere Methode findest du zb hier ganz gut erklärt: Chatcrypt
 
QUOTE (RobertJ @ Mo 10.06.2013, 09:16) ein simpler Keylogger und alles was später an fancy Technik kommt ist für die Katz.

daran hatte ich gedacht - die Kommunikationsanwendung muesste mit einem virtuellem Keyboard arbeiten.
 
Zurück
Oben