Difference between revisions of "KI: PRAKTEK 9: Serangan terhadap AI"

From OnnoWiki
Jump to navigation Jump to search
(Created page with " PRAKTEK 9: Serangan terhadap AI Fokus modul ini adalah membongkar asumsi “AI selalu benar”. Mahasiswa diajak hands-on melihat sendiri bagaimana model AI bisa ditipu, dima...")
 
 
Line 1: Line 1:
 +
Fokus modul ini adalah membongkar asumsi “AI selalu benar”. Mahasiswa diajak hands-on melihat sendiri bagaimana model AI bisa ditipu, dimanipulasi, dan disesatkan, bahkan dengan perubahan kecil yang tidak terlihat oleh manusia.
  
PRAKTEK 9: Serangan terhadap AI
 
Fokus modul ini adalah membongkar asumsi “AI selalu benar”. Mahasiswa diajak hands-on melihat sendiri bagaimana model AI bisa ditipu, dimanipulasi, dan disesatkan, bahkan dengan perubahan kecil yang tidak terlihat oleh manusia.
 
 
Seluruh praktik menggunakan Linux Ubuntu 24.04, Python, dan open-source software. Tidak ada black box, tidak ada proprietary tools.
 
Seluruh praktik menggunakan Linux Ubuntu 24.04, Python, dan open-source software. Tidak ada black box, tidak ada proprietary tools.
Tujuan
+
 
 +
==Tujuan==
 
Setelah menyelesaikan modul ini, mahasiswa mampu:
 
Setelah menyelesaikan modul ini, mahasiswa mampu:
Memahami kelemahan fundamental sistem AI
+
* Memahami kelemahan fundamental sistem AI
Menjelaskan konsep adversarial example dan data poisoning
+
* Menjelaskan konsep adversarial example dan data poisoning
Mensimulasikan serangan nyata terhadap model AI
+
* Mensimulasikan serangan nyata terhadap model AI
Menganalisis perubahan output akibat manipulasi input/data
+
* Menganalisis perubahan output akibat manipulasi input/data
Menyadari bahwa AI adalah sistem statistik, bukan sistem kebenaran
+
* Menyadari bahwa AI adalah sistem statistik, bukan sistem kebenaran
 
Pesan kunci:
 
Pesan kunci:
AI bisa salah — dan kesalahan itu bisa direkayasa.
+
AI bisa salah — dan kesalahan itu bisa direkayasa.
Konsep Inti (Fundamental yang Wajib Dipahami)
+
 
Adversarial Example
+
==Konsep Inti (Fundamental yang Wajib Dipahami)==
 +
 
 +
===Adversarial Example===
 +
 
 
Adversarial example adalah input yang dimodifikasi sangat kecil, sering kali tidak terlihat oleh manusia, tetapi mengubah prediksi AI secara drastis.
 
Adversarial example adalah input yang dimodifikasi sangat kecil, sering kali tidak terlihat oleh manusia, tetapi mengubah prediksi AI secara drastis.
 +
 
Contoh dunia nyata:
 
Contoh dunia nyata:
Gambar rambu STOP → AI membaca Speed Limit
+
* Gambar rambu STOP → AI membaca Speed Limit
Email normal → diklasifikasikan sebagai spam
+
* Email normal → diklasifikasikan sebagai spam
Teks biasa → lolos sensor moderasi
+
* Teks biasa → lolos sensor moderasi
 
👉 Masalahnya bukan bug, tetapi cara AI belajar dari pola statistik.
 
👉 Masalahnya bukan bug, tetapi cara AI belajar dari pola statistik.
Data Poisoning
+
 
 +
===Data Poisoning===
 
Data poisoning adalah serangan sebelum AI digunakan, yaitu dengan merusak data latih (training data).
 
Data poisoning adalah serangan sebelum AI digunakan, yaitu dengan merusak data latih (training data).
 +
 
Contoh nyata:
 
Contoh nyata:
Dataset wajah diberi label salah
+
* Dataset wajah diberi label salah
Review palsu dimasukkan ke data rekomendasi
+
* Review palsu dimasukkan ke data rekomendasi
Data sensor dimanipulasi sebelum pelatihan
+
* Data sensor dimanipulasi sebelum pelatihan
 
👉 Jika data rusak, model secanggih apa pun akan rusak.
 
👉 Jika data rusak, model secanggih apa pun akan rusak.
Tools yang Digunakan
+
 
 +
==Tools yang Digunakan==
 
Semua tools bersifat open source:
 
Semua tools bersifat open source:
Ubuntu Linux 24.04
+
* Ubuntu Linux 24.04
Python 3.12
+
* Python 3.12
scikit-learn
+
* scikit-learn
NumPy
+
* NumPy
Jupyter Notebook
+
* Jupyter Notebook
(opsional) Matplotlib untuk visualisasi
+
* (opsional) Matplotlib untuk visualisasi
Praktikum Lengkap (Step-by-Step)
+
 
Bagian A — Setup Lingkungan
+
==Praktikum Lengkap (Step-by-Step)==
 +
 
 +
===Bagian A — Setup Lingkungan===
 +
 
 +
sudo apt update
 +
sudo apt install python3 python3-pip python3-venv -y
  
sudo apt update
 
sudo apt install python3 python3-pip python3-venv -y
 
 
Buat virtual environment:
 
Buat virtual environment:
python3 -m venv ai-attack-env
+
 
source ai-attack-env/bin/activate
+
python3 -m venv ai-attack-env
 +
source ai-attack-env/bin/activate
 +
 
 
Install library:
 
Install library:
pip install numpy scikit-learn matplotlib jupyter
+
 
Bagian B — Train Model AI Sederhana
+
pip install numpy scikit-learn matplotlib jupyter
 +
 
 +
===Bagian B — Train Model AI Sederhana===
 +
 
 
Kita mulai dari model yang “benar” dan “bersih”.
 
Kita mulai dari model yang “benar” dan “bersih”.
Dataset & Model
 
from sklearn.datasets import load_iris
 
from sklearn.model_selection import train_test_split
 
from sklearn.linear_model import LogisticRegression
 
from sklearn.metrics import accuracy_score
 
  
# Load dataset
+
====Dataset & Model====
data = load_iris()
 
X, y = data.data, data.target
 
  
# Split
+
from sklearn.datasets import load_iris
X_train, X_test, y_train, y_test = train_test_split(
+
from sklearn.model_selection import train_test_split
    X, y, test_size=0.2, random_state=42
+
from sklearn.linear_model import LogisticRegression
)
+
from sklearn.metrics import accuracy_score
 +
 +
# Load dataset
 +
data = load_iris()
 +
X, y = data.data, data.target
 +
 +
# Split
 +
X_train, X_test, y_train, y_test = train_test_split(
 +
    X, y, test_size=0.2, random_state=42
 +
)
 +
 +
# Train model
 +
model = LogisticRegression(max_iter=200)
 +
model.fit(X_train, y_train)
 +
 +
# Evaluate
 +
y_pred = model.predict(X_test)
 +
print("Accuracy:", accuracy_score(y_test, y_pred))
  
# Train model
+
Catatan Penting:
model = LogisticRegression(max_iter=200)
+
Model ini tidak salah. Ia bekerja sesuai statistik.
model.fit(X_train, y_train)
 
  
# Evaluate
+
===Bagian C — Adversarial Example (Serangan Input)===
y_pred = model.predict(X_test)
+
 
print("Accuracy:", accuracy_score(y_test, y_pred))
+
====Tujuan====
Catatan Penting:
 
Model ini tidak salah. Ia bekerja sesuai statistik.
 
Bagian C — Adversarial Example (Serangan Input)
 
Tujuan
 
 
Membuktikan bahwa perubahan kecil bisa menipu AI.
 
Membuktikan bahwa perubahan kecil bisa menipu AI.
Ambil Satu Data Uji
 
import numpy as np
 
  
sample = X_test[0]
+
====Ambil Satu Data Uji====
label = y_test[0]
+
import numpy as np
 +
 +
sample = X_test[0]
 +
label = y_test[0]
 +
 +
print("Original prediction:", model.predict([sample]))
 +
print("True label:", label)
  
print("Original prediction:", model.predict([sample]))
 
print("True label:", label)
 
 
Manipulasi Input Secara Halus
 
Manipulasi Input Secara Halus
  
# Tambahkan noise kecil
+
# Tambahkan noise kecil
epsilon = 0.1
+
epsilon = 0.1
adversarial_sample = sample + epsilon * np.sign(sample)
+
adversarial_sample = sample + epsilon * np.sign(sample)
 +
 +
print("Adversarial prediction:", model.predict([adversarial_sample]))
  
print("Adversarial prediction:", model.predict([adversarial_sample]))
 
 
Yang terjadi:
 
Yang terjadi:
Secara visual: data hampir sama
+
* Secara visual: data hampir sama
Secara matematis: AI membaca berbeda
+
* Secara matematis: AI membaca berbeda
 +
 
 
Diskusi Kritis
 
Diskusi Kritis
Apakah manusia bisa melihat perbedaannya? ❌
+
* Apakah manusia bisa melihat perbedaannya? ❌
Apakah AI berubah keputusan? ✅
+
* Apakah AI berubah keputusan? ✅
Apakah ini bug? ❌
+
* Apakah ini bug? ❌
Apakah ini kelemahan desain AI? ✅
+
* Apakah ini kelemahan desain AI? ✅
 +
 
 +
===Bagian D — Data Poisoning (Serangan Data Training)===
  
Bagian D — Data Poisoning (Serangan Data Training)
+
====Tujuan====
Tujuan
 
 
Menunjukkan bahwa AI bisa “dibohongi” sejak awal pelatihan.
 
Menunjukkan bahwa AI bisa “dibohongi” sejak awal pelatihan.
Racuni Dataset
 
  
import random
+
====Racuni Dataset====
  
# Salin data latih
+
import random
X_poisoned = X_train.copy()
+
y_poisoned = y_train.copy()
+
# Salin data latih
 +
X_poisoned = X_train.copy()
 +
y_poisoned = y_train.copy()
 +
 +
# Ubah label secara acak
 +
for i in random.sample(range(len(y_poisoned)), 10):
 +
    y_poisoned[i] = (y_poisoned[i] + 1) % 3
  
# Ubah label secara acak
+
====Train Model dengan Data Rusak====
for i in random.sample(range(len(y_poisoned)), 10):
 
    y_poisoned[i] = (y_poisoned[i] + 1) % 3
 
Train Model dengan Data Rusak
 
  
poisoned_model = LogisticRegression(max_iter=200)
+
poisoned_model = LogisticRegression(max_iter=200)
poisoned_model.fit(X_poisoned, y_poisoned)
+
poisoned_model.fit(X_poisoned, y_poisoned)
 +
 +
y_pred_poisoned = poisoned_model.predict(X_test)
 +
print("Accuracy poisoned model:", accuracy_score(y_test, y_pred_poisoned))
  
y_pred_poisoned = poisoned_model.predict(X_test)
 
print("Accuracy poisoned model:", accuracy_score(y_test, y_pred_poisoned))
 
 
Hasil:
 
Hasil:
Akurasi turun, tetapi AI tidak tahu bahwa ia sedang salah.
+
Akurasi turun, tetapi AI tidak tahu bahwa ia sedang salah.
Bagian E — Analisis & Refleksi
+
 
 +
===Bagian E — Analisis & Refleksi===
 
Apa yang Dipelajari Mahasiswa?
 
Apa yang Dipelajari Mahasiswa?
AI tidak memahami makna, hanya pola
+
* AI tidak memahami makna, hanya pola
Perubahan kecil → dampak besar
+
* Perubahan kecil → dampak besar
Kualitas data lebih penting dari algoritma
+
* Kualitas data lebih penting dari algoritma
Serangan AI murah dan mudah dilakukan
+
* Serangan AI murah dan mudah dilakukan
  
Output Praktikum (Wajib Dikumpulkan)
+
==Output Praktikum (Wajib Dikumpulkan)==
 
Mahasiswa menyerahkan:
 
Mahasiswa menyerahkan:
Notebook Jupyter
+
 
Training normal
+
* Notebook Jupyter
Adversarial example
+
** Training normal
Data poisoning
+
** Adversarial example
Analisis singkat (1–2 halaman):
+
** Data poisoning
Bagian mana yang paling berbahaya?
+
 
Mana yang lebih sulit dideteksi?
+
* Analisis singkat (1–2 halaman):
Implikasi untuk AI di pemerintahan / industri?
+
** Bagian mana yang paling berbahaya?
Insight Penutup (Inspiratif)
+
** Mana yang lebih sulit dideteksi?
AI bukan masalahnya.
+
** Implikasi untuk AI di pemerintahan / industri?
Cara kita mempercayainya tanpa verifikasi — itulah masalahnya.
+
 
 +
==Insight Penutup (Inspiratif)==
 +
AI bukan masalahnya.
 +
Cara kita mempercayainya tanpa verifikasi — itulah masalahnya.
 +
 
 
Modul ini membekali mahasiswa mindset security-first:
 
Modul ini membekali mahasiswa mindset security-first:
Jangan percaya output AI
+
* Jangan percaya output AI
Selalu audit data
+
* Selalu audit data
Selalu uji asumsi
+
* Selalu uji asumsi
  
  

Latest revision as of 18:21, 23 January 2026

Fokus modul ini adalah membongkar asumsi “AI selalu benar”. Mahasiswa diajak hands-on melihat sendiri bagaimana model AI bisa ditipu, dimanipulasi, dan disesatkan, bahkan dengan perubahan kecil yang tidak terlihat oleh manusia.

Seluruh praktik menggunakan Linux Ubuntu 24.04, Python, dan open-source software. Tidak ada black box, tidak ada proprietary tools.

Tujuan

Setelah menyelesaikan modul ini, mahasiswa mampu:

  • Memahami kelemahan fundamental sistem AI
  • Menjelaskan konsep adversarial example dan data poisoning
  • Mensimulasikan serangan nyata terhadap model AI
  • Menganalisis perubahan output akibat manipulasi input/data
  • Menyadari bahwa AI adalah sistem statistik, bukan sistem kebenaran

Pesan kunci:

AI bisa salah — dan kesalahan itu bisa direkayasa.

Konsep Inti (Fundamental yang Wajib Dipahami)

Adversarial Example

Adversarial example adalah input yang dimodifikasi sangat kecil, sering kali tidak terlihat oleh manusia, tetapi mengubah prediksi AI secara drastis.

Contoh dunia nyata:

  • Gambar rambu STOP → AI membaca Speed Limit
  • Email normal → diklasifikasikan sebagai spam
  • Teks biasa → lolos sensor moderasi

👉 Masalahnya bukan bug, tetapi cara AI belajar dari pola statistik.

Data Poisoning

Data poisoning adalah serangan sebelum AI digunakan, yaitu dengan merusak data latih (training data).

Contoh nyata:

  • Dataset wajah diberi label salah
  • Review palsu dimasukkan ke data rekomendasi
  • Data sensor dimanipulasi sebelum pelatihan

👉 Jika data rusak, model secanggih apa pun akan rusak.

Tools yang Digunakan

Semua tools bersifat open source:

  • Ubuntu Linux 24.04
  • Python 3.12
  • scikit-learn
  • NumPy
  • Jupyter Notebook
  • (opsional) Matplotlib untuk visualisasi

Praktikum Lengkap (Step-by-Step)

Bagian A — Setup Lingkungan

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

Buat virtual environment:

python3 -m venv ai-attack-env
source ai-attack-env/bin/activate

Install library:

pip install numpy scikit-learn matplotlib jupyter

Bagian B — Train Model AI Sederhana

Kita mulai dari model yang “benar” dan “bersih”.

Dataset & Model

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Load dataset
data = load_iris()
X, y = data.data, data.target

# Split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# Train model
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Evaluate
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

Catatan Penting:

Model ini tidak salah. Ia bekerja sesuai statistik.

Bagian C — Adversarial Example (Serangan Input)

Tujuan

Membuktikan bahwa perubahan kecil bisa menipu AI.

Ambil Satu Data Uji

import numpy as np

sample = X_test[0]
label = y_test[0]

print("Original prediction:", model.predict([sample]))
print("True label:", label)

Manipulasi Input Secara Halus

# Tambahkan noise kecil
epsilon = 0.1
adversarial_sample = sample + epsilon * np.sign(sample)

print("Adversarial prediction:", model.predict([adversarial_sample]))

Yang terjadi:

  • Secara visual: data hampir sama
  • Secara matematis: AI membaca berbeda

Diskusi Kritis

  • Apakah manusia bisa melihat perbedaannya? ❌
  • Apakah AI berubah keputusan? ✅
  • Apakah ini bug? ❌
  • Apakah ini kelemahan desain AI? ✅

Bagian D — Data Poisoning (Serangan Data Training)

Tujuan

Menunjukkan bahwa AI bisa “dibohongi” sejak awal pelatihan.

Racuni Dataset

import random

# Salin data latih
X_poisoned = X_train.copy()
y_poisoned = y_train.copy()

# Ubah label secara acak
for i in random.sample(range(len(y_poisoned)), 10):
    y_poisoned[i] = (y_poisoned[i] + 1) % 3

Train Model dengan Data Rusak

poisoned_model = LogisticRegression(max_iter=200)
poisoned_model.fit(X_poisoned, y_poisoned)

y_pred_poisoned = poisoned_model.predict(X_test)
print("Accuracy poisoned model:", accuracy_score(y_test, y_pred_poisoned))

Hasil:

Akurasi turun, tetapi AI tidak tahu bahwa ia sedang salah.

Bagian E — Analisis & Refleksi

Apa yang Dipelajari Mahasiswa?

  • AI tidak memahami makna, hanya pola
  • Perubahan kecil → dampak besar
  • Kualitas data lebih penting dari algoritma
  • Serangan AI murah dan mudah dilakukan

Output Praktikum (Wajib Dikumpulkan)

Mahasiswa menyerahkan:

  • Notebook Jupyter
    • Training normal
    • Adversarial example
    • Data poisoning
  • Analisis singkat (1–2 halaman):
    • Bagian mana yang paling berbahaya?
    • Mana yang lebih sulit dideteksi?
    • Implikasi untuk AI di pemerintahan / industri?

Insight Penutup (Inspiratif)

AI bukan masalahnya.
Cara kita mempercayainya tanpa verifikasi — itulah masalahnya.

Modul ini membekali mahasiswa mindset security-first:

  • Jangan percaya output AI
  • Selalu audit data
  • Selalu uji asumsi


Pranala Menarik