Ondertekenen van een bestand met een GPG sleutel in linux

Security.txt

Internet.nl heeft voor haar testen een verdere proeve van bekwaamheid toegevoegd: de aanwezigheid van een tekstbestand met de naam security.txt. “Dit is een gestandaardiseerd tekstbestand met contactinformatie dat je op je webserver plaatst. Beveiligingsonderzoekers kunnen deze informatie gebruiken om direct contact met de juiste afdeling of persoon binnen je organisatie op te nemen over kwetsbaarheden die zij in je website of IT-systemen hebben gevonden. Dit kan het verhelpen van de gevonden kwetsbaarheden versnellen, waardoor kwaadwillenden minder kans krijgen om er misbruik van te maken. Kortom: test je eigen domein en voeg een security.txt-bestand toe!” aldus internet.nl.

Aanmaken van een sleutel

Het bestand dient versleuteld te zijn opdat de lezer zo nodig zelf kan verifiëren dat met het bestand niet gerommeld is en dat de (contact)gegevens correct zijn. Het bestand heeft een standaard formaat dat zowel voor een computer als voor een mens leesbaar is. Digital Trust Center (DTC) heeft een gids gepubliceerd die in vier stappen uitlegt hoe je een security.txt bestand aanmaakt. Ik heb daar twee stappen aan toegevoegd, met uitleg hoe je het bestand versleutelt en ondertekent.

Stap 1

Kies het contactadres. Bij wie wil je dat de melding binnenkomt? Bij je bedrijf of bij je IT-dienstverlener? Maak hiervoor de inschatting wie iets met de meldingen kan of gaat doen.

Stap 2

Gebruik de tool op securitytxt.org en vul daar in ieder geval het contactadres en vervaldatum in. Maak vervolgens met één klik je eigen security.txt-bestand.

Stap 3

Versleutel en onderteken het bestand met een publieke sleutel van opensource programma PGP. Met de opdracht gpg –clearsign maakt de PGP software een versleuteld tekstbestand. Alvorens deze opdracht uit te voeren, moeten eerst de sleutels worden gegenereerd. Open een terminal in linux en bepaal de sleutels met de volgende opdracht:

gpg --full-generate-key

  1. Specificeer het type versleuteling of druk op enter om de standaardversleutelingsmethode toe te passen (RSA en RSA)
  2. Specificeer de omvang van de sleutel of druk op enter om de standaardwaarde toe te passen (3072 bits)
  3. Specificeer de geldigheidsduur van de sleutel waarbij de standaardwaarde is dat de sleutel geen expiratietermijn heeft
  4. Voer je naam in en vervolgens het email adres
  5. Bevestig de opgegeven instellingen door de hoofdletter O in te tikken
  6. Voer een wachtwoordzin in om de nieuwe sleutel te beschermen

Het resultaat wordt in de terminal weergegeven. Bewaar deze sleutelgegevens op een veilige plek, inclusief de wachtwoordzin.

voorbeeld sleutel
Figuur output terminal na genereren van de sleutel

De opdracht gpg --clearsign is alleen van toepassing op tekstbestanden. De optie ‘–clearsign’ zorgt ervoor dat het document van een ASCI-beschermde digitale handtekening wordt voorzien die het document zelf echter niet aantast. Met de opdracht gpg --clearsign security.txt wordt een “security.txt.asc” bestand gegenereerd dat met elke teksteditor te openen is.

De sleutels zijn opvraagbaar met de opdracht gpg --list-keys.

Stap 4

Met de sleutels kan nu het security.txt bestand worden versleuteld. Open weer een terminal in linux en voer onderstaande opdracht in.

gpg --clear-sign -o output.txt security.txt

Stap 5

Wijzig de naam van het bestand output.txt in security.txt. Maak op je webserver een map aan met de naam “.well-known”. Deze map staat dus een niveau onder de hoofdmap waarop je website beschikbaar is. Plaats in deze map het met de sleutel beveiligde security.txt-bestand. Security.txt voor adagia.eu ziet er zo uit:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512


Contact: mailto:info@adagia.eu
Expires: 2023-11-28T19:15:37z
Encryption: https://adagia.eu/disclosure
Canonical: https://adagia.eu/.well-known/security.txt
Preferred-Languages: nl,en,de

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEzUL+qiJB379oW0WZuu8rkRtOtLMFAmOFFcUACgkQuu8rkRtO
tLOAAg//Vtsqnw8Z8BnV6DHkulUil+p67oVrpOJcqpQiFQSE7JE2NlZiMJfUynoh
M1KS2y/PHBA6sV02IyeSGnH9cCtruEpF1mM2l51xDCi5cbz+pFHTAP2XDvNGy9+k
ECxH8JeCeO2VBX9B5qy3udnPJG/JyMsFEtvRHWP6eNYBTo21jBIHdIYSlrLESx3b
PRL5Pp4uwz+nlWwjP+TbOa7OG85SvgmW4tOPV9CMGh88/cNWsi7YznESrQ7g/+mK
fX/ctk9VeJbK8WCctKujG/lX1hX5Ps1y7rJSl4OgcPwtt4/UMcsxqcOmqrVBVTx2
FSxM+BMFKSuBWJgK8KaR/wZfHr4cyOZKDl/6n0Eu8cdaYgZOMevs+SKE6UjbG5nR
PI5f5EPaLzzNlurH7NPz9BjQ1TbCTKs4T5qPutIFNHD3wnjA5yyBEVEGinNWyj3f
eKgaxX/sVZ0knrv/EyoVjnvwLjZdXFsO6tjqcd5h/84l9OlCWskqK6Eihx0XcEeX
H9W9IS3D2uV06qcR4CQ5rzgwzhGWR/BFRTxbv08xu0rbjTWJzc8aDRdKB2e0o79J
LbtHlmDS0JUATKWDwn894wt555eQjwrT/FqNDN0RtphQY4h0jTe2lfZc+zZ2ZG5t
0PZRB3h9TfI074+KHaWaiY3z0BXOpFmMljBBtkjEAqy7AszyTHQ=
=i7FY
-----END PGP SIGNATURE-----
Stap 6

Gebruik de tool op internet.nl om te controleren of je security.txt goed geïmplementeerd hebt. Als de test niet voldoende is, geeft internet.nl aan wat nog moet worden verbeterd.