Posted by kecoak on Sep 24, 2007

reCAPTCHA implementation

reCAPTCHA merupakan metode implementasi terbaru untuk CAPTCHA (Completely Automated Public Turing test to Computers and Human Aparts). CAPTCHA merupakan metode challange yang banyak dimanfaatkan pada berbagai aplikasi web di internet sebagai metode untuk membedakan antara manusia dengan mesin. Kalian pasti sering melihat di form sign-up email, forum, ataupun untuk memasukan comment pada blog terdapat semacam gambar acak yang terlihat buram, kita harus menuliskan teks kata tersebut pada suatu form sebelum melakukan aksi yang sebenar nya (sign-up email atau forum misal nya), nah…itu lah CAPTCHA.

Terdapat banyak implementasi CAPTCHA pada aplikasi-aplikasi web yang populer seperti phpBB, wordpress, phpNuke, dsb. Dan umum nya memastikan bahwa yang berinteraksi dengan sistem saat ini adalah manusia, bukan mesin (seperti bot). Banyak sekali terdapat bot yang disebar pada internet memasukan comment yang sifat nya iklan ataupun mengganggu ke dalam media blog ataupun forum, dan bot ini umum nya dibuat dengan suatu script program. Dengan adanya CAPTCHA maka bot-bot tersebut dapat dicegah sehingga tidak dapat melakukan registrasi, post comment, dsb.

reCAPTCHA menggunakan metode baru dalam melakukan CAPTCHA, yaitu memanfaatkan 2 hal: Kata-kata yang tidak dapat dibaca dengan OCR (Optical Computer Recognition), dan manusia. Manusia?!Yups, kita bisa baca selengkapnya dari situs resmi nya di sini.

OCR (Optical Computer Recognition) dapat digunakan untuk mengubah hasil scan suatu buku (dalam bentuk gambar) kedalam suatu bentuk dokumen teks. Kita semua tentu tahu mengenai e-book. Pengubahan bentuk scan yang awalnya berupa gambar kedalam bentuk dokument teks dibutuhkan untuk berbagai tujuan, salah satu nya adalah agar mudah di-search oleh search engine. Namun adakalanya OCR tidak mampu membaca karakter hasil scan tersebut sehingga menghasilkan tulisan yang salah, misal nya seperti ini:

OCR scan

Kita bisa katakan reCAPTCHA adalah suatu project mutualisme dengan beberapa tujuan, yaitu: Meningkatkan kualitas CAPTCHA pada suatu sistem terhadap serangan bots, dan membantu proses book digitizing (pembuatan buku digital) dalam mengenali kata-kata yang tidak bisa dibaca oleh OCR. Ini adalah suatu project yang menarik :).

Bagaimana hal ini bisa terjadi?!silahkan baca statement berikut ini dari situs recaptcha:

About 60 million CAPTCHAs are solved by humans around the world every day. In each case, roughly ten seconds of human time are being spent. Individually, that’s not a lot of time, but in aggregate these little puzzles consume more than 150,000 hours of work each day. What if we could make positive use of this human effort? reCAPTCHA does exactly that by channeling the effort spent solving CAPTCHAs online into “reading” books.

Pengguna internet di dunia semakin banyak, dan semakin banyak orang yang setiap hari nya harus memecahkan challange dari CAPTCHA (dalam arti, membaca image CAPTCHA dan menuliskan hasil nya untuk autentifikasi) seperti posting comment di blog. Dan peran manusia dalam memecahkan challange CAPTCHA tersebut digambarkan oleh quote diatas, yang berarti ada sekitar 60 juta CAPTCHA yang di baca oleh manusia diseluruh dunia perhari nya. Jumlah inilah yang dimanfaatkan oleh reCAPTCHA.

Berikut langkah mudah nya:

    1. reCAPTCHA akan memberikan 2 kata dalam bentuk image ke user sebagai CAPTCHA, 1 dari 2 kata tersebut merupakan image yang diambil dari hasil kegagalan OCR dalam membaca image untuk di konversi ke teks, dalam arti ‘jawaban’ dalam bentuk teks untuk image tersebut belum dapat dibaca oleh komputer dimanapun sehingga tidak mungkin bots dapat membaca nya, hanya manusia yang dapat membaca nya. 1 kata lagi merupakan image yang sudah dapat dibaca oleh komputer namun tetap sulit bagi bot.
    2. Kita tidak tahu mana kata yang bisa dibaca ataupun tidak bisa dibaca oleh komputer, namun pada proses verifikasi sistem akan menerima kedua nya dan apabila jawaban pada jenis kata yang sudah diketahui ‘bentuk teks’ nya memang benar maka diasumsikan kata kedua yang belum diketahui jawaban nya juga benar, dan diasumsikan user adalah manusia. Namun kata yang belum diketahui jawaban nya tersebut tidak langsung digunakan sebagai ‘known words’, namun masih digunakan untuk authentifikasi terhadap beberapa user lain dengan status ‘unknown words’, hal ini digunakan sebagai uji coba agar kata yang gagal dikenali oleh OCR tersebut mendapatkan jawaban yang akurat. Hasil nya nanti digunakan pada proses OCR selanjut nya saat membaca image dengan bentuk seperti itu, dan OCR sudah tahu bentuk image seperti itu akan di konversi kedalam bentuk teks seperti apa. Nah, inilah yang dimaksud memanfaatkan manusia untuk membantu OCR dalam mengenali bentuk image yang hanya bisa dibaca oleh manusia.

Dan saat ini project reCAPTCHA membantu proses book digitizing dari Internet Archive.

Terlepas dari ‘digunakan’ oleh sistem untuk membantu proses kerja OCR, kita dapat menerapkan reCAPTCHA pada aplikasi web yang kita miliki, untuk saat ini reCAPTCHA sudah di implementasikan dalam bentuk plugin untuk wordpress dan mediawiki. Namun jika kita ingin membuat plugin sendiri untuk diimplementasikan pada aplikasi web milik pribadi, maka dapat membaca API yang terdapat pada website resmi reCAPTCHA. Blog kecoak elektronik juga saat ini sudah meng-implementasikan reCAPTCHA untuk posting comment, dan tentu selain untuk meningkatkan security terhadap b0t juga dengan tujuan agar dapat membantu proses book digtizing, sehingga akan lebih banyak lagi informasi dari buku-buku dapat dipindahkan kedalam bentuk digital dan dapat dibaca oleh orang-orang di seluruh dunia ;).

Post a Comment

12 Responses to “reCAPTCHA implementation”

  1. Andy says:

    Mantabbbbb…….
    Tapi kok beda sama CAPTCHA cuma karena reCAPTCHA punya dua challenge word yaa ?
    Kalo satu kata aja salah kita masukin, sistem bakalan nolak.
    Jadi apa bedanya yaaa kalo kita cuma naro’ satu challenge word aja ? Kan dengan satu challenge word aja, kalo salah kita ketik maka sistem akan nolak.

    Hehehehe, ada penjelasan soal ini Bro’ ?

  2. Cyb3rh3b says:

    @Andy: hehe, glad to see you here :). Inti dari reCAPTCHA bukan “jika satu kata salah, maka sistem akan menolak”. Ini beberapa point nya:

    1. Attacker (dlm hal ini bot program) tidak tahu yang mana dari kedua kata tersebut merupakan image yang telah diketahui jawaban nya. Jadi dia akan berusaha untuk memecahkan kedua image tersebut.

    2. Bot umumnya membaca image dari jenis implementasi CAPTCHA yang telah diketahui sebelum nya dengan menyerang algoritma CAPTCHA tersebut, namun untuk reCAPTCHA menggunakan image dari real world, yaitu image yang tidak bisa dibaca oleh OCR. Sehingga kecil kemungkinan nya bot dapat membaca image tersebut yang bahkan sudah di tambahkan distorsi (penggangu) oleh server reCAPTCHA. Dalam kasus reCAPTCHA, satu-satu nya yang bisa membaca image tersebut adalah “manusia”. Dan hasil jawaban dari manusia ini akan di challange lagi kepada manusia yang lain dan begitu seterus nya, dengan menggunakan perhitungan tertentu maka image yang tidak beraturan tersebut dapat ditentukan jawaban nya. Nah, bahkan server reCAPTCHA sendiri tidak mengetahui jawaban suatu image pada awal nya, dia mengetahui jawaban dari suatu image setelah beberapa kali diberikan pada user dan diyakini bahwa jawban nya benar.

    Jadi inti nya bukan satu atau dua kata, tapi kata-kata yang digunakan oleh reCAPTCHA merupakan image yang tidak bisa dibaca oleh OCR sehingga diasumsikan tidak bisa juga dibaca oleh script program (apalagi setelah ditambahkan distorsi). Kenapa 2 kata?!karena server reCAPTCHA sndr tidak dapat menentukan jawaban dari image tersebut utk menguji kebenaran nya, sehingga digunakan image lain yang telah dipecahkan oleh user sebelum nya sebagai acuan bagi server.

  3. Andy says:

    wahhh makin penasaran aja nih gue…. mantab kali jawaban loe Bro’
    nanya lagi gak papah kan ?

    Gue masih bingung ama pernyataan “image yang tidak bisa dibaca oleh OCR dan kecil kemungkinan bot bisa nebak”. Satu2nya yang bisa nebak kan manusia, terus gimana server reCAPTCHA bisa tau kalo jawaban si manusia itu tadi benar ? berarti dengan kata lain dia punya semacam algoritma pencocok dong yaaa ? Kalo image A yang keluar, maka jawaban yang benar adalah XXXXX.

    Kalo memang jawaban si manusia A kemudian di-challenge lagi ke si B, C, D, dst berarti server reCAPTCHA bakal milih jawaban terbanyak sebagai jawaban yang benar yaa ? hehehehe, itu yang terlintas di otak gue.

    Berarti saat si A memberi jawaban pertama kali, maka server reCAPTCHA akan menganggap jawaban apapun dari si A sebagai jawaban yang salah dong yaaa….. karena kan si server emang gak tau jawaban yang benar dan image itu pun belum sempat di-challenge ke si B, C, D, dst.

    Sorry yaaa Bro’ kalo jadi cerewet 😀

  4. Cyberheb says:

    Hm, gw suka brainstorming spt ini, so no problemo. Inti nya, reCAPTCHA tahu jawaban yang benar dari words yang ‘telah diketahui jawaban nya’ ya dari hasil challange sebelum nya, mengenai penilaian bisa dibaca pada situs resmi nya dan itu spt nya rahasia si server reCAPTCHA, contoh simple nya ya mungkin hasil dengan jawaban terbanyak, tp gw rasa ada parameter lain mas andi.

    Justru yang menjadi pertanyaan adalah, bagaimana proses penentuan ‘known words’ nya pertama kali, karena pertama kali di-setup dan di-gunakan oleh publik, seharus nya server re-CAPTCHA tidak memilki pengetahuan apapun karena image yang dikirim hasil dari failur OCR semua dan belum di challange kepada siapapun, utk itu mungkin harus melihat juga algoritma si server reCAPTCHA :).

    Tapiii…klo gw jd developer nya reCAPTCHA, mungkin melakukan 2 hal. Pertama, gw challange ke tim gw sndr sebagai uji coba untuk memecahkan jenis image yang tidak dapat di baca oleh OCR, dan hasil nya nanti digunakan sebagai ‘known words’ untuk public.

    Atau, memanfaatkan public beta tester, dimana utk 100 kasus pertama misal nya, digunakan known words dari jenis CAPTCHA biasa yang bisa di baca oleh server, dengan begitu akan terkumpul dengan sndr nya jenis ‘known words’ dari hasil challange public beta tester dan siap digunakan untuk public product.

    Untuk dari sisi server, gw jg masih meraba-raba berdasarkan logic explanation developer nya, jadi belum tau pasti, but that’s an interesting to discuss. Ntar klo tau jawaban pasti nya, bisa tuh di share :P.

    Btw, udah implementasikan reCAPTCHA blm mas?kyk nya perlu tuh buat server ikast3 hehe….

  5. tomfreakz says:

    eh tapi suer, gw pertama agak bingung ama reCAPTCHA yang baru inih..
    dari tulisan

  6. tomfreakz says:

    eh lho?? gw ga make spasi ni di recapthanya

  7. chapta test says:

    cuman test aja. masuk gak ya?

  8. chapta test says:

    sekali lagi

  9. MARIO says:

    gw bingung… gimana c cara kerja captcha ini sehingga bisa menghambat spam? gimana c caranya smpai bisa menghambatnya? thanks ya… reply ASAP

  10. hendryk says:

    test aja ya

Trackbacks/Pingbacks

  1. reCAPTCHA « [[email protected]]# cat .log - [...] Bagi yang tertarik dengan reCAPTCHA silahkan baca pada http://www.kecoak-elektronik.net/log/?p=9 [...]

Leave a Reply

Your email address will not be published. Required fields are marked *