KI: PRAKTEK 14: Evaluasi & Etika
PRAKTEK 14: Evaluasi & Etika Fokus pertemuan ini adalah: setelah bikin tool keamanan berbasis AI (phishing detector / audit PDP / IDS / privacy checker), mahasiswa belajar jadi profesional: mengukur kualitas, menguji keamanan, dan mengambil keputusan etis yang bisa dipertanggungjawabkan. Ini bukan “bab teori doang”—ini tahap yang bikin proyek kalian layak demo, layak dipakai, dan tidak membahayakan orang lain. Bayangin kamu mau deploy tool ke WA bot kampus / SOC mini / audit data dosen—kalau tool salah deteksi, bisa bikin panik, fitnah, atau kebocoran data. Maka mindset-nya: bayangkan kamu security engineer + data steward. Kalian akan bikin evaluasi yang rapi, lalu menulis refleksi profesional yang jujur, tajam, dan bisa dipresentasikan. Tujuan Setelah modul ini, mahasiswa mampu: Mengevaluasi performa sistem (akurasi, precision, recall, F1, false positive/false negative). Mengevaluasi keamanan sistem (risiko model leakage, input berbahaya, penyalahgunaan). Mengevaluasi privasi & kepatuhan (data minimization, masking, enkripsi). Membuat refleksi etika profesional: trade-off, mitigasi, batasan, dan rencana perbaikan. Output wajib: 1 dokumen “Refleksi & Evaluasi Proyek” (2–4 halaman, 1 spasi) + lampiran hasil uji (screenshot/log) + repo/zip kode. Aktivitas Utama (Flow Praktikum) Kita pakai flow sederhana yang bisa dipakai untuk semua jenis proyek akhir: Tahap 1 — Freeze Versi Proyek (Supaya Hasil Evaluasi Konsisten) Tujuannya: saat dievaluasi, kode & environment tidak berubah-ubah. Checklist: Tag versi di git (mis. v1.0-eval) Catat environment (Ubuntu 24.04, versi Python, dependency) Simpan dataset uji (tanpa data pribadi asli)
Contoh:
- di Ubuntu 24.04
python3 --version pip3 freeze > requirements.txt
git status git tag -a v1.0-eval -m "Evaluation baseline" git show v1.0-eval Tahap 2 — Uji Kualitas Model/Detektor (Metrics yang “security-minded”) Di keamanan, akurasi saja tidak cukup. Yang paling penting seringnya: False Negative (FN): serangan lolos (bahaya besar) False Positive (FP): alarm palsu (bikin capek, menurunkan trust) Minimal yang harus dihitung: Confusion matrix precision, recall, F1 (opsional) ROC-AUC kalau model probabilistik Contoh Kode Evaluasi (Umum, untuk classifier) Misal output prediksi proyek kamu berupa label 0/1 dan ground-truth 0/1.
- eval_metrics.py
from sklearn.metrics import classification_report, confusion_matrix
def evaluate(y_true, y_pred, label_positive=1):
cm = confusion_matrix(y_true, y_pred, labels=[0, label_positive])
print("Confusion Matrix [TN FP; FN TP]:")
print(cm)
print("\nClassification Report:")
print(classification_report(y_true, y_pred, digits=4))
if __name__ == "__main__":
# contoh dummy (ganti dengan hasil proyekmu) y_true = [1,0,1,1,0,0,1,0,1,0] y_pred = [1,0,0,1,0,1,1,0,1,0] evaluate(y_true, y_pred)
Jalankan: python3 -m pip install -U scikit-learn python3 eval_metrics.py
Yang harus ditulis di laporan: kalau FN masih tinggi, kamu harus jelaskan strategi mitigasi (mis. threshold diturunkan, rules tambahan, review manual). Tahap 3 — Uji Robustness (Input “Nakal” ala Attacker) Sekarang masuk bagian yang fun: kalian jadi “attacker” buat ngetes sistem sendiri. 1. Untuk phishing detector Coba variasi teks: obfuscation: “l0g1n”, “p4ssw0rd”, spasi aneh, unicode link shortener palsu “urgent tone” (“segera”, “akun diblokir”) 2. Untuk audit PDP / PII detector Coba PII yang disamarkan: email: nama [at] domain [dot] com nomor: 08 12-3456-7890 NIK dengan spasi 3. Untuk IDS log detector Coba log injection: masukkan karakter aneh, payload panjang, format rusak. Contoh fuzzer input sederhana:
- fuzz_inputs.py
tests = [
"login sekarang di http://bit.ly/xxx", "l0g1n skrg di hxxp://example[dot]com", "EMAIL: budi [at] mail [dot] com", "NIK: 3174 1234 5678 9012", "!!!" * 1000,
]
for t in tests:
print("TEST:", t[:80], "...")
Target evaluasi: sistem kamu tidak crash, tidak error, dan tetap kasih output yang masuk akal (walau mungkin “unknown”). Tahap 4 — Uji Privasi & Data Handling (PDP-friendly) Di proyek keamanan AI, data handling itu separuh dari kualitas. Minimal harus ada: Data minimization: hanya ambil field yang perlu Masking saat logging/printing Enkripsi untuk file sensitif (kalau ada) Contoh: Masking PII sebelum masuk log
- pii_mask.py
import re
EMAIL = re.compile(r'\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b') PHONE = re.compile(r'\b(\+62|62|0)8[0-9][0-9 -]{7,12}\b')
def mask(text: str) -> str:
text = EMAIL.sub("[EMAIL_REDACTED]", text)
text = PHONE.sub("[PHONE_REDACTED]", text)
return text
if __name__ == "__main__":
sample = "Hubungi 0812-3456-7890 atau email budi@mail.com" print(mask(sample))
Contoh: Enkripsi laporan/dataset dengan GnuPG (Open Source) Install: sudo apt update sudo apt install -y gnupg Encrypt file (pakai passphrase): gpg --symmetric --cipher-algo AES256 laporan_evaluasi.pdf
- hasil: laporan_evaluasi.pdf.gpg
Decrypt: gpg --decrypt laporan_evaluasi.pdf.gpg > laporan_evaluasi.pdf Di laporan, tulis: file apa yang dienkripsi, kenapa, dan siapa yang boleh akses. Tahap 5 — Etika AI & Keamanan (Diskusi yang “Real”, bukan normatif) Di sini kalian bahas kasus nyata dan kaitkan ke proyek sendiri. 5 Studi Kasus yang Cocok untuk Diskusi Kelas False Positive bikin korban: tool phishing kamu salah tandai email dosen → reputasi rusak. Pertanyaan: bagaimana mekanisme appeal/review? Siapa yang memutuskan? False Negative bikin kebobolan: IDS kamu gagal deteksi brute force. Pertanyaan: mana yang lebih kamu prioritaskan: FN kecil atau FP kecil? Kenapa? Data pribadi “nyangkut” di log: tool audit menulis NIK/email ke log server. Pertanyaan: log retention berapa lama? siapa akses? Kenapa tidak dimasking? Dual-use: tool audit/IDS bisa dipakai untuk memata-matai. Pertanyaan: fitur apa yang harus dibatasi? apakah perlu role-based access? Overclaiming: presentasi demo bilang “AI kami akurat 99%” padahal dataset kecil. Pertanyaan: apa definisi “akurat”? apakah datanya representatif? Apa batasanmu? Output diskusi harus mengarah ke aksi: “kami akan menambahkan X untuk mencegah Y”. Output Akhir: Template “Refleksi Tertulis” Dokumen refleksi kalian sebaiknya punya struktur ini (biar terlihat profesional): 1. Ringkasan Proyek (1 paragraf) Apa toolsnya, input/output, target pengguna. 2. Dataset & Metodologi Evaluasi Sumber data (dummy/sintetik), ukuran, pembagian train/test (kalau ada). Skenario uji: normal vs adversarial. 3. Hasil Evaluasi (wajib angka) Confusion matrix + precision/recall/F1 Jelaskan FN & FP: mana yang paling bahaya di konteks proyekmu. 4. Uji Robustness & Temuan Contoh input nakal Apakah tool crash? apakah output menyesatkan? 5. Privasi & Keamanan Data Apa yang di masking, apa yang dienkripsi (pakai GnuPG), kebijakan retensi. 6. Risiko Etika & Mitigasi Minimal 3 risiko + mitigasi nyata (fitur/prosedur) Batasan: apa yang tool kamu belum bisa 7. Rencana Perbaikan (Next steps) 3–5 poin yang realistis (mis. tambah dataset, tuning threshold, UI peringatan, audit log aman) Di seluruh dokumen, bold hal penting seperti FN/FP trade-off, batasan sistem, mitigasi, privacy handling. Istilah asing tulis italic: precision, recall, false positive, data minimization, dual-use. Checklist Penilaian (Rubrik Sederhana) Kalau mau grading cepat, gunakan rubrik ini: Evaluasi kuantitatif ada (metrics jelas) — 30% Robustness testing (input nakal, tidak crash, ada analisis) — 20% Privasi & pengamanan data (masking/enkripsi dengan GnuPG) — 20% Etika & mitigasi nyata (bukan slogan) — 20% Kerapian laporan & reproducibility (requirements.txt, cara run) — 10% Mini-Challenge (Supaya Menantang) Pilih salah satu: Turunkan false negative 20% tanpa menaikkan FP “gila-gilaan”. Tambahkan “mode aman”: output UNKNOWN kalau confidence rendah (lebih etis daripada asal nuduh). Semua file laporan/dataset uji terenkripsi GnuPG + ada SOP akses 5 baris.