Difference between revisions of "KI: Kriptografi dalam Dunia Nyata"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Pada tahap ini, kita berhenti membicarakan kriptografi sebagai rumus matematika dan mulai memperlakukannya sebagai alat kerja harian. Di dunia nyata, hampir semua engineer, sy...")
 
Line 1: Line 1:
 
Pada tahap ini, kita berhenti membicarakan kriptografi sebagai rumus matematika dan mulai memperlakukannya sebagai alat kerja harian. Di dunia nyata, hampir semua engineer, sysadmin, dan developer tidak pernah menghitung kriptografi secara manual—yang mereka lakukan adalah menggunakan library yang benar, dengan cara yang benar.
 
Pada tahap ini, kita berhenti membicarakan kriptografi sebagai rumus matematika dan mulai memperlakukannya sebagai alat kerja harian. Di dunia nyata, hampir semua engineer, sysadmin, dan developer tidak pernah menghitung kriptografi secara manual—yang mereka lakukan adalah menggunakan library yang benar, dengan cara yang benar.
 +
 
Kriptografi di sini diposisikan sebagai alat perlindungan data, bukan sebagai mystical black box. Jika digunakan dengan benar, kriptografi membuat sistem aman, tahan bocor, dan terpercaya. Namun jika digunakan salah, ia justru bisa memberi rasa aman palsu (false sense of security).
 
Kriptografi di sini diposisikan sebagai alat perlindungan data, bukan sebagai mystical black box. Jika digunakan dengan benar, kriptografi membuat sistem aman, tahan bocor, dan terpercaya. Namun jika digunakan salah, ia justru bisa memberi rasa aman palsu (false sense of security).
 +
 
Tujuan pertemuan ini sederhana namun krusial:
 
Tujuan pertemuan ini sederhana namun krusial:
setelah selesai, pembaca mampu mengenkripsi, melakukan hashing, dan menyimpan password dengan aman menggunakan Python.
+
setelah selesai, pembaca mampu mengenkripsi, melakukan hashing, dan menyimpan password dengan aman menggunakan Python.
Kriptografi dalam Dunia Nyata (Tanpa Ribet)
+
 
 +
==Kriptografi dalam Dunia Nyata (Tanpa Ribet)==
 +
 
 
Kriptografi modern bukan tentang “bagaimana algoritma bekerja”, melainkan:
 
Kriptografi modern bukan tentang “bagaimana algoritma bekerja”, melainkan:
Kapan harus hashing
+
* Kapan harus hashing
Kapan harus encryption
+
* Kapan harus encryption
Bagaimana menyimpan dan mengelola key
+
* Bagaimana menyimpan dan mengelola key
Bagaimana tidak membuat kesalahan fatal
+
* Bagaimana tidak membuat kesalahan fatal
 +
 
 
Sebagian besar kebocoran data di dunia bukan karena algoritmanya lemah, tetapi karena:
 
Sebagian besar kebocoran data di dunia bukan karena algoritmanya lemah, tetapi karena:
developer salah pakai,
+
* developer salah pakai,
konfigurasi asal jalan,
+
* konfigurasi asal jalan,
atau copy-paste kode tanpa paham konteks.
+
* atau copy-paste kode tanpa paham konteks.
Kriptografi yang salah = tidak ada kriptografi sama sekali.
+
Kriptografi yang salah = tidak ada kriptografi sama sekali.
Hashing — Bukan untuk Disimpan Balik
+
 
 +
==Hashing — Bukan untuk Disimpan Balik==
 
Hashing adalah proses mengubah data menjadi nilai tetap (fixed-length) yang tidak bisa dikembalikan ke bentuk awal. Ini satu arah (one-way).
 
Hashing adalah proses mengubah data menjadi nilai tetap (fixed-length) yang tidak bisa dikembalikan ke bentuk awal. Ini satu arah (one-way).
Hashing bukan enkripsi, dan ini penting untuk diingat.
+
Hashing bukan enkripsi, dan ini penting untuk diingat.
 
Hashing digunakan untuk:
 
Hashing digunakan untuk:
password
+
* password
verifikasi integritas file
+
* verifikasi integritas file
fingerprint data
+
* fingerprint data
 
Hashing tidak digunakan untuk:
 
Hashing tidak digunakan untuk:
menyimpan data pribadi yang perlu dibaca ulang
+
* menyimpan data pribadi yang perlu dibaca ulang
menyimpan nomor KTP, email, atau alamat
+
* menyimpan nomor KTP, email, atau alamat
 
Contoh sederhana:
 
Contoh sederhana:
Password: ✅ hash
+
* Password: ✅ hash
File upload check: ✅ hash
+
* File upload check: ✅ hash
Nomor KTP: ❌ jangan hash, enkripsi
+
* Nomor KTP: ❌ jangan hash, enkripsi
 
Hal penting yang WAJIB diingat:
 
Hal penting yang WAJIB diingat:
Jangan pernah pakai MD5 atau SHA1
+
* Jangan pernah pakai MD5 atau SHA1
Gunakan algoritma modern seperti bcrypt, scrypt, atau argon2
+
* Gunakan algoritma modern seperti bcrypt, scrypt, atau argon2
Password tidak pernah disimpan.
+
Password tidak pernah disimpan.
Yang disimpan hanyalah hasil hash-nya.
+
Yang disimpan hanyalah hasil hash-nya.
Encryption — Saat Data Harus Bisa Dibaca Lagi
+
==Encryption — Saat Data Harus Bisa Dibaca Lagi==
 
Jika hashing bersifat satu arah, encryption (enkripsi) bersifat dua arah.
 
Jika hashing bersifat satu arah, encryption (enkripsi) bersifat dua arah.
 
Artinya:
 
Artinya:
data enkripsi → aman saat disimpan
+
* data enkripsi → aman saat disimpan
data dekripsi → bisa dibaca kembali
+
* data dekripsi → bisa dibaca kembali
 
Encryption digunakan untuk:
 
Encryption digunakan untuk:
data pribadi (PII)
+
* data pribadi (PII)
token
+
* token
API key
+
* API key
data sensitif di database
+
* data sensitif di database
backup
+
* backup
 
Encryption selalu melibatkan kunci (key).
 
Encryption selalu melibatkan kunci (key).
 
Jika key bocor, maka data ikut bocor.
 
Jika key bocor, maka data ikut bocor.
 +
 
Jenis encryption yang umum dipakai:
 
Jenis encryption yang umum dipakai:
Symmetric encryption (satu key)
+
 
cepat
+
* Symmetric encryption (satu key)
cocok untuk database
+
** cepat
Asymmetric encryption (public & private key)
+
** cocok untuk database
cocok untuk komunikasi dan distribusi key
+
* Asymmetric encryption (public & private key)
Dalam praktik sehari-hari, AES adalah pilihan standar dan aman.
+
** cocok untuk komunikasi dan distribusi key
Key Management — Bagian yang Paling Sering Diabaikan
+
Dalam praktik sehari-hari, AES adalah pilihan standar dan aman.
 +
 
 +
==Key Management — Bagian yang Paling Sering Diabaikan==
 
Sebagus apapun algoritma kriptografi, jika key disimpan sembarangan, semuanya percuma.
 
Sebagus apapun algoritma kriptografi, jika key disimpan sembarangan, semuanya percuma.
 
Kesalahan umum:
 
Kesalahan umum:
key ditulis langsung di source code
+
* key ditulis langsung di source code
key di-commit ke GitHub
+
* key di-commit ke GitHub
key disimpan dalam file tanpa proteksi
+
* key disimpan dalam file tanpa proteksi
satu key dipakai untuk semua data
+
* satu key dipakai untuk semua data
 
Prinsip dasar key management:
 
Prinsip dasar key management:
Key ≠ password
+
* Key ≠ password
Key tidak pernah di-hardcode
+
* Key tidak pernah di-hardcode
Key disimpan di environment variable atau secret manager
+
* Key disimpan di environment variable atau secret manager
Key bisa diganti (rotasi)
+
* Key bisa diganti (rotasi)
Key adalah kunci rumah digital Anda.
+
 
Menaruhnya di depan pintu sama saja mengundang pencuri.
+
Key adalah kunci rumah digital Anda.
Kesalahan Umum Kriptografi (Ini yang Paling Sering Terjadi)
+
Menaruhnya di depan pintu sama saja mengundang pencuri.
 +
 
 +
==Kesalahan Umum Kriptografi (Ini yang Paling Sering Terjadi)==
 
Bagian ini penting karena 99% masalah keamanan berasal dari sini, bukan dari algoritma.
 
Bagian ini penting karena 99% masalah keamanan berasal dari sini, bukan dari algoritma.
 
Kesalahan yang sering dilakukan:
 
Kesalahan yang sering dilakukan:
Menggunakan algoritma lama (MD5, SHA1)
+
* Menggunakan algoritma lama (MD5, SHA1)
Enkripsi tanpa authentication
+
* Enkripsi tanpa authentication
Reuse key untuk banyak fungsi
+
* Reuse key untuk banyak fungsi
Menyimpan password dalam bentuk plaintext
+
* Menyimpan password dalam bentuk plaintext
Menganggap encoding (Base64) sebagai enkripsi ❌
+
* Menganggap encoding (Base64) sebagai enkripsi ❌
 
Perlu ditegaskan:
 
Perlu ditegaskan:
Base64 ❌ bukan enkripsi
+
* Base64 ❌ bukan enkripsi
Hash ❌ bukan untuk data pribadi
+
* Hash ❌ bukan untuk data pribadi
Encryption ❌ bukan untuk password
+
* Encryption ❌ bukan untuk password
 
Jika satu prinsip ini dipahami, 80% kesalahan kripto sudah terhindari.
 
Jika satu prinsip ini dipahami, 80% kesalahan kripto sudah terhindari.

Revision as of 15:12, 22 January 2026

Pada tahap ini, kita berhenti membicarakan kriptografi sebagai rumus matematika dan mulai memperlakukannya sebagai alat kerja harian. Di dunia nyata, hampir semua engineer, sysadmin, dan developer tidak pernah menghitung kriptografi secara manual—yang mereka lakukan adalah menggunakan library yang benar, dengan cara yang benar.

Kriptografi di sini diposisikan sebagai alat perlindungan data, bukan sebagai mystical black box. Jika digunakan dengan benar, kriptografi membuat sistem aman, tahan bocor, dan terpercaya. Namun jika digunakan salah, ia justru bisa memberi rasa aman palsu (false sense of security).

Tujuan pertemuan ini sederhana namun krusial:

setelah selesai, pembaca mampu mengenkripsi, melakukan hashing, dan menyimpan password dengan aman menggunakan Python.

Kriptografi dalam Dunia Nyata (Tanpa Ribet)

Kriptografi modern bukan tentang “bagaimana algoritma bekerja”, melainkan:

  • Kapan harus hashing
  • Kapan harus encryption
  • Bagaimana menyimpan dan mengelola key
  • Bagaimana tidak membuat kesalahan fatal

Sebagian besar kebocoran data di dunia bukan karena algoritmanya lemah, tetapi karena:

  • developer salah pakai,
  • konfigurasi asal jalan,
  • atau copy-paste kode tanpa paham konteks.
Kriptografi yang salah = tidak ada kriptografi sama sekali.

Hashing — Bukan untuk Disimpan Balik

Hashing adalah proses mengubah data menjadi nilai tetap (fixed-length) yang tidak bisa dikembalikan ke bentuk awal. Ini satu arah (one-way).

Hashing bukan enkripsi, dan ini penting untuk diingat.

Hashing digunakan untuk:

  • password
  • verifikasi integritas file
  • fingerprint data

Hashing tidak digunakan untuk:

  • menyimpan data pribadi yang perlu dibaca ulang
  • menyimpan nomor KTP, email, atau alamat

Contoh sederhana:

  • Password: ✅ hash
  • File upload check: ✅ hash
  • Nomor KTP: ❌ jangan hash, enkripsi

Hal penting yang WAJIB diingat:

  • Jangan pernah pakai MD5 atau SHA1
  • Gunakan algoritma modern seperti bcrypt, scrypt, atau argon2
Password tidak pernah disimpan.
Yang disimpan hanyalah hasil hash-nya.

Encryption — Saat Data Harus Bisa Dibaca Lagi

Jika hashing bersifat satu arah, encryption (enkripsi) bersifat dua arah. Artinya:

  • data enkripsi → aman saat disimpan
  • data dekripsi → bisa dibaca kembali

Encryption digunakan untuk:

  • data pribadi (PII)
  • token
  • API key
  • data sensitif di database
  • backup

Encryption selalu melibatkan kunci (key). Jika key bocor, maka data ikut bocor.

Jenis encryption yang umum dipakai:

  • Symmetric encryption (satu key)
    • cepat
    • cocok untuk database
  • Asymmetric encryption (public & private key)
    • cocok untuk komunikasi dan distribusi key
Dalam praktik sehari-hari, AES adalah pilihan standar dan aman.

Key Management — Bagian yang Paling Sering Diabaikan

Sebagus apapun algoritma kriptografi, jika key disimpan sembarangan, semuanya percuma. Kesalahan umum:

  • key ditulis langsung di source code
  • key di-commit ke GitHub
  • key disimpan dalam file tanpa proteksi
  • satu key dipakai untuk semua data

Prinsip dasar key management:

  • Key ≠ password
  • Key tidak pernah di-hardcode
  • Key disimpan di environment variable atau secret manager
  • Key bisa diganti (rotasi)
Key adalah kunci rumah digital Anda.
Menaruhnya di depan pintu sama saja mengundang pencuri.

Kesalahan Umum Kriptografi (Ini yang Paling Sering Terjadi)

Bagian ini penting karena 99% masalah keamanan berasal dari sini, bukan dari algoritma. Kesalahan yang sering dilakukan:

  • Menggunakan algoritma lama (MD5, SHA1)
  • Enkripsi tanpa authentication
  • Reuse key untuk banyak fungsi
  • Menyimpan password dalam bentuk plaintext
  • Menganggap encoding (Base64) sebagai enkripsi ❌

Perlu ditegaskan:

  • Base64 ❌ bukan enkripsi
  • Hash ❌ bukan untuk data pribadi
  • Encryption ❌ bukan untuk password

Jika satu prinsip ini dipahami, 80% kesalahan kripto sudah terhindari.