Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Problem

One of the most important and difficult issues with cyber security is trust. Trust is good and often essential, since it is not possible for one single human to oversee and truly understand all aspects. Technology is simply too complex and dealing with business risks and business processes is another discipline.

But whenever possible: Never trust and assume but verify!

This accounts also for using software.

Anyone can inspect the source code of FOSS solutions for malicious flaws. But most software is distributed pre-compiled with no method to confirm whether they correspond.

Attacks on developers who create or release software including their tools are vulnerable for creating malicious flaws. Mostly not on purpose but due to political influence, blackmail or severe threats or violence to relatives.

Solution

Trusting software code is not the same as trusting its executable that is created for a target platform (Linux, BSD, Windows, etc). For every target platform software must be compiled and packaged.

A minimum way to verify your download is to check a hash. Checking a hash for a software download serves a crucial purpose in ensuring the integrity and authenticity for the software package:

If you really want to be sure that software downloads you want to use are not tampered with you need a reproducible build.

Reproducible Builds provide certainty that software is genuine and has not been tampered with. Reproducible build offer the following advantages from a security point of view:

Creating software that matches the reproducible build standard is not simple. However as end-user or business you should have an easy task: Demand that the software you want to use has a reproducible build. The supplier of software that claims to use the reproducible-build standard and process should you provide a way to recreate a close enough build environment, perform the build process, and validate that the output matches the original build. Even if you do not recreate the build continuously, it can and should be done periodically or for an audit.

More information: