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¶
- EINVAL
- salt hat das falsche Format.
- ENOSYS
- Die Funktion crypt() wurde nicht implementiert, wahrscheinlich
wegen Export-Beschränkungen der USA.
- EPERM
- /proc/sys/crypto/fips_enabled hat einen von Null verschiedenen Wert
und es wurde versucht, einen schwachen Verschlüsselungstyp wie DES
zu verwenden.
ATTRIBUTE¶
Multithreading (siehe pthreads(7))¶
Die Funktion
crypt() ist nicht multithread-fähig.
Die Funktion
crypt_r() ist multithread-fähig.
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.74 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler
gemeldet werden können sowie die aktuelle Version dieser Seite 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>.