Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

KC_ENCRYPT - RSA-Schlüsselpaar erzeugen, löschen, auslesen

Mit KC_ENCRYPT können Sie ein neues RSA-Schlüsselpaar für Ihre Anwendung erzeugen, ein RSA-Schlüsselpaar Ihrer Anwendung durch ein neues ersetzen, RSA-Schlüsselpaare löschen und den öffentlichen Schlüssel eines RSA-Schlüsselpaares lesen.

UTM-Anwendungen auf BS2000-Systemen unterstützen auch die Verschlüsselungen auf Verbindungen zu einigen Terminalemulationen. Auf diesen Verbindungen wird jedoch nicht das RSA-Schlüsselpaar von UTM verwendet, sondern ein von VTSU-B erzeugtes. Die Änderungen des RSA-Schlüsselpaares von UTM haben also keine Wirkung auf die Verschlüsselung über VTSU-B.


Voraussetzungen

Diese Funktion können Sie nur einsetzen, wenn die Verschlüsselungsfunktionen verfügbar sind.

Verschlüsselungsverfahren

Für eine erhöhte Sicherheit auf Verbindungen zwischen UTM-Server-Anwendungen und UPIC-Clients bietet openUTM Funktionen zur Verschlüsselung von Passwörtern und Benutzerdaten (Nachrichten) an.

Nähere Informationen zur Verschlüsselung finden Sie im openUTM-Handbuch „Konzepte und Funktionen“ und im openUTM-Handbuch „Anwendungen generieren“. 


Funktionsumfang von KC_ENCRYPT

Ein RSA-Schlüsselpaar, das für eine bestimmte Verschlüsselungsebene gültig ist, wird für alle Client-Verbindungen verwendet, die diese Verschlüsselungsebene verwenden. Aus Sicherheitsgründen sollten Sie deshalb die RSA-Schlüsselpaare Ihrer UTM-Anwendung in regelmäßigen Abständen durch neue RSA-Schlüsselpaare ersetzen. Bei Encryption Level 5 wird der RSA-Schlüssel des Servers nur noch zum Signieren des öffentlichen Diffie-Hellman Schlüssels des Servers verwendet, damit der Client diesen Schlüssel eindeutig dem Server zuordnen kann. Bei diesem Verfahren ist eine längere Nutzung des RSA-Schlüssels weniger kritisch.

Für Verbindungen mit Encryption Level 5 werden ebenfalls RSA-Schlüssel mit 2048 Bits verwendet, das entspricht RSA-Schlüssln der Verschlüsselungsebene 4.

Dazu bietet KC_ENCRYPT folgende Funktionen an:

  • Erzeugen eines neuen RSA-Schlüsselpaares.

    KC_ENCRYPT mit subopcode1=KC_CREATE_KEY veranlasst UTM ein neues RSA-Schlüsselpaar zu erzeugen. UTM setzt dieses neue RSA-Schlüsselpaar jedoch erst dann zur Verschlüsselung ein, wenn Sie es durch einen weiteren KC_ENCRYPT-Aufruf (mit subopcode1=KC_ACTIVATE_KEY) aktivieren.

    Ein neues Schlüsselpaar können Sie nur erzeugen, wenn das zuletzt erzeugte Schlüsselpaar der gleichen Verschlüsselungsebene bereits mit subopcode1=KC_ACTIVATE_KEY aktiviert ist oder mit subopcode1=KC_DELETE_KEY gelöscht wurde, d.h. für die Anwendung darf kein noch nicht aktiviertes Schlüsselpaar der gleichen Verschlüsselungsebene existieren.

  • Löschen eines RSA-Schlüsselpaares.

    Mit KC_ENCRYPT mit subopcode1=KC_DELETE_KEY löschen Sie ein noch nicht aktiviertes Schlüsselpaar, mit subopcode1 = KC_DELETE_ACTIVE_KEY löschen Sie ein aktiviertes Schlüsselpaar.

    Sie können nur aktivierte Schlüsselpaare der Verschlüsselungsebene 4 löschen. Die aktivierten Schlüsselpaare der Verschlüsselungsebene 3 werden von UTM immer benötigt.

  • Aktivieren eines zuvor erzeugten RSA-Schlüsselpaares.

    KC_ENCRYPT mit subopcode1=KC_ACTIVATE_KEY bewirkt, dass ein derzeit benutztes RSA-Schlüsselpaar durch ein mit KC_ENCRYPT erzeugtes Paar ersetzt wird. D.h. beim nächsten Verbindungsaufbau zu einem entsprechend generierten Client wird der öffentliche Schlüssel des neuen RSA-Schlüsselpaares an den Client übertragen.

  • Auslesen eines öffentlichen Schlüssels.

    Mit KC_ENCRYPT subopcode1=KC_READ_NEW_PUBLIC_KEY können Sie den öffentlichen Schlüssel eines noch nicht aktivierten RSA-Schlüsselpaares auslesen.
    Mit KC_ENCRYPT subopcode1=KC_READ_ACTIV_PUBLIC_KEY können Sie den öffentlichen Schlüssel eines aktiven RSA-Schlüsselpaares auslesen.

    Diese Funktion bietet Ihnen eine zusätzliche Möglichkeit, die Sicherheit der Daten auf der Verbindung zu erhöhen:

    Damit ein Client verifizieren kann, ob der über die Verbindung zur UTM-Anwendung empfangene öffentliche Schlüssel auch wirklich von der UTM-Anwendung stammt, sollten Sie den öffentlichen Schlüssel auslesen, über einen getrennten Weg an den Client übertragen und dort hinterlegen.

    Überträgt die UTM-Anwendung jetzt beim nächsten Verbindungsaufbau zum Client den öffentlichen Schlüssel an den Client, dann kann der Client den empfangenen öffentlichen Schlüssel mit dem bei ihm hinterlegten vergleichen.

    Es empfiehlt sich also, den öffentlichen Schlüssel eines neu erzeugten RSA-Schlüsselpaares an alle betroffenen Clients zu verteilen. Betroffene Clients sind die Clients, die die Verschlüsselung der Nachrichten unterstützen. 


Transaktionssicherung / Wirkungsdauer / Cluster

Das Erzeugen, Aktivieren und Löschen eines RSA-Schlüsselpaares unterliegt der Transaktionssicherung. Sie können innerhalb einer Transaktion ein neues Schlüsselpaar erzeugen und aktivieren. Ein neu erzeugter öffentlicher Schlüssel kann erst nach Abschluss der Transaktion gelesen werden.

Ein RSA-Schlüsselpaar bleibt solange aktiv, bis mit KC_ENCRYPT ein neues Schlüsselpaar erzeugt und aktiviert wird bzw. bis zur Neugenerierung der Anwendung. Bei einer Neugenerierung erzeugt UTM automatisch ein neues RSA-Schlüsselpaar, falls für den KDCDEF-Lauf die Anweisung OPTION GEN-RSA-KEYS=YES angegeben wird (Standardeinstellung).

Der Aufruf wirkt über den aktuellen Lauf der Anwendung hinaus.

Das Auslesen eines öffentlichen Schlüssels unterliegt nicht der Transaktionssicherung.

In UTM-Cluster-Anwendungen (Unix-, Linux- und Windows-Systeme) gilt:
Der Aufruf wirkt Cluster-global, d.h.

  • wenn Sie auf einer Knoten-Anwendung mit der KC_ENCRYPT-Funktion ein neues Schlüsselpaar erzeugen, wird dieses Schlüsselpaar auch auf die anderen Knoten-Anwendungen verteilt, so dass alle Knoten-Anwendungen die gleichen Schlüsselpaare besitzen.

  • wenn Sie auf einer Knoten-Anwendung ein vorher erzeugtes Schlüsselpaar aktivieren oder löschen, wird diese Aktion auch auf allen anderen Knoten-Anwendungen nachgezogen. 

Versorgung der zu übergebenden Bereiche

Funktion des Aufrufs

Angabe im

Parameterbereich 1

Identifikations-
bereich

Selektions-bereich

Datenbereich

RSA-Schlüsselpaar erzeugen

subopcode1:
KC_CREATE_KEY
subopcode2:
Verschlüsselungsebene

——

——

——

Nicht aktiviertes RSA-Schlüsselpaar löschen

subopcode1:
KC_DELETE_KEY
subopcode2:
Verschlüsselungsebene

——

——

——

Aktiviertes RSA-Schlüsselpaar löschen

subopcode1:
KC_DELETE_ACTIVE_KEY
subopcode2:
Verschlüsselungsebene

——

——

——

RSA-Schlüsselpaar aktivieren

subopcode1:
KC_ACTIVATE_KEY
subopcode2:
Verschlüsselungsebene

——

——

——

Öffentlichen Schlüssel eines noch nicht aktivierten RSA-Schlüsselpaares auslesen

subopcode1:
KC_READ_NEW_PUBLIC_KEY
subopcode2:
Verschlüsselungsebene

——

——

Zeiger auf einen Datenbereich, in den UTM den öffentlichen Schlüssel zurückliefern kann.

Öffentlichen Schlüssel des zur Zeit aktiven RSA-Schlüsselpaares auslesen

subopcode1:
KC_READ_ACTIV_PUBLIC_KEY
subopcode2:
Verschlüsselungsebene

——

——

Zeiger auf einen Datenbereich,in den UTM den öffentlichen Schlüssel zurückliefern kann.

1 In allen Fällen muss im Parameterbereich der Operationscode KC_ENCRYPT angegeben werden.

Versorgung der Parameter

Parameterbereich

Feldname

Inhalt

version

KC_ADMI_VERSION_1

retcode

KC_RC_NIL

version_data

KC_VERSION_DATA_11

opcode

KC_ENCRYPT

subopcode1

KC_CREATE_KEY / KC_ACTIVATE_KEY / KC_DELETE_KEY / KC_DELETE_ACTIVE_KEY / KC_READ_NEW_PUBLIC_KEY / KC_READ_ACTIV_PUBLIC_KEY

subopcode2

KC_ENC_LEV_3 / KC_ENC_LEV_4

obj_number

0

id_lth

0

select_lth

0

data_lth

Länge des Datenbereichs / 0

Identifikationsbereich

Selektionsbereich

Datenbereich

KDCADMI-Aufruf

KDCADMI (&parameter_area, NULL, NULL, NULL) oder
KDCADMI (&parameter_area, NULL, NULL, &data_area)

Rückgaben von UTM

Parameterbereich

Feldname

Feldinhalt

retcode

Returncode

data_lth_ret

Länge der zurückgelieferten Daten / 0

Datenbereich

Datenstruktur kc_encrypt_str / kc_encrypt_advanced_str / —

subopcode1

Im Feld subopcode1 müssen Sie angeben, welche Aktion UTM durchführen soll. Folgende Subopcodes können Sie angeben:

KC_CREATE_KEY

Es soll ein neues RSA-Schlüsselpaar erzeugt werden.

KC_ACTIVATE_KEY

Ein mit KC_ENCRYPT erzeugtes RSA-Schlüsselpaar soll aktiviert werden.

KC_DELETE_KEY

Ein noch nicht aktiviertes RSA-Schlüsselpaar soll gelöscht werden.

KC_DELETE_ACTIVE_KEY

Ein aktiviertes RSA-Schlüsselpaar soll gelöscht werden. Es können nur die aktivierten Schlüssel der Verschlüsselungsebene 4 gelöscht werden.
Diese Funktion ist nur erlaubt, wenn das Schlüsselpaar bis zum Löschzeitpunkt noch von keinem Objekt verwendet wurde. Diese Funktion können Sie z.B. nach einer Neugenerierung und anschließendem KDCUPD anwenden, um RSA-Schlüssel zu löschen, die in der neuen Generierung nicht mehr benötigt werden.

KC_READ_NEW_PUBLIC_KEY

Der öffentliche Schlüssel eines noch nicht aktivierten RSA-Schlüsselpaares soll ausgelesen werden.

KC_READ_ACTIV_PUBLIC_KEY

Der öffentliche Schlüssel des aktiven RSA-Schlüsselpaares soll ausgelesen werden.

subopcode2

Im Feld subopcode2 müssen Sie angeben, auf welche Verschlüsselungsebene sich die in subopcode1 spezifizierte Aktion bezieht:

KC_ENC_LEV_3

Die Aktion soll für RSA-Schlüssel mit Schlüssellänge 1024 Bits gelten.

KC_ENC_LEV_4

Die Aktion soll für RSA-Schlüssel mit Schlüssellänge 2048 Bits gelten.

data_lth

Im Feld data_lth geben Sie Folgendes an:

  • bei subopcode1=KC_CREATE_KEY, KC_DELETE_KEY, KC_DELETE_ACTIVE_KEY oder KC_ACTIVATE_KEY:
    data_lth=0. Beim Aufruf von KDCADMI sollten Sie für &data_area den Nullpointer an UTM übergeben.

  • bei subopcode1=KC_READ_NEW_PUBLIC_KEY oder KC_READ_ACTIV_PUBLIC_KEY:
    Die Länge des Datenbereichs, in dem UTM den öffentlichen Schlüssel des RSA-Schlüsselpaares zurückliefern soll. Dieser Datenbereich muss die Länge der Datenstruktur kc_encrypt_advanced_str besitzen.
    Beim Aufruf von KDCADMI müssen Sie den Zeiger auf den Datenbereich an UTM übergeben.

retcode

Im Feld retcode liefert UTM den Returncode des Aufrufs zurück. Neben den in Abschnitt „Returncodes" aufgelisteten Returncodes können zusätzlich folgende Returncodes auftreten.

Maincode = KC_MC_REJECTED

Der Aufruf wurde von UTM abgewiesen.

Subcodes:

KC_SC_NO_ENCRYPTION

Verschlüsselung wird nicht unterstützt.

KC_SC_NEW_KEY_ALREADY_EXISTS

Bei subopcode1= KC_CREATE_KEY:
Es wurde bereits ein neues Schlüsselpaar für diese Verschlüsselungsebene erzeugt.

KC_SC_NO_NEW_KEY_EXISTS

Bei subopcode1=KC_READ_NEW_PUBLIC_KEY, KC_ACTIVATE_KEY, KC_DELETE_KEY:
Es existiert kein neuer Schlüssel für die angegebene Verschlüsselungsebene.

KC_SC_NO_ACTIV_KEY_EXISTS

Bei subopcode1= KC_READ_ACTIV_PUBLIC_KEY, KC_DELETE_ACTIVE_KEY:
Es existiert kein aktivierter Schlüssel für die angegebene Verschlüsselungsebene.

KC_SC_IN_USE_DEL_NOT_ALLOWED

Bei subopcode1=KC_DELETE_ACTIVE_KEY:

  • Das Schlüsselpaar für die angegebene Verschlüsselungsebene darf nicht gelöscht werden, weil es noch von mindestens einem Objekt benötigt wird.

  • Es ist nicht erlaubt, ein Schlüsselpaar der Verschlüsselungsebene 3 zu löschen (dieses Schlüsselpaar wird von UTM immer benötigt).

KC_SC_NO_GLOB_CHANG_POSSIBLE

Nur bei UTM-Cluster-Anwendungen:
Keine globalen Administrationsänderungen möglich, da die Generierung der Knoten-Anwendungen zur Zeit nicht konsistent ist.
Maßnahme: Bitte zu einem späteren Zeitpunkt wiederholen.

KC_SC_GLOB_CRE_DEL_LOCKED

Nur bei UTM-Cluster-Anwendungen:
Das Erzeugen, Löschen oder Aktivieren eines RSA-Schlüsselpaares ist zur Zeit nicht möglich, weil in einer Knoten-Anwendung das Erzeugen oder Löschen eines Objekts oder das Erzeugen, Löschen oder Aktivieren eines RSA-Schlüsselpaars noch nicht abgeschlossen ist.
Maßnahme: Bitte zu einem späteren Zeitpunkt wiederholen.

Maincode = KC_MC_RECBUF_FULL


Subcode:

KC_SC_NO_INFO

Der Puffer mit Wiederanlauf-Information ist voll. (Siehe openUTM-Handbuch „Anwendungen generieren“, KDCDEF-Steueranweisung MAX, Parameter RECBUF)

Maincode = KC_MC_REJECTED_CURR

Der Aufruf kann zur Zeit nicht bearbeitet werden.

Subcode:

KC_SC_INVDEF_RUNNING

Nur bei UTM-Cluster-Anwendungen:
Es läuft gerade ein inverser KDCDEF, d.h. der Auftrag kann z.Zt. nicht bearbeitet werden.


data_lth_ret

data_lth_ret enthält die Länge der Daten, die UTM im Datenbereich zurückliefert.

    • bei subopcode1=KC_READ_NEW_PUBLIC_KEY und KC_READ_ACTIV_PUBLIC_KEY ist data_lth_ret != 0.
      Ist die Länge in data_lth_ret kleiner als der bereitgestellte Datenbereich (data_lth), dann ist der Inhalt des Datenbereichs nur in der Länge data_lth_ret definiert.
    • in allen anderen Fällen ist data_lth_ret=0

Datenbereich

Im Fall subopcode1=KC_READ_NEW_PUBLIC_KEY bzw. KC_READ_ACTIV_PUBLIC_KEY liefert UTM im Datenbereich die Datenstruktur kc_encrypt_advanced_str mit dem öffentlichen Schlüssel der angegebenen Verschlüsselungsebene zurück. Bei KC_READ_NEW_PUBLIC_KEY wird der Schlüssel des noch nicht aktivierten RSA-Schlüsselpaares und bei KC_READ_ACTIV_PUBLIC_KEY der Schlüssel des aktiven RSA-Schlüsselpaares zurückgegeben.

Die Datenstruktur kc_encrypt_advanced_str ist folgendermaßen definiert:


struct kc_encrypt_advanced_str

char buf_lth[4];

char en_buffer[2048];

char en_key_lth[4];

Die Felder der Datenstruktur haben folgende Bedeutung:

buf_lth

gibt die verwendete Länge des Datenpuffers en_buffer an.

en_buffer 

enthält den ausgelesenen öffentlichen Schlüssel.

en_key_lth 

länge des Schlüssels (1024 oder 2048).