Aşırı büyütülen Passkeys'in güvenlik anahtarlarını nasıl işe yaramaz hale getirdiği
(fy.blackhats.net.au)- Passkeys'i resident key olarak tanımlayıp zorunlu kılan yaklaşım yayılırsa, Yubikey·Feitian·Nitrokey gibi güvenlik anahtarları sınırlı depolama alanları nedeniyle hızla sınırlarına ulaşır
- non-resident credential, Relying Party'nin sağladığı credential ID'yi güvenlik anahtarının çözüp RP'ye özgü özel anahtarı elde ettiği bir yapıdır; bu nedenle cihaz içinde yalnızca master key saklanır
- Buna karşılık resident/discoverable credential, özel anahtarın kendisini güvenlik anahtarında saklar; bu yüzden her hesap bir slot kullanır ve Nitrokey 8, Yubikey ise genelde yalnızca 20~32 adet destekler
- CTAP2.0 güvenlik anahtarlarında resident key'ler tek tek silinemez; tam sıfırlama gerekir ve bu sırada master key de değiştiği için mevcut non-resident key'ler bile artık çalışmaz
- Hizmetler ve kütüphaneler resident key'i varsayılan olarak zorunlu tutarsa, 150'den fazla hesap kullanan kullanıcıların birden çok güvenlik anahtarı ve yedek anahtar yönetmesi gerekir; bu da istedikleri authenticator'ı özgürce seçmelerini zorlaştırır
Resident key neden sorunun merkezinde
- Passkeys'e yönelik aşırı beklentilerin güvenlik anahtarlarını eski cihazlar gibi gösterebileceği endişesinin merkezinde resident key bulunuyor
- Güvenlik anahtarlarının hesap sayısını “sınırsız” gibi desteklediği algısı, çoğu durumda non-resident credential yöntemine dayanıyor
- Resident key, güvenlik anahtarı içindeki depolama alanını gerçekten tükettiği için hesap sayısı arttıkça cihazın sınırları hemen görünür hale geliyor
Non-resident credential nasıl çalışır
- Non-resident credential'da Relying Party, kimlik doğrulama sırasında credential ID'yi tarayıcı üzerinden güvenlik anahtarına iletir
- Credential ID, yalnızca güvenlik anahtarının çözebileceği şifreli bir blob'dur ve çözme sonucu ilgili Relying Party'ye özel anahtar elde edilir
- Güvenlik anahtarı, çözülen özel anahtarla challenge'ı imzalar ve imzayı tarayıcıya ve Relying Party'ye geri döndürür
- Bu yapıda özel anahtar güvenli enclave içinde kalıcı olarak bulunmaz; güvenlik anahtarının içinde yalnızca master key vardır
- Credential ID, AES-128 ile şifrelenir ve HMAC uygulanır; bu yüzden dışarıdan değiştirilmesi ya da çözülmesi zordur
- AES-128 kırılıp güvenlik anahtarı olmadan özel anahtar çözülebilse, TLS şifrelemesi ya da SSH de saldırıya açık olurdu şeklinde bir karşılaştırma yapılıyor
Resident/discoverable credential farkı
- Resident key ya da discoverable credential, özel anahtarın güvenlik anahtarı içinde saklandığı yöntemdir
- Relying Party boş bir credential ID listesi gönderdiğinde, güvenlik anahtarı ilgili RP için kullanılabilecek anahtarı bulur, seçer ve imzalar
- Bu yapı, dışarıdan credential ID alıp bunu master key ile çözme yöntemine dayanmaz
- Bunun yerine her credential güvenlik anahtarının iç alanını kaplar; dolayısıyla resident key slot sayısı fiili hesap sınırı haline gelir
userVerification, resident key'den ayrı bir kavramdır
- Bir credential'ın userVerification'ı zorunlu kılması için mutlaka resident olması gerektiği yönünde bir karışıklık var, ancak bu iki kavram birbirinden ayrıdır
- Güvenlik anahtarı yalnızca dokunuşla presence doğrulamakla kalmaz, içeride PIN veya biyometrik doğrulama yaparak kullanıcının gerçekten kendisi olup olmadığını da denetleyebilir
- Bu davranış userVerification flag ile kontrol edilir ve key residency'den bağımsız çalışır
- Dolayısıyla resident key olmasa bile cihaz kendi başına çok faktörlü bir doğrulayıcı gibi kullanılabilir
Güvenlik anahtarlarının depolama alanı ve CTAP kısıtları
- Resident key cihaz içinde saklandığı için güvenlik anahtarının slot sayısı önemlidir
- Nitrokey 8 resident key destekler
- Yubikey genellikle 20~32 adet destekler
- Bazı anahtarlar resident key'i hiç desteklemez
- Güvenlik anahtarının uyguladığı CTAP standardı da yönetilebilirliği büyük ölçüde belirler
- CTAP2.1 ve CTAP2.1PRE, resident key'leri tek tek yönetmeye, güncellemeye ve silmeye izin verir
- CTAP2.0'da resident key silmek için tüm cihazı sıfırlamak gerekir
- CTAP2.0 cihaz sıfırlaması master key'i de sıfırladığı için mevcut non-resident key'ler de artık çalışmaz
- Birçok güvenlik anahtarının CTAP2.0 olma ihtimali yüksektir; Yubico tarafında CTAP sürümü firmware sürümüne göre değişir
Passkeys adının yayılması ve resident key tanımı
- Apple, 2022'de macOS/iOS üzerinde Touch ID ve Face ID'yi WebAuthn authenticator'ı gibi kullanan passkeys özelliğini duyurdu
- Passkeys adı, “webauthn authenticator” ya da “security key”e göre kullanıcılar için daha tanıdık bir adlandırma olarak görülüyor
- Sonrasında passkeys'in anlamı net biçimde sabitlenmeden çeşitli yorumlar ortaya çıktı
- Rust WebAuthn kütüphanesi ve Relying Party uygulayıcıları, passkeys'i kullanıcının seçebileceği tüm authenticator'ların adı olarak tanımladı
- Bazı topluluk üyeleri passkeys'i birden çok cihaz arasında senkronize edilen credential olarak adlandırdı
- FIDO Authenticate konferansında “passkey resident key'dir” tanımı ortaya çıktı ve ardından FIDO da SSS içinde bu tanımı kullandı
- Resident key tanımının dikkat çekmesinin nedenlerinden biri, tarayıcıların planlanan conditional UI özelliğiyle bağlantılı olmasıdır
- Credential resident key ise kullanıcı adı ve WebAuthn credential'ı otomatik tamamlama ile sunulabilir
- Bu da kullanıcının kullanıcı adını elle yazmak zorunda kalmadığı bir deneyim sağlar
Resident key zorunluluğunun yarattığı kullanıcı sorunu
- WebAuthn kütüphaneleri tüm kayıtlar için resident key'i zorunlu kılacak şekilde yönlendirilirse, sınırlı depolama alanına sahip güvenlik anahtarları hızla dolar
- Örneğin bir parola yöneticisinde 150'den fazla kayıtlı parola varsa, bunların tümünü resident key'e dönüştürmek için en az 5 Yubikey gerekir
- Yedekler de hesaba katıldığında 10~15 Yubikey yönetmek gerekebilir
- Bu, güvenlik anahtarını seçen kullanıcılar için kötü bir kullanıcı deneyimidir ve passkeys'in resident key zorunluluğu yüzünden güvenlik anahtarı kullanımı başlı başına zorlaşabilir
- FIDO doğrulama anahtarı pazarlamasında “sonsuz key pair storage” ya da “kayıtlı hesap sayısında sınır yok” gibi ifadeler kullanılıyor, ancak bunlar non-resident key için doğru olsa da resident key zorunluluğuyla çelişiyor
- WebAuthn Work Group'un hedeflerinden biri, kullanıcıların istedikleri authenticator'ı dezavantaj yaşamadan özgürce seçebilmesini sağlamak; resident key zorunluluğu ise bu hedefle uyuşmuyor
- Passkey ortamında düzgün çalışabilecek authenticator türleri olarak Apple passkeys, Android passkeys, WebAuthn destekleyen parola yöneticileri, TPM 2.0 kullanan Windows ve Touch ID'yi TPM gibi kullanan macOS üzerindeki Chromium tabanlı tarayıcılar gösteriliyor
Olası çözüm yönleri
- rk=preferred davranışını değiştirip güvenlik anahtarlarında resident key oluşturmama seçeneği var
- Şu anda Relying Party, resident key isteği düzeyini
discouraged,preferred,requiredseçeneklerinden biri olarak belirleyebilir - Bugün
rk=preferred, roaming authenticator olan Yubikey'de bile resident key oluşturuyor ve sonuçtark=requiredile benzer davranıyor preferred, “yalnızca depolama alanı sınırsızsa resident key oluştur” şeklinde yumuşatılırsa Android/iOS resident key oluştururken güvenlik anahtarlarının depolama alanı tüketilmeyebilir- WebAuthn WG bu değişikliğe henüz direnç gösteriyor; tarayıcıların bunu ayrıca uygulaması ise pratikte Chrome ekibinin kararına bağlı
- Şu anda Relying Party, resident key isteği düzeyini
- Passkey kütüphanelerinin rk=discouraged kullanmasını istemek de bir başka yöntemdir
rk=required, güvenlik anahtarlarını dışlayabilirrk=discouraged, Android kullanıcılarının conditional UI almasını engelleyebilir- Ancak kullanıcı adı için zaten otomatik tamamlama yolları bulunduğundan, bu güvenlik anahtarlarını dışlamaktan daha iyi görülüyor
- FIDO'dan resident key depolama alanını bir sertifikasyon şartı haline getirmesi de istenebilir
- Bugün FIDO, doğrulama cihazları için depolama kapasitesi zorunluluğu getirmiyor
- Eğer FIDO resident key istiyorsa, sertifikalı cihazların binlerce resident key saklayabilmesi gerektiği savunuluyor
Sonuç
- Passkeys'i resident key olarak gören aşırı yaklaşım, güvenlik anahtarı kullanıcılarının çevrimiçi ortamda istedikleri authenticator'ı seçmesini engelleyebilir ya da bunu ciddi biçimde zorlaştırabilir
- Sorun, passkeys'in kendisinden çok, sınırlı depolama alanı ve yönetim yeteneğine sahip güvenlik anahtarlarına resident key zorunluluğunun topluca uygulanmasında yatıyor
1 yorum
Hacker News görüşleri
Kriptografinin kendisinden biraz farklı bir konu ama annem Gmail’e giremediği için panik halinde aradı. Meğer Google yeni Android telefonu otomatik olarak passkey olarak kaydedip bunu varsayılan giriş yöntemi yapmış, ama arayüz aşırı kafa karıştırıcıymış
Şifreyle giriş yapmak için ikinci seçeneğe basmasını ya da passkey’in ne olduğunu anlamasını beklemek bence fazla. “Android’e passkey gönderdik” dedi ama telefona bildirim gelmedi ve 30 dakika bakmamıza rağmen çözemedik. Otomatik kaydedilen passkey’i silemedik, varsayılan kimlik doğrulama akışını da kapatamadık. Google’ın UX’i berbat ve düşük segment bir Samsung telefondaki değiştirilmiş Android sürümünü büyük ölçekli bir kimlik doğrulama sisteminin temeli olarak görmek aptalca bir karar gibi duruyor
Bu, son dönemde Google’da yaşadığım birçok sorundan sadece biri. Eskiden gizlilik yüzünden kabaca kaçınmaya çalışıyordum; artık Google kullanımını olabildiğince azaltmak için ciddi çaba harcıyorum. Google Maps’te işletmem hiçbir sebep olmadan kaldırıldı ve yeniden kaydetmek 2 hafta sürdü; bir insanla telefonda konuşmak ise imkansızdı. Her destek e-postasında bir telefon numarası veriyorlar ama o reklam destek hattı ve askıya alınmış işletme hesabı için hiçbir şey yapamıyor; üstelik Google Business ekibinin o numarayı destek için verdiğine bile inanmak istemediler. Google Ads destek çalışanına, Google Business tarafında biriyle konuşmanın hiçbir yolu olmadığını kabul ettirmek için 30 dakika boyunca aynı soruları tekrar etmek zorunda kaldım. Artık resmen anti-Google vaizi oldum
Telefonun şarjı bittiyse ne olacak? Telefonu kaybettiniz ve konum hizmeti kimlik bilgilerini geri almak için e-postanıza şifre sıfırlama göndermeniz gerekiyor ama e-postanıza giriş yapamıyorsanız? O noktadan sonra “soruları yanıtlama” süreci başlıyor. Sorumlusu belli olmayan gizli bir algoritma Linux’ta ungoogled chromium’u şüpheli buluyor ve “Şu anda kullanılabilir depolama alanınızın yüzde kaçını kullanıyorsunuz?” gibi soruların cevabını yanlış hatırlarsanız erişimi geri almak tamamen şansa kalıyor. Bu arada ücretli Google kullanıcısıyım
Yine de anlatılmak isteneni tamamen anlıyorum. Hem UX hem de terminoloji kafa karıştırıcı. Her adım açıklama sunsa bile insanlar, özellikle de aceleleri varsa, küçük açıklama metinlerini atlayıp en büyük ve en gösterişli düğmeye basmaya alışkın; bu yüzden pek yardımcı olmuyor. UX tasarımı açısından gerçekten zor bir problem
Kullanıcılar gitmediği sürece Google umursamıyor ve umursamak zorunda da değil. Başka bir şey istiyorsanız reklam verenin bedel ödemediği bir hizmete ihtiyacınız var. Google kullanıcıyı bir şekilde sömürüyorsa Apple da başka bir şekilde sömürüyor; zehir seçmek gerçek bir seçenek değil
Apple bunu gerçekten tanımlamadığı için, “passkey tam olarak nedir?” sorusunun cevabını arayan kullanıcılar için düşünürler bu boşluğu doldurmaya başladı
Ben Apple’ın passkey’i iCloud Keychain ile senkronize edilen bir anahtar çifti olarak tanımladığını anlamıştım. WWDC 2021 sunumunda da passkey’ler “her zaman yanınızda” olmaları, yani cihazlar arası senkronizasyon ve “kurtarılabilir” olmaları nedeniyle güvenlik anahtarlarından farklı olarak tanımlanıyordu. Sonrasında tanımın başka bulut senkronizasyon yöntemlerini de kapsayacak şekilde genişlediği anlaşılıyor. Bence bu yazı yanlış bir ödünleşim kuruyor. Güvenlik anahtarları önemli değil[1]. Çünkü bunları sadece çok az sayıda teknik kullanıcı ve güvenliğe gerçekten önem veren az sayıdaki şirket kullanıyor. Web güvenliğini artırmak istiyorsanız insanları şifrelerden uzaklaştırmanız gerekir ve nüfusun %99’u zorlanmadıkça güvenlik anahtarı kullanmayacaktır. Passkey’lerin, özellikle de işletim sistemiyle derin entegrasyon sayesinde, şifrelerin yerini alma ihtimali yüksek. Kullanıcıların %1’inden azı yerleşik anahtar yuvası yetersizliği yaşıyor diye kimlik doğrulamayı o tarafa göre optimize etmemek gerekir. [1] Bende 3 Yubikey, 3 Yubico güvenlik anahtarı ve 1 SoloKey var
Kullanıcılar yedekleme ve kurtarmayı destekleyen bir passkey sağlayıcısı kullanmayı seçebilir ve güvenen taraf bu sinyali alır. Bu sinyale bakarak şifreyle giriş seçeneğinin kaldırılmasını önerip önermeyeceğine karar verebilir
FIDO standardına göre passkey’ler şifrelerin yerini alır ve kullanıcıların birden fazla cihazında web siteleri ile uygulamalara daha hızlı, daha kolay ve daha güvenli giriş yapmasını sağlar. Şifrelerin aksine passkey’ler her zaman güçlüdür ve phishing’e dayanıklıdır. https://fidoalliance.org/passkeys/
rk=requiredneden var, anlamıyorum. Başta bir seçenek olarak bile olmamalıydı.Passkey’ler ve onlarla ilişkili kişiler konusunda sürekli endişeli ve kuşkucu olmamın nedeni de tam olarak bu. Bu insanların, Microsoft gibi büyük şirketlerin güvenliği ve uyumluluğu ciddi biçimde bozup rekabeti öldüren her türlü kötü niyetli piyasa uygulaması için kullanışlı bir araç haline gelmeyecek protokoller tasarlama sorumluluğu var. Ama yazılarda ve gönderilerde tekrar tekrar görülen tavır, “canınız cehenneme, kötüye kullanımı daha da kolaylaştıralım” tavrına daha yakın. Sorun yalnızca yerleşik anahtarlar da değil; örneğin tasdik (attestation) işleme biçimi de şirketleri yok etmek için kolayca kötüye kullanılabilir
Bir hizmet
rk=requiredayarladıysa ve platform bunu açmak ya da desteklemek istemiyorsa veya bunu yapamıyorsa, süreç her zaman başarısız olur ve kayıt bile yapılamaz gibi görünüyor. Kullanıcıları sisteme alıp işi büyütmeyi hedefliyorsanız, bu kendi ayağına sıkmak gibi duruyorGüvenlik ya da kriptografi tarafında hiç uzman değilim, bu yüzden bu yazıyı takip etmek çok zordu; başkaları için de öyle olacağını düşünüyorum.
Yeterli arka plan bilgisi olan birine tuhaf sorular gibi gelebilir ama her bir iki cümlede bir takıldım. “Sonuçta her şey tek bir noktaya, yerleşik anahtarlara çıkıyor” denince bunun nasıl ve neden böyle olduğunu, ayrıca bunun passkey ya da HSM ile bağlantısını anlayamadım. “Keşfedilebilir/yerleşik anahtarın ne olduğunu anlamalısınız” denmesi, tüm yerleşik anahtarların keşfedilebilir anahtar olduğu mu, tüm keşfedilebilir anahtarların yerleşik anahtar olduğu mu, yoksa ikisinin de mi olduğu konusunda belirsiz. “Çoğu anahtarın ‘sınırsız’ hesap desteklediğini görmüşsünüzdür” deniyor ama burada anahtarın passkey mi, HSM’de saklanan anahtar mı, yoksa ikisi de mi olduğu belli değil. “Anahtarla sarılmış anahtar güvenlik anahtarına gönderilir” ifadesi de, HSM’nin sınırsız hesaba uygulanabilmesinin nedeninin bir anahtarı başka bir anahtarla sarıp saklayabilmesi olduğu anlamına mı geliyor, o da kafamı karıştırıyor
Telefonlar 10 bin passkey’yi bile sorunsuz saklayabilirken, modern donanım anahtarları kullanılabilir flash üzerinde toplam yalnızca 25 tane saklayabiliyor olabilir. Bu depolama alanının gerekli olmasının nedeni keşfedilebilirlik. Örneğin GitHub.com giriş sayfasında yeni passkey desteğine tıklarsanız, hesap adını bile girmeden oturum açabilirsiniz. Tarayıcı, bir parola yöneticisine benzer deneyim sunar ve parola yöneticisindeki parolalar gibi passkey’ler de yerelde site hesaplarının kaydı haline gelir. Ama WebAuthn içinde passkey olmayan başka modlar da var. Keşfedilemeyen kimlik bilgilerinde, belirli bir kullanıcı hesabı için bir tanıtıcı listesi sağlanması gerekir; bu tanıtıcılar kayıt sırasında anahtar tarafından verilmiştir. Kimlik doğrulama sırasında yalnızca tanıtıcıyla eşleşen kimlik bilgileri seçenek olarak sunulur. Donanım güvenlik anahtarları bunu, gelecekteki kriptografik işlemler için gereken kaydı tanıtıcının kendisinde saklayarak kullanır; bu mod flash depolamayı tüketmez. Kullanıcı kullanıcı adını girince, bir API tanıtıcı listesini döndürür ve bu liste güvenlik anahtarına uygulanarak depolama sınırı olmadan kimlik doğrulama yapılabilir. Ancak birçok site, hesabın var olup olmadığını açığa vurmama politikası izler. “Bu hesap mevcutsa kısa süre içinde bir e-posta alacaksınız” gibi kurtarma akışlarını görmüşsünüzdür. Giriş sürecinin, bir kullanıcı adı ya da e-postaya bağlı hesap bulunup bulunmadığını ve kaç kimlik bilgisinin kayıtlı olduğunu saptayan bir API sunması, site açısından kabul edilmesi zor bir şey olabilir. Sonuçta sitelerin bu süreci yaygın biçimde benimseyip mevcut donanım sınırlarını etkilemesindense, depolama alanı 10 kat fazla güvenlik anahtarlarının ortaya çıkması daha olası görünüyor
rk=requiredbelirtebilmesinin zararlı olduğu iddiası. Çünkü bu, birçok TPM donanımının passkey cüzdanı/veritabanı gibi çalışamamasına yol açıyor.Yorumların çoğu muhtemelen bu noktada hemfikirdir. Ama bu, yazarın yazının yarısını passkey tanımı tartışmasına ayırarak yarattığı kafa karışıklığını haklı çıkarmaz
Passkey’ler FIDO2 üzerinde uygulanır ve özellikle FIDO2 spesifikasyonundaki yerleşik anahtar özelliğini kullanır. FIDO2 donanım kimlik doğrulama aygıtları tam olarak HSM değildir ama benzerdir; Yubikey gibi hem HSM hem de FIDO2 kimlik doğrulama aygıtı olan cihazlar da vardır. FIDO2’de “yerleşik anahtar” ile “keşfedilebilir anahtar” eş anlamlıdır. Spesifikasyonda “yerleşik anahtar” kullanılır ama “keşfedilebilir anahtar” da yaygındır; bu da FIDO’nun yarattığı kafa karıştırıcı terminolojilerden biridir. “Anahtar” burada passkey’yi ya da HSM’de saklanan bir anahtarı değil, Yubikey gibi bir FIDO2 donanım kimlik doğrulama aygıtını ifade eder; buna genelde “güvenlik anahtarı” denir. FIDO2 donanım kimlik doğrulama aygıtları, yerleşik anahtarlar kullanılmadığı sürece pratikte durumsuzdur ve hiçbir şey saklamadıkları için sınırsız sayıda hesaba kaydedilebilirler. Bir hesaba kaydedildiklerinde cihazda EdDSA gibi bir anahtar çifti üretilir ama saklanmaz; bunun yerine özel anahtar, örneğin AES256 anahtarı gibi gömülü bir ana anahtarla şifrelenir. Ardından düz metin açık anahtar ve şifrelenmiş özel anahtar, saklaması için google.com gibi güvenen tarafa gönderilir. Kimlik doğrulama sırasında şifrelenmiş özel anahtar, yani “sarılmış” anahtar, kimlik doğrulama aygıtına gönderilir; aygıt içinde çözülür ve dijital imza üretmek için kullanılır. Ancak FIDO2, yerleşik olmayan anahtarların nasıl uygulanacağını fiilen belirtmez; sarılmış anahtar yalnızca yöntemlerden biridir. FIDO2 sadece özel anahtarın kimlik bilgisi kimliğinden güvenli biçimde türetilebilir olmasını şart koşar; kimlik bilgisi kimliği ise sarılmış anahtar olabilir de olmayabilir de, rastgele veridir
Bence duruma fazla karamsar bakılıyor. Zayıf parolaları ve parola tekrar kullanımını ortadan kaldırarak sıradan hesap ihlallerinin %99’unu engelleyen yeni kimlik doğrulama standardının faydalarından yararlanmak istiyorsanız, 2013’ten beri dayanan eski Yubikey’den vazgeçip 30 dolar harcayarak yükseltme yapmanız gerektiği şeklinde de görülebilir
Bio FIDO modeli nasıldır bilmiyorum ama benzerse, YubiCo’nun çok sayıda yerleşik anahtara uygun bir ürünü olmayabilir. Düzeltme: Bio da aynı 25 sınırına sahip
Paylaşılan yerleşik anahtarlar, kısa süreli geçici kullanım dışında var olmamalı. Bu bir sorumluluk yükü, bir güvenlik riski ve kötü güvenlik uygulamalarını teşvik ediyor. En iyi örnek, güvenlik açısından kusurlarla dolu olan TOTP. Paylaşılan sırları birden fazla cihaz arasında paylaşmak ya da yedeklemek istememelisiniz, ama bunun mümkün olması ve özensiz 2 aşamalı kimlik doğrulama uygulamalarının istisna değil standart haline gelmesi nedeniyle fiilen buna zorlanıyorsunuz. Şu anki gidişata bakılırsa passkey’ler de aynı derecede kusurlu ve kullanıcıya düşmanca bir yöne gidecek gibi görünüyor
“Sahip olduğunuz ama kaybedebileceğiniz bir şeye” dayanan kimlik doğrulama temelden bozuk. Cihazı kaybederseniz ya erişiminizi de kaybedersiniz ya da en zayıf halka başka bir yerde olmak zorundadır; bu durumda o üstün güvenliğin pek anlamı kalmaz
Sonuçlar gösterecektir ama passkey’ler yaygın biçimde benimsenirse, çoğu kişi için hesap kilitlenmesi daha sık değil daha az sık hale gelecek gibi görünüyor
Donanım anahtarlarının depolama alanı neden bu kadar sınırlı, merak ediyorum. Anahtarın içine, güvenli işlemcinin erişebileceği bir yüksek kapasiteli depolama aygıtı daha eklemenin maliyeti ne kadar artar ki
Bu yüksek kapasiteli depolama aygıtı elbette güvenli işlemci tarafından güçlü biçimde şifrelenir ve her şey silindiğinde o anahtar da birlikte silinecek şekilde yapılabilir
Güvenlik açısından bakarsanız, depolama alanı 0 olan bir güvenlik anahtarının en iyi güvenlik anahtarı olduğunu bile söyleyebilirsiniz. Güvenlik belirteçlerini paylaşılan sırlar vb.den türetmek yerine güvenlik anahtarına ya da güvenli bölgeye enjekte edip saklayan protokoller genellikle ciddi kusurlara sahip olmuştur. Bazen bu, TOTP’de olduğu gibi temel bir güvenlik kusurudur; bazen de karmaşıklık kusurudur. Aynı şekilde HSK/2 aşamalı kimlik doğrulama için kullanılan güvenlik anahtarlarını birden çok cihaz arasında paylaşmak da kesinlikle istenmemelidir. Bir cihazda sızıntı olursa hepsi bozulur demektir. Bunun yerine her cihaz için ayrı bir anahtar olmalıdır ve giriş sağlayıcısı ya da sunucu tarafında bu ek yük büyük resimde göz ardı edilebilir düzeydedir
Küçük depolamanın biraz daha kolay denetlenebilir olması gibi bir avantajı da var. Elbette günümüz ölçütleriyle bakıldığında, o küçük boyut bile pratikte denetlenebilir sınırları zorluyor olabilir
TPM’ye bakarsanız, bir şeye imza atılırken her seferinde girilen şey imzalanacak veri ile mühürlenmiş özel anahtardır. Mühürlenmiş anahtar, TPM’nin ürettiği özel anahtarın TPM’ye gömülü bir anahtarla simetrik olarak şifrelenmiş halidir. Bu mühürlenmiş anahtar yüksek kapasiteli depolama aygıtında saklanır ve her imzalama işleminde TPM’ye verilir. Bu tasarım sayesinde, yüksek kapasiteli depolama aygıtının izin verdiği kadar çok anahtara sahip olunabilir
Güvenlik anahtarını yuvaya taktığınızda USB bellek, güvenlik anahtarına depolama sağlar ve bilgisayara bir güvenlik anahtarı gibi görünür. Güvenlik anahtarı takılı değilken ise normal bir USB bellek gibi çalışır. Normalde güvenlik anahtarını takılı tutarsınız; daha fazla depolama gerektiğinde daha büyük bir depolama modülü alır, güvenlik anahtarını mevcut modülden çıkarıp bilgisayara takarak şifreli dosyaları kopyalar, ardından yeni modüle taşıyıp güvenlik anahtarını yeniden takarsınız
Başta fiziksel güvenlik anahtarını passkey olarak kullanmanın iyi bir fikir olup olmadığından emin değilim. Passkey, parola yerine geçecek bir çözüm olarak tasarlandı ve bunun için genelde telefonda ya da masaüstünde bulunan, “sahip olunan şey”e ek olarak kilidi açmak için “bilinen bir şey” ya da “kişinin kendisi”ni gerektiren iki faktörlü özellik gerekli gibi görünüyor
Bence fiziksel güvenlik anahtarlarını, özellikle kopyalamaya direnç ana işlev olduğunda, belirli yüksek güvenlikli bağlamlarda passkey’e ek olarak kullanılan ikinci aşama doğrulama olarak bırakmak daha iyi. Bu kullanımda ikinci aşamaya gelindiğinde zaten giriş yapılmak istenen hesabın ne olduğu biliniyor, dolayısıyla yerleşik anahtar gerekli değil. Ayrıca yerleşik anahtarların sunduğu otomatik tamamlama özelliğinin passkey UX’i için önemli olduğunu düşünüyorum. Bunu, yalnızca güvenlik meraklılarının kullandığı azınlık anahtarlarla geriye dönük uyumluluğu korumak uğruna feda etmek mantıklı değil. Elbette yerleşik anahtar olmadan da bu UX’i korumanın bir yolu varsa sorun yok
Hesap açtığınız dünyadaki her hizmetin güvenli ya da phishing’e karşı dayanıklı olduğunu varsaymaktansa, seçtiğiniz parola yöneticisinin daha güvenli olduğuna inanmak daha kolay. Bu yüzden passkey kullandığınız noktada genelde zaten işletim sistemi ya da passkey’i elinde tutan parola yöneticisi gibi daha güvenli bir bağlam içinde kimliğinizi kurmuş oluyorsunuz. Ayrıca şu anda ya da yakın zamana kadar donanım anahtarını desteklemeyen yerlerin yakın gelecekte de desteklememiş olma ihtimali yüksek. Buna karşılık passkey çözümünün benimsenme maliyeti kabaca yazılım desteği düzeyinde olduğu için çok daha kolay ve yatırım getirisi daha yüksek olabilir. Tabii bu esas olarak web siteleri için geçerli; passkey, web siteleri için “standartlaştırılmış SSH anahtarı”na daha yakın. Donanım anahtarı ise passkey’lerin bulunduğu kasayı gerçekten açan ikinci faktör olarak daha kullanışlı görünüyor ve burada parola da birlikte gerekebilir. Donanım anahtarlarının ömrü henüz biraz daha var gibi. GitHub, Gmail vb. yerlerde varsayılan yöntem olarak kullanınca, passkey giriş akışı gerçekten çok iyi
Tarayıcıda, parola yöneticisinin bağlanabileceği basit bir HATEOAS API’si olsa yeter; web uygulaması da tarayıcıyı tetikleyen HTML’i sunsa yeter. Sonra parola yöneticisi kullanıcıyı nasıl doğrulayacağına, yani kullanıcının istediği yönteme karar verir ve o web sitesinin gizli değerini otomatik enjekte ederek kullanıcıyı otomatik giriş yaptırır. Bir sorun çıkarsa e-posta sıfırlama kullanılır. “Aşırı gösterişli güvenlik” isteyen web sitelerinin daha karmaşık bir şey istemesini anlıyorum. Ama kullanıcının isteğe bağlı olarak daha yüksek güvenlik düzeyini açabilmesi gerekir. Örneğin çoğu web sitesi için, parola yöneticisinin rastgele parola kullandığı varsayılırsa, basit bir parola hash’i yeterlidir. Bunu her web sitesi uygulayabilir, her parola yöneticisi uygulayabilir ve sıradan kullanıcıların %99’unun mevcut parola kullanımından daha iyidir. Bu varsayılan kimlik doğrulama yöntemi olabilir. Sonrasında TOTP, OIDC, açık anahtar kriptografisi vb. istenirse sunucu bunu ilan eder ve istemci isteğe bağlı olarak katılıp doğrulamayı sürdürür. Her site ve her kullanıcı en güvenli yöntemi kullanmak zorunda değil. Önce güvenliğin taban seviyesini yükseltmeyi kolaylaştıralım, daha güçlü güvenlik de zaman içinde isteğe bağlı seçilsin
Birisi donanım token’ımı çalsa bile bu büyük bir sorun gibi görünmüyor. https://support.yubico.com/hc/en-us/articles/4402836718866-U...
Parola kullandığınızda doğrulama arayüzü klavyedir ve parolayı giren kişinin iddia ettiği kişi olduğuna dair gerçek bir garanti yoktur. Parolalar kolayca aktarılabilen bilgiye dayandığı için pek çok şekilde ele geçirilebilir. Doğrulama arayüzünü cihazdan cihaza taşımak çok daha iyi. Kolay aktarılabilen bilginin aktarılmadığını varsaymak yerine, biyolojik varlığın doğrulama cihazını yönetebildiğini varsayıyoruz; insanlar da zaten bu tür işlerde oldukça iyidir. Doğrulama kanal sayısını artırarak sistemi daha sağlam hale getirebiliriz; ayrıca uzak sisteme doğrulama için kullanılacak cihaz ile biyolojik varlık arasındaki doğrulamayı FaceID gibi yöntemlerle sınırlayabiliriz. Özünde telefon ya da anahtar gibi bir cihazın o kişinin kendisi olduğunu varsaymak daha doğal geliyor. Evde sadece Netflix parolasını değil, bir kredi kartını da paylaşıyoruz. Pratik nedenlerle bir kredi kartını yedek anahtarla birlikte bırakıyoruz; ev için bir şey alınması gerektiğinde herkes alıp kullanabiliyor. Kartın düzgün kullanılacağına güveniyoruz ve herkes PIN’i biliyor, ama temassız ödeme yaygın olduğu için buna neredeyse hiç gerek kalmıyor. Masrafları takip edip sonra birbirimizle hesaplaşmaktan çok daha doğal. Muhtemelen yasa dışıdır ve banka bilse kartı iptal ederdi ama yine de böyle. BT sistemlerinin, gerçek dünyaya benzer şekilde çalışarak insan davranışına yaklaşmaya acil ihtiyacı var. Çoğumuz BT sistemleriyle içli dışlı olduğumuz için idare ediyoruz; ama teknolojiye aşina olmayan insanlar iPhone parolası ne, iCloud parolası ne, Gmail parolası ne, neden WhatsApp’a kod girmem gerekiyor gibi gündelik sorunlarda bile zorlanıyor. Doğrusu ben de Mastadon’u anlamadım. Muhtemelen Mastadon phishing’ine tamamen savunmasız olurum; ekran ne girmenizi isterse onu girerdim
Passkey'ler, adlarının da ima ettiği gibi, ikinci faktör olarak geliştirilmiş FIDO2 U2F standardına parazit gibi tutunuyor. Yerleşik anahtarlar, PIN eşliğinde cihaz içi iki aşamalı kimlik doğrulama içindir ve akıllı kartların işlevsel karşılığıdır. Birileri, muhtemelen Apple, yalnızca WebAuthn'ın tek kimlik doğrulama faktörü olmak için yeterli olduğunu düşünmüş gibi görünüyor. Ne yerleşik anahtar ne de donanım bağı var; anahtarlar iCloud üzerinden taşınıyor ama cihazda TouchID/FaceID ile korunuyor. Sonra da buna passkey markası vuruldu. Asıl hedef iki aşamalı kimlik doğrulamanın kendisi değil. Hedef; phishing, brute force ve credential stuffing saldırılarına karşı güvenli, ayrıca akıllı kartlar kadar uygulanması zor olmayan kullanıcı kimlik doğrulaması. FIDO2 bunu başarıyor. Apple, Google ve Microsoft uygulamalarındaki sorun, kimlik doğrulayan site ile kullanıcının cihazı arasındaki protokol düzeyindeki güvenliğin zayıf olması değil. Protokol aynı. Sorun, sitenin artık kullanıcının kişisel platform hesabına güvenmek zorunda olması; kullanıcının bunu doğru yapılandırdığına ve platformun da gelecekte sürekli doğru davranıp kullanıcının kişisel hesabına yönelik saldırıları düzgün şekilde ele alacağına inanması gerekmesi.
Bağlam eklemek gerekirse, YC destekli şifresiz kimlik doğrulama şirketi işletiyorum ve bunu büyük kuruluşlara dağıtıyorum. Passkey’lerin tüketici tarafında şifresiz kimlik doğrulamanın cevabı olacağı açık görünüyor, ancak kurumsal ortama henüz bu şekilde yansımış değiller
Passkey’ler tüketiciler için harika. Çünkü amaç, iCloud varsayılan yedekleme ya da AirDrop benzeri yöntemlerle kimlik bilgilerini diğer cihazlara yedekleyip kişinin kendi acil erişimini mümkün kılmak. Teknik olarak bu kimlik bilgisinin paylaşıldığı cihazlar attestation sağlayamaz. Attestation, anahtar çiftinin Yubikey ya da Apple cihazı gibi belirli bir cihazda üretildiğine dair bir “kanıt”tır. Yubico gibi üreticiler, çıkarılamayan anahtar çifti/sertifikaları anahtara gömülü olarak üretip gönderir ve bu anahtar çiftine erişen harici bir arayüz olmadığı için yöneticiler bunun gerçekten bir Yubikey olduğundan yüksek ölçüde emin olabilir. Attestation yoksa ve anahtar paylaşılabiliyorsa, sorunun nerede başladığı görülebilir. Kurumlar, AirDrop ile paylaşılabilen kimlik bilgilerinin ayrıcalıklı çalışan hesaplarına erişimi riske atmasını üstlenmek istemez. Yubikey’de dijital hırsızlık riski fiilen yoktur. Sonuçta passkey’ler cihaz veya sunucu kilidi açmada da kullanılamaz. FIDO2’nin ve daha da önemlisi işletim sistemi geliştiricilerinin parolaları tamamen bitirmesi için önünde uzun bir yol var. Bugün kurumsal pazarın büyük bölümünde bu boşluğu Yubikey dolduruyor ve bazıları donanıma milyonlarca dolar harcamış durumda. Mevcut haliyle passkey’leri satmak zor olacaktır
Apple da passkey destekliyor, Android ve Chrome da, Microsoft da, Yubikey de passkey destekliyor. Ancak kullanıcı doğrulaması için kimlik doğrulama prosedürü ve kopyalanabilirlik gibi özellikler ve kısıtlar büyük ölçüde değişebilir. Devlet kurumları passkey destekleyebilir, ancak yalnızca AAL2 gereksinimlerini karşılayan FIPS sertifikalı kimlik doğrulama cihazlarında sunulduğunda buna izin verebilir. En azından şu an için Apple veya Google’dan çıkacak bir şey değil. Kurumlar, MDM yönetim ürünlerinin sunduğu yazılım ve yapılandırmalarla oluşturulan passkey’leri desteklemeyi seçebilir; Apple bunun için beta desteği duyurdu. Ancak devlet-vatandaş hizmetlerinde belirli donanım tabanlı kimlik doğrulama cihazlarını zorunlu kılmaya çalışılırsa büyük sıkıntı yaşanabilir. Vatandaşları 80 doların üzerinde donanım almaya ikna etmek zordur ve web teknolojileri kullanıcı seçimi merkezli geliştirildiğinden WebAuthn API’sinin ve kullanıcı deneyiminin kullanıcı seçimini sınırlamaya yardımcı olacak yönde optimize edilmesi de pek olası değildir
Güvenlik açısından bunun gerçekten berbat bir çözüm olduğunu düşünüyorum
Devlet ve Apple, Google gibi şirketlerin dijital hayatı kontrol etmesi için adeta rüya gibi bir yapı. Parola kullandığınızda bir bakıma durumsuzluğa yakın bir yapı vardır; yani kişisel e-posta hesabınız veya herhangi bir hesabınız varken sınırı geçseniz bile kimse bu hesaba sahip olduğunuzu bilemez, sizden erişimi teslim etmenizi zorla isteyemez, donanımdan erişim unsurunu çıkaramaz ya da cihaza erişimi kaybettiğiniz gerekçesiyle sizi kilitleyemez. Ana anahtarlar ve benzerleri TPM veya güvenli öğede saklansa bile bazı devletler bunlara erişebilir; mesele sadece birkaç yıl ve hesaplama gücü meselesidir. Çoğu durumda bu, belirli bir hesabın kimlik bilgilerine sahip olduğunuzun kanıtı da olur. Cihaz veya işletim sistemi üreticileri, yetkililer tarafından güvenli alana erişim sağlamaya kolayca zorlanabilir; bu da gönüllü olsun ya da olmasın gerçekleşebilir