Bir nedir .snk?


153

Bir nedir .snk dosya? Bunun açılımı biliyor Güçlü Named Key ama nedir ve nasıl işe yaradığını tüm açıklamalar aklımdan geçiyor.

İyi adlandırılmış bir anahtarın nasıl kullanıldığı ve nasıl çalıştığı hakkında basit bir açıklama var mı?

Yanıtlar:


212

.Snk dosyası, .NET derlemesine güçlü bir ad uygulamak için kullanılır . böyle güçlü bir isim

basit bir metin adı, sürüm numarası ve kültür bilgileri (varsa) - ortak anahtar ve dijital imza ekleyin.

SNK, benzersiz bir anahtar çifti içerir - montaj için benzersiz bir güçlü adınızın olmasını sağlamak için kullanılabilecek özel ve genel bir anahtar. Derleme kesin olarak adlandırıldığında, derlemenin içeriğinden bir "karma" oluşturulur ve karma özel anahtarla şifrelenir. Sonra bu imzalı karma .snk genel anahtarı ile birlikte meclise yerleştirilir.

Birisi ihtiyaçları Derleme kesin adlandırılmış bütünlüğünü doğrulamak için zaman Daha sonra, onlar meclisin içeriğinin karmasını oluşturmak ve montaj birlikte gelen karma şifresini çözmek için montaj Genel anahtarı kullanmak - iki karmaları eşleşirse, montaj doğrulaması geçer.

Kimsenin bir montajı tüm uygulamayı bozacak kötü amaçlı bir tanesiyle değiştirmemesini sağlamak için derlemeleri bu şekilde doğrulayabilmeniz önemlidir. Bu nedenle, güçlü olarak adlandırılmamış derlemelere, güçlü olarak adlandırılmış derlemelerle aynı şekilde güvenilmez, bu nedenle GAC'ye yerleştirilemezler. Ayrıca, bir güven zinciri vardır - kesin olarak adlandırılmamış derlemelere başvuran kesin olarak adlandırılmış bir derleme oluşturamazsınız.

" Güçlü Adlandırma Sırları (Wayback Makinesinde arşivlendi) " makalesi . Bu kavramları daha ayrıntılı olarak açıklamak için mükemmel bir iş çıkarır. Resimleri olan.


2
Bu, bir montajı bir .PFX ile imzaladığınızda, bunu derlediğinde anında bir .SNK oluşturmak için kullandığı anlamına mı geliyor?
Patrick

5
@Patrick no, yani dosyanın imzalama ile kontrol arasında değiştirilmediğini kanıtlarken, güçlü ad gereksinimlerini karşılamayan Authenticode İmzasıdır . Sorun, Authenticode'un güçlü adlandırma gerektiren bir meclis güven zinciri gerektirmediği için, Authenticode güçlü olmayan adlandırılmış / imzalı derlemelere dayanan bir derleme imzalayabilirsiniz.
Scott Chamberlain

1
Sen sadece snk şerit ve başka bir yerine .. .. yararlı olduğu gerçek bir senaryo bilmiyorum .. temelde bizim anahtar çiftleri buna bir güven inşa edemez
İbrahim


Lütfen bağlantıdaki bağlantıyı güncelleyin (@asfeynman tarafından önerilen bağlantıya), çünkü bağlantı kopmuş ve herkes yorumları okumuyor.
XelaNimed

22

Bir .NET dünyasında SNK dosyası derlenmiş ikili dosyalarınızı imzalamak için kullanılır. Bu birkaç şey olmasını sağlar:

  1. Montajı GAC'ye (Global Montaj Önbelleği) kaydedebilirsiniz . Temel olarak, aynı makinede birçok yerden birden fazla kopya bulundurmak zorunda kalmadan referans verebilirsiniz).
  2. İkili dosyalarınızı aynı zamanda imzalı diğer ikili dosyalardan da kullanabilirsiniz (bu, imzalı meclislerle ilgili garip bir viral davranıştır).
  3. Montajınız, SNK dosyasına erişimi olmayan 3. taraflarca (kolayca) değiştirilemez ve en az az miktarda güvenlik sağlar.

BizTalk sunucusunun nasıl çalıştığını bilmiyorum, bu yüzden bu ortamda hangi belirli amaca hizmet ettiklerine çok fazla ışık tutabileceğimi sanmıyorum.

Umarım bu biraz yardımcı oldu.


7

.Snk dosyası, genel derleme önbelleğine (GAC) ekleyebilmek amacıyla derlemeleri imzalamak için kullanılır.

.Snk dosyası, anahtarınız için genel ve özel belirteçleri içerir. Bu anahtarla bazı verileri (veya ikili) imzalamak istediğinizde, veriler üzerinde bir sağlama toplamı hesaplanır ve bu veriler daha sonra özel belirteçle şifrelenir. Daha sonra şifrelenmiş sağlama toplamı verilere eklenir. Herkes, sağlama toplamının şifresini çözmek ve imzalanan verilerin kurcalanmadığını doğrulamak için hesapladıkları sağlama toplamıyla karşılaştırmak için anahtarınızdan genel belirteci kullanabilir.

Ortak anahtar şifrelemesi hakkında daha fazla bilgiyi http://en.wikipedia.org/wiki/Public-key_cryptography adresinde bulabilirsiniz .


4

Bir .snk dosyası, çerçeve yardımcı program kümesinde sn yardımcı programı tarafından üretilen "Anahtar" ın kalıcı bir sürümüdür. Daha sonra bu dosyayı derlemelerinizi 'dijital olarak imzalamak' için kullanırsınız. Bu 2 parçalı bir anahtar .. özel-genel anahtar kombinasyonu. Anahtarın kamusal kısmı yayınlanır, yani herkes tarafından bilinir. Özel bölüm, yalnızca bileşen / uygulama geliştiricisi tarafından bilinir ve bu şekilde tutulması amaçlanır.

Derlemenizi imzaladığınızda, derlemenize katıştırılmış bir dijital imza oluşturmak için derlemeniz için özel anahtarı ve karma değerini kullanır. Daha sonra, montajınızı yükleyen herkes bir doğrulama adımından geçer. Genel anahtar, derleme gerçekten sizden gelip gelmediğini doğrulamak için kullanılır. Bunun için yalnızca genel anahtara ihtiyacınız vardır (bu da derleme bildiriminde tokenleştirilmiş bir forma gömülüdür). Montaj kurcalanmışsa, karma değeri farklı olur ve montaj yükü iptal edilir. Bu bir güvenlik mekanizmasıdır.


3

Bir .snk dosyası, başkasının sizin yerine kendi derlemesini kaymamasını sağlamak için kullanılır. Bir çift şifreleme / şifre çözme anahtarı sağlar.

Bir montajı imzalamak için bir .snk dosyası kullanıldığında, montaj dosyasından bir hashcode değeri hesaplanır ve özel anahtar kullanılarak şifrelenir. Bu şifreli "özet" daha sonra .snk dosyasındaki ortak anahtarla birlikte derlemeye bağlanır.

Daha sonra birisi montajınızı aldığında, o hashcode değerini de hesaplayabilir. Hesapladığınız şifrenin şifresini çözmek ve hesaplanan değerleri karşılaştırmak için genel anahtarı kullanırlar. Derleme hiç değiştirilmişse, bu değerler farklı olacaktır ve derlemenin kullanıcısı sahip olduğunuz derlemenin sizin verdiğiniz derleme olmadığını bilecektir.

BizTalk Server bağlamında, BizTalk çözümünüz tarafından kullanılan özel derlemeleri kim oluştursa, derlemeyi imzalamak için bir .snk dosyası kullanması gerekir, böylece BizTalk sunucusu GAC'ye yükleyebilir ve kullanabilir.

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.