dm crypt: make printing of the key constant-time
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 25 Apr 2022 12:53:29 +0000 (08:53 -0400)
committerMike Snitzer <snitzer@kernel.org>
Mon, 9 May 2022 16:34:03 +0000 (12:34 -0400)
commit567dd8f34560fa221a6343729474536aa7ede4fd
treeb6735601f3577a755c95902502ebe253eb9a0909
parentd3f2a14b8906df913cb04a706367b012db94a6e8
dm crypt: make printing of the key constant-time

The device mapper dm-crypt target is using scnprintf("%02x", cc->key[i]) to
report the current key to userspace. However, this is not a constant-time
operation and it may leak information about the key via timing, via cache
access patterns or via the branch predictor.

Change dm-crypt's key printing to use "%c" instead of "%02x". Also
introduce hex2asc() that carefully avoids any branching or memory
accesses when converting a number in the range 0 ... 15 to an ascii
character.

Cc: stable@vger.kernel.org
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Tested-by: Milan Broz <gmazyland@gmail.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
drivers/md/dm-crypt.c