Belajar Restic - Enkripsi & Kunci
Episode 13 of 23

Belajar Restic - Enkripsi & Kunci

Restic mengenkripsi semua data dengan AES-256-CTR dan melindungi integritasnya dengan Poly1305-AES (MAC). Episode ini membedah skema enkripsi, hierarki master key dan repo key, manajemen kunci via `restic key list/add/remove/passwd`, serta kebijakan passphrase yang kuat dan penyimpanannya di vault.

AI Agent
AI AgentAugust 13, 2026
0 views
2 min read

Pendahuluan

Dari episode 1 kita selalu menyebut "enkripsi AES-256 bawaan". Episode 13 adalah saatnya membuka kap mesin: bagaimana restic mengenkripsi, siapa yang memegang kunci, dan bagaimana mengelola kunci tanpa mengunci diri sendiri. Ini lapisan yang membedakan restic dari sekadar tool backup biasa — dan alasan utama ia bisa disimpan di storage orang lain dengan aman.

Skema Enkripsi: AES-256-CTR + Poly1305-AES

Setiap blob di repository dienkripsi dua lapis:

  • Kerahasiaan: AES-256-CTR — stream cipher mode yang cepat dan cocok untuk data berukuran besar. Key-nya diturunkan dari master key repository.
  • Integritas: Poly1305-AES — Message Authentication Code (MAC) yang melindungi setiap blob dari perubahan. Bila satu byte diubah, MAC tidak cocok dan restic mendeteksinya.

Kombinasi "encrypt-then-MAC" ini berarti repository tidak hanya tak terbaca oleh pihak lain, tapi juga tak bisa diubah diam-diam — fondasi dari klaim snapshot immutable di episode 1.

Hierarki Kunci

Restic memakai hierarki dua tingkat:

  1. Repo key (password): kalian memasukkannya setiap membuka repository. Ia tidak pernah disimpan di storage — hanya turunannya.
  2. Master key: kunci enkripsi sebenarnya, dihasilkan acak saat restic init, dienkripsi dengan repo key, lalu disimpan di direktori keys/.

Saat membuka repository, restic mendekripsi master key menggunakan password kalian. Kehilangan password = kehilangan master key = data tak terbaca selamanya — alasan peringatan di episode 3.

Manajemen Kunci dengan restic key

Karena hanya master key yang melindungi data, password bisa diganti tanpa mendekripsi ulang seluruh repository — cukup enkripsi ulang master key dengan password baru:

Melihat Daftar Kunci

List semua repo key
restic key list

Menambah Kunci

Berguna untuk memberi akses ke anggota tim tanpa berbagi password utama:

Tambah repo key baru
restic key add

Mengganti Password

Ganti password repository
restic key passwd

Ini langkah pertama yang harus dilakukan bila password terpapar (misal bocor di git).

Menghapus Kunci

Hapus repo key
restic key remove <key-id>

Jangan hapus kunci kalian sendiri tanpa memastikan ada kunci lain yang masih valid — jika semua kunci terhapus, master key tak bisa didekripsi dan repository mati total.

Important

restic key mengelola repo key, bukan backend credential (AWS key, dsb). Jangan tertukar: satu melindungi data, satu lagi mengautentikasi ke storage.

Kebijakan Passphrase

Password repository adalah satu-satunya gerbang ke data. Standar yang sehat:

  • Panjang ≥ 20 karakter, acak, kombinasi kata unik (passphrase) atau diceware.
  • Unik — tidak dipakai ulang untuk akun lain.
  • Disimpan di vault/password manager (Bitwarden, KeePass, 1Password) atau secret manager (Vault/OpenBao — series Belajar Secret Management).
  • Satu repo, satu passphrase yang terdokumentasi di lokasi terpisah dari repository.

Contoh generate passphrase aman:

Generate passphrase acak
openssl rand -base64 30
LinuxContoh output
k7Qp2xLm9zVt4aR8bN1cD6fH3jK0qW5

Simpan salinan fisik (cetak) di tempat aman sebagai jaring pengaman terakhir — menyindir keparahan "lupa password = data hilang".

Penutup

  • Enkripsi: AES-256-CTR untuk kerahasiaan, Poly1305-AES (MAC) untuk integritas.
  • Hierarki: password → repo key → master key; lupa password = data hilang.
  • restic key list/add/passwd/remove mengelola repo key tanpa re-enkripsi data.
  • Ganti password segera (restic key passwd) jika kunci terpapar.
  • Passphrase: ≥ 20 karakter, unik, simpan di vault + salinan fisik terpisah.
  • Repo key ≠ backend credential — jangan tertukar.

Di episode 14 selanjutnya kita mengamankan jalur dan penyimpanan: keamanan backend & transport — mengapa SFTP/HTTPS bukan rsync telanjang, TLS untuk S3, firewall, serta immutability via bucket object lock dan repo --append-only untuk pertahanan anti-ransomware.

Belajar Restic - Enkripsi & Kunci | Belajar Restic