Setiap baris data yang kita olah sering kali adalah manusia: nama pelanggan di tabel transaksi, nomor telepon di daftar member, riwayat pembelian yang bisa membaca selera seseorang. Sebelum satu analisis pun dijalankan, pertanyaan pertama yang wajib kita jawab adalah: bolehkah data ini kita pegang, dan siapa yang boleh melihatnya? Chapter ini membahas konsep data pribadi dan PII, membedakan anonimisasi dari pseudonymisasi, lalu mempraktikkan pseudonymisasi dengan hashing — teknik termurah yang seharusnya menjadi kebiasaan baku setiap data scientist.

Data Pribadi dan PII #

Data pribadi adalah segala informasi tentang orang yang dapat diidentifikasi, baik langsung maupun tidak langsung. Dalam praktik industri, istilah teknisnya adalah PII (personally identifiable information): kolom yang bisa dipakai untuk menunjuk satu individu tertentu. Nama lengkap, nomor induk kependudukan, nomor telepon, dan alamat surel adalah pengenal langsung — satu nilai saja sudah cukup untuk menunjuk satu orang.

Jebakan yang paling sering terlewat: beberapa kolom yang tampak tidak berbahaya bisa bergabung menjadi pengenal. Tabel pelanggan Toko Kopi Kita tanpa kolom nama pun tetap membuka identitas bila kombinasi tanggal bergabung, kode pos, dan jenis langganan hanya dimiliki satu orang — kombinasi semacam ini disebut quasi-identifier. Karena itu menilai PII tidak cukup per kolom; kita perlu memeriksa kombinasi kolom yang paling membedakan satu baris dari baris lain.

Jenis pengenalContohCiri utama
Pengenal langsungnama lengkap, NIK, nomor telepon, alamat surelsatu nilai cukup untuk menunjuk satu orang
Quasi-identifiertanggal bergabung + kode pos + jenis langganantiap kolom sendirian tidak cukup, kombinasinya bisa unik
Data dengan dampak beratdata kesehatan, keyakinan, catatan lokasi presisisalah guna berdampak besar pada orang tersebut, perlindungannya paling ketat

Kategori ketiga pada tabel menuntut kehati-hatian ekstra: bukan hanya sulit diidentifikasi, melainkan dampaknya bila disalahgunakan jauh lebih berat. Sebagai patokan praktis, semakin mudah satu baris menunjuk satu orang dan semakin sensitif isinya, semakin sedikit orang yang boleh mengaksesnya.

Anonimisasi dan Pseudonymisasi #

Setelah menyadari apa yang kita pegang, pertanyaan berikutnya adalah seberapa jauh identitas itu dilepas sebelum data dipakai. Dua istilah yang sering dipakai bergantian padahal berbeda:

AspekAnonimisasiPseudonymisasi
Apa yang dilakukanmengubah atau menghapus identitas hingga tidak dapat dikaitkan kembali ke individumengganti identitas dengan pseudonim, misalnya ID pengganti
Dapat dibalik?tidak — prosesnya satu arahya — bila tabel pemetaan pseudonim ke identitas asli masih ada
Contoh hasilusia 34 menjadi rentang 30-39, rata-rata per wilayah“Budi Santoso” menjadi pel-878d7a51
Status hasil menurut UU PDPidealnya berhenti menjadi data pribaditetap data pribadi; risikonya ditekan, kewajibannya tetap

Dua baris terakhir tabel itu yang paling sering disalahpahami. Pseudonymisasi tidak mengeluarkan data dari cakupan perlindungan data pribadi: selama tabel pemetaan masih tersimpan, baris pel-878d7a51 tetap bisa dikembalikan menjadi Budi Santoso. Di Indonesia, pemrosesan data pribadi diatur oleh UU PDP (Undang-Undang Pelindungan Data Pribadi) — pseudonymisasi mempermudah kepatuhan, bukan menghapus kewajiban. Anonimisasi sejati menuntut lebih: seluruh kombinasi quasi-identifier yang tersisa juga tidak boleh bisa menunjuk satu orang, dan membuktikannya jauh lebih sulit daripada sekadar menghapus kolom nama.

Pseudonymisasi Nama dengan Hashing #

Pseudonymisasi paling umum dilakukan dengan hashing: nama diubah menjadi sidik jari angka tetap melalui fungsi hash SHA-256. Kode berikut menyiapkan tabel pelanggan yang layak dibagikan ke tim analisis — identitas diganti pseudonim pendek, kolom kontak dibuang, tetapi analisis per pelanggan tetap mungkin:

python
import hashlib
import pandas as pd

pelanggan = pd.DataFrame({
    "nama": ["Budi Santoso", "Siti Rahayu", "Dewi Lestari",
             "Rani Putri", "Agus Pratama"],
    "telepon": ["0812-1111-2222", "0813-3333-4444", "0857-5555-6666",
                "0821-7777-8888", "0819-9999-0000"],
    "kota": ["Bandung", "Bandung", "Surabaya", "Bandung", "Surabaya"],
    "total_belanja": [412, 188, 654, 301, 240],
})

KUNCI = "toko-kopi-kita-2026"

def buat_pseudonim(nama):
    sidik = hashlib.sha256((KUNCI + nama.lower()).encode("utf-8")).hexdigest()
    return "pel-" + sidik[:8]

aman = pelanggan.copy()
aman["id_pelanggan"] = aman["nama"].apply(buat_pseudonim)
aman = aman.drop(columns=["nama", "telepon"])
aman = aman[["id_pelanggan", "kota", "total_belanja"]]

print(aman.to_string(index=False))
print()
print("id unik:", aman["id_pelanggan"].nunique(), "dari", len(aman), "pelanggan")
print("pseudonim Budi dua kali:",
      buat_pseudonim("Budi Santoso"), "|", buat_pseudonim("Budi Santoso"))

Output yang Dihasilkan:

text
id_pelanggan     kota  total_belanja
pel-878d7a51  Bandung            412
pel-f16a9ee9  Bandung            188
pel-25a9f5f0 Surabaya            654
pel-96198a14  Bandung            301
pel-e706fa4b Surabaya            240

id unik: 5 dari 5 pelanggan
pseudonim Budi dua kali: pel-878d7a51 | pel-878d7a51

Mari kita telaah bagian-bagian pentingnya:

  1. Baris 13 (KUNCI = ...): kunci digabungkan ke nama sebelum di-hash. Hash atas nama mentah tanpa kunci mudah dibalik orang luar dengan tabel kamus nama populer; kunci rahasia membuat pseudonim tidak bisa ditebak dari luar. Kunci sendiri wajib disimpan terpisah dari data, sama seperti tabel pemetaan.
  2. Baris 15-17 (buat_pseudonim): nama.lower() menormalkan kapital sehingga “Budi Santoso” dan “budi santoso” menghasilkan pseudonim yang sama. hexdigest()[:8] mengambil delapan karakter pertama sidik 64 karakter — cukup unik untuk tabel kecil; untuk jutaan baris, ambil potongan yang lebih panjang agar pseudonim tidak bertabrakan.
  3. Baris 19-22 (copy, apply, drop): pseudonim dipasang per baris lewat apply, lalu kolom identitas langsung dibuang. Urutan ini penting: jangan ada tahap di mana tabel berisi nama dan pseudonim sekaligus lalu keluar dari folder kerja.
  4. Baris terakhir output: nama yang sama selalu menghasilkan pseudonim yang sama — sifat deterministik inilah yang membuat tabel bulan ini tetap bisa digabungkan dengan tabel bulan depan lewat kolom id_pelanggan, tanpa pernah memegang nama lagi.

Memilih Teknik sesuai Kebutuhan Perlindungan #

Tidak ada satu teknik yang selalu menang; pilihannya ditentukan oleh pertanyaan analisis dan siapa yang akan memegang datanya:

TeknikPerlindungan yang diberikanCocok untuk
Buang kolom identitasidentitas tidak keluar sama sekalianalisis agregat yang tidak butuh baris per baris
Pseudonymisasi hashingidentitas tersembunyi, penggabungan antar tabel tetap bisapelacakan pelanggan lintas bulan
Masking sebagian (0812-***-2222)nilai asli tidak terbaca utuhtampilan dasbor dan contoh data di presentasi
Generalisasi (usia 34 menjadi 30-39)menyulitkan pencocokan satu per satupublikasi hasil ke pihak luar
Agregasi (rata-rata per kota)baris individual tidak lagi adalaporan manajemen rutin

Prinsip pemilihannya satu kalimat: simpan identitas hanya jika analisis memang membutuhkannya, dan sebisa mungkin pegang versi data yang paling tidak mengidentifikasi. Tim yang butuh nama biasanya hanya segelintir orang pada satu tahap; sisanya bisa bekerja penuh dengan pseudonim.

Rangkuman #

  • Data pribadi mencakup lebih dari kolom nama: kombinasi quasi-identifier seperti tanggal bergabung dan kode pos juga bisa menunjuk satu orang.
  • Anonimisasi bersifat satu arah dan idealnya mengakhiri status data pribadi; pseudonymisasi hanya mengganti identitas dengan pseudonim dan tetap berstatus data pribadi menurut UU PDP.
  • Hashing dengan kunci menghasilkan pseudonim deterministik: nama yang sama selalu menjadi ID yang sama, sehingga analisis lintas periode tetap mungkin tanpa memegang identitas.
  • Pilihan teknik — drop, pseudonymisasi, masking, generalisasi, agregasi — mengikuti kebutuhan analisis, dengan prinsip memegang versi data yang paling tidak mengidentifikasi.

Mengganti nama dengan pseudonim baru menyelesaikan satu sisi pekerjaan. Sisi lainnya berada di luar isi tabel: siapa yang boleh membuka berkas itu, di mana kredensial akses disimpan, dan bagaimana data tampil saat diperlihatkan kepada orang lain. Kita bahas pada chapter berikutnya: Keamanan Data .

Referensi: