Hi Leute,
Anbei eine
DLL mit der das Secure Remote
Password Protocol, kurz SRP, durchgeführt werden kann.
Dabei geht es darum das sich registrierte Clients bei einem Server einloggen können, dort sicher authentifiziert werden und anschließend mit dem Server ein gemeinsammes geheimes
Passwort austauschen. Mit diesem
Passwort werden dann alle nachfolgenden Datenübertragungen verschlüsselt.
Die
DLL "SRPx.dll" enthält nun eine Schnittstelle basierend auf Interfaces und kann auch in anderen Programmiersprachen, die
COM Datentypen unterstützen, benutzt werden.
Implementiert wurde mein Counter-SRP. Dies ist eine Weiterentwicklung vom originalem SRP-6 wie man es im Internet findet. Es gibt einige relevante Unterschiede zum SRP-6a:
- sicherer
- Client kann live sein
Password ändern ohne Neuregistration wie beim SRP-6a
- der Passwordverifier und Salt ändern sich bei jedem Login, statt wie beim SRP-6a einmal fixiert und starr
- durch einen Counter kann der Client überprüfen ob eine gegebenfalls erfolgreiche Brute Force Attacke stattgefunden hat
Als Beispiel zu Benutzung der
DLL habe ich zwei Projekte beigepackt. Beide basieren auf den
INDY TCP/
IP Komponenten und demonstrieren jeweils einen Server und einen Clienten. Ihr müsst also sicherstellen das eure Firewall nicht blockt.
Die ZIP muß mit relativen Ordnern entpackt werden. Danach startet ihr Server.exe und Client.exe. Zuerstmal müsst ihr beim Server einen Benutzer registrieren. Dazu klickt ihr auf den "Register Client" Button, gebt in der InputBox() den Namen ein. Ihr seht dann im Edit daneben einen Registrations-Code bzw. das erste zu benutzende
Password. Wie ihr diesen Registrationsvorgang in eurem eigenen Projekt automatisiert könnt ihr nochmal genauer erfragen.
Nun wechselt ihr zur Client.exe, gebt dort den gleichen Namen ein und im ersten
Password Feld kopiert ihr einfach per Einfügen den Registrations-Code. Im zweiten
Password Edit müsst ihr nun das neue
Password definieren, also euer in Zukunft gültiges. Dann einfach Login Button drücken und in beiden Passwordedits das neue
Password eingeben.
Das Prinzip sollte klar geworden sein. Das neue
Passwort wird durch einen erfolgreichen Login immer autom. zum aktuellen
Passwort.
Ihr könnt nun die Sourcen erweitern um noch mehr Daten verschlüsselt zu übertragen. Oder ihr konnt eure eigene ISRPDatabase Klasse coden um die User Datensätze auf dem Server zb. in einer
SQL Datenbank zu speichern.
Die
DLL basiert auf meinem neuesten Delphi Encryption Compendium.
Gruß Hagen