They want us to be compliant, not secure
Some years ago, I worked for an organization that was involved in federally funded research. Occasionally, government IT auditors (or contractors that they hired) would visit our facilities to audit our systems.
We used a wide variety of operating systems on several different hardware platforms. Windows, Mac, Linux and Unix systems were scattered throughout our buildings running on desktops, laptops, workstation, servers and embedded devices. We ran several different Linux distributions, multiple Unixes and had standardized on bcrypt hashes to store user passwords.
Bcrypt was released in 1999 and is based on Blowfish. Blowfish is a fast, unpatented block cipher that was developed by Bruce Schneier in 1993. It’s been in the mainline Linux kernel since the 2.6 release.
Bcrypt is a fast and efficient password hash yet strong and hard to attack. At the time, it was the strongest password hash that we could use and as an added bonus, it worked on all of our Linux and Unix systems.
One particular year, the IT auditors realized that we were using bcrypt hashes to store user passwords. They said that it was not a FIPS approved algorithm and by using bcrypt hashes, we were noncompliant. They insisted that we switch to a SHA-2 based hash function right away.
We ran several tests that demonstrated how the SHA-2 hashes were much easier to crack than the bcrypt hashes (see below for a performance comparison on a semi-modern GPU). But the auditors were adamant. They did not care that the approved algorithms were weaker. Nothing would change their decision.
In their minds, it was a simple matter. Bcrypt was not on the list. It was not an approved hashing function. They would not discuss it further.
To satisfy the auditors, we switched all the systems to an approved SHA-2 hash function. This action probably made our systems more vulnerable to cyber attacks.
A colleague said, “They want us to be compliant, not secure.”
$ hashcat -b -m 1800
hashcat (v5.1.0) starting in benchmark mode...
OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1060 6GB, 1519/6077 MB allocatable, 10MCU
Benchmark relevant options:
===========================
* --optimized-kernel-enable
Hashmode: 1800 - sha512crypt $6$, SHA512 (Unix) (Iterations: 5000)
Speed.#1.........: 78810 H/s (51.36ms) @ Accel:512 Loops:128 Thr:32 Vec:1
$ hashcat -b -m 3200
hashcat (v5.1.0) starting in benchmark mode...
OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1060 6GB, 1519/6077 MB allocatable, 10MCU
Benchmark relevant options:
===========================
* --optimized-kernel-enable
Hashmode: 3200 - bcrypt $2*$, Blowfish (Unix) (Iterations: 32)
Speed.#1.........: 7570 H/s (41.13ms) @ Accel:16 Loops:8 Thr:8 Vec:1