Wie verwende ich Argon2 mit Salt aus einer Binärdatei?

Wie verwende ich Argon2 mit Salt aus einer Binärdatei?

Im Linux-Programm Argon2müssen wir das Salt in der Befehlszeile angeben. Dadurch beschränkt sich das Salt auf druckbare Zeichen. Wie können wir eine Binärzeichenfolge als Salt verwenden?

# argon2 -h

Usage:  argon2 [-h] salt [-i|-d|-id] [-t iterations] [-m log2(memory in KiB) | -k memory in KiB] [-p parallelism] [-l hash length] [-e|-r] [-v (10|13)]
        Password is read from stdin
Parameters:
        salt            The salt to use, at least 8 characters
        -i              Use Argon2i (this is the default)
        -d              Use Argon2d instead of Argon2i
        -id             Use Argon2id instead of Argon2i
        -t N            Sets the number of iterations to N (default = 3)
        -m N            Sets the memory usage of 2^N KiB (default 12)
        -k N            Sets the memory usage of N KiB (default 4096)
        -p N            Sets parallelism to N threads (default 1)
        -l N            Sets hash output length to N bytes (default 32)
        -e              Output only encoded hash
        -r              Output only the raw bytes of the hash
        -v (10|13)      Argon2 version (defaults to the most recent version, currently 13)
        -h              Print argon2 usage

Ich habe versucht, \x0Adie Notation zu verwenden, aber es funktioniert nicht. Siehe unten, \x0Aund es \x0awerden unterschiedliche Hashes erzeugt.

# cat /tmp/keyfile | argon2 "\x0A\x0B\x0C\x0D\x1A\x1B\x1C\x1D" -id -t 4 -m 5 -p 1 -l 64 -r

6694bba14b3955a77beea3fb4c6018bd86953627949df2bc7e57bc7597519d2fed64a24380757bf6d963115656ce0ddcf59b2504b736036c239101c3e069849b

# cat /tmp/keyfile | argon2 "\x0a\x0B\x0C\x0D\x1A\x1B\x1C\x1D" -id -t 4 -m 5 -p 1 -l 64 -r 

3e97b90537a9ecdceaee638aee2b122c89a2cc3e03630bac31cf72c9b7e3e0565a4c3945eb7fc2a04922bb1453cc5fdafc3303327097749b0ceb87111cd1349c

Für zusätzliche Informationen würde ich gerne Argon verwenden, um die PBKDF von LUKS zu simulieren.

Antwort1

In der Funktionsanforderung argon2-ausführbare Datei: Fügen Sie die Option -b hinzu, die es ermöglicht, das Salt in Base64-Kodierung bereitzustellen #264, ein Antwort vom Autor wurde ein neuer -bParameter erwähnt, der das Salt im Base64-Format verwendet.

Die Quellen von Argon2 scheinen tatsächlich aktueller zu sein als die Veröffentlichung.

Der Schalter soll verwendet werden als:

argon2 <base64-encoding> -b

Möglicherweise müssen Sie Argon2 aus dem Quellcode kompilieren, um die neueste Version mit der -bOption zu erhalten. Wenn es immer noch nicht funktioniert, fragen Sie den Autor, der als „charno“ identifiziert wird.

Antwort2

Ich finde, dass nur catdie Datei in einer inneren Shell funktionieren würde.

% xxd argon2id.salt 
00000000: abbc 1b5b d919 2bce 0459 1c31 97cc 03d9  ...[..+..Y.1....
00000010: 135a 6f54 6a1b 81b8 c693 0e19 d1a0 0c15  .ZoTj...........

% cat keyfile | argon2 "$(cat argon2id.salt)" -id -t 4 -m 5 -p 1 -l 64
Type:           Argon2id
Iterations:     4
Memory:         32 KiB
Parallelism:    1
Hash:           83ed8343d0539ba4f44fd79ac1becce1c7dd5001b7098f0cfb6a6cc7a07123890ccafb4cf8b7a8cb3ba1475e738f1268fb66eb89c42faf8460272878781cd952
Encoded:        $argon2id$v=19$m=32,t=4,p=1$q7wbW9kZK84EWRwxl8wD2RNab1RqG4G4xpMOGdGgDBU$g+2DQ9BTm6T0T9eawb7M4cfdUAG3CY8M+2psx6BxI4kMyvtM+LeoyzuhR15zjxJo+2bricQvr4RgJyh4eBzZUg
0.000 seconds
Verification ok

Auch die Sonderzeichen machen dieses Spielzeug nicht kaputt.

% xxd another.salt 
00000000: 6027 2228 2960 2722 2829 6027 2228 2960  `'"()`'"()`'"()`
00000010: 2722 2829 6027 2228 2960 2722 2829 6027  '"()`'"()`'"()`'
00000020: 2228 29                              

% cat keyfile| argon2 "$(cat another.salt)" -id -t 4 -m 5 -p 1 -l 64   
Type:           Argon2id
Iterations:     4
Memory:         32 KiB
Parallelism:    1
Hash:           c5de872b35447ad75b3a9581fb1cf85a31ae61d92594b61888e8ca4701c32b13639656f5222cde7e5cb59be0731e0782871315747f542af0941cecfcfecb6027
Encoded:        $argon2id$v=19$m=32,t=4,p=1$YCciKClgJyIoKWAnIigpYCciKClgJyIoKWAnIigpYCciKCk$xd6HKzVEetdbOpWB+xz4WjGuYdkllLYYiOjKRwHDKxNjllb1Iizefly1m+BzHgeChxMVdH9UKvCUHOz8/stgJw
0.000 seconds
Verification ok

verwandte Informationen