1 puan yazan GN⁺ 2025-03-15 | 1 yorum | WhatsApp'ta paylaş
  • Bu proof-of-concept, WebUSB olmadan da bir web sayfasının belirli USB cihazlarıyla iletişim kurabildiğini gösteriyor; Raspberry Pi Pico’nun U2F güvenlik anahtarı gibi davranmasını sağlayarak tarayıcının mevcut güvenlik anahtarı desteğinden yararlanıyor
  • Pico gerçek bir güvenlik işlevi yerine getirmiyor; U2F_AUTHENTICATE mesajının key handle alanına ve ECDSA imza bölümüne rastgele veri gizleyerek LED kontrolü ve GP22 pin durumunu okumayı uyguluyor
  • U2F key handle, güvenlik dongle’ının sahip olduğu opak veri blob’u olarak tasarlanmıştır; düşük maliyetli dongle’ların sınırlı bellekle birden çok site kaydını işleyebilmesini sağlayan bu özellik, veri gizlemek için kötüye kullanılıyor
  • Bu yöntem, rastgele USB cihazlarına erişim sağlayan bir güvenlik açığı değildir; yalnızca kuralları kasıtlı olarak bozan cihazlarda çalışır. Ancak kötü amaçlı USB cihazlarının klavye veya fare gibi davranabilmesine imkân tanıyan USB güvenlik modeli sorunu hâlâ mevcuttur
  • Tartışma, Firefox’un WebUSB desteği verip vermemesinin ötesine geçerek, hem geliştiricilerin hem kullanıcıların anlayıp kontrol edebileceği sağlıklı bir bilişim platformu ve ekosistemin nasıl oluşturulacağına genişliyor

WebUSB olmadan USB cihazlarına erişim demosu

  • Bir web sayfasının, WebUSB ile ilgili siyasi tartışmalar veya kullanıcı onayı gereksinimleri olmadan USB cihazlarıyla nasıl iletişim kurabileceğini gösteren bir proof-of-concept
  • Hızlı demo, Raspberry Pi Pico’nun RP2040 sürümüne u2f-hax.uf2 yükleyip index.html dosyasını localhost’ta veya başka bir secure context içinde açarak çalıştırılıyor
  • Sayfadaki On! ve Off! düğmeleri Pico’nun LED’ini açıp kapatıyor
  • GP22 pin durumu sayfada periyodik olarak güncelleniyor; bitişikteki GND pad’iyle bir kablo veya metal parçası kullanarak kısa devre yapıp test edilebiliyor

Çalışma biçimi: U2F güvenlik anahtarı gibi davranmak

  • Pico, U2F dongle’ı, yani fiziksel iki faktörlü kimlik doğrulama güvenlik anahtarı gibi emüle ediliyor
  • Gerçek bir güvenlik işlevi yerine getirmek yerine, U2F_AUTHENTICATE mesajının içine rastgele veri gizliyor
    • Veri, key handle ve imza alanına yerleştiriliyor
    • key handle 0xfeedface ile başlıyorsa Pico, kullanıcı varlığının hemen doğrulandığını varsayıp veriyi geri döndürüyor
  • Tarayıcı açısından bakıldığında bu, güvenlik anahtarıyla etkileşime giren mevcut işlevlerin kullanılması anlamına geliyor

U2F key handle’ın kötüye kullanılabilmesinin nedeni

  • U2F’nin key handle’ı kavramsal olarak güvenlik dongle’ının sahip olduğu opak bir veri blob’udur
  • Tipik akış şöyledir
    • Kayıt sonucunda dongle bir key handle döndürür
    • relying party bunu olduğu gibi saklar
    • Kimlik doğrulama sırasında aynı değer yeniden güvenlik dongle’ına iletilir
  • Bu özellik, belleği sınırlı düşük maliyetli dongle’ların çok sayıda web sitesi kaydını işleyebilmesini sağlayan tasarımla bağlantılıdır
    • Dongle, içinde benzersiz bir master şifreleme anahtarı saklar
    • Yeni kayıt sırasında bir açık anahtar/özel anahtar çifti oluşturur ve açık anahtarı döndürür
    • Özel anahtarın master anahtarla şifrelenmiş hâlini key handle olarak döndürür
    • Kimlik doğrulama sırasında iletilen key handle’ı master anahtarla çözüp özel anahtarı kullanır
  • İç algoritmayı belirli bir şeye bağlamamak için key handle opak olarak ele alınır; bu özellik rastgele veri gizlemek için kullanılır

Dönen veri ECDSA imzası gibi paketleniyor

  • Veriyi geri göndermek için rastgele veri ECDSA imzası gibi gizleniyor
  • ECDSA imzası iki sayıdan oluşan (r, s) demetidir; her sayı, eliptik eğri base point’inin order’ı olan n temel alınarak hesaplanır
  • secp256r1 base point’inin order aralığında bulunan sayılar ASN.1 ile paketlenir
  • Bunun gerçekten doğru hesaplanmış bir ECDSA imzası olup olmadığını ayırt etmenin mümkün olduğu durumlar vardır; ancak relying party olmayan bileşenlerin temel geçerlilik kontrollerinin ötesine geçmesi için güçlü bir neden yoktur
  • Tarayıcılar arasında davranış farkları vardır
    • Chrome, imza sayılarının 0 ile n aralığında olup olmadığını kontrol ediyor gibi görünüyor
    • Firefox ise bu aralık kontrolünü bile yapmıyor
  • Chrome’un temel kontrolünü güvenilir biçimde geçmek için her sayının ilk baytı 0x7f olarak harcanıyor
    • Böylece sayı her zaman pozitif ve n’den küçük oluyor
    • Tarayıcı JavaScript’ine kadar olan yazılım yığını bu “yeterince geçerli” sayıyı olduğu gibi iletiyor

Güvenlik açığı olup olmadığı ve USB güvenlik modeli

  • Bu teknik, rastgele USB cihazlarına erişim sağlayan bir güvenlik açığı değildir
  • Yalnızca kuralları kasıtlı olarak bozan cihazlarda çalışır; özünde, bilerek savunmasız hâle getirilmiş bir cihazdır
  • Bununla birlikte çoğu platformda USB cihazları etrafındaki güvenlik modeli genel olarak sorgulanabilir durumdadır
  • Kötü amaçlı bir USB cihazı bağlandığında, klavye veya fare gibi cihazlar üzerinden kullanıcının yapabileceği şeyleri gerçekleştirebilir
  • Rastgele ve bilinmeyen cihazlar bilgisayara, telefona vb. takılmamalıdır

Platform ve ekosisteme dair soru işaretleri

  • Bu proof-of-concept’in amacı, kişisel bir “yapabildiğim için” motivasyonunun ötesinde, bilişim platformlarının mevcut durumunu ortaya koymaktır
  • Bir widget üreticisi açısından, son kullanıcıların yeni bir cihazı mümkün olduğunca zahmetsiz kullanabilmesi istenir
  • Günümüz bilgisayar ve widget ekosisteminde, kullanıcıların sezgisel olarak mümkün olmasını beklediği şeylerle gerçekte mümkün olanlar arasında bir uyumsuzluk vardır
  • “Güvenlik anahtarı”nın iyi paketlenmiş, tek amaçlı bir ürün gibi görünmesi beklenir; ancak gerçekte rastgele kod çalıştırabilir, herhangi bir biçimde görünebilir ve rastgele davranışlarda bulunabilir
  • USB Rubber Ducky ve O.MG Cable da bu soruna temas eden örneklerdir
  • USB’nin “Universal” niteliğinin hem avantajları hem dezavantajları vardır
    • Hem insanlar hem bilgisayarlar için, bir USB cihazının kullanıcının çıkarlarına karşı mı davrandığını, kullanıcıya yardımcı mı olduğunu yoksa daha büyük güçlerin ve ortaya çıkan davranışların sonucu mu olduğunu kolay ve güvenilir biçimde ayırt etmenin iyi bir yolu yoktur
  • Web, başka insanların bilgisayarlarında çalışacak yazılımı iletmenin en kolay yoludur
  • Geliştiricilerin tüm hedef platformların ayrıntılarını öğrenme ihtiyacı azaldı; ancak aynı zamanda her platformun geleneklerini ve beklentilerini de daha az öğrenir oldular
  • Tartışma, “Firefox neden WebUSB’yi uygulamıyor” veya “Chrome karşısında daha da geriye mi düşecek” sorularının ötesine geçerek; masaüstü, dizüstü, tablet, telefon, IoT ve akıllı evi kapsayan tüm bilişim alanında sağlıklı platformları bilinçli olarak geliştirme yönüne kaymalıdır

1 yorum

 
GN⁺ 2025-03-15
Hacker News yorumları
  • Firefox, rastgele USB cihazlarıyla iletişim kurma özelliğini desteklemiyor; Chrome’da ise bunun için WebUSB var.
    Ancak Firefox, USB üzerinden U2F güvenlik anahtarı iletişimini destekliyor.
    Bu proje, mikrodenetleyicinin bir U2F güvenlik anahtarıymış gibi davranmasını sağlayarak Firefox’ta USB üzerinden mikrodenetleyiciyle iletişim kurmayı deniyor.
    JavaScript Credentials API(https://developer.mozilla.org/en-US/docs/Web/API/Credential_...) ve biraz hileyle veri gönderip yanıt alıyor.

    • Bu, rastgele cihaz erişimi için değil.
      Yine de bir web sayfasının onay istemi olmadan kullanabileceği özel cihazlar yapmak için kullanılabilir.
    • Doğru anladıysam, Firefox kaçınmaya çalıştığı soruna açık kalırken WebUSB sunmuyor gibi değil mi?
  • QMK/Via firmware yüklü klavyeleri WebUSB ile özelleştirmek neredeyse kâbus gibi.
    Tarayıcının firmware ile iletişim kurabilmesi için fiilen bir /dev/hidraw cihazını tüm dünyaya okunabilir yapmak gerekiyor; bu da her türlü keylogging oyununa davetiye çıkarıyor.
    Kullanım biçimi oldukça rahatsız edici; çevrimdışı özelleştirme araçlarının da tamamı Electron tabanlı olduğundan avantajı pek büyük değil.
    Nispeten makul geçici çözüm, web sitesinde şablon JSON ile istenen klavye düzenini oluşturmak, sonuç JSON’unu indirmek ve ardından sudo yetkili bir flash aracılığıyla firmware’i klavyeye yazmak.
    Yine de daha az rahatsız edici bir yöntem olsaydı iyi olurdu.

    • Birçok mikrodenetleyici MicroPython ve emüle edilmiş bir flash sürücüyle önceden geliyor; Python kodunu bıraktığınızda çalışan main()i değiştirebiliyorsunuz.
      Klavyelerde de benzeri yapılabilir gibi.
      Ancak dosya sistemi geçersiz JSON yazıldığında hata vermeli ve emüle edilmiş dosya sistemine güvenlik öznitelikleri koyup yalnızca yöneticilerin yazabilmesini sağlamalı.
      sudo gerekmez; yeni ayarı sanal flash sürücüye indirirken ya da kopyalarken yalnızca izin istemini onaylamak yeterli olur.
    • Standart klavyelerde Caps Lock, Num Lock ve bir tane daha olmak üzere 3 LED bulunur; hepsi işletim sistemi tarafından ayarlanabilir.
      En azından Caps Lock JavaScript’ten de ayarlanabiliyor gibi görünüyor; bu da fiilen 1 bit genişliğinde bir iletişim veri yolu demek.
      Genel işletim sistemi araçlarıyla 3 bite kadar mümkün olabilir.
    • Burada biraz kafa karışıklığı var.
      İzin modelinin özü, tarayıcı ürün ailesinin donanım erişimine aracılık etmesidir.
      Elbette tarayıcının bunu yapabilmesi için en başta donanım erişim izni verilmesi gerekir.
      Tarayıcıya donanım soyutlama katmanının yöneticisi olarak güvenmiyorsanız bu anlaşılır; ama Via’nın beklediği model bu.
      Tarayıcıya kamera, mikrofon veya depolama okuma izni vermekten neden daha “rahatsız edici” olduğunu bilmiyorum.
      Kilitli, şirket yönetimindeki bir Chromebook’ta bile https://usevia.app adresine girip QMK klavyeyi sorunsuzca kurcalayabiliyorum; doğal olarak bu cihazda /dev düğümlerine hiç dokunamıyorum.
    • Bildiğim kadarıyla Via desteği, klavye firmware’inin böyle anlık özelleştirmeye izin veren bir özelliği; QMK’nin kendisiyle aynı şey değil.
      QMK tamamen elle flashlama işi.
      Yine de kodla düzen, katman ve aydınlatma özelleştirmenin beklediğimden kolay olmasına şaşırdım; bunda topluluk desteğinin payı büyük.
    • Via yerine QMK tarafında alternatif arıyorsanız QMK Configurator ve QMK Toolbox ikilisini öneririm.
      Via kadar kullanışlı değil ama yine de grafiksel bir keymap düzenleyicisi var, firmware’i derliyor ve çok daha az şişkin.
      Keeb.io kartlarında deneyimim iyiydi.
  • Bu yorum akışı ilginç; WebUSB kullananların ne kadar iyi olduğundan bahsedenlerle, kullanmayanların neden gerekli olduğunu anlamadığı taraflar birbirine karışmış.
    Ben şahsen çok iyi buldum.
    Kullandığım WebUSB yardımcı araçlarının çoğu doğrudan kurulabilen uygulama olarak da sunuluyor; ama o kadar seyrek kullanıyorum ki uygulamayı kurup güncelledikten sonra çalıştırma sürecine kıyasla web sürümü çok daha kolay.
    Kurulacak bir uygulamanın azalması da avantaj.
    Her şey için ayrı uygulama kurmaktan bıkmış insanlar arasında popüler olur sanmıştım.

    • Bir gün o yararlı uygulamayı sunan site tamamen ortadan kaybolabilir; kurulu uygulama ise silinene kadar sapasağlam durur.
      Bu yüzden iki ucu keskin kılıç.
    • Web tarayıcısına yerel kaynaklara fazla erişim yetkisi verilmesinin doğurduğu güvenlik sorunu beni daha çok endişelendiriyor.
      Kolaylık ve güvenlik pek iyi uyuşmaz.
    • Geçmişte WebUSB ile Android cihaz flashlamıştım.
      Kullanışlı ve kolay ama açıkların ortaya çıkması için de fazla elverişli.
      Web’in şişmesi durmalı.
      Tarayıcı, teknoloji sektöründe herhangi birinin istediği her şeyi içine alan evrensel bir mutfak lavabosuna dönüşmemeli.
      Yerel uygulama kurmak da o kadar zor bir iş değil.
    • Örneğin kargo etiketi satın alırken gerçek ürünün ağırlığını teraziyle ölçmek gibi durumlar var.
      Kesin olarak USB değil HID, ama benzer bir fikir.
  • Konudan biraz sapıyor olabilir ama bu akışın büyük kısmı, asıl yazıdan çok genel olarak WebUSB hakkında bir tartışma gibi görünüyor
    Tabii asıl yazıdaki hack’in kendisi oldukça havalı
    Bir yandan WebUSB’ye gerçekten ihtiyaç var; ama aynı zamanda sıradan kullanıcılara WebUSB verilmesini de hiç istemiyorum
    Gerçekte onay açılır pencereleri işe yaramadı; insanlar farkında bile olmadan her şeyi onaylıyor
    “Hiçbir şeye basmadım” diyorlar ama sonra 50 spam push bildirimini temizleyip bir düzine kadar “haber” sitesinin push izinlerini kaldırmak zorunda kalıyorsunuz
    Açıkçası Internet Explorer tarzı izin modelini bir ölçüde seviyorum
    Belirli bir özelliği açmak için siteyi “güvenilir” olarak işaretlemeniz gereken bir model
    Bulması zor, biraz zaman alıyor, biraz kafa karıştırıyor ve sistem tarzı modal açılır pencerede oldukça korkutucu büyük bir uyarı simgesi çıkıyor
    WebUSB, WebBluetooth gibi riskli API’leri kullanmak için siteyi “güvenilir” olarak işaretleme sürecinden geçmek gerekseydi, bunu yanlışlıkla açan kişi sayısı çok daha az olurdu
    Kullanıcı deneyimi hâlâ yerel uygulama kurmaktan daha iyi olurdu; üstüne sandboxing de elde ediyorsunuz, bu yüzden bu ödün değerli görünüyor

    • Chrome’un web bildirimleri de tam bir çöplük
      Ortalama yaşlı kullanıcı web bildirimlerinin ne olduğunu hiç bilmiyor
      Zamanla şüpheli web sitesi bildirimlerini yanlışlıkla açıyor ve telefona gelen “HELLO YOUR PHONE HAS VIRUS DOWNLOAD "CLEANER APP" TO FIX BEFORE PHONE DIE” gibi web spam bildirimlerine gerçekten inanıyor
    • Bu bitmeyen bir mücadele
      Bazı insanların sanki eşyaları bozma süper gücü var
      Bir şeyi kelimenin tam anlamıyla imkânsız hâle getirmediğiniz sürece, mutlaka yanlışlıkla yapmanın bir yolunu buluyorlar
      Anlamadıkları ayarları değiştiren kılavuzları izliyor, anlamadıkları özellikleri çalıştırıyor, anlamadıkları erişim izinlerini veriyorlar
      Süreci ne kadar karmaşık yaparsanız yapın, ne kadar uyarı koyarsanız koyun ve bu tür aptallıkları engellemeye ne kadar çalışırsanız çalışın, yine de oluyor
      Sorun şu ki ne yaptığını bilen ve bunu bilinçli olarak kullanan insanlar da var
      Bu insanlar, aptallara asla verilmemesi gereken güçlü özelliklerin kıymetini bilebilir
      Ama o gücü açığa çıkardığınızda, saçma şeyler yapan insanlarla dolup taşmasını gerçekçi olarak önlemek zor; acı olan da bu
    • Katılıyorum
      Büyük sorun, birçok kullanıcının ne yaptığını hiç anlamadığını yeterince kavrayamamak
      Google, bu insanlara güvenli yazılım tasarlamayı anlamıyor
      Zahmetli süreçler anlamsız görünebilir ama çoğu zaman net bir amacı vardır
      Kullanıcının niyetinin sağlam olduğundan emin olmak
      Apple son dönemde bazı web API’lerini yalnızca web sitesi yüklüyse çalışacak şekilde uyguladı; bu, insanlar için tasarım yapmayı anlayan bir strateji gibi görünüyor
      Yararlı PWA özelliklerine erişim sağlıyor ama herhangi bir sitenin bunları keyfince kullanmasına izin vermiyor
      Sıradan insanların anlayabileceği ek bir adım var
      Yüklü PWA ana ekranda sürekli görünür; bu da verilen izni görünür biçimde hatırlatır ve kullanıcının bu erişimi istediğine dair net bir işaret olur
    • Genel kitlenin de erişebilmesini gerçekten istiyorum
      Birçok kişinin cihazlarla etkileşime girmesi gerekiyor ve şu anda kapalı App Store üzerinden sunulan uygulamalar çoğu zaman fiilen tek seçenek
      Resmî desteği kesilmiş cihazlara daha fazla kişinin erişebileceği yolları dağıtmak için WebUSB açık ara en kolay yöntem
      Chrome’un desteklemediği başka bir dünyada, sıradan kullanıcının [python or other scripting language] kurup çalıştırabilmesi gerekirdi
      Geliştirici gerçekten hevesliyse masaüstü uygulaması sunması ya da App Store’a gönderim gibi uzun ve pahalı bir süreçten geçmesi gerekebilirdi
      WebUSB için güvenli bir UI yapılabileceğini düşünüyorum ve ortalama kullanıcının takılı tuttuğu cihazlardan hangilerinin ele geçirilebileceği de aklıma pek gelmiyor
      WebUSB ile klavyeyi veya fareyi (HID), depolamayı, Wi-Fi’yi, sesi, akıllı kartı ya da U2F cihazlarını ele geçirmek mümkün olmayacaktır
      Ama tescilli etiket yazıcıları, çeşitli oyuncaklar ve cihazlar, mikrodenetleyici programlama ve flashing için çok kullanışlı
    • Uygulamaların ve web sitelerinin izin istediği modal istemler, kullanıcı deneyimi açısından en kötüsü
      Kullanımı kolay ve rahat ama güvenilmeyen üçüncü taraflara yanlışlıkla çok geniş erişim vermeyi de kolaylaştırıyor
      Bir sayfaya izin vermek, dediğiniz gibi izin panelinde kullanıcının açıkça başlattığı bir akış olmalı
      Sandbox’lanmış masaüstü uygulamaları için de aynı şey geçerli
      Bir uygulama ekranı sürekli kaydetmek istiyorsa, bu izni izin denetim panelinden açıkça almalı
      İnsanların sadece “yes”e basmasını sağlayan modal iletişim kutuları açabilmemeli
      Çünkü çoğu durumda insanlar kendilerinden ne istendiğini teknik olarak anlamıyor
  • USB Serial gerçekten harika
    Tek bir amaç için kullanılan zahmetli Electron uygulamalarına sonunda son veriyor
    Artık cihazları tarayıcıdan yapılandıran araçlar var ve bu çok iyi
    ESPHome ve onun üzerine kurulu yüzlerce proje, Betaflight, ELRS, Flipper buna örnek
    WebKit’i Apple geliştirdiği için desteğin zayıf olmasını anlıyorum; çevre birimlerine erişime izin verecekse temkinli davranacağını da anlıyorum
    Ama Firefox farklı
    Firefox’un donanım “bağlantısı” desteği ciddi biçimde eksikti ve uzun zamandır geliştirici dostu değildi; bu yüzden sonunda onu kullanmayı bıraktım
    Desteklememe gerekçesi olarak, cihaz erişimi için kullanıcı onayının tek başına yeterli olmadığını söylüyorlar; bu anlamsız
    En azından bir geliştirici bayrağının arkasına koyabilirlerdi
    Blink bunun güvenli yapılabileceğini kanıtladı
    Sebepsiz yere inat ediyorlar ve tarayıcıyı kullanışlı kılacak kullanım senaryolarını göremiyor gibiler
    https://developer.mozilla.org/en-US/docs/Web/API/Serial
    https://mozilla.github.io/standards-positions/

    • Kötü amaçlı bir web sitesinin WebUSB ile FIDO/U2F anahtarlarına eriştiği epey büyük bir güvenlik sorunu olmuştu
      U2F kimlik bilgilerinin oltalamaya karşı dayanıklı olması gerekir
      Çünkü tarayıcının U2F API’si token isteğine alan adını ekler
      Ama WebUSB kullanıldığında site, herhangi bir alan adı için token isteyebiliyordu
      U2F ve WebUSB’nin ikisi de birbirine oldukça benzeyen kullanıcı onay kutuları gösterdiği için, bazı kullanıcıların kafasının karışmasını önlemek pratikte imkânsızdı
      İnanması zor ama Google’ın çözümü, WebUSB’de birçok cihazı engelleme listesine almak oldu
      Artık U2F cihazı üreten yerlerin her yeni ürün çıkardığında Google’dan engelleme listesine ekleme istemesi gerekiyor
      Tarayıcının güvenilmeyen kodu çalıştırmaya yarayan güvenli bir sandbox olmasını herkes seviyor; ama neden o sandbox’ta bu kadar çok delik açmak istediklerini anlamıyorum
      [1] https://www.yubico.com/support/security-advisories/ysa-2018-...
      [2] https://github.com/WICG/webusb/blob/main/blocklist.txt
    • Mikrodenetleyicilerle uğraşmama rağmen WebUSB ya da WebSerial’e ihtiyaç duyduğum kezleri bir elin parmaklarıyla sayabilirim
      Fiziksel donanımla etkileşime geçmek için Electron uygulaması indirmek zorunda kalmayan birkaç düzine son kullanıcı uğruna parmak iziyle takip riskini almaya değmez diye düşünüyorum
      Bir özelliği uygulayıp sonra geliştirici anahtarının arkasına kilitlemek delilik
      Faydalı işlere harcanabilecek yüzlerce saatlik geliştirme zamanını boşa harcayıp, zaten kimsenin bulamayacağı bir özelliği açığa çıkarmak demek
      Bir geliştirici olarak bu Chrome’a özel API’lerin Chrome’da kalması beni rahatsız etmez
      Zaten Firefox’ta gerçekten bozulan bir web sitesi olursa diye bir Chromium tarayıcısını hazırda tutmak gerekiyor; web USB işi yaparken onu kullanırım
      Havalı bir teknoloji demosu, ama tarayıcının yapması gereken bir iş değil
      Kimsenin Firefox eklentisi olarak WebUSB özelliği eklememiş olması da, bu özelliği kullananlar için bile geliştirme zamanı harcamaya değmediğini gösteriyor gibi
    • Bu doğru değil
      Gizlilik ve güvenlik sorunları gündeme getirildi
      Web Serial bir web standardı değil ve Mozilla ya da Apple bu sorunların çözüldüğünü düşünene kadar standart olamaz
      Google tek başına onu web standardı yapamaz; standart için uzlaşı gerekir
      Mozilla tartışması burada: https://github.com/mozilla/standards-positions/issues/336
      WebKit tartışması burada: https://github.com/WebKit/standards-positions/issues/199
    • Günde kaç cihaz yapılandırıyorsun da böyle diyorsun, bilmiyorum
      webusb yüzünden web’de gezinmek için Firefox’u bırakmayı pek hayal edemiyorum
    • Flashlama sitesini barındıran şirket battı diye fiziksel donanımımın birden programlanamaz hale gelmesini kabul edemem
      İndirilebilen ve dış sunuculara bağımlı olmayan yazılım olmalı
      Ancak cihaz zaten baştan o şirketin sunucularına bağımlı çalışıyorsa, yazılım indirip ona güvenmek zorunda kalmamak güzel
  • Tarayıcı tabanlı koddan USB portlarını kullanamamak aslında iyi bir şey de olabilir

    • Bir Linux kullanıcısı olarak WebMIDI’yi seviyorum
      Çünkü bunu destekleyen ses ekipmanı üreticilerinin, örneğin Novation’ın firmware güncellemesi veya yardımcı araçlarını çalıştırmak için artık Windows VM açmam gerekmiyor
      WebUSB de daha fazla türde cihaz için aynı şeyi mümkün kılmalı; ama elbette uygun bir izin mekanizması olmalı
  • Cihazları sık sık flashlayanlar için faydası açık
    Ama sıradan kullanıcılar, yani geri kalan yaklaşık 3 milyar kişi, bunu hiç umursamıyor
    Onlar için sandbox’ta delikler açmak en iyi ihtimalle dikkatsizlik
    Çözüm, bu kullanım için ayrı bir özel araç, belki de ayrı bir tarayıcı olabilir
    Flash Browser gibi bir şey
    Bu işi kolaylaştıran ek araçlar da içerebilir
    Önceden yapılandırılmış izin listeleri veya engelleme listeleri, yaygın flashlama araçları için yer imleri, referans materyalleri gibi
    WebUSB’yi ham haliyle tarayıcıya zorla eklemekten daha iyi bir deneyim oluşturulabilir

  • O “standardın” etrafındaki tartışma ve eleştirileri anlıyorum, ama Pixel telefona GrapheneOS flashlamak için kullandığımda, herhangi bir cihazda yaptığım en rahat, en kolay ve en hızlı OS kurulumu buydu
    Kelimenin tam anlamıyla tak, tıkla ve kullan seviyesindeydi

  • “Ana” anahtarla özel anahtarı şifreleyip şifrelenmiş özel anahtarı anahtar tanıtıcısı olarak döndürmesi şaşırtıcı
    Gerçekten çalışır gibi duruyor
    Saldırgana elindeki özel anahtarı çözmeyi denemesi için sınırsız fırsat vermek, bir gün geri tepecekmiş gibi geliyor; ama ben ne bilirim ki

    • Düşününce bu, mümkün olan tüm durumsuz kimlik doğrulayıcı uygulamalarıyla tam olarak aynı risk
      Örneğin başka bir yöntemde, anahtar tanıtıcısından deterministik anahtar türetmeyle özel anahtar oluşturulabilir
      Saldırgan, anahtar tanıtıcısında saklanan şifrelenmiş siteye özgü anahtar gibi bunu da kaba kuvvetle deneyebilir
      Esas nokta, durumsuz bir kimlik doğrulayıcının tanımı gereği küresel olarak, yani sırlar ve siteler genelinde deterministik olması
      Bir giriş-çıkış çifti verildiğinde, içteki sır kaba kuvvetle bulunmaya çalışılabilir
      Çözüm, bu iç durumu hesaplama açısından imkânsız olacak kadar büyük yapmak
  • WebUSB ile ilgili siyasi tartışmanın ne olduğunu merak ediyorum

    • WebUSB bir web standardı değil
      Google’ın oluşturduğu, yalnızca Blink’e özgü bir API; Mozilla ve Apple gizlilik ve güvenlik gerekçeleriyle reddetti
      İki bağımsız uygulama olmadan web standardı olamaz ve Google, Google dışından kimseyi bunu uygulamaya ikna edemedi
      Buna rağmen çeşitli web sitelerinde Firefox ve Safari “destekleyemiyormuş” gibi gösteriliyor
      “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
    • Genel siyasi tartışmayı pek bilmiyorum ama kişisel olarak WebUSB istemiyorum ve bunun berbat bir fikir olduğunu düşünüyorum
      Tarayıcılar, zaten genel işletim sistemi arayüzleri üzerinden ihtiyaç duydukları USB cihazlarına erişebiliyor
      Klavye ve fare bunun bariz örnekleri
      Herhangi bir web sitesinin neden ayrıca doğrudan erişime ihtiyaç duyması gerektiğini bilmiyorum
      Kullanım senaryoları, bağımsız uygulama kullanmaya üşenen web programcılarına erişim vermek ya da kullanıcıları izlemenin ek bir yolunu sağlamak gibi görünüyor
      İkisine de güvenmek istemiyorum
      Google ve Mozilla’ya bile böyle bir erişim verecek kadar güvenmiyorum; web sitesini yapan rastgele yabancılara ise hiç güvenmem
      Her şeyin web’den erişilebilir olması gerekmiyor
      Sınırı nereye çekmek gerektiğini bilmiyorum ama benim için USB erişimi o sınırı aşıyor
    • Kullanıcıları güvenlik sorunlarına maruz bırakmak ile web’e daha fazla yetenek vermek arasındaki siyaset bu
      Genelde hemen şimdi özellik isteyenlerin kazandığı bir mücadele
      Çünkü güvenlik açıkları, gerçekten sahada istismar edilene kadar varsayımsal sorunlar gibi görünüyor
    • Temelde parmak iziyle takip meselesi ve aynı zamanda tarayıcının bu noktada daha fazla yeteneğe sahip olup olmaması gerektiği meselesi
      Böyle oldukça Chrome’a bağımlılık giderek derinleşiyor
    • Muhtemelen tarayıcının donanıma erişebilmesi yüzündendir
      Ben de bunu istemiyorum