Dalam salah satu proyek mutakhir, kami mengembangkan sebuah aplikasi yang bisa menentukan huruf apa yang diketikkan pengguna di papan ketik layar sebuah telepon seluler—tanpa membaca input dari papan ketik. Yang kami lakukan adalah menggabungkan informasi dari giroskop telepon dan mikrofonnya.
Ketika seorang pengguna mengetuk-ngetuk layar di lokasi-lokasi berbeda, ponsel beputar sedikit dan itu bisa diukur oleh giroskop mikromekanis tiga poros yang terdapat dalam hampir semua ponsel masa kini. Lebih dari itu, mengetuk layar ponsel menghasilkan suara yang bisa direkam oleh masing-masing mikrofon sebuah ponsel. Sebuah ketukan di tengah layar tidak akan banyak menggerakkan ponsel. Ketukan itu akan mencapai semua mikrofon pada saat yang sama, dan akan bersuara yang kurang lebih sama bagi semua mikrofon. Namun, sebuah ketukan di tepi kiri bawah layar akan memutar ponsel ke kiri dan ke bawah; ketukan itu akan mencapai mikrofon kiri lebih cepat; dan akan terdengar lebih keras bagi mikrofon-mikrofon di dekat dasar layar dan kurang keras bagi mikrofon-mikrofon lain dalam perangkat itu.
Pemrosesan data gerakan dan suara secara bersamaan memungkinkan kita menentukan huruf apa yang ditekan pengguna. Kami benar di atas 90% dalam hal ini. Fungsi jenis ini bisa ditambahkan diam-diam pada semua aplikasi dan bekerja tanpa diketahui pengguna.
Mengidentifikasi lokasi
Kami juga penasaran apakah sebuah aplikasi jahat bisa menyimpulkan keberadaan pengguna, termasuk di mana mereka tinggal dan bekerja, dan rute mana yang mereka tempuh—informasi yang oleh kebanyakan orang dianggap sangat pribadi.
Kami ingin mengetahui apakah lokasi seorang pengguna bisa diidentifikasi hanya dengan menggunakan sensor-sensor yang tidak memerlukan izin pengguna. Rute yang ditempuh seorang pengemudi, misalnya, bisa disederhanakan menjadi serangkaian belokan, masing-masing dalam arah tertentu dan dengan sudut tertentu. Dengan aplikasi lain, kami menggunakan kompas ponsel untuk mengamati arah perjalanan seseorang. Aplikasi itu juga menggunakan giroskop ponsel, mengukur urutan sudut-sudut belokan rute yang ditempuh pengguna. Sedangkan akselerometer menunjukkan apakah pengguna berhenti atau berjalan.
Dengan mengukur urutan belokan, lalu merangkai semuanya sebagai perjalanan seseorang, kami bisa membuat peta pergerakannya. (Dalam penelitian kami, kami mengetahui kota di mana kami melacak orang. Tapi pendekatan yang sama bisa dipakai untuk mencari tahu di kota mana seseorang berada.)
Bayangkan kami mengamati seseorang di Boston yang menuju barat daya, berbelok 100 derajat ke kanan, membuat putaran U tajam ke kiri menuju barat daya, berbelok sedikit ke kanan, terus lurus,lalu mengikuti sedikit lengkungan ke kiri, berbelok cepat ke kanan, berguncang-guncang naik turun lebih dari biasanya di sebuah jalan, berbelok 55 derajat ke kanan, dan berbelok 97 derajat ke kiri, lalu mengikuti sedikit lengkungan ke kanan sebelum berhenti.
Kami mengembangkan algoritme untuk mencocokkan pergerakan itu dengan sebuah peta digital jalanan kota di mana pengguna itu berada, dan menentukan rute mana yang paling mungkin ditempuh orang yang bersangkutan. Pergerakan itu bisa mengidentifikasi sebuah rute mengemudi dari Fenway Park, menyusuri Back Bay Fens, melewati Museum of Fine Arts dan tiba di Northeastern University.
Kami bahkan bisa menyempurnakan algoritme kami untuk menggabungkan informasi tentang lengkungan di jalan dan batas kecepatan untuk mempersempit opsi. Kami memproduksi hasil-hasil kami dalam sebuah daftar kemungkinan jalan dengan pemeringkatan menurut kemungkinan algoritme menganggap hasil-hasil itu sesuai dengan rute sesungguhnya. Sering kali, di sebagian besar kota yang kami jadikan percobaan, jalan sesungguhnya yang ditempuh seorang pengguna tercakup dalam item 10 besar di daftar.Penyempurnaan data peta, pembacaan sensor dan pencocokan algoritme bisa meningkatkan secara substansial akurasi kami. Sekali lagi, jenis kemampuan ini bisa ditambahkan pada aplikasi apa pun oleh pengembang jahat, memungkinkan aplikasi yang tampak tidak mencurigakan mengintai para pengguna mereka.