Im Linux-Programm Argon2
mü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, \x0A
die Notation zu verwenden, aber es funktioniert nicht. Siehe unten, \x0A
und es \x0a
werden 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 -b
Parameter 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 -b
Option zu erhalten. Wenn es immer noch nicht funktioniert, fragen Sie den Autor, der als „charno“ identifiziert wird.
Antwort2
Ich finde, dass nur cat
die 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