바이너리 파일의 소금과 함께 Argon2를 사용하는 방법은 무엇입니까?

바이너리 파일의 소금과 함께 Argon2를 사용하는 방법은 무엇입니까?

Linux 프로그램에서는 Argon2명령줄에 솔트를 제공해야 합니다. 이는 솔트를 인쇄 가능한 문자로 제한합니다. 바이너리 문자열을 솔트로 어떻게 사용할 수 있나요?

# 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

표기법을 사용해 보았는데 \x0A작동하지 않습니다. 아래에서 볼 수 있듯이 \x0A다양한 \x0a해시를 생성합니다.

# 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

추가 정보를 위해 Argon을 사용하여 LUKS의 PBKDF를 시뮬레이션하고 싶습니다.

답변1

기능 요청에서 argon2 실행 파일: base64 인코딩 #264에 솔트를 제공할 수 있는 옵션 -b를 추가합니다., 답변 저자는 -bbase64 형식의 솔트를 사용하는 새로운 매개 변수를 언급했습니다.

argon2의 소스는 실제로 릴리스보다 더 최근에 나온 것 같습니다.

스위치는 다음과 같이 사용됩니다.

argon2 <base64-encoding> -b

옵션이 포함된 최신 버전을 얻으려면 소스에서 argon2를 컴파일해야 할 수도 있습니다 -b. 그래도 작동하지 않으면 "charno"로 식별된 작성자에게 문의하세요.

답변2

cat내부 셸에 있는 파일 만 작동하는 것으로 나타났습니다 .

% 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

특수 문자는 이 장난감도 깨지지 않습니다.

% 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

관련 정보