LINTIAN

# `obsolete-des-encryption`

The listed ELF binary appears to use a C library function that performs DES encryption and/or decryption (`encrypt`, `encrypt_r`, `setkey`, and/or `setkey_r`). The DES block cipher can be broken by brute force on modern hardware, which makes any use of these functions insecure. Also, programs that use these functions cannot be linked against the `libcrypt.so` provided by glibc 2.28 and higher.

The program will need to be revised to use modern cryptographic primitives and protocols. Depending on how the program uses these functions, it may be necessary to continue using DES under some circumstances (e.g. for protocol compatibility, or to retain the ability to decrypt old data on disk) but this should be done using the DES functions in a modern cryptographic library (e.g. `libgcrypt`).

This is almost certainly an upstream bug, and should be addressed in coordination with the upstream maintainers of the software.

A false positive for this check is possible if the binary expects the definition of `encrypt`, `encrypt_r`, `setkey`, and/or `setkey_r` to come from some shared library other than `libcrypt.so`, and that shared library defines these functions to do something other than perform DES encryption. If this is the case it is appropriate to override this tag.

Severity: | `error`
Experimental: | `false`

## See also

- list of all the affected packages
- the source of this tag