PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : /etc/shadow



ramrott
05.12.06, 21:21
ich hab eine frage zu der datei /etc/shadow.

im prinzip braeuchte ich nur mal ne schoene doku dazu. man shadow und man 3 crypt kann mir nicht wirklich weiter helfen. mich interessiert, welche hashfunktion zum verschluesseln benutzt wird und ob der string base64 encoded ist.

ich waere superdankbar, wenn mir jemand helfen koennte.

derRichard
05.12.06, 21:44
hallo!

naja, das steht ja alles in der manpage zu shadow.



The encryped password consists of 13 to 24 characters from the 64
characters alphabet a thru z, A thru Z, 0 thru 9, . and /. Optionally it can start with a "$" char-
acter. This means the encrypted password was generated using another (not DES) algorithm. For exam-
ple if it starts with "$1$" it means the MD5-based algorithm was used.


bei alten system ist DES standard, die meisten distributionen verwenden aber md5 und gute verwenden blowfish. :)
mit base64 ist da nichts kodiert.

hth,
//richard

ramrott
05.12.06, 22:00
hallo, danke fuer die antwort.

ich habe meine frage wohl ziemlich unverstaendlich gestellt. sorry. also, die zeichen des passworts [A-Za-z0-9./] lassen doch schon ziemlich auf base64 schliessen, oder?

der hashwert kann ja nicht einfach so gespeichert werden. da kommen ja auf jeden fall viele nichtdruckbare zeichen bei raus.

und was ich halt nicht verstehe ist, dass der string so lang ist. der sieht bei mir so aus

$1$zMIf/VkI$Yu7aGe3fO14eK2Elatgbc/

der gruene teilstring ist der hashwert und wuerde von der laenge her ein md5-hash sein koennen, der mit base64 encoded wurde. denn md5 erzeugt 128bit hashes und das aufgerundet (132bit) durch 6 geteilt (base64 kodiert ja immer sechs bit) wuerde 22 zeichen ergeben.

aber ich finde nicht raus, was der rote teilstring sein soll. ich dachte erst "ah, das salz", aber das ist ja viel zu lang.

danke nochmal!!

derRichard
05.12.06, 22:13
hallo!

am besten du schaust im source der glibc nach, wenn das ganz genau wissen willst.
bei mir jedenfalls unter suse.
schaut so ein string so aus: (die XXX hab ich reingemacht, nicht, dass da jemand mein passwort rausfindet ;))

$2a$05$GrXXXXqZ26BC1qDXXXXYJXXXXXN3MXXXX.t80XXXXE2 XXXXu1U5G

2a heisst, dass es blowfish ist und wie man sieht hat das salz zwei zeichen, wie in der manpage geschrieben.

//richard

ramrott
06.12.06, 14:19
vielleicht stolpert ja nochmal jemand drueber. also:

$<hash-funktion>$<salz>$<hashwert>

und zwar alles als base64. darum sind das salz 8 zeichen (48bit) und der hashwert 22 (128bit).

caspartroy
06.12.06, 16:14
ich kann dir nicht folgen... das salz sind 2 zeichen, und der hashwert mehr als 22.
2 zeichen base64 wären 7-12 bit.
hier von base64 kodierung zu reden macht keinen sinn, man kann den string als base64 kodierung von binärdaten interpretieren, man kann das aber auch sein lassen.
das ist sache der implementierung des verschlüsselungs-algorithmus oder nicht?

unux
07.12.06, 11:59
Hi,

wie du hier (http://www.osix.net/modules/article/?id=571) nachlesen kannst wird bei md5 normalerweise ein zweistelliges salt hergenommen. Ich habe damals ebenfalls ein kleines Perlscript geschrieben um Passworte zu erstellen und habe mich ebenfalls gewundert, dass der Hash der dabei rauskommt 6 Stellen kürzer ist als die PW in /etc/shadow. Somit war meine einzige Erklärung, dass das Salt länger sein musste. Dieses kleine Script hat mir dann meine PW erzeugt:



#!/usr/bin/perl

use Crypt::PasswdMD5;
use Getopt::Std:
use vars qw($opt_p);

use strict;

getopts('p:a');

sub encrypt {
my $passwd = $_[0];
my @pool = ('0' .. '9','a' .. 'z','A' .. 'Z');
my $random = "";

foreach(1 .. 8) {
$random .= $pool[rand @pool];
}

my $unixstyle = "$1$";
my $salt = "$unixstyle$random";

my $encrypted = crypt($passwd,$salt);

print $encrypted;
}

if(defined($opt_p)) {
&encrypt($opt_p);
} else {
print "no password specified, use convertpw.pl -p PASSWORD\n";
}


Greetz

PS.: Das mit der Saltverlängerung gilt nur für MD5 wie man an dem Prefix $1$ erkennen kann

ramrott
07.12.06, 14:24
ich kann dir nicht folgen... das salz sind 2 zeichen, und der hashwert mehr als 22.
2 zeichen base64 wären 7-12 bit.
hier von base64 kodierung zu reden macht keinen sinn, man kann den string als base64 kodierung von binärdaten interpretieren, man kann das aber auch sein lassen.
das ist sache der implementierung des verschlüsselungs-algorithmus oder nicht?

das salz sind 48 bit fuer md5 und base64-kodiert eben 8 zeichen. der hashwert sind 128 bit und base64-kodiert 22 zeichen.

klar macht es sinn, davon zu reden. ich meine ja nicht md5 allgemein, sondern den string in der shadow. und da bedient man sich base64, damit man nur druckbare zeichen hat. warum sollte das keinen sinn ergeben? ;)

sorry, fuer meine umstaendlichen "erklaerungen"!

edit:http://209.85.135.104/search?q=cache:rEv2D0WT9wgJ:https://pi1.informatik.uni-mannheim.de:8443/pub/teaching/sicherheit-2006/uebung3.pdf+uni+mannheim+freiling+passwd&hl=de&gl=de&ct=clnk&cd=1 seite 9 (die koennen das besser als ich erklaeren...)

ramrott
07.12.06, 14:28
...
ja, ich glaube, wir meinen dasselbe. danke! ;)

caspartroy
07.12.06, 15:34
klar macht es sinn, davon zu reden. ich meine ja nicht md5 allgemein, sondern den string in der shadow. und da bedient man sich base64, damit man nur druckbare zeichen hat. warum sollte das keinen sinn ergeben? ;)


weil der /etc/shadow völlig egal ist, was die zeichen bedeuten, dort ist es einfach eine zeichenfolge.
md5 und des sind offenbar so implementiert, dass sie den binären hash-wert base64 kodieren, in bezug auf md5 stimmen auch die restlichen angaben.
ich habe deine frage wohl falsch verstanden, ich dachte, es geht allgemein um die datei /etc/shadow (siehe titel) und nicht speziell um md5


P.S.
der hashwert kann ja nicht einfach so gespeichert werden. da kommen ja auf jeden fall viele nichtdruckbare zeichen bei raus.
auch nicht-druckbare zeichen kann man speichern ;-)

ramrott
07.12.06, 22:20
auch nicht-druckbare zeichen kann man speichern ;-)
aber wir wollen ja nicht, dass wir diese dateien nur mit einem hexeditor angucken koennen. das lassen wir mal schoen die windows-maedchen machen. ;)

danke nochmal!

edit: habe mir meine posts nochmal durchgelesen. wer haette den quatsh auch verstehen koennen?