Kembali ke jurnalCATATAN FAJAR
Cryptography4 menit baca

[Crypto: age] Dari Password ke Ciphertext

Contoh pertama enkripsi file dengan age, dari teks yang bisa dibaca jadi file terenkripsi dan kembali lagi, dengan instruksi untuk setiap command.

BAGIAN 1 DARI 6Crypto: age
  1. 01[Crypto: age] Dari Password ke CiphertextKamu di sini
  2. 02[Crypto: age] Membaca Header
  3. 03[Crypto: age] scrypt, Dari Password ke Key
  4. 04[Crypto: age] ChaCha20-Poly1305, Menyegel Isi File
  5. 05[Crypto: age] Passphrase atau Key Pair
  6. 06[Crypto: age] Berapa Lama Serangan Passphrase Berlangsung?
Di artikel ini 5 bagian

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.

  1. Kalau Homebrew udah terinstal, instal age dengan command ini:

    bash
    brew install age
    
  2. Tampilkan versi yang terinstal:

    bash
    age --version
    

    Versi di contoh ini adalah:

    text
    v1.3.1
    
  3. Bikin direktori baru untuk contoh-contohnya:

    bash
    mkdir age-demo
    
  4. Pindah ke direktori itu:

    bash
    cd age-demo
    
  5. Bikin file contohnya:

    bash
    printf '%s\n' 'Meet me at the docks at 9. Bring the second key. Do not write this down.' > secret.txt
    
  6. Enkripsi file-nya:

    bash
    age -p -o secret.txt.age secret.txt
    
  7. Masukkan passphrase di prompt.

  8. 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:

BagianIsi
HeaderInformasi yang bisa dibaca tentang metode enkripsi dan sebuah file key terenkripsi
PayloadSebuah 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

  1. Dekripsi contohnya ke file baru:

    bash
    age -d -o out.txt secret.txt.age
    
  2. Masukkan passphrase yang sama dengan yang kamu pakai untuk enkripsi.

  3. Tampilkan hasilnya:

    bash
    cat out.txt
    

Opsi -d memilih dekripsi. Output-nya:

text
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:

bash
age -d secret.txt.age

Masukkan passphrase yang berbeda di prompt. age melaporkan error yang berisi:

text
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:

PostTopik
Membaca headerField-field yang bisa dibaca di awal file
Menurunkan key dengan scryptGimana age menurunkan wrapping key dari passphrase
Mengenkripsi dan mengautentikasi payloadGimana age mengenkripsi isi file dan mendeteksi perubahan
Memakai passphrase atau key pairDua cara untuk mengatur siapa yang bisa mendekripsi file
Menghitung waktu serangan passphraseGimana passphrase dan kecepatan serangan memengaruhi hasilnya

Post berikutnya pakai file secret.txt.age yang sama. Simpan file-file contoh dan passphrase-nya untuk melanjutkan.

TOPIK

SELANJUTNYA DI SERI INI[Crypto: age] Membaca Header

MAKASIH UDAH BACA

Gimana menurutmu?

Reaksi atau obrolan, dua-duanya selalu ditunggu.

Memuat reaksi…

Bagikan

Memuat komentar...

LANJUT JELAJAH

Satu pikiran bawa ke pikiran lain.

Semua tulisan
Kembali ke semua tulisanSatu catatan, pelan-pelan.