Sistem Anahtarlık OS X'te nasıl korunur?


22

OS X dışında iOS için bu güvenlik tanıtım belgesi gibi bir şey ya da daha iyisi, bağımsız bir uzmandan bir tür güvenlik denetim raporu arıyorum . Anahtarlık Hizmetleri Programlama Kılavuzu gibi belgeleri okuduktan sonra , bir OS X Sisteminin şifrelenmemiş bir yedeğine yapılan ağır saldırılara karşı savunmasız olan şeylerden daha fazla kafam karıştı.

En son kontrol ettiğimde, kullanıcının OS X altındaki oturum açma anahtarlığı, parola kadar güvenliydi. Şifrenin nasıl bir anahtara dönüştürüldüğüyle ilgili bir sorun nedeniyle, anahtarın gerçek gizliliğini 111 bit (sisli bellek, lütfen beni düzeltmekte özgürsün) gibi bir şeye indiren bir konuyu hatırlıyorum. umarım bu giderilmiştir.

Öte yandan, herhangi bir yöneticinin erişebileceği ve davetsiz misafirin, tek bir kullanıcının şifresini tahmin etmenin yanı sıra yönetici olmak için birçok seçeneğe sahip olması nedeniyle Sistem Anahtarlıkına doğal olarak daha az güvenli olduğu söylendi .

Özellikle, sistem dosyaları yedeklendiğinden ve başka şifreleme yapılmadan saha dışında saklandığından, otomatik olarak Sistem Anahtar Zincirinde kullanılan şifreleri saklamak konusunda endişeleniyorum. Dokümanlar ve diğer kullanıcı verileri, saha dışına çıkarılmadan önce şifrelenir, ancak Sistem Anahtarlık tehlikeye girdiğinde bu anahtarları kurtardığını göz ardı ettiğime dair bir şüphem var (prosedürlerimiz nedeniyle, herhangi bir şifreleme hatası değil) . Bu nedenle, Sistem Anahtarlıkının aynı anda nasıl güvenli bir şekilde tutulduğunu ve herhangi bir yöneticinin erişimine açık olduğunu tam olarak bilmek istiyorum.

  1. Anahtarlar, herhangi bir yönetici kullanıcının Sistem Anahtar Zincirini açabileceği şekilde nasıl tasarlanır?

  2. Bir idari kullanıcının Sistem Anahtar Zincirindeki bilgilerle yapabileceklerini sınırlayan herhangi bir şekilde kriptografik kısıtlamalar var mı?

  3. Şifrelenmemiş bir sistem yedeği olmadan /Users , Sistem Anahtarlıktaki anahtarlara nasıl erişirsiniz?

OS X 10.5 Leopard ve sonraki sürümleri ile ilgileniyorum.


Bir cevabım yok ama bir fıkra: Yönetici ayrıcalıklarına sahip olmayan standart bir kullanıcı olarak, bir zamanlar Sistem anahtarlığından şifreleri kolayca görebildim. Tam adımları hatırlamıyorum, ama kesinlikle mümkündü. Bir yandan notta, bu security.stackexchange.com'da daha iyi olabilir mi?
alexwlchan

@Alex, Security.SE'yi ilk denedim ama orada cevap alamadım.
Eski Pro,

1
Neden yaptığınız şey için tamamen ayrı bir anahtarlık kullanmıyorsunuz? Komut dosyanızın sistem anahtarlığına erişmesi için iyi bir neden var mı?
Jay Thompson,

@eyemyth, evet, komut dosyalarının sistem tarafından çalıştırılması gerekir, böylece kullanıcı izinlerinden bağımsız olarak diskteki tüm dosyalara erişebilirler.
Eski Pro,

Yanıtlar:


11

Sistem anahtarlığı saklanır /Library/Keychains/System.keychainve kilidini açmak için anahtar saklanır /var/db/SystemKey(varsayılan dosya izinleri sadece root tarafından okunabilir). Bu dosyaların konumu güvenlik kontrol sistemi komut dosyasında ( güvenlik_sistemi anahtarlık kaynağından ) belirtilmiştir. Sistem anahtar zincirinin otomatik kilitlenmesini / açılmasını kullanarak bile test etmek mümkündür

systemkeychain -vt

Anahtar zinciri güvenlik çerçevesi, ayrıcalıklı olmayan programların, anahtarlık girişi içinde depolanan ACL'de olması koşuluyla bilgi talep etmesini sağlar. Açıkçası, bir kullanıcı sistemde kök kullanıyorsa, sistem anahtarlığını depolayan dosyaya ve kilidini açmak için doğrudan anahtarına erişebilir, bu nedenle güvenlik çerçevesi yoluyla talepte bulunamaz ve anahtarlık içinde depolanan ACL'lere bakılmaz. kendisi.

(Aslında asıl soruları cevaplamadım, bu yüzden hadi bunu başlatalım)

Anahtarlar, herhangi bir yönetici kullanıcının Sistem Anahtar Zincirini açabileceği şekilde nasıl tasarlanır?

Libsecurity anahtarlık çerçeve düzenli süreçler Apple'ın xPC arası iletişim çerçevesini (IPC) kullanarak doğrulanmış şekilde Anahtarlık sistemi ile etkileşim sağlar.

Program A, IPC kullanarak sistem anahtarlık bilgilerine erişmek için bir istek gönderir. Talep eden kullanıcının zaten tekerlek grubunda olup olmadığına ve ayrıca tekerlek grubundaki bir kullanıcının şifresini bildiğine dair bir kontrol yapılır. Yetki onaylandıktan sonra, ayrıcalıklı kcproxyarka plan programı, içeriğe erişmek /var/db/SystemKey, sistem anahtarlığının kilidini açmak ve istenen bilgileri geri göndermek için kullanılabilir.

Bir idari kullanıcının Sistem Anahtar Zincirindeki bilgilerle yapabileceklerini sınırlayan herhangi bir şekilde kriptografik kısıtlamalar var mı?

Hayır - bir yönetici kullanıcının, sistem anahtarlığındaki herhangi bir şeye erişmesine / değiştirmesine izin verilir. Başaramasalar bile, temeldeki dosyaları üzerinde tam kontrol sahibi oldukları başka bir makineye kopyalayabilir ve orada kilidini açabilir / erişebilirler.

/ Kullanıcılar olmadan şifrelenmemiş bir sistem yedeği verildiğinde, Sistem Anahtarlıktaki anahtarlara nasıl erişirsiniz?

Yedeklemenin kopyalarını içeriyorsa /Library/Keychains/System.keychainve /var/db/SystemKeybunları yeni bir OS X sistemindeki ilgili konumlarına kopyalar ve daha systemkeychainsonra eskinin kilidini açmak ve anahtar zinciri veritabanını kullanarak kullanmak için kullanırım security dump-keychain.


1
GuidanceSoftware / EnCase adlı dumpkeychain adı verilen ve Windows'ta bir sistem anahtar zincirinin (SystemKey ile birlikte) doğrudan atılmasına olanak sağlayan bir yardımcı program vardır ( dökümü için yeni bir OS X kurulumu ayarlamaktan daha kolay olabilir).
drfrogsplat

1
@Hayır, yukarıdaki bilgileri başka bir bilgisayarın Time Machine yedeklemesinden bir System.keychain'e erişmek / kilidini açmak / boşaltmak için nasıl kullanabilirim? Yani, harici bir diskte kayıtlı System.keychain ve SystemKey'e sahibim, bu yüzden dosyaları varsayılan konumda kullanmasını önlemek için sırasıyla her iki dosyanın yolunu da belirtmeliyim.
db

Bu gönderi ilgili (eski bir sistemden System.keychain şifresini çözmek için SystemKey nasıl kullanılır). apple.stackexchange.com/questions/307189/… Aynı sistemdeki karşılık gelen SystemKey ile kurtarılmış bir System.keychain'in (yani eski çökmüş bir HDD'den) kilidini açmak için Keychain Access veya systemkeychain cli ile bir yol olup olmadığını merak ediyorum. Amacım girişleri kilidini açmak ve yeni kurulumda yeni Sistem anahtarlığına geçirmek.
mattpr

5

Sistem Anahtarlık

Sistem Anahtarlıkının bazı benzersiz yetenekleri vardır. Bunlar systemkeychain kılavuz sayfası tarafından belgelenmiştir . Ana şifrenin bahsettiği şey sizin odak noktanız olabilir. Sistem Anahtarlık spesifik kaynak kodu , küçük ve kullanılabilir.

Sistem Anahtarlık, /System/Library/Keychains/System.keychainApple ve Daemon'ların kullanması için özel bir Anahtarlık. Genellikle kullanıcı seviyesindeki komut dosyaları için kullanmaktan kaçınmalısınız.

Kod İnceleme: Anahtarlık

Apple , Mac OS X 10.5 için Anahtarlık ve güvenlik çerçevesi için kaynak kodunu yayınladı ; Nasıl çalıştığını keşfetmek için bu kodu inceleyebilirsiniz.

Alternatif Yaklaşım: Ayrı Anahtarlık

Komut dosyanızın kimlik bilgilerini saklamak için ayrı bir Anahtarlık oluşturabilirsiniz. Bu uygulamayı müşterilerimize tavsiye ediyoruz. Anahtarlıklarınıza grafiksel bir arayüze başvurmadan erişmek, ayıklamak ve yönetmek için komut satırı aracı güvenliğini kullanabilirsiniz.

Otomatik komut dosyalarınızın şifrelerini ayrı bir Anahtarlıkta saklamayı düşünün - bu Anahtarlığı site dışı yedeklemenizden hariç tutun.

Anahtarlığı yedeklemenizden çıkarmaktan memnun değilim, endişelerinizi giderir. Mac’i geri yüklerken, Anahtarlığı farklı bir kaynaktan geri almanız gerekir; daha güvenilir bir kaynak veya yan kanal olabilir.

Ayrı anahtarlığın şifresini her zaman Sistem Anahtarlık'ta saklayabilirsiniz. Daha sonra ayrı bir Anahtar Zinciri'nin bir komut dosyasından kilidini açabilirsiniz. Yedekleme saldırıya uğrarsa, parola yalnızca ayrı bir Anahtarlık'a açıktır, bu dosya site dışı yedeklemede olmadığı için Anahtarlığın kendisine değil.


Teşekkürler, ama tüm bu koddan Sistem Anahtarlıkının nasıl güvence altına alındığını ve neyin güvenli kaldığını bulmak çok zor. Biz komut bakılmaksızın kaydedilir kim kök ayrıcalıklarla arka planda otomatik olarak çalıştırılması gerekir çünkü sistem Anahtarlık kullanmak gerekir.
Eski Pro

1
Apple CDSA posta listesinde ( lists.apple.com/mailman/listinfo/apple-cdsa ) veya bir Apple Teknik Destek Olayı kullanılmasını istemenizi öneririm . Yalnızca bu yollardan uygun Apple mühendislerine ulaşacağınızdan emin olabilirsiniz.
Graham Miln

Komut dosyalarının arka planda kök olarak çalıştırılması, fırlatmanın işidir. Tam olarak ne yapmaya çalışıyorsun?
Jay Thompson,

1
"/System/Library/Keychains/System.keychain" içindeki küçük yazım hatası ("Library" yi unuttun). Aslında, "Düzenle> Anahtarlık Listesi" ni seçerek Anahtarlık Erişim'deki anahtarlık konumlarının bir listesini alabilirsiniz
kullanıcı adı

1
@OldPro Güvenlik endişeleriniz göz önüne alındığında, neden tam disk şifreleme kullanmıyorsunuz?
Graham Miln

2

Apple son zamanlarda güvenlik uygulamalarını anlatan bir belge yayınladı, burada bazı cevaplar bulabilirsiniz. Belge iOS'a özgüdür ancak güvenlik özelliklerinin birçoğunun OS X ile çok ortak yönleri vardır.


Bu doğru yolda ve faydalı bulacağım belgelerin türüne iyi bir örnek, ancak iOS Sistem Anahtarlık zincirine sahip olmadığı için sorumu cevaplamıyor.
Eski Pro

Bu sizi doğru yöne
götürürse ödülünüzü

0

Belli bir Anahtarlık * bilgim yok ama bu oldukça standart bir uygulamadır.

  1. "Foo" adlı düz metin dosyasını korumak istiyorsun. Foo keyfi büyüklükte olabilir.
  2. Foo şifrelemek için simetrik bir anahtar oluşturun.
  3. Simetrik anahtarı, bir paroladan kopyalanan bir anahtarla şifreleyin.

Bu işlem tamamlandığında, geçerli parolayı girerek, simetrik anahtarın şifresini çözerek ve ardından yeni parola ile şifreleyerek "parolayı" değiştirebilirsiniz. Bu, "foo" nun çok büyük olması durumunda uzun şifre çözme / şifreleme işlemlerinden kaçınır.

Peki, bu foo'nun düz metinine erişmesi gereken birden fazla kullanıcı için nasıl çalışır? Oldukça kolay, her kullanıcı için bir defa simetrik anahtarın şifrelenmiş bir kopyasını oluşturursunuz. Başka bir deyişle, her kullanıcı için üçüncü adımı uygulayın.

Uygulamada tüm bunlar görüş alanından soyutlanır ve son kullanıcının sadece kendi şifreleriyle ilgilenmesi gerekir.

Sorularınızın 3. bölümü ile ilgili olarak, kullanıcıların anahtarları evlerinde saklanmamaktadır. Büyük olasılıkla bir /private/varyerde saklanırlar . Böylece, /Usersönceden erişimi olan biri olmadan bile , sistemin kilidini açabileceksiniz.


* Anahtarlık farklı çalışıyor olabilir.


Sistem anahtarlığında farklı olan, kimin oturum açtığından bağımsız olarak sistemin anahtarlıkta bulunanlara erişebilmesidir. Örneğin, Time Machine, oturum açmış olan tek kullanıcı olmasa bile, uzak bir dosya paylaşımını bağlamak için sistem anahtarlığına erişebilir. Yönetici kullanıcı ve bu nedenle sistem anahtarlığına erişemiyor. Yani başka bir şeyler oluyor ve bunun ne olduğunu tam olarak bilmek istiyorum.
Eski Pro

Yine, sadece tahmin edebilirim, ama IMO aslında o kadar da farklı değil . Sistemin açık bir şekilde anahtarı verilebildiği açıktır. Kullanıcı anahtarlarına benzer şekilde işlem görmüş bir sistem anahtarı olduğunu varsayardım. Ama şimdi sorunuzun merkezinde yer alıyoruz… ilk erişimi sağlayan nedir?
bahamat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.