Allgemein
HIT unterstützt ab sofort (Dez-2004) sichere Datenübertragung mit selbst
implementierten Verschlüsselungsverfahren auf Basis von definierten Standard
Algorithmen und "open source" Routinen.
Arbeitsprinzip
Mit einem asymmetrischen Verschlüsselungsverfahren wird die Anmeldung in HIT
bewerkstelligt; war sie erfolgreich, dann können weitere Meldungen entweder
unverschlüsselt (wie bisher) oder mit einem symmetrischen
Verschlüsselungsverfahren ausgetauscht werden.
Sie erhalten von uns einen Public Key für die asymmetrische Verschlüsselung
während der Anmeldung. Für die Anmeldung müssen Sie wie bisher die
Anmeldedaten wie BNR15, MBN, PIN, MELD_WG
und zusätzlich die Spalten SVR_HELO, RAND_CLI und SESS_KEY
mitliefern. Das SVR_HELO erhalten Sie direkt nach der Verbindung, RAND_CLI
sind irgendwelche zufälligen Daten beliebiger Länge und das SESS_KEY
sind auch beliebige Daten (bis zu einer Länge von 48 Bytes), die dann als
symmetrischer Schlüssel zwischen Server und Ihrem Client verwendet werden
(sofern Sie den Datenaustausch auch verschlüsseln). Der komplette Anmeldestring
wird nun mit dem Public Key verschlüsselt und mit einem vorangestellten $
an den Hitserver gesendet. Der HitServer antwortet Ihnen dann in jedem Fall
unverschlüsselt, ob Ihre Anmeldung erfolgreich war oder nicht.
War sie erfolgreich, können Sie entweder wie bisher unverschlüsselt Daten
austauschen (Sie senden unverschlüsselt und Sie erhalten unverschlüsselt
Antworten) oder aber mit dem von ihnen selbst generierten SESS_KEY
die kompletten Anfragen bzw. Meldungen verschlüsseln und mit einem
vorangestellten # an HIT senden. Sie erhalten dann auch mit
vorangestelltem # eine (oder mehrere) mit Ihrem symmetrischen
Schlüssel verschlüsselte Antwort(en) zurück.
Die Spalte SESS_KEY gibt bei der Anmeldung Aufschluß darüber,
ob die Datenübertragung nach einer erfolgreichen Anmeldung verschlüsselt wird
oder nicht: Wird die Spalte nicht angegeben, dann wird der Datenaustausch
nicht verschlüsselt. Wird sie angegeben, dann müssen sämtliche Anfragen und
sämtliche Antworten damit entschlüsselt werden.
Wichtig ist: Jede Meldung bzw. Abfrage und Antwort wird separat
verschlüsselt, nicht alle Meldungen bzw. Antworten am Stück.
Freigegebener PUBLIC KEY
Folgender Public Key ist für die Verschlüsselung der Anmeldung in HIT zu
verwenden:
480152500100000081009CA3D65EAC3318178F31667C3C5E60EE26DD6B090B2671928F8D461B5987
31AE931A2C8D02B593189DCDF17C591634DE10657AA9957CB6D9952B9040C96536F96A4BFDF0F977
03893EF8D52AA91762B85D010AFCE4C3E6CB0338559DECA54D774A6640CB57B8F169B96ED223000F
C950254646FA8AD7AA4361D1BCAE9694477D00000003010001
(MD5-Hash des Schlüssels: f12f43b039d0ebaac1105ae696682dcf)
Sie müssen auf jeden Fall die Anmelde-Antworten
auf Hinweise bezüglich ungültiger Public Keys überprüfen, da wir
diesen Public Key in (un)regelmäßigen Abständen austauschen werden!
Praktische Anwendung
Beim Verbinden mit dem HitServer erhalten Sie einen Antwortstring der Form
=0:0/42::HitServer bereit. Version 42, 03.11.2004 13-00h. Sie sind mit dem Echtsystem über den Primär-Server verbunden (Server benutzt neue Betriebstabellen/NEWADS) HI-Tierzeit Nov 26, 2004 10-03-03 AMh Challenge -1867540788734295357
Die Daten merken Sie sich komplett (d.h. der vierte Teil der Hit-Antwort,
beginnend mit HitServer bereit. Ver...) als Feld SVR_HELO.
Anschließend generieren Sie sich einen zufälligen Bytestrom für das Feld RAND_CLI
(Länge beliebig, aber ausreichend, z.B: 50 Bytes), gleiches gilt für das Feld SESS_KEY
(max. 48 Bytes). Byteströme müssen generell hexencoded werden.
Der Anmeldestring wird dann wie bisher zusammengestellt und um die drei
genannten Felder erweitert, z.B.
*1:XS:LOGON/BNR15;PIN;MELD_WG;SVR_HELO;RAND_CLI;SESS_KEY:276090000000015;900015;4;HitServer
bereit. Ver...;01234567890ABCDEF;01234567890ABCDEF
Dieser komplette String wird mit dem Public Key verschlüsselt und mit einem $
vorangestellt an HIT gesendet. HIT packt die Daten mit dem nur dem HIT bekannten
Private Key aus, überprüft Ihre Anmeldung und antwortet Ihnen
unverschlüsselt.
Bei erfolgreicher Anmeldung können Sie nun wie bisher unverschlüsselt mit
HIT kommunizieren.
Wollen Sie jedoch die weitere Kommunikation verschlüsseln, verwenden Sie
dafür Ihren selbst generierten SESS_KEY. Bauen Sie wie bisher den
HIT-Befehl zusammen, den Sie an HIT schicken wollen, verschlüsseln den komplett
mit dem SESS_KEY und senden ihn mit einem #
vorangestellt an HIT. HIT packt die Daten mit dem SESS_KEY aus (Sie
haben HIT ja den Schlüssel während der Anmeldung mitgeteilt), führt seine
Aktion(en) aus und antwortet Ihnen mit einer mit SESS_KEY
verschlüsselten Nachricht (auch die ist mit einem #
vorangestellt). Die Antwort(en) müssen Sie dann nur mit Ihrem SESS_KEY
wieder auspacken (ohne das # natürlich) und erhalten die
HIT-Antworten, die Sie wie bisher zerlegen und auswerten.
Wir haben unseren HitBatch dahingehend erweitert,
daß dieser auch mit der hier beschriebenen Methodik verschlüsselt Daten
austauschen kann. Für Selbstprogrammierer steht natürlich auch ein
aktualisiertes HitUpros zur Verfügung (die Klassen HitSecurity und
HitSecurityKeys werden dafür benötigt). |