Kunci Data Sensitif Menggunakan AGE Encryption

Kunci Data Sensitif Menggunakan AGE Encryption

Age adalah tools untuk enkripsi dan dekripsi data yang simple dan modern. Dibanding menggunakan GPG (Gnupg) yang cukup rumit dan tidak ramah bagi pengguna baru, age memiliki perintah yang mudah digunakan bahkan bagi pengguna baru.

Enkripsi penting dilakukan di era modern ini, begitu banyak data yang dibagikan di internet. Jika data yang kamu kirimkan cukup rahasia, enkripsi harus dilakukan baik jika disimpan di lokal komputer maupun di bagikan ke online. Tanpa enkripsi, data yang dikirim melalui provider apapun itu (baik itu email, whatsapp, pesan singkat lainnya) akan memiliki peluang provider tersebut mengetahui data yang kirim.

Enkripsi juga menjaga integritas file, jika orang yang tidak bertanggung jawab mendapatkan file dan melakukan modifikasi data maka file tersebut akan otomatis menjadi rusak dan tidak bisa di buka.

Banyak perusahaan maupun pemerintahan yang mewajibkan enkripsi setiap kegiatan yang dilakukan, enkripsi menjadi bagian dari peraturan dan wajib di ikuti untuk menjaga kerahasiaan.

Bagi pengguna biasa, enkripsi juga berguna untuk menyimpan data yang penting seperti password, dokumen scan kartu keluarga, KTP, dokumen bank, dan lain-lain. Ini untuk mencegah hal jika sewaktu-waktu ada orang yang tidak bertanggung jawab mengambil alat penyimpanan (harddisk, komputer, handphone, memory card) atau secara sengaja membuka komputer yang kita gunakan. Data yang tidak di enkripsi akan mudah diambil dan dilihat, sedangkan data enkripsi tidak mudah dilihat.

Age Encyption

The age logo, a wireframe of St. Peters dome in Rome, with the text: age, file encryption

Age Encryption dibuat oleh @Benjojo12 and @FiloSottile. Mereka memiliki ide untuk membuat alat enkripsi yang mudah digunakan, simple dan ringan.

Repository Age Encryption sudah memiliki bintang sebanyak 15 ribu (sejak artikel ini ditulis). Perkembangan repository ini memberikan feedback positif terhadap kebanyakan pengguna.

Star History Chart

Age encryption memiliki perintah yang sangat mudah digunakan.

$ age-keygen -o key.txt
Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
$ tar cvz ~/data | age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p > data.tar.gz.age
$ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz

Dibanding GPG yang lebih rumit, saya mempelajari GPG cukup sulit hingga saya harus menulis perintah-perintah GPG yang biasa digunakan, bisa dilihat pada artikel saya Kumpulan perintah GPG.

Instalasi

age memiliki banyak paket yang tersedia sesuai sistem operasi yang kamu gunakan. Pilih perintah sesuai sistem operasi yang kamu gunakan.

Homebrew (macOS or Linux)brew install age
MacPortsport install age
Alpine Linux v3.15+apk add age
Arch Linuxpacman -S age
Debian 12+ (Bookworm)apt install age
Debian 11 (Bullseye)apt install age/bullseye-backports (enable backports for age v1.0.0+)
Fedora 33+dnf install age
Gentoo Linuxemerge app-crypt/age
NixOS / Nixnix-env -i age
openSUSE Tumbleweedzypper install age
Ubuntu 22.04+apt install age
Void Linuxxbps-install age
FreeBSDpkg install age (security/age)
OpenBSD 6.7+pkg_add age (security/age)
Chocolatey (Windows)choco install age.portable
Scoop (Windows)scoop bucket add extras; scoop install age

Untuk windows, kamu perlu install Chocolatey terlebih dahulu untuk install paket ini. Lebih detailnya mengenai instalasi age ini, tersedia di repository age Readme

Encryption

Terdapat 2 metode enkripsi yaitu Symmetric dan Asymmetric. Symmetric menggunakan 1 kata kunci, atau kita sebut dengan password. Ini cukup mudah digunakan, gunakan 1 kunci saat melakukan enkripsi dan gunakan kunci yang sama saat dekripsi.

Sedangkan Asymmetric menggunakan 2 kunci yang berbeda yaitu public key dan private key. public key adalah kunci yang bisa dibagikan secara publik (sesuai namanya).

Fitur

Age memiliki perintah yang mudah digunakan, bisa dilihat dengan perintah age --help pada terminal.

Usage:
    age [--encrypt] (-r RECIPIENT | -R PATH)... [--armor] [-o OUTPUT] [INPUT]
    age [--encrypt] --passphrase [--armor] [-o OUTPUT] [INPUT]
    age --decrypt [-i PATH]... [-o OUTPUT] [INPUT]

Options:
    -e, --encrypt               Encrypt the input to the output. Default if omitted.
    -d, --decrypt               Decrypt the input to the output.
    -o, --output OUTPUT         Write the result to the file at path OUTPUT.
    -a, --armor                 Encrypt to a PEM encoded format.
    -p, --passphrase            Encrypt with a passphrase.
    -r, --recipient RECIPIENT   Encrypt to the specified RECIPIENT. Can be repeated.
    -R, --recipients-file PATH  Encrypt to recipients listed at PATH. Can be repeated.
    -i, --identity PATH         Use the identity file at PATH. Can be repeated.

Passphrase / Password

Kamu bisa enkripsi data hanya menggunakan passwod (Symmetric Key) dengan perintah age -p [nama-file] > [output-file]. -p adalah singkatan dari passphrase.

$ age -p secrets.txt > secrets.txt.age
Enter passphrase (leave empty to autogenerate a secure one):
Using the autogenerated passphrase "release-response-step-brand-wrap-ankle-pair-unusual-sword-train".

Jika kamu tidak memasukkan password apapun, maka age akan membuat password random untuk mu. Contohnya diatas, age membuat password release-response-step-brand-wrap-ankle-pair-unusual-sword-train

Untuk lakukan dekripsi gunakan age -d [file-enkripsi]. -d singkatan dari Decrypt

$ age -d secrets.txt.age > secrets.txt
Enter passphrase:

Asymmetric Key / public key dan secret key

Kamu perlu membuat kunci public key dan secret key terlebih dahulu, gunakan perintah age-keygen. -o singkatan dari output. Pada contoh ini, nama file key adalah key.txt

$ age-keygen -o key.txt
Public key: age14y4vlq9vl6mqyjrhlqnk36x5aw3xykqhr9ez93jy6yx5cvtjeehqkze5kp

Kamu akan mendapatkan file key.txt berisi public key dan private key. Kamu bisa bagikan public key tapi jangan bagikan private key.

Lakukan enkripsi dengan perintah age -r, r adalah Recipient (Penerima) berisi public key (contohnya age14y4vlq9vl6mqyjrhlqnk36x5aw3xykqhr9ez93jy6yx5cvtjeehqkze5kp) dari penerima, pada saat ini hanya dirimu penerima file enkripsi maka isi dengan public key milikmu.

$ age -e -r age14y4vlq9vl6mqyjrhlqnk36x5aw3xykqhr9ez93jy6yx5cvtjeehqkze5kp secret.txt > secret.txt.age

Kamu sudah dapat file yang di-enkripsi, lalu lakukan dekripsi pada file tersebut menggunakan private key yang telah digenerate menggunakan perintah age -d -i, -i singkatan dari Identity. Identity di isi dengan file private key yang telah digenerate.

$ age -d -i key.txt secret.txt.age > output.txt

Multiple Recipients

Berdasarkan repository Age encryption, Kamu bisa enkripsi data untuk beberapa penerima (Recipient) sekaligus, kamu bisa ulangi perintah -r (stacking) atau simpan list penerima di dalam file.

Multiple recipient menggunakan option -r

$ age -o example.jpg.age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \
    -r age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg example.jpg

Multiple recipient menggunakan file

$ cat recipients.txt
# Alice
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
# Bob
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg
$ age -R recipients.txt example.jpg > example.jpg.age

Penutup

Enkripsi penting untuk menyimpan dan mengunci data agar aman di bagikan melalui internet, disimpan di tempat aman, bahkan sebagai bukti bahwa data tidak pernah di modifikasi.

Age encryption adalah opsi yang bagus untuk enkripsi data dengan mudah, cepat, dan ringan. Penggunaan yang simple jadi pilihan yang bagus di banding aplikasi GPG, bukan berarti pengganti GPG.

Jangan lupa follow dan daftar jadi newsletter untuk dapatkan info terbaru dari Rio Chandra blog. Terima kasih.