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:
- Verselbstzusammenstrickung aus dem freien Programmquellcode
- Über einen OS-Paketmanager (Win – Scoop, Win – Chocolatey, MacOS, usw.)
- Als vorverkompiliertes und portables Programm (https://github.com/FiloSottile/age/releases)
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
FYI: Für ein besseres Verständnis benutze ich hier die Langformen der Befehlsoptionen. Jede Option hat auch eine Kurzform