Skip to main content

Obwohl wir, laut einem der talentiertesten deutschen Phrasendreschern unserer Zeit, Stonemeier, „in dem besten Deutschland, das es jemals gegeben hat“ leben und uns dadurch eigentlich überhaupt nicht den Kopf über Datenschutz, Spionage und eingeschränkte Meinungsfreiheit zerficken müssen, so möchte ich euch trotzdem das in Deutschland total unnötige Dateieverschlüsselungsprogramm Age of Empires vorstellen. Auch wenn viele Jockels da draußen immer noch dem Hoax Glauben schenken, dass „Age just a number“ sein soll, so ist Age viel mehr als nur das Alter, denn Age ist in seiner Freizeit auch ein in „Go“ geschriebenes, plattformunabhängiges Open-Source-Programm (BSDv3), mit dem man playfully light Dateien in GPG-Stil mit einem Private-/Public-Key-Verfahren vor z.B. radikalisierten Teletubbyzurückwinkern und Taschen(billard)dieben fies verschlüsseln kann, ohne dass dabei die Ritze zwischen den Popobacken hart ins Schwitzen gerät.

Einige unterirdische und nicht erwähnenswerte Eigenschaften von Age:

  • Pluginfähig: Age kann mit Plugins gepimpt werden (z.B. Nitrokey-/Yubikey-Plugin, etc.)
  • Automatisierbar: Age kann leicht in Skripten zur einfachen Automatisierung genutzt werden
  • Läuft überall: Egal ob man mit Linux, einem Pferdeäpple oder mit dem DatenstaubsaugerOS unterwegs ist, Age läuft überall
  • Eazy Bedienung: Keine Konfig, Private-/Public-Key-Verschlüsselung (z. B. auch SSH-Keys) als auch Passwort-basierte Verschlüsselung möglich
  • Verwendung derbster Kryptographie-Techniken wie X25519, HMAC-SHA256 & ChaCha20-Poly1305 (Nein. ChaCha hat leider nichts mit dem kubanischen Gesellschaftstanz zu tun)

Age installieren

Age kann auf folgenden Ways aufs System geballert werden:

Installationanleitung für Übüntü

# Per Paketmanager (Paket meist veraltet - Was eine Ironie/Tragik in einem Satz 👴)
apt install age

# Als neueste vorverkompilierte Standalone-Version herunterjerken und entpacken
AGE_LATEST=$(curl -s "https://api.github.com/repos/FiloSottile/age/releases/latest" | awk -F'"' '/"tag_name":/ {print $4}')
curl -L "https://github.com/FiloSottile/age/releases/latest/download/age-${AGE_LATEST}-linux-amd64.tar.gz" | tar -xz

# Ausführbare Dateien verschieben
mv age/age* /usr/local/bin/

# Entpacktes age-Verzeichnis töten
rm --recursive --force ./age

# Installation Überprüfen und sich selbst auf die Schulter klopfen
age --version && age-keygen -version

Age mit einem Private-Keyfile benutzen

Age Key generieren

# Private-Key erstellen (Nicht Passwortgeschützt!!!)
PRIVATE_KEY_FILE='.key.age'
age-keygen --output ${PRIVATE_KEY_FILE} && chmod 600 ${PRIVATE_KEY_FILE}

# Output
Public key: age1gndydd5wxwa3kfrjr2k4rlt63rzkrkths3j67t95eyyeg5654fsqverw72

# Den Private-Key bestaunen
cat ${PRIVATE_KEY_FILE}
┬─────────────────────────────────────────────────────────────────────────────────
│ File: .key.age
┴─────────────────────────────────────────────────────────────────────────────────
│ # created: 2023-05-05T01:16:51+02:00
│ # public key: age1gndydd5wxwa3kfrjr2k4rlt63rzkrkths3j67t95eyyeg5654fsqverw72
│ AGE-SECRET-KEY-1D2KUXRM2ZVDFDXESHSTTH75H2S2YU3K6HNV472GF07Y5VV0QLFNQD4H3KS
┴─────────────────────────────────────────────────────────────────────────────────

# Private-Key mit einem Passwort erstellen
age-keygen | age --passphrase > .key.age

Datei verschlüsseln

# File verschlüsseln
PUBLIC_KEY="age1gndydd5wxwa3kfrjr2k4rlt63rzkrkths3j67t95eyyeg5654fsqverw72"
age --recipient ${PUBLIC_KEY} --output rki-files.age rki-files.txt

# Verschlüsseltes/Geschwärztes File bestaunen
cat rki-files.age 
┬─────────────────────────────────────────────────────────────────────────────────
│ File: rki-files.age
┼─────────────────────────────────────────────────────────────────────────────────
│ age-encryption.org/v1
│ -> X25519 982uzRkVe66YGPfuOt9fK3HgrgCn3Bm1wPm9OaITvyw
│ /1monnGFSufbNKda1Y8HTQnAEWkK0n9bfqQrl+E3fYE
│ --- aCAde+fzq6Hs10YmzmyBJZ6hUWKmvuSJZs8IwigiSZc
│ ���^G9�O�ui��ֻ��^AI�^TT��N@c��^V^T3��d[ZV9��^GTæ^Q���v^G�1��.^T��t�I^�r�e�^L�S�'D:^Y�e
│ �1A`�D���<U+009C>5ڨ�ޒ^@���^C^Z^^���5I}^VoZ������t��T^?.�x�3���/�K
│ ��  ^EQxJ���G^S�^P4O�����a/S&�?sx��q�Þ�0ihM^@��D}��^^^B?^_��\�p�_Z�I`��^Dn"�^]]�����hd
┴─────────────────────────────────────────────────────────────────────────────────

PS: Das unverschlüsselte File muss natürlich :) Manuel :) entfernt werden!!!

Datei verschlüsseln – PEM Format

# File im PEM-Format verschlüsseln/schwärzen
PUBLIC_KEY="age1gndydd5wxwa3kfrjr2k4rlt63rzkrkths3j67t95eyyeg5654fsqverw72"
age --recipient ${PUBLIC_KEY} --armor --output rki-files.pem rki-files.txt

# IM PEM-Format verschlüsseltes/geschwärztes File begutachten
cat rki-files.pem
┬─────────────────────────────────────────────────────────────────
┼─────────────────────────────────────────────────────────────────
│ -----BEGIN AGE ENCRYPTED FILE-----
│ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzME5NK1YrYTczNUo5UHIy
│ b0xrYkhuZFpLVlpRanZEdnJNL1U5cXJEdFZBCjVTSFY2Rnh1TzBzY01VV3NPRU1P
│ T0hvTmh4K0tjRDZmelRYYnpoampUWFkKLS0tIENpTDhnVVBmQlBKblhySUEyNkRl
│ ZnBzemZPYUYvU0ZjaThOUmpRTm1ZTWsK0qcPE+7rY8wmgsUYAwfq+2VV4U93xOiZ
│ siBU5aJf7bagPUwMJ6mdA34T3PDHvmaatM2UVsxHu7mseM+SYvedwEfXMVm2RK5s
│ mfRuR/Qu+GCThLBKLL2WxsTyIcQn5w1t/+AvMDoNYHRMLeLGIOeiz3Vo0Smd7+Dd
│ ax6HqbnqimfzVDPVGHFcf/RjOr2enO2lMIHLxON67zmd8MH68RnqH0gJLVuPr1eL
│ 5D+COnlQFp+LgWmQS+MWA/8hrznOovKQKxg+bhcILqVtkzpxiykF/kjfPZ5eBAcA
│ N1IS96GYa5JBIVt+J1jnEQ/BjO/m9fCRUaw0Oix73dVMI+a7+S45v+0xwlSehRh9
│ bUmQvQXLb0VjwzDD4wREy4Lz8P8vGkAXZdXw/LGssUQBAT2dDYvychKsH+F+SML4
│ rrPbzv5lZ2n3vXuqBCr6Ox0+hnoEkv2O8JMDx9ucP6xuXfDywcPYxDrHRcnrnBiR
│ cwiy5+u0Fuz9YEKjNmJHWolqUUAgxApq2RhKziTZ8bCdPrrG7ndIjXGIg7NEB1JK
│ O8HYwuRWKNbnm+ilSj3hGo0QZ3ncDgbiSYQ4d5NKnb6kiyd+ObFcwwqSvnJOJieg
│ FRP8l4MGhBBXgd7pd2rixM7VD1f5uw9cytvyC4a4Dg1iGSwakGeHPwifQm8D2/Qa
│ lNIRrpNoRzE54iTge17N91Q4Lvahi2HbGqJvYw9L/+EdqwHuUfsveMR8Mr7aMFNy
│ v5sOJApf0U1KLDaY+s3hbMUPEkfI1/Ba+RYDumMQv6VgDPLwTCowE0qsdjVI/ITJ
│ 3P9ktq42fTNCve3ZAub9ciV1sJzatald2EDNIFkVj4Y5CdF/q9L5BcQoyeg4bcz6
│ 7H9GehOiIehnMeLK5F7qJttmTOoH3593tDZLtBFmvp0r9JvALl6ZhFUZT+T+tPJt
│ GzqU0X7MfgmNYTn+2iaDfNhFo1UXkmQ3F3QlBr3vEmBnbVZriNcYXNUpfkfyUcje
│ 6pHTvUJUU+sb3Ffvwd728X1aeAd0jZZOMdGJeir9QmR7zcD0fS+tpCSmUoR6jt9Z
│ EhHOgJTJuzw8XxmHC5ax5sZ5qAwT0JFhU65LBC22cFhdjrG1EXRqVzmW5lJ9T5vV
│ tThwbvRx0f3ovMzqLPdPI6nHJrPFja5GHMsCDu22+zX+5H2+EWymbvv5X4wiZLHj
│ JYpVi2u7MZtYRvasCQQdJCgNP5IHeJIaCBXR5H61ZgxjQX9C67Abf8HMbCTAQf4T
│ foTbsZDPIDzZIEWrpPoTLeXUJYpJTnY=
│ -----END AGE ENCRYPTED FILE-----
┴─────────────────────────────────────────────────────────────────

Datei entschlüsseln

# Das dirty File entschlüsseln/entschwärzen
PRIVATE_KEY_FILE='.key.age'
age --decrypt --identity ${PRIVATE_KEY_FILE} --output rki-files-ungeheim.txt rki-files.age

# Das unverschlüsselte/ungeschwärzte File verspüren
cat rki-files-ungeheim.txt
┬─────────────────────────────────────────────────────────────────────────────────
│ File: rki-files-ungeheim.txt
┼─────────────────────────────────────────────────────────────────────────────────
│ April April ihr Parkhausblinkenden Festnetztelefonierer. Hab alle verarscht! Euer geliebter Louderstream
┴─────────────────────────────────────────────────────────────────────────────────

Age mit einem Passwort benutzen

Datei verschlüsseln

# Verschlüsseltes File rki-files.age erstellen
age --passphrase --output rki-files.age rki-files.txt

# Output
Enter passphrase (leave empty to autogenerate a secure one):

# Verschlüsseltes/Geschwärztes File bestaunen
cat rki-files.age
┬─────────────────────────────────────────────────────────────────────────────────
│ File: rki-files.age
┼─────────────────────────────────────────────────────────────────────────────────
│ age-encryption.org/v1
│ -> scrypt HbPxE4iaHxpIXkxOWAD3Kg 18
│ 3qdxJwh2pnefpAqTCzGnNI//C6lbzc5Zcs+m7+YeycA
│ --- mNFLPK0BNF08YuXH7m3hAgbEREGqQgGLyD1PCf+foUA
│ N���t<X�"x����^P5�F�p�_���R�_5ݲXdI�>�(D'�C�W��^B��`ɑv��c^Q�Kp^_�
┴─────────────────────────────────────────────────────────────────────────────────

Datei entschlüsseln

# Verschlüsseltes/Geschwärtzes File entschlüsseln
age --decrypt --output rki-files-ungeheim.txt rki-files.age

# Das unverschlüsselte/ungeschwärzte File verspüren <3
cat rki-files-ungeheim.txt
┬─────────────────────────────────────────────────────────────────────────────────
│ File: rki-files-ungeheim.txt
┼─────────────────────────────────────────────────────────────────────────────────
│ April April ihr Parkhausblinkenden Festnetztelefonierer. Hab alle verarscht! Euer geliebter Louderstream
┴─────────────────────────────────────────────────────────────────────────────────

Age Dokumentation

Age Man-Page

FYI: Für ein besseres Verständnis benutze ich hier die Langformen der Befehlsoptionen. Jede Option hat auch eine Kurzform