age adalah program untuk mengenkripsi file. Enkripsi mengubah data yang bisa dibaca jadi data yang nggak bisa kamu baca tanpa rahasia yang benar. Dekripsi mengubah data terenkripsi itu kembali jadi data awalnya.
Saya menyimpan beberapa file yang harus tetap privat kalau saya kehilangan laptop ini. Saya pakai age untuk file-file ini. Passphrase adalah rahasia yang saya masukkan untuk mengenkripsi atau mendekripsi sebuah file.
Ini post pertama dari enam post. Contohnya dimulai dengan sebuah file teks kecil. Post-post berikutnya menunjukkan format file, proses enkripsi, dan waktu yang dibutuhkan untuk mencoba passphrase.
Mengenkripsi file kecil
Command-command ini pakai terminal di macOS. Terminal memungkinkan kamu memasukkan command dalam bentuk teks. Contoh-contohnya pakai age versi 1.3.1.
-
Kalau Homebrew udah terinstal, instal age dengan command ini:
brew install age -
Tampilkan versi yang terinstal:
age --versionVersi di contoh ini adalah:
v1.3.1 -
Bikin direktori baru untuk contoh-contohnya:
mkdir age-demo -
Pindah ke direktori itu:
cd age-demo -
Bikin file contohnya:
printf '%s\n' 'Meet me at the docks at 9. Bring the second key. Do not write this down.' > secret.txt -
Enkripsi file-nya:
age -p -o secret.txt.age secret.txt -
Masukkan passphrase di prompt.
-
Masukkan passphrase yang sama di prompt konfirmasi.
Opsi -p memilih enkripsi passphrase. Opsi -o menentukan file output. Nama terakhir, secret.txt, menentukan file input.
Terminal nggak menampilkan passphrase selagi kamu mengetiknya. age juga membolehkan kamu mengosongkan prompt pertama untuk meng-generate passphrase acak. Simpan passphrase hasil generate itu di password manager kalau kamu pakai opsi ini.
Command ini membuat secret.txt.age. Command ini juga membiarkan secret.txt tetap ada di direktori. Siapa pun yang bisa membaca file awalnya tetap bisa membaca isinya. Enkripsi nggak menghapus file awal.
Opsi output bisa menimpa file yang udah ada. Pakai direktori contoh yang baru supaya command-command ini terpisah dari file-file kamu yang lain. Manual age menjelaskan opsi dan prompt-nya.
Isi file terenkripsi
Plaintext adalah input yang bisa dibaca. Ciphertext adalah konten yang terenkripsi. Byte adalah satuan data. Setiap huruf, spasi, dan tanda baca di contoh ini memakai satu byte.
File input-nya berukuran 73 byte, termasuk newline di akhir. Dengan age 1.3.1 dan opsi passphrase di atas, file terenkripsinya berukuran 255 byte.
Byte tambahannya berisi informasi yang dibutuhkan untuk dekripsi. Isinya mencakup header, sebuah nilai acak untuk enkripsi payload, dan data autentikasi. Data autentikasi memungkinkan age mendeteksi key yang salah atau perubahan pada data terenkripsi.
File age punya dua bagian utama:
| Bagian | Isi |
|---|---|
| Header | Informasi yang bisa dibaca tentang metode enkripsi dan sebuah file key terenkripsi |
| Payload | Sebuah nilai acak, diikuti isi file terenkripsi dan authentication tag |
Header-nya bisa dibaca, tapi nggak berisi passphrase. Header berisi key terenkripsi, bukan key yang bisa langsung dipakai siapa aja. Post header menjelaskan arti setiap field.
Mendekripsi file
-
Dekripsi contohnya ke file baru:
age -d -o out.txt secret.txt.age -
Masukkan passphrase yang sama dengan yang kamu pakai untuk enkripsi.
-
Tampilkan hasilnya:
cat out.txt
Opsi -d memilih dekripsi. Output-nya:
Meet me at the docks at 9. Bring the second key. Do not write this down.
File out.txt sekarang berisi plaintext yang bisa dibaca. Jaga supaya tetap privat, sama kayak secret.txt.
Yang terjadi kalau passphrase-nya salah
Untuk mencoba passphrase yang salah, jalankan command ini:
age -d secret.txt.age
Masukkan passphrase yang berbeda di prompt. age melaporkan error yang berisi:
incorrect passphrase
age pertama-tama mencoba mendekripsi file key terenkripsi. Passphrase yang salah menghasilkan wrapping key yang salah. Pengecekan autentikasinya gagal, jadi age berhenti sebelum mendekripsi payload.
Error ini beda dengan payload yang rusak. Post cipher menunjukkan kegagalan yang muncul belakangan itu dengan contoh kecil.
Sisa seri ini
Setiap post menunjukkan satu bagian dari prosesnya:
| Post | Topik |
|---|---|
| Membaca header | Field-field yang bisa dibaca di awal file |
| Menurunkan key dengan scrypt | Gimana age menurunkan wrapping key dari passphrase |
| Mengenkripsi dan mengautentikasi payload | Gimana age mengenkripsi isi file dan mendeteksi perubahan |
| Memakai passphrase atau key pair | Dua cara untuk mengatur siapa yang bisa mendekripsi file |
| Menghitung waktu serangan passphrase | Gimana passphrase dan kecepatan serangan memengaruhi hasilnya |
Post berikutnya pakai file secret.txt.age yang sama. Simpan file-file contoh dan passphrase-nya untuk melanjutkan.

Memuat komentar...