Keunikan KawalSuara adalah sistem gotong royong yang sangat terbuka:
- Setiap orang dapat berpartisipasi tanpa pendaftaran,
- Semua kontribusi dilakukan secara anonim
- Tidak ada supervisi oleh sekelompok orang dengan hak khusus (special privilege)
Keterbukaan ini justru menjadi sumber pertanyaan: Bagaimana
memastikan akurasi data karena orang bisa saja mengisi data salah baik sengaja
maupun tidak.
Artikel ini akan mencoba menjelaskan bagaimana KawalSuara
menerapkan mekanisme validasi yang sederhana namun efektif untuk mendeteksi
entri-entri yang salah. Efektifitas dari mekanisme ini terbukti dengan hasil
yang sangat mendekati hasil resmi dari KPU (selisih 0.37% pada tanggal 22 Juli
2014).
Cara Kerja
Cara Kerja
Ada dua prinsip utama di sistem Kawal-Suara untuk memastikan
akurasi dari data entri:
- Pemilihan formulir C1 secara acak
Hal ini untuk menghindari bias. Dengan pemilihan formulir secara acak, persentase perolehan suara akan cepat mencapai konvergensi (kurang dari 24 jam setelah Kawal-Suara dimulai, persentase perolehan suara sudah stabil dan tidak berfluktuasi lebih dari 1%).
- Mekanisme verifikasi untuk mendeteksi entri yang
salah.
Sistem akan mengusahakan agar setiap TPS dientri lebih dari satu kali. Bila ada entri yang berbeda maka yang dipilih adalah angka yang paling banyak dientri (nilai modus tertinggi). Misal sebuah TPS di-entri 4 kali. Data perolehan suara utk salah satu capres yang dientri adalah 125, 500, 175 dan 125. Maka yang dipilih adalah 125. Asumsinya adalah kemungkinan data entri benar lebih besar daripada data entri salah.
Sebagai implementasi kedua prinsip di atas, Kawal-Suara
menyediakan dua jenis mekanisme kontribusi dari relawan:
- Entri
Data
Relawan mengentri data berdasarkan formulir C1 yang dipilih sistem. Sistem akan memilih formulir C1 secara acak namun dengan prioritas berdasarkan nilai modus total yang terkecil (nilai modus dihitung untuk setiap jenis data: suara Prabowo, suara jokowi, suara sah, & suara tidak sah).
Sebuah TPS yang belum pernah dientri akan mempunyai nilai modus total = 0. Semakin banyak sebuah TPS dientri dengan data yang sama, maka nilai modusnya akan semakin tinggi. Perlu diperhatikan bahwa, sebuah TPS tidak akan pernah keluar dari daftar antrian untuk Entri Data. Jadi yang terjadi adalah saat nilai modus bertambah, TPS tersebut akan dilempar ke belakang antrian. Dengan demikian pada dasarnya proses data entri tidak pernah berakhir. Selama masih ada yang melakukan data entri, antrian tersebut akan terus berputar.
- Verifikasi
Data
Relawan mengecek hasil entri dari relawan lain dan memberi tanda:
- “BENAR” - efeknya adalah sama dengan mengentri dengan data yang sama persis, sehingga menguatkan tingkat kepercayaan dari entri data sebelumnya.
- “SALAH” -- efeknya tidak serta merta menghapus data yang dientri sebelumnya, melainkan sekedar mereset nilai modus menjadi 0, sehingga menempatkan TPS tersebut kembali ke antrian Entri Data dengan prioritas tinggi. Diharapkan saat entri berikutnya akan diisi dengan data yang benar.
Serangan Terstruktur, Sistematis & Masif
Mekanisme verifikasi di atas mendapat ujian ketika
KawalSuara menerima flood attack, di
mana dalam jangka waktu singkat muncul ribuan entri yang salah. Sebagian
diantaranya dapat dipastikan di-generate
oleh bot (IP tertentu melakukan entri dengan
data invalid hampir setiap detik). Dampak dari serangan ini persentase
perolehan suara sempat berfluktuasi hingga hampir 1%.
Analisa setelah kejadian berhasil menemukan sejumlah alamat IP yang menghasilkan setidaknya 15,000 entri yang invalid. Sebagian besar berhasil terdeteksi oleh mekanisme yang ada, namun diperkirakan ada beberapa ratus entri invalid yang “lolos” dan dianggap sebagai entri yang terverifikasi.
Hal ini diperkirakan karena adanya kerja sama antara para pengganggu tersebut. Sebagian pelaku bertugas melakukan entri data yang salah, sementara sebagian lagi melakukan verifikasi di mana jika ditemukan entri yang salah, mereka justru menandai entri tersebut sebagai entri yang “BENAR”. Akibatnya entri tersebut akan terlempar ke belakang antrian karena nilai modusnya bertambah. Akan butuh waktu lama sebelum entri tersebut mendapat kesempatan entri/verifikasi ulang tanpa intervensi.
- Blokir IP untuk repeat offender.
- Heuristics untuk menolak entri yang jelas-jelas tidak valid (misal jumlah suara lebih dari 900).
Hasil Perhitungan
Hingga KPU mengumumkan perolehan suara resmi tanggal 22
Juli, KawalSuara memang baru berhasil mengentri (dan memverifikasi) data dari 284,479
TPS (59.4%). Meskipun demikian persentase perolehan suara yang dihitung sangat
mendekati hasil dari KPU. Sebagai perbandingan ditampilkan pula hasil perhitungan
suara oleh KawalPemilu (http://www.kawalpemilu.org)
Namun perlu diperhatikan, KPU tidaklah merekap langsung dari
scan C1. Melainkan berdasarkan proses rekapitulasi berjenjang mulai dari
kelurahan, kecamatan, hingga nasional. Sehingga meskipun entri data dengan cara
crowdsourcing bisa 100% akurat, tetap akan ada perbedaan dengan hasil
perhitungan resmi antara lain karena kesalahan2 pengisian formulir C1 (yang banyak
ditemukan) yang diperbaiki terutama di tingkat kelurahan dan kecamatan, pemungutan suara ulang di beberapa daerah, dan masih adanya TPS yang belum tersedua scan formulir C1.
Prabowo-Hatta
|
Jokowi-JK
|
|
KPU
|
46.85%
|
53.15%
|
KawalSuara
|
47.22%
|
52.78%
|
KawalPemilu
|
46.99%
|
53.01%
|
Dengan demikian yang benar2 menunjukkan ada perbedaan adalah
di 2597 TPS (0.91%). Hasil pemeriksaan secara acak diperkirakan ada 4 macam penyebab perbedaan tersebut:
- Unsur Kesengajaan
Ini adalah hasil serangan seperti yang telah dijelaskan di atas - Unsur Ketidak-sengajaan
Dalam banyak kasus antara scan C1 dan data yang dientri hanya berbeda 1 digit. Tidak tertutup kemungkinan ini kesalahan ketik yang tidak disengaja. - Tulisan
yang tidak jelas
Cukup banyak juga hasil scan yang tidak jelas atau memang tulisan yang tidak jelas. Terkadang ini menyebabkan data entri yang salah. - Data dari
KawalPemilu tidak akurat
KawalPemilu pun ternyata tidak sepenuhnya terlepas dari masalah data entri yang salah. Bisa karena ketidaksengajaan, tapi tidak tertutup kemungkinan ada relawan yang “nakal”.
Untuk poin satu sampai tiga, secara teori seharusnya
mekanisme verifikasi akan banyak mendeteksi hal tersebut. Namun dalam
prakteknya masih juga ada yang lolos. Seperti dijelaskan sebelumnya hal ini
bisa disebabkan karena ada yang sengaja memberi tanda “BENAR” untuk entri yang
salah. Selain karena proses verifikasi yang sangat cepat dan dalam sebagian
besar kasus entri data sudah benar, bukan tidak mungkin hal ini menyebabkan
turunnya ketelitian relawan hingga tidak sengaja membenarkan entri yang salah.
Dalam beberapa kesempatan saya menyampaikan bahwa sistem
KawalSuara ini akan bekerja dengan baik jika lebih banyak orang jujur yang
mengentri dibandingkan orang tidak jujur. Salah satu tujuan saya mengatakan ini
tentunya adalah untuk memotivasi para relawan. Dan ini memang sangat masuk akal. Jika
probabilitas entri benar lebih besar dari entri salah (entri oleh orang jujur
lebih banyak dari entri oleh orang tidak jujur), maka untuk jumlah entri cukup
banyak frekuensi entri yang benar akan cenderung lebih besar dari pada
frekuensi entri salah.
Kelemahan utama sistem crowdsourcing yang terbuka adalah
perlunya usaha ekstra untuk memvalidasi seluruh data entri karena relawan tidak
bisa diasumsikan semuanya terpercaya. Dalam kasus KawalSuara jumlah total
kontribusi (entri data dan verifikasi data) mencapai lebih dari 730,000.
Seandainya semua kontribusi itu dianggap valid tentunya lebih dari cukup untuk
entri data 478,000 TPS. Namun karena rata2 setiap TPS perlu lebih dari 2 kontribusi
agar dianggap terverifikasi, maka perhitungan baru mencapai hampir 60%.
Tulisan saya berikutnya akan mencoba mengembangkan ide ini
lebih lanjut (kalau sempat :)).