Package: argon2 Version: 0~20160406-2 When argon2(1) is executed, it always produces an unsuccessful exit with exit code 132, and the error message `Illegal instruction', regardless of options passed. The expected password hash is never printed to STDOUT.
For example:
$ echo password | argon2 deadbeef
Type: Argon2i
Iterations: 3
Memory: 4096 KiB
Parallelism: 1
Illegal instruction
$ echo $?
132
$ echo password | argon2 deadbeef -t 4069 -m 13 -p 4
Type: Argon2i
Iterations: 4069
Memory: 8192 KiB
Parallelism: 4
Illegal instruction
$ echo $?
132
Changing the salt length doesn't change anything:
$ echo password | argon2 ca5cadedbeefcafe
Type: Argon2i
Iterations: 3
Memory: 4096 KiB
Parallelism: 1
Illegal instruction
$ echo $?
132
Executing with strace(1) to get more information:
$ echo password | strace -f argon2 deadbeef
execve("/usr/bin/argon2", ["argon2", "deadbeef"], [/* 25 vars */]) = 0
brk(NULL) = 0x1c2d000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b6be000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=117678, ...}) = 0
mmap(NULL, 117678, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc40b6a1000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0a\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=135984, ...}) = 0
mmap(NULL, 2213008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fc40b282000
mprotect(0x7fc40b29a000, 2093056, PROT_NONE) = 0
mmap(0x7fc40b499000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fc40b499000
mmap(0x7fc40b49b000, 13456, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc40b49b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\7\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1709784, ...}) = 0
mmap(NULL, 3816000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fc40aede000
mprotect(0x7fc40b079000, 2093056, PROT_NONE) = 0
mmap(0x7fc40b278000, 24576, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19a000) = 0x7fc40b278000
mmap(0x7fc40b27e000, 14912, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc40b27e000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b6a0000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b69f000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b69e000
arch_prctl(ARCH_SET_FS, 0x7fc40b69f700) = 0
mprotect(0x7fc40b278000, 16384, PROT_READ) = 0
mprotect(0x7fc40b499000, 4096, PROT_READ) = 0
mprotect(0x609000, 4096, PROT_READ) = 0
mprotect(0x7fc40b6c0000, 4096, PROT_READ) = 0
munmap(0x7fc40b6a1000, 117678) = 0
set_tid_address(0x7fc40b69f9d0) = 3113
set_robust_list(0x7fc40b69f9e0, 24) = 0
rt_sigaction(SIGRTMIN, {0x7fc40b287ba0, [], SA_RESTORER|SA_SIGINFO,
0x7fc40b292d40}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7fc40b287c30, [],
SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fc40b292d40}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
fstat(0, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b6bd000
read(0, "password\n", 4096) = 9
read(0, "", 4096) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fc40b6bc000
write(1, "Type:\t\tArgon2i\n", 15Type: Argon2i
) = 15
write(1, "Iterations:\t3 \n", 15Iterations: 3
) = 15
write(1, "Memory:\t\t4096 KiB\n", 18Memory: 4096 KiB
) = 18
write(1, "Parallelism:\t1 \n", 16Parallelism: 1
) = 16
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {0, 1003232}) = 0
brk(NULL) = 0x1c2d000
brk(0x1c4e000) = 0x1c4e000
mmap(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fc40aadd000
--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x404067} ---
+++ killed by SIGILL +++
Illegal instruction
I don't see a reported bug upstream:
https://github.com/P-H-C/phc-winner-argon2/issues?q=illegal%20instruction
Running the following system:
$ uname -a
Linux eightyeight 4.6.0-1-amd64 #1 SMP Debian 4.6.2-1 (2016-06-15) x86_64
GNU/Linux
$ cat /etc/issue
Debian GNU/Linux stretch/sid \n \l
$ awk '/processor.*: 0/,/^$/' /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
stepping : 5
microcode : 0x11
cpu MHz : 1729.000
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology
nonstop_tsc aperfmperf eagerfpu pni dtes64 monitor ds_cpl vmx est tm2 ssse3
cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority
ept vpid dtherm ida
bugs :
bogomips : 6103.29
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
$ dpkg --status argon2
Package: argon2
Status: install ok installed
Priority: optional
Section: utils
Installed-Size: 63
Maintainer: Luca Bruno <[email protected]>
Architecture: amd64
Multi-Arch: foreign
Version: 0~20160406-2
Depends: libc6 (>= 2.14)
Description: memory-hard hashing function - utility
Argon2 is a password-hashing function that can be used to hash passwords
for credential storage, key derivation, or other applications.
.
There are two main versions of Argon2: Argon2i and Argon2d.
Argon2i is the safest against side-channel attacks, while Argon2d provides
the highest resistance against GPU cracking attacks.
.
Argon2i and Argon2d are parametrized by:
* A time cost, which defines the amount of computation realized and
therefore the execution time, given in number of iterations
* A memory cost, which defines the memory usage, given in kibibytes
* A parallelism degree, which defines the number of parallel threads
.
This package contains the argon2 tool for hashing data on the command-line.
Homepage: https://github.com/P-H-C/phc-winner-argon2
--
. o . o . o . . o o . . . o .
. . o . o o o . o . o o . . o
o o o . o . . o o o o . o o o
signature.asc
Description: PGP signature

