BEZEICHNUNG¶
crypt, crypt_r - Passwort- und Datenverschlüsselung
ÜBERSICHT¶
#define _XOPEN_SOURCE /* siehe feature_test_macros(7) */
#include <unistd.h>
char *crypt(const char *key, const char *salt);
#define _GNU_SOURCE /* Siehe feature_test_macros(7) */
#include <crypt.h>
char *crypt_r(const char *key, const char *salt,
struct crypt_data *data);
Linken Sie mit der Option
-lcrypt.
BESCHREIBUNG¶
crypt() ist die Funktion für die Verschlüsselung von
Passwörtern. Sie beruht auf dem »Data
Encryption«-Standardalgorithmus. Dieser wurde abgewandelt, um (unter
anderem) vom Einsatz von Hardware-Implementierungen von Schlüsselsuchen
abzuschrecken.
key ist das vom Benutzer eingegebene Passwort.
salt ist eine aus zwei Zeichen bestehende Zeichenkette aus dem
Zeichenvorrat [
a–
zA–
Z0–
9./].
Diese Zeichenkette wird dafür verwendet, den Algorithmus auf eine von
4096 unterschiedliche Arten zu beeinflussen.
Aus den untersten sieben Bit jedes der ersten acht Zeichen von
key wird
ein 56-Bit-Schlüssel erzeugt. Dieser 56-Bit-Schlüssel wird
verwendet, um wiederholt eine konstante Zeichenkette zu verschlüsseln
(üblicherweise eine Zeichenkette aus lauter Nullen). Der
zurückgegebene Wert zeigt auf das verschlüsselte Passwort, eine
Reihe von 13 druckbaren ASCII-Zeichen. (Die ersten beiden Zeichen
repräsentieren den Salt selbst.) Der Rückgabewert zeigt auf
statische Daten, deren Inhalt bei jedem Aufruf überschrieben wird.
Warnung: Der Schlüsselraum besteht aus 2**56 gleich 7.2*10^16
möglichen Werten. Eine vollständige Durchsuchung dieses
Schlüsselraums ist mit massiv parallelen Computern möglich. Es ist
Software wie beispielsweise
crack(1) verfügbar und durchsucht den
Teil, der gewöhnlich von Menschen für Passwörter benutzt wird.
Daher sollten Passwörter wenigstens übliche Namen und Wörter
vermeiden. Die Verwendung eines
passwd(1)-Programms, das automatisch
während der Eingabe auf leicht zu knackende Passwörter prüft,
wird empfohlen.
Der DES-Algorithmus selbst hat ein paar Eigenarten, mit denen die Verwendung von
crypt(3) für etwas Anderes als Passwortverschlüsselung eine
sehr schlechte Wahl wird. Wenn Sie vorhaben, die
crypt()-Schnittstelle
für ein kryptografisches Projekt zu verwenden, tun Sie es nicht: Holen
Sie sich ein gutes Buch über Verschlüsselung und eine der
weitläufig verfügbaren DES-Bibliotheken.
crypt_r() ist eine ablaufinvariante Version von
crypt(). Die
Struktur, auf die
data zeigt, wird für die Speicherung von
Ergebnisdaten und Buchhaltungsinformationen verwendet. Der Aufrufende sollte
die Struktur lediglich bereitstellen und
data->initialized auf Null
setzen, bevor
crypt_r() erstmalig aufgerufen wird.
RÜCKGABEWERT¶
Bei Erfolg wird ein Zeiger auf das verschlüsselte Passwort
zurückgegeben. Tritt ein Fehler auf, ist der Rückgabewert NULL.
FEHLER¶
- ENOSYS
- Die Funktion crypt() wurde nicht implementiert,
wahrscheinlich wegen Export-Beschränkungen der U.S.A.
crypt(): SVr4, 4.3BSD, POSIX.1-2001.
crypt_r() ist eine
GNU-Erweiterung.
ANMERKUNGEN¶
Anmerkungen zur Glibc¶
Die Glibc2-Version dieser Funktion unterstützt weitere
Verschlüsselungsalgorithmen.
Wenn
salt eine Zeichenkette ist, die mit den Zeichen
»$
id$« beginnt, denen eine mit »$« abgeschlossene
Zeichenkette folgt:
dann identifiziert
id anstelle des DES-Programms die
Verschlüsselungsmethode und legt fest, wie der Rest der
Passwortzeichenkette interpretiert wird. Die folgenden Werte von
id
werden unterstützt:
ID | Methode |
|
|
1 | MD5 |
|
2a | Blowfish (nicht im Hauptentwicklungszweig der Glibc; |
|
| in einigen Linux-Distributionen hinzugefügt) |
|
. |
|
. |
|
. |
|
. |
|
. |
|
. |
|
5 | SHA-256 (seit Glibc 2.7) |
|
6 | SHA-512 (seit Glibc 2.7) |
|
Also ist $5$
salt$
encrypted ein SHA-256-codiertes Passwort und $6$
salt$
encrypted ist ein SHA-512-codiertes.
»
salt« steht für die bis zu 16 Zeichen, die
»$
id$« im Salt folgen. Der verschlüsselte Teil der
Passwortzeichenkette entspricht dem tatsächlich berechneten Passwort. Die
Länge dieser Zeichenkette ist festgelegt:
MD5 | 22 Zeichen |
|
SHA-256 | 43 Zeichen |
|
SHA-512 | 86 Zeichen |
|
Die Zeichen in »
salt« und »
encrypted« werden
aus dem Vorrat [
a–
zA–
Z0–
9./]
gewählt. In den MD5- und SHA-Implementierungen ist der gesamte
key
signifikant (anstelle nur der ersten acht Byte bei DES).
SIEHE AUCH¶
login(1),
passwd(1),
encrypt(3),
getpass(3),
passwd(5)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.