deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

Geliştirici rehberi, macOS Secure Enclave'de saklanan SSH anahtarlarını anlatıyor

Hacker News'in ön sayfasına çıkan bir rehber, macOS'un yerleşik Secure Enclave'i kullanarak dışa aktarılamayan, Touch ID onaylı SSH anahtarlarının nasıl üretileceğini ve yerleşik kurulumun nerede yetersiz kaldığını açıklıyor.

Geliştirici rehberi, macOS Secure Enclave'de saklanan SSH anahtarlarını anlatıyor

SSH özel anahtarlarını — kopyalanamayacakları bir yer olan — macOS Secure Enclave içinde saklamayı anlatan pratik bir rehber, Hacker News'in ön sayfasına ulaştı. gatezh.com'da yayınlanan ve yazarının macOS'un yerleşik araçlarıyla boğuşmuş bir geliştirici tarafından kaleme alınan yazı, tamamen yerleşik, donanım destekli bir SSH kurulumunun bugün mevcut olduğunu gösteriyor; yol boyunca karşılaşılan hataları belgeliyor ve yazarın neden sonuçta bunu günlük kullanımda tercih etmediğini açıklıyor.

Diskteki anahtarların sorunu

Yazıya göre geleneksel bir SSH anahtarı ~/.ssh dizininde yaşar ve onu koruyan şey dosya izinlerinden daha güçlü değildir. Dosya sistemine okuma erişimi olan herhangi bir kötü niyetli betik anahtarı kopyalayıp açtığı her sunucuda kullanabilir — yazar, adaylardan bir depoyu yerel olarak klonlayıp çalıştırmalarını isteyen sahte mülakat ödevleriyle ilgili yinelenen dolandırıcılıklara dikkat çekiyor. Yazar hasarı sınırlamak için devcontainers'a geçmişti ancak bunu yetersiz bulmuştu.

Yazılım kasaları da sorunu tam çözmez: yazıda, 1Password ile (ücretsiz katmanında bile SSH anahtarı desteği ekleyen) Bitwarden'ın anahtarları bekleyen durumda şifrelediği ama imzalarken yine de bellekte çözdüğü belirtiliyor. Yazarın istediği, tamamen ele geçirilmiş bir makineden bile fiziksel olarak çıkarılamayacak bir anahtardı. Bu, seçenekleri bir YubiKey donanım anahtarına ya da Mac'in yerleşik Secure Enclave'ine indirgiyordu.

Yerleşik kurulum nasıl çalışıyor

Secure Enclave, ana işlemciden izole edilmiş bir güvenlik alt sistemidir. İçinde üretilen bir anahtar bellekte ya da diskte asla var olmaz; SSH kimlik doğrulaması yaptığında Enclave challenge'ı imzalar ve biyometri etkinse her imza için Touch ID onayı gerekir. Yazara göre macOS bu yeteneği Sequoia'dan bu yana sunuyor.

Rehberde özetlenen kurulum:

  • Kimliği sc_auth create-ctk-identity -l "ssh-MacBook" -k p-256-ne -t bio ile oluşturun; bu komut, her kullanımda Touch ID gerektiren, dışa aktarılamayan bir NIST P-256 anahtarı ister.
  • SSH için ssh-keygen -w /usr/lib/ssh-keychain.dylib -K -N "" ile bir anahtar tanıtıcı dosyası üretin — bu, özel anahtarın kendisi değil bir referans dosyasıdır.
  • SSH'yı Apple'ın token sağlayıcısına export SSH_SK_PROVIDER=/usr/lib/ssh-keychain.dylib ile yönlendirin.
  • Ortaya çıkan açık anahtarı ([email protected] türünde) diğer herhangi bir anahtar gibi sunucunun authorized_keys dosyasına kopyalayın.

Pürüzler

Rehberin değeri büyük ölçüde sorun giderme bölümünde. İlk sc_auth çalışması errSecAuthFailed hatasıyla başarısız oluyor ("Failed to get bio bio catacomb UUID for user 502" yerine orijinalinde "Failed to get bio catacomb UUID for user 502") çünkü yazarın Touch ID kaydı sıfırlanmıştı; bir parmak izini yeniden kaydetmek sorunu çözdü. Birçok eski eğitim ssh-add -K öneriyor; macOS artık bunu kullanımdan kaldırılmış olarak işaretliyor — ve yazı, yerine geçen bayrakların bile Secure Enclave'in kullandığı CryptoTokenKit kimliklerini değil geleneksel Keychain'i hedeflediği uyarısında bulunuyor.

Ayrıca SSH üretilen id_ecdsa_sk_rk dosyasını kendiliğinden keşfetmez; bu yüzden ~/.ssh/config içinde açıkça bir IdentityFile olarak listelenmeli ve varsayılan olmasını istiyorsanız başa yerleştirilmelidir. 1Password'in SSH agent'ını kullananlar, yazarın testler sırasında yaşadığı gibi bir çakışmayla karşılaşabilir.

Yazar için vazgeçiren neden kozmetik ama gerçek: Touch ID istemi, imzayı neyin istediğini belirtmek yerine "ctccardtoken needs to authenticate to continue" diyor. İletişim kutusu düşük seviyeli CryptoTokenKit altyapısından geldiği için yazar, yerleşik yaklaşımı günlük kullanım için fazla cilasız buldu ve üçüncü taraf uygulama Secretive'nin aynı Secure Enclave desteğini daha anlaşılır bir arayüzle sunduğunu belirtti.

Bir anahtar yeterli değil

Yazı, biyometrisiz bir kullanışlılık anahtarı tutmak yerine her anahtar için Touch ID istemeyi öneriyor — bu olmadan kötü yazılım sessizce imzalayabilirken, istem her kullanımı görünür kılıyor. Öteki ödünleşim kurtarma: Secure Enclave anahtarı tek bir Mac'e bağlıdır ve dışa aktarılamaz, yani yedeklenemez. Makine ölürse anahtar da onunla birlikte ölür. Önerilen çözüm, her sunucuya en az iki anahtar kaydetmektir; örneğin Enclave anahtarı artı bir YubiKey'den ya da ikinci bir Mac'ten gelen bir anahtar.

Neden önemli

Bir dizüstü diskinde duran SSH özel anahtarları, tek bir kötü yazılım çalıştırılmasının ötesinde çalınma riski taşır ve saldırganların geliştiricileri klonlanmış depolar ve sahte ödevler aracılığıyla hedeflediği kanıtlanmıştır. Rehber, gerçek donanım destekli korumanın zaten macOS ile birlikte geldiğini ve ek cihaz ya da üçüncü taraf yazılım gerektirmediğini gösteriyor — ama aynı zamanda Apple'ın deneyimi tamamlamadığını da: şifemsi hatalar, çevrimiçi talimatlarda kullanımdan kaldırılmış bayraklar, anahtarın kendiliğinden keşfedilmemesi ve kullanıcıların anlamlı biçimde değerlendiremeyeceği bir izin iletişim kutusu. Güvenliği sürtünme olmadan isteyen geliştiriciler için Secretive ya da bir donanım anahtarı pragmatik yol olmaya devam ederken, yerleşik araç zinciri olgunlaştıkça izlemeye değer. Her halükârda, yedeklenememe özelliği operasyonel planlamayı değiştiriyor: kurtarma, bir dosyayı geri yüklemekten, her sunucuda kayıtlı ikinci bir anahtar bulundurmaya kayıyor.

  • #ssh
  • #macos
  • #security
  • #secure-enclave
  • #touch-id

İlgili yazılar