Die .snk-Datei wird verwendet, um einer .NET-Assembly einen starken Namen zuzuweisen . so ein starker Name besteht aus
Ein einfacher Textname, eine Versionsnummer und Kulturinformationen (falls angegeben) - plus einen öffentlichen Schlüssel und eine digitale Signatur.
Das SNK enthält ein eindeutiges Schlüsselpaar - einen privaten und einen öffentlichen Schlüssel, mit denen sichergestellt werden kann, dass Sie einen eindeutigen starken Namen für die Assembly haben. Wenn die Assembly einen starken Namen hat, wird aus dem Inhalt der Assembly ein "Hash" erstellt und der Hash mit dem privaten Schlüssel verschlüsselt. Dann wird dieser signierte Hash zusammen mit dem öffentlichen Schlüssel von .snk in die Assembly eingefügt.
Später, wenn jemand braucht die Integrität des stark genannten zu überprüfen , Montage, sie bauen einen Hash des Inhalts der Montage, und verwenden Sie den öffentlichen Schlüssel von der Anordnung der Hash zu entschlüsseln , die mit der Montage kam - wenn die beiden Hashes übereinstimmen, Die Baugruppenüberprüfung besteht.
Es ist wichtig, Assemblys auf diese Weise überprüfen zu können, um sicherzustellen, dass niemand eine Assembly gegen eine böswillige austauscht, die die gesamte Anwendung untergräbt. Aus diesem Grund wird nicht stark benannten Assemblys nicht wie vertrauenswürdigen Assemblys vertraut, sodass sie nicht im GAC platziert werden können. Außerdem gibt es eine Vertrauenskette: Sie können keine Assembly mit starkem Namen generieren, die auf Assemblys mit nicht starkem Namen verweist.
Der Artikel " Die Geheimnisse der starken Benennung ". Erklärt diese Konzepte hervorragend detaillierter. Mit Bildern.
Ich bin nicht mit der Funktionsweise des BizTalk-Servers vertraut , daher glaube ich nicht, dass ich viel Licht darauf werfen kann, welchen spezifischen Zweck sie in dieser Umgebung erfüllen.
Hoffe das war etwas hilfreich.
quelle
Die .snk-Datei wird zum Signieren der Assemblys verwendet, um sie dem Global Assembly Cache (GAC) hinzufügen zu können.
Die .snk-Datei enthält die öffentlichen und privaten Token für Ihren Schlüssel. Wenn Sie einige Daten (oder Binärdaten) mit diesem Schlüssel signieren möchten, wird eine Prüfsumme für die Daten berechnet, die dann mit dem privaten Token verschlüsselt wird. Die verschlüsselte Prüfsumme wird dann zu den Daten hinzugefügt. Jeder kann das öffentliche Token Ihres Schlüssels verwenden, um die Prüfsumme zu entschlüsseln und mit der von ihm berechneten Prüfsumme zu vergleichen, um sicherzustellen, dass die signierten Daten nicht manipuliert wurden.
Weitere Informationen zur Kryptografie mit öffentlichen Schlüsseln finden Sie unter http://en.wikipedia.org/wiki/Public-key_cryptography .
quelle
Eine .snk-Datei ist eine persistente Version Ihres "Schlüssels", die vom Dienstprogramm sn im Framework-Dienstprogrammsatz erstellt wurde. Sie verwenden diese Datei dann, um Ihre Baugruppen digital zu signieren. Es ist ein zweiteiliger Schlüssel. Kombination aus privat und öffentlichem Schlüssel. Der öffentliche Teil des Schlüssels wird veröffentlicht, dh allen bekannt. Der private Teil ist nur Ihnen, dem Komponenten- / App-Entwickler, bekannt und soll auf diese Weise beibehalten werden.
Wenn Sie Ihre Assembly signieren, werden der private Schlüssel und ein Hashwert für Ihre Assembly verwendet, um eine digitale Signatur zu erstellen, die in Ihre Assembly eingebettet ist. Danach durchläuft jeder, der Ihre Baugruppe lädt, einen Überprüfungsschritt. Der öffentliche Schlüssel wird verwendet, um zu überprüfen, ob die Assembly wirklich von Ihnen stammt. Dazu benötigen Sie lediglich den öffentlichen Schlüssel (der auch in einer Token-Form im Assembly-Manifest eingebettet ist). Wenn die Baugruppe manipuliert wurde, ist der Hashwert unterschiedlich und die Baugruppenlast wird abgebrochen. Dies ist ein Sicherheitsmechanismus.
quelle
Eine .snk-Datei wird verwendet, um sicherzustellen, dass eine andere Person keine eigene Baugruppe an Ihre Stelle setzen kann. Es bietet ein Paar Verschlüsselungs- / Entschlüsselungsschlüssel.
Wenn eine .snk-Datei zum Signieren einer Assembly verwendet wird, wird ein Hashcode-Wert aus der Assembly-Datei berechnet und mit dem privaten Schlüssel verschlüsselt. Dieser verschlüsselte "Digest" wird dann zusammen mit dem öffentlichen Schlüssel aus der .snk-Datei an die Assembly angeheftet.
Wenn dann jemand Ihre Assembly erhält, kann er auch diesen Hashcode-Wert berechnen. Sie verwenden den öffentlichen Schlüssel, um den von Ihnen berechneten zu entschlüsseln und die berechneten Werte zu vergleichen. Wenn die Baugruppe überhaupt geändert wurde, sind diese Werte unterschiedlich und der Benutzer der Baugruppe weiß, dass die von Ihnen bereitgestellte Baugruppe nicht die von Ihnen angegebene ist.
Im Kontext von BizTalk Server muss jeder, der benutzerdefinierte Assemblys erstellt, die von Ihrer BizTalk-Lösung verwendet werden, eine .snk-Datei verwenden, um die Assembly zu signieren, damit BizTalk Server sie in den GAC laden und verwenden kann.
quelle