1 poin oleh GN⁺ 2025-03-15 | 1 komentar | Bagikan ke WhatsApp
  • Proof-of-concept ini menunjukkan bahwa halaman web dapat berkomunikasi dengan perangkat USB tertentu tanpa WebUSB, dengan membuat Raspberry Pi Pico bertindak seperti kunci keamanan U2F dan memanfaatkan dukungan kunci keamanan yang sudah ada di browser
  • Pico tidak menjalankan fungsi keamanan sungguhan; ia menyembunyikan data arbitrer di key handle dan area tanda tangan ECDSA pada pesan U2F_AUTHENTICATE untuk mengontrol LED dan membaca status pin GP22
  • U2F key handle dirancang sebagai blob data opak milik dongle keamanan; fitur yang memungkinkan dongle murah dengan memori terbatas menangani pendaftaran banyak situs ini disalahgunakan untuk menyembunyikan data
  • Cara ini bukan kerentanan untuk mengakses sembarang perangkat USB, dan hanya bekerja pada perangkat yang sengaja melanggar aturan, tetapi masalah model keamanan USB—di mana perangkat USB berbahaya dapat bertindak seperti keyboard atau mouse—tetap ada
  • Pokok bahasannya meluas dari sekadar apakah Firefox mendukung WebUSB menjadi bagaimana membangun platform komputasi yang sehat dan ekosistem yang dapat dipahami serta dikendalikan oleh pengembang maupun pengguna

Demo mengakses perangkat USB tanpa WebUSB

  • Ini adalah proof-of-concept yang menunjukkan cara halaman web dapat berkomunikasi dengan perangkat USB tanpa perdebatan politis terkait WebUSB maupun kebutuhan persetujuan pengguna
  • Demo cepat dijalankan dengan mengunggah u2f-hax.uf2 ke Raspberry Pi Pico versi RP2040, lalu membuka index.html dari localhost atau secure context lain
  • Tombol On! dan Off! pada halaman akan menyalakan/mematikan LED Pico
  • Status pin GP22 diperbarui secara berkala di halaman, dan dapat diuji dengan menghubungkannya singkat ke pad GND di sebelahnya menggunakan kabel atau logam

Cara kerja: menyamar sebagai kunci keamanan U2F

  • Pico diemulasikan sebagai dongle U2F, yaitu kunci keamanan fisik untuk autentikasi dua faktor
  • Alih-alih menjalankan fungsi keamanan sungguhan, ia menyembunyikan data arbitrer di dalam pesan U2F_AUTHENTICATE
    • Data dimasukkan ke key handle dan area tanda tangan
    • Jika key handle diawali dengan 0xfeedface, Pico langsung menganggap kehadiran pengguna telah terverifikasi dan mengembalikan data
  • Dari sudut pandang browser, ini tampak seperti penggunaan fitur yang sudah ada untuk berinteraksi dengan kunci keamanan

Mengapa U2F key handle dapat disalahgunakan

  • Key handle pada U2F secara konseptual adalah blob data opak yang dimiliki dongle keamanan
  • Alur umumnya adalah sebagai berikut
    • Sebagai hasil pendaftaran, dongle mengembalikan key handle
    • Relying party menyimpannya apa adanya
    • Saat autentikasi, nilai yang sama dikirim kembali ke dongle keamanan
  • Fitur ini terkait dengan desain yang memungkinkan dongle murah dengan memori terbatas menangani pendaftaran di banyak situs web
    • Dongle menyimpan kunci enkripsi master yang unik secara internal
    • Saat pendaftaran baru, ia membuat pasangan kunci publik/privat dan mengembalikan kunci publik
    • Nilai kunci privat yang dienkripsi dengan kunci master dikembalikan sebagai key handle
    • Saat autentikasi, key handle yang diterima didekripsi dengan kunci master untuk menggunakan kunci privat
  • Agar algoritme internal tidak ditentukan secara spesifik, key handle diperlakukan sebagai opak, dan sifat inilah yang digunakan untuk menyembunyikan data arbitrer

Data yang dikembalikan dikemas seperti tanda tangan ECDSA

  • Untuk mengirim data kembali, data arbitrer disembunyikan seolah-olah merupakan tanda tangan ECDSA
  • Tanda tangan ECDSA adalah tuple dua angka (r, s), dan tiap angka dihitung terhadap n, yaitu order dari base point kurva eliptik
  • Angka-angka yang berada dalam rentang order base point secp256r1 dikemas dengan ASN.1
  • Dalam beberapa kasus, tanda tangan ECDSA yang benar-benar dihitung dengan valid dapat dibedakan, tetapi komponen selain relying party tidak punya alasan kuat untuk melakukan pemeriksaan selain validasi dasar
  • Ada perbedaan perilaku antar-browser
    • Chrome tampaknya memeriksa apakah angka tanda tangan berada dalam rentang 0 hingga n
    • Firefox bahkan tidak melakukan pemeriksaan rentang tersebut
  • Agar lolos pemeriksaan dasar Chrome secara andal, byte pertama dari setiap angka sengaja “dibuang” menjadi 0x7f
    • Dengan begitu, angka selalu positif dan lebih kecil dari n
    • Stack perangkat lunak hingga JavaScript browser meneruskan angka yang “cukup valid” ini apa adanya

Apakah ini kerentanan keamanan dan model keamanan USB

  • Teknik ini bukan kerentanan untuk mengakses sembarang perangkat USB
  • Ini hanya bekerja pada perangkat yang sengaja melanggar aturan, dan pada dasarnya merupakan perangkat yang sengaja dibuat rentan
  • Namun, pada kebanyakan platform, model keamanan di sekitar perangkat USB umumnya masih patut dipertanyakan
  • Jika perangkat USB berbahaya dicolokkan, ia dapat melakukan hal-hal yang dapat dilakukan pengguna melalui perangkat seperti keyboard atau mouse
  • Jangan menghubungkan perangkat tak dikenal secara sembarangan ke komputer, ponsel, dan sebagainya

Mempertanyakan platform dan ekosistem

  • Tujuan proof-of-concept ini bukan sekadar “karena bisa” secara pribadi, melainkan untuk menyoroti kondisi platform komputasi saat ini
  • Dari sudut pandang pembuat widget, mereka ingin pengguna akhir dapat memakai perangkat baru semudah dan seminim mungkin rasa sakitnya
  • Dalam ekosistem komputer dan widget saat ini, ada ketidaksesuaian antara apa yang secara intuitif diharapkan pengguna mungkin dilakukan dan apa yang sebenarnya mungkin dilakukan
  • “Kunci keamanan” diharapkan tampak seperti produk satu tujuan yang dikemas rapi, tetapi kenyataannya ia dapat menjalankan kode arbitrer, tampil dalam bentuk apa pun, dan melakukan tindakan arbitrer
  • USB Rubber Ducky dan O.MG Cable juga merupakan contoh yang menyentuh masalah ini
  • Sifat “Universal” pada USB memiliki kelebihan sekaligus kekurangan
    • Baik manusia maupun komputer tidak memiliki cara yang baik dan andal untuk membedakan dengan mudah apakah perangkat USB bertentangan dengan kepentingan pengguna, membantu pengguna, atau merupakan hasil dari kekuatan yang lebih besar dan perilaku emergen
  • Web adalah cara termudah untuk mengirimkan perangkat lunak yang akan dijalankan di komputer orang lain
  • Pengembang semakin tidak perlu mempelajari detail semua platform target, tetapi pada saat yang sama juga semakin sedikit mempelajari kebiasaan dan ekspektasi masing-masing platform
  • Diskusi seharusnya bergerak melampaui “mengapa Firefox tidak mengimplementasikan WebUSB” atau “apakah Chrome akan semakin dominan”, menuju upaya sengaja merawat platform yang sehat untuk komputasi secara keseluruhan, termasuk desktop, laptop, tablet, ponsel, IoT, dan smart home

1 komentar

 
GN⁺ 2025-03-15
Komentar Hacker News
  • Firefox tidak mendukung kemampuan untuk berkomunikasi dengan perangkat USB sembarang, tetapi Chrome punya WebUSB untuk itu
    Namun Firefox juga mendukung komunikasi kunci keamanan U2F melalui USB
    Proyek ini adalah upaya membuat mikrokontroler berpura-pura menjadi kunci keamanan U2F, agar Firefox bisa berkomunikasi dengan mikrokontroler melalui USB
    Dengan JavaScript Credentials API(https://developer.mozilla.org/en-US/docs/Web/API/Credential_...) dan sedikit trik, data dikirim dan respons diterima

    • Ini bukan untuk akses perangkat sembarang
      Meski begitu, ini bisa dipakai untuk membuat perangkat kustom yang dapat digunakan halaman web tanpa prompt persetujuan
    • Kalau pemahaman saya benar, berarti Firefox tetap rentan terhadap masalah yang ingin dihindarinya, sambil tidak menyediakan WebUSB, bukan?
  • Mengustomisasi keyboard dengan firmware QMK/Via lewat WebUSB hampir seperti mimpi buruk
    Agar browser bisa berkomunikasi dengan firmware, pada dasarnya satu perangkat /dev/hidraw harus dibuat dapat dibaca oleh seluruh dunia, yang seolah mengundang segala macam aksi keylogging
    Cara pakainya terasa sangat tidak nyaman, dan semua alat kustomisasi offline juga berbasis Electron, jadi keuntungannya tidak besar
    Solusi alternatif yang paling masuk akal adalah membuat tata letak keyboard yang diinginkan sebagai template JSON di situs web, mengunduh JSON hasilnya, lalu mem-flash firmware ke keyboard dengan alat flashing yang memakai hak sudo
    Tetap saja, akan bagus kalau ada cara yang terasa lebih aman

    • Banyak mikrokontroler sudah dilengkapi MicroPython dan flash drive teremulasi, sehingga jika kode Python dijatuhkan ke sana, main() yang sedang berjalan bisa diubah
      Keyboard sepertinya juga bisa dibuat serupa
      Namun file system perlu memunculkan error jika JSON yang ditulis tidak valid, dan properti keamanan bisa diberikan pada file system teremulasi agar hanya administrator yang bisa menulis
      Tidak perlu sudo, cukup setujui prompt izin saat mengunduh atau menyalin konfigurasi baru ke flash drive virtual
    • Keyboard standar punya Caps Lock, Num Lock, dan satu lagi, total 3 LED, dan semuanya bisa diatur dari sisi sistem operasi
      Setidaknya Caps Lock tampaknya juga bisa diatur dari JavaScript, sehingga praktis menjadi bus komunikasi selebar 1 bit
      Dengan alat OS biasa, hingga 3 bit mungkin dilakukan
    • Ini agak membingungkan
      Inti model izinnya adalah keluarga browser memediasi akses hardware
      Tentu saja agar browser bisa melakukan itu, sejak awal ia harus diberi izin akses hardware
      Jika tidak percaya browser sebagai pengelola lapisan abstraksi hardware, itu bisa dimengerti, tetapi model yang diharapkan Via memang seperti itu
      Saya tidak tahu mengapa ini terasa lebih “tidak nyaman” daripada memberi browser izin kamera, mikrofon, atau membaca penyimpanan
      Bahkan di Chromebook perusahaan yang terkunci, saya bisa membuka https://usevia.app dan mengutak-atik keyboard QMK tanpa masalah, dan tentu saja di perangkat ini saya sama sekali tidak bisa menyentuh node /dev
    • Sejauh yang saya tahu, dukungan Via adalah fitur yang memungkinkan firmware keyboard melakukan kustomisasi instan semacam itu, dan berbeda dari QMK itu sendiri
      QMK sepenuhnya memakai flashing manual
      Meski begitu, saya terkejut karena mengustomisasi layout, layer, dan pencahayaan lewat kode ternyata lebih mudah dari dugaan, terutama berkat dukungan komunitas
    • Jika mencari alternatif di sisi QMK selain Via, saya merekomendasikan kombinasi QMK Configurator dan QMK Toolbox
      Tidak senyaman Via, tetapi tetap ada editor keymap grafis, bisa mengompilasi firmware, dan jauh tidak terlalu bongsor
      Pengalaman saya bagus di board Keeb.io
  • Alur komentar ini menarik karena bercampur antara orang-orang yang mengatakan betapa bagusnya pengguna WebUSB, dan orang-orang yang tidak menggunakannya yang tidak paham mengapa itu diperlukan
    Secara pribadi, menurut saya ini sangat bagus
    Sebagian besar utilitas WebUSB yang saya pakai juga tersedia sebagai aplikasi yang bisa diinstal langsung, tetapi karena saya sangat jarang memakainya, versi web jauh lebih mudah daripada proses menginstal, memperbarui, lalu menjalankan aplikasi
    Berkurangnya satu aplikasi yang harus diinstal juga merupakan kelebihan
    Saya kira ini akan populer di kalangan orang yang lelah harus menginstal aplikasi untuk setiap benda

    • Suatu saat situs yang menyediakan aplikasi berguna itu bisa hilang sepenuhnya, sementara aplikasi terinstal tetap baik-baik saja sampai dihapus
      Jadi ini pedang bermata dua
    • Saya lebih khawatir pada masalah keamanan karena browser web diberi terlalu banyak izin akses ke sumber daya lokal
      Kenyamanan dan keamanan tidak terlalu cocok
    • Dulu saya pernah mem-flash perangkat Android dengan WebUSB
      Memang berguna dan mudah, tetapi juga terlalu ideal untuk lahirnya celah keamanan
      Pembengkakan web harus dihentikan
      Browser tidak boleh menjadi wastafel serbaguna yang memuat segala hal yang diinginkan siapa pun di industri teknologi
      Menginstal aplikasi native juga bukan hal yang begitu sulit
    • Misalnya, ada kasus ketika membeli label pengiriman sambil menimbang berat barang sebenarnya dengan timbangan
      Secara ketat itu bukan USB melainkan HID, tetapi idenya mirip
  • Sedikit melenceng dari topik, tetapi sebagian besar alur diskusi ini tampaknya lebih membahas WebUSB secara umum daripada tulisan aslinya
    Tentu saja, hack di tulisan asli itu sendiri cukup keren
    Di satu sisi, WebUSB memang sangat dibutuhkan, tetapi pada saat yang sama saya benar-benar tidak ingin WebUSB diberikan kepada pengguna umum
    Pada praktiknya, popup persetujuan tidak efektif, dan orang-orang menyetujui apa saja tanpa sadar
    Mereka bilang “saya tidak menekan apa-apa”, tetapi ujung-ujungnya kita harus menyingkirkan 50 notifikasi push spam dan menghapus izin push dari belasan situs “berita”
    Sejujurnya, saya cukup menyukai model izin ala Internet Explorer sampai batas tertentu
    Yaitu cara di mana untuk mengaktifkan fitur tertentu, situs harus ditandai sebagai “tepercaya”
    Sulit ditemukan, butuh sedikit waktu, agak membingungkan, dan menampilkan ikon peringatan besar yang cukup menakutkan di popup modal bergaya sistem
    Jika API berbahaya seperti WebUSB dan WebBluetooth mengharuskan situs ditandai sebagai “tepercaya”, akan jauh lebih sedikit orang yang mengaktifkannya secara tidak sengaja
    Pengalaman penggunanya masih lebih baik daripada memasang aplikasi native, dan sandboxing juga didapat sebagai bonus, jadi kompromi itu tampaknya sepadan

    • Notifikasi web di Chrome juga benar-benar seperti tempat sampah
      Pengguna lansia rata-rata sama sekali tidak tahu apa itu notifikasi web
      Seiring waktu, mereka tanpa sengaja mengaktifkan notifikasi dari situs web mencurigakan, lalu benar-benar percaya pada notifikasi spam web yang masuk ke ponsel seperti “HELLO YOUR PHONE HAS VIRUS DOWNLOAD "CLEANER APP" TO FIX BEFORE PHONE DIE”
    • Ini pertarungan yang abadi
      Sebagian orang seolah punya kekuatan super untuk merusak sesuatu
      Jika sesuatu tidak dibuat benar-benar mustahil secara harfiah, mereka pasti akan menemukan cara untuk melakukannya secara tidak sengaja
      Mereka mengikuti panduan untuk mengubah pengaturan yang tidak mereka pahami, menjalankan fitur yang tidak mereka pahami, dan memberikan hak akses yang tidak mereka pahami
      Itu tetap terjadi betapapun rumit prosedurnya, berapa pun banyak peringatannya, dan sekeras apa pun upaya mencegah kebodohan semacam ini
      Masalahnya, ada juga orang-orang yang tahu apa yang mereka lakukan dan menggunakannya dengan sengaja
      Orang-orang seperti itu bisa menghargai fitur kuat yang sama sekali tidak boleh diberikan kepada orang bodoh
      Namun, begitu kekuatan itu diekspos, sulit secara realistis menghindari banjir orang yang melakukan hal-hal bodoh, dan itu menyakitkan
    • Setuju
      Masalah besarnya adalah banyak pihak tidak benar-benar memahami bahwa banyak pengguna sama sekali tidak mengerti apa yang mereka lakukan
      Google tidak memahami cara merancang software yang aman untuk orang-orang seperti itu
      Prosedur yang merepotkan mungkin tampak tidak berarti, tetapi sering kali punya tujuan yang jelas
      Yaitu memastikan bahwa niat pengguna memang kuat
      Apple belakangan ini menerapkan beberapa API web agar hanya berfungsi jika situs web dipasang, dan itu tampak seperti strategi yang memahami desain untuk manusia
      Pengguna tetap bisa mengakses fitur PWA yang berguna, tetapi tidak membiarkan sembarang situs memakainya sesuka hati
      Ada langkah tambahan yang bisa dipahami orang biasa
      PWA yang terpasang terus terlihat di layar utama, sehingga menjadi pengingat visual atas izin yang diberikan dan sinyal jelas bahwa pengguna memang menginginkan akses itu
    • Saya benar-benar ingin masyarakat umum juga bisa mengaksesnya
      Banyak orang perlu berinteraksi dengan perangkat, tetapi saat ini aplikasi yang disediakan melalui App Store tertutup sering kali praktis menjadi satu-satunya pilihan
      Untuk mendistribusikan cara agar lebih banyak orang bisa mengakses perangkat yang dukungan resminya sudah dihentikan, WebUSB adalah cara yang jauh lebih mudah
      Di dunia lain tempat Chrome tidak mendukungnya, pengguna umum harus bisa memasang dan menjalankan [python or other scripting language]
      Jika pengembangnya benar-benar bersemangat, mereka mungkin harus menyediakan aplikasi desktop, atau menempuh proses pengajuan App Store yang panjang dan mahal
      Saya rasa WebUSB bisa memiliki UI yang aman, dan saya juga tidak bisa langsung membayangkan perangkat apa yang biasa terpasang pada pengguna rata-rata yang dapat dikompromikan
      Dengan WebUSB, seharusnya tidak mungkin mengambil alih keyboard atau mouse (HID), penyimpanan, Wi-Fi, audio, smartcard, atau perangkat U2F
      Namun, ini sangat berguna untuk printer label proprietary, berbagai mainan dan perangkat, serta pemrograman dan flashing microcontroller
    • Modal prompt yang digunakan aplikasi dan situs web untuk meminta izin adalah pengalaman pengguna yang terburuk
      Memang mudah dan nyaman digunakan, tetapi juga mudah membuat orang tanpa sengaja memberikan akses yang sangat luas kepada pihak ketiga yang tidak tepercaya
      Memberikan izin kepada halaman, seperti yang dikatakan, seharusnya merupakan alur yang dimulai secara eksplisit oleh pengguna dari panel izin
      Aplikasi desktop yang di-sandbox juga sama
      Jika suatu aplikasi ingin terus merekam layar, aplikasi itu harus mendapatkan izin tersebut secara eksplisit dari panel kontrol izin
      Aplikasi tidak boleh bisa memunculkan dialog modal yang membuat orang sekadar menekan “yes”
      Dalam banyak kasus, orang tidak memahami secara teknis apa yang sedang diminta dari mereka
  • USB Serial benar-benar luar biasa
    Akhirnya mengakhiri aplikasi Electron merepotkan yang hanya dipakai untuk satu tujuan
    Sekarang ada alat untuk mengonfigurasi perangkat lewat browser, dan itu sangat bagus
    Lihat saja ESPHome dan ratusan proyek berbasisnya, Betaflight, ELRS, Flipper
    Bisa dimengerti kalau WebKit kurang mendukung karena dikembangkan Apple, dan juga bisa dimengerti bahwa mereka akan berhati-hati jika mengizinkan akses ke periferal
    Namun Firefox berbeda
    Firefox sangat kurang dalam dukungan “koneksi” hardware dan sejak lama tidak ramah bagi developer, sehingga akhirnya tidak dipakai
    Alasan mereka tidak mendukungnya adalah karena persetujuan pengguna saja tidak cukup untuk akses perangkat, tetapi itu tidak masuk akal
    Mereka bisa saja menaruhnya di balik semacam flag developer
    Blink telah membuktikan bahwa ini bisa dibuat aman
    Rasanya mereka keras kepala tanpa alasan, dan tidak melihat use case yang bisa membuat browser jadi layak dipakai
    https://developer.mozilla.org/en-US/docs/Web/API/Serial
    https://mozilla.github.io/standards-positions/

    • Pernah ada masalah keamanan yang cukup besar ketika situs web berbahaya mengakses kunci FIDO/U2F lewat WebUSB
      Kredensial U2F seharusnya tidak bisa dipancing lewat phishing
      Karena API U2F di browser memasukkan nama domain ke dalam permintaan token
      Namun dengan WebUSB, sebuah situs bisa meminta token untuk nama domain mana pun
      Karena U2F dan WebUSB sama-sama menampilkan kotak persetujuan pengguna yang terlihat cukup mirip, secara praktis mustahil menghindari sebagian pengguna menjadi bingung
      Sulit dipercaya, tetapi solusi Google adalah memasukkan banyak perangkat ke blocklist WebUSB
      Sekarang pembuat perangkat U2F harus meminta Google menambahkan produk baru mereka ke blocklist setiap kali merilis produk baru
      Semua orang menyukai fakta bahwa browser adalah sandbox aman yang memungkinkan menjalankan kode yang tidak tepercaya, tetapi saya tidak tahu mengapa mereka ingin melubangi sandbox itu sebanyak ini
      [1] https://www.yubico.com/support/security-advisories/ysa-2018-...
      [2] https://github.com/WICG/webusb/blob/main/blocklist.txt
    • Meski saya punya mikrokontroler, jumlah kali saya membutuhkan WebUSB atau WebSerial bisa dihitung dengan satu tangan
      Menurut saya, tidak sepadan mengambil risiko fingerprinting demi puluhan pengguna akhir yang tidak perlu mengunduh aplikasi Electron untuk berinteraksi dengan hardware fisik
      Mengimplementasikan fitur lalu menguncinya di balik toggle developer itu gila
      Itu membuang ratusan jam waktu pengembangan yang bisa dipakai untuk hal berguna, hanya untuk mengekspos fitur yang toh tidak akan ditemukan siapa pun
      Sebagai developer, saya tidak masalah API khusus Chrome seperti ini tetap hanya ada di Chrome
      Lagi pula, kita tetap harus menyiapkan satu browser Chromium untuk berjaga-jaga saat ada situs web yang benar-benar rusak di Firefox, jadi pakai saja itu saat mengerjakan Web USB
      Ini memang demo teknologi yang keren, tetapi bukan sesuatu yang seharusnya dilakukan browser
      Fakta bahwa belum ada orang yang menambahkan fitur WebUSB sebagai ekstensi Firefox juga tampaknya menunjukkan bahwa bahkan bagi orang-orang yang memakai fitur ini, ia tidak cukup bernilai untuk menghabiskan waktu pengembangan
    • Itu tidak benar
      Masalah privasi dan keamanan telah diajukan
      Web Serial bukan standar web, dan tidak bisa menjadi standar sampai Mozilla atau Apple menilai masalah-masalah ini sudah diselesaikan
      Google tidak bisa menjadikannya standar web sendirian; standar memerlukan konsensus
      Diskusi Mozilla ada di sini: https://github.com/mozilla/standards-positions/issues/336
      Diskusi WebKit ada di sini: https://github.com/WebKit/standards-positions/issues/199
    • Saya tidak tahu berapa banyak perangkat yang Anda konfigurasi dalam sehari sampai begitu
      Sulit membayangkan meninggalkan Firefox untuk browsing web hanya karena webusb
    • Saya tidak bisa menerima hardware fisik saya tiba-tiba tidak bisa diprogram hanya karena perusahaan yang meng-hosting situs flashing bangkrut
      Seharusnya berupa software yang bisa diunduh dan tidak bergantung pada server eksternal
      Namun jika perangkat itu sejak awal bergantung pada server perusahaan tersebut untuk beroperasi, maka bagus juga kalau tidak perlu mengunduh dan memercayai software
  • Tidak bisa menggunakan port USB dari kode berbasis browser mungkin justru hal yang baik

    • Sebagai pengguna Linux, saya menyukai WebMIDI
      Karena saya tidak perlu lagi membuka Windows VM untuk menjalankan pembaruan firmware atau tool utilitas dari produsen perangkat audio yang mendukungnya, misalnya Novation
      WebUSB seharusnya memungkinkan hal yang sama untuk lebih banyak jenis perangkat, tetapi tentu saja harus ada mekanisme izin yang tepat
  • Manfaatnya jelas bagi orang yang sering melakukan flashing perangkat
    Namun pengguna biasa, yaitu kira-kira 3 miliar orang lainnya, sama sekali tidak peduli
    Melubangi sandbox demi mereka itu, paling baik pun, ceroboh
    Solusinya mungkin alat terpisah khusus untuk penggunaan ini, mungkin bahkan browser terpisah
    Semacam Flash Browser
    Itu bisa menyertakan tool tambahan untuk membantu pekerjaan ini
    Misalnya allowlist atau blocklist yang sudah dikonfigurasi, bookmark untuk tool flashing umum, dan materi referensi
    Ini bisa menghasilkan pengalaman yang lebih baik daripada memaksakan WebUSB mentah-mentah ke dalam browser

  • Saya memahami kontroversi dan kritik seputar “standar” itu, tetapi saat saya memakainya untuk mem-flash GrapheneOS ke ponsel Pixel, itu adalah instalasi OS paling nyaman, mudah, dan cepat yang pernah saya lakukan di perangkat apa pun
    Secara harfiah tinggal colok, klik, lalu langsung pakai

  • Bagian bahwa kunci privat dienkripsi dengan kunci “master” lalu kunci privat terenkripsi itu dikembalikan sebagai key handle terasa mengejutkan
    Memang sepertinya itu bisa berfungsi
    Namun memberi penyerang kesempatan tak terbatas untuk mencoba mendekripsi kunci privat yang ada di tangan mereka rasanya suatu saat akan berbalik merugikan, tapi entahlah, apa yang saya tahu

    • Kalau dipikir-pikir, ini persis risiko yang sama dengan semua implementasi autentikator tanpa status yang mungkin
      Misalnya, dengan cara lain, kunci privat bisa dibuat dari key handle melalui derivasi kunci deterministik
      Penyerang juga bisa melakukan brute force terhadap ini, sama seperti terhadap kunci spesifik situs terenkripsi yang tersimpan di key handle
      Intinya, autentikator tanpa status, menurut definisinya, bersifat deterministik secara global, yaitu di seluruh rahasia dan situs
      Jika diberikan pasangan input-output, rahasia internalnya bisa di-brute force
      Solusinya adalah membuat status internal itu cukup besar sehingga secara komputasional mustahil
  • Saya penasaran apa yang dimaksud dengan perdebatan politis terkait WebUSB

    • WebUSB bukan standar web
      Itu adalah API khusus Blink yang dibuat Google, dan Mozilla serta Apple menolaknya karena alasan privasi dan keamanan
      Tanpa dua implementasi independen, ia tidak bisa menjadi standar web, dan Google tidak berhasil meyakinkan siapa pun di luar Google untuk mengimplementasikannya
      Meski begitu, di banyak situs web Firefox dan Safari digambarkan seolah-olah “tidak mampu mendukungnya”
      “This specification was published by the Web Platform Incubator Community Group. It is not a W3C Standard nor is it on the W3C Standards Track.”
      https://wicg.github.io/webusb/
      “WebKit declined to implement several APIs, including WebUSB, due to concerns over fingerprinting”
      “We have previously stated privacy concerns, thus the concerns: privacy label. We agree with Mozilla's security concerns raised in their standards position issue, thus the concerns: security label.”
      https://github.com/WebKit/standards-positions/issues/68
      “Because many USB devices are not designed to handle potentially-malicious interactions over the USB protocols and because those devices can have significant effects on the computer they're connected to, we believe that the security risks of exposing USB devices to the Web are too broad to risk exposing users to them or to explain properly to end users to obtain meaningful informed consent. It also poses risks that sites could use USB device identity or data stored on USB devices as tracking identifiers.”
      https://mozilla.github.io/standards-positions/#webusb
    • Saya tidak terlalu tahu perdebatan politis secara umum, tetapi secara pribadi saya tidak menginginkan WebUSB dan menganggapnya ide yang buruk sekali
      Browser sudah bisa mengakses perangkat USB yang diperlukan melalui antarmuka OS biasa
      Keyboard dan mouse adalah contoh yang jelas
      Saya tidak tahu situs web macam apa yang perlu memiliki akses langsung terpisah
      Use case-nya tampak hanya memberi akses kepada programmer web yang malas memakai aplikasi mandiri, atau menyediakan cara tambahan untuk melacak pengguna
      Saya tidak ingin mempercayai keduanya
      Saya bahkan tidak cukup mempercayai Google dan Mozilla untuk memberi akses seperti itu, apalagi orang asing sembarang yang membuat situs web
      Tidak semua hal harus bisa diakses dari web
      Saya tidak tahu di mana garis batasnya harus ditarik, tetapi bagi saya akses USB sudah melewati garis itu
    • Ini adalah politik antara mengekspos pengguna pada masalah keamanan dan memberi web lebih banyak kemampuan
      Biasanya ini pertarungan yang dimenangkan oleh orang-orang yang menginginkan fitur sekarang juga
      Karena celah keamanan terlihat seperti masalah hipotetis sampai benar-benar dieksploitasi di dunia nyata
    • Pada dasarnya ini adalah masalah fingerprinting, dan juga soal apakah browser pada titik ini seharusnya memiliki lebih banyak kemampuan
      Semakin demikian, ketergantungan pada Chrome akan semakin dalam
    • Mungkin karena browser bisa mengakses hardware
      Saya juga tidak menginginkan itu