it-swarm.com.de

Wofür ist eine .snk?

Wofür ist eine .snk-Datei? Ich weiß, es steht für Strongly Named Key, aber alle Erklärungen darüber, was es ist und wie es funktioniert, gehen über meinen Kopf.

Gibt es eine einfache Erklärung, wie ein stark benannter Schlüssel verwendet wird und wie er funktioniert?

147
webdtc

Die .snk-Datei wird zum Anwenden eines starker Name für eine .NET-Assembly verwendet. Ein so starker Name besteht aus

ein einfacher Textname, eine Versionsnummer und Kulturinformationen (falls bereitgestellt) sowie ein öffentlicher 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 gestellt.

Wenn später jemand die Integrität der Assembly mit starkem Namen überprüfen muss , erstellt er einen Hash des Inhalts der Assembly und verwendet den öffentlichen Schlüssel von Die Assembly muss den mit der Assembly gelieferten Hash entschlüsseln. Stimmen die beiden Hashes überein, besteht die Assembly-Überprüfung.

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 werden Assemblys mit nicht starkem Namen nicht genauso wie Assemblys mit starkem Namen als vertrauenswürdig eingestuft, sodass sie nicht im GAC abgelegt werden können. Es gibt auch eine Vertrauenskette: Sie können keine Assembly mit starkem Namen generieren, die auf Assemblys mit nicht starkem Namen verweist.

Der Artikel " The Secrets of Strong Naming ". Erläutert diese Konzepte in hervorragender Weise ausführlicher. Mit Bildern.

208
Blair Conrad

In einer the.Net-Welt wird die Datei SNK verwendet, um Ihre kompilierten Binärdateien zu signieren. Dies ermöglicht ein paar Dinge zu passieren:

  1. Sie können die Assembly im GAC registrieren (Global Assembly Cache). Grundsätzlich können Sie also von vielen Stellen auf demselben Computer darauf verweisen, ohne mehrere Kopien verwalten zu müssen.
  2. Sie können Ihre Binärdateien aus anderen Binärdateien verwenden, die ebenfalls signiert sind (dies ist eine seltsame Art von viralem Verhalten in Bezug auf signierte Assemblys).
  3. Ihre Assembly kann nicht (ohne weiteres) von Drittanbietern geändert werden, die keinen Zugriff auf die SNK-Datei haben, was zumindest ein gewisses Maß an Sicherheit bietet.

Ich bin nicht mit der Funktionsweise von BizTalk-Server 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.

22
ckramer

Die .snk-Datei wird zum Signieren der Assemblys verwendet, um sie dem globalen Assemblycache (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. Mit dem öffentlichen Token Ihres Schlüssels kann jeder die Prüfsumme entschlüsseln und mit der berechneten Prüfsumme 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 .

7
Franci Penov

Eine .snk-Datei ist eine dauerhafte Version Ihres "Schlüssels", der vom Dienstprogramm sn im Framework-Dienstprogrammsatz erstellt wird. Mit dieser Datei können Sie Ihre Baugruppen digital signieren. Dies ist eine zweiteilige Schlüsselkombination aus privatem und öffentlichem Schlüssel. Der öffentliche Teil des Schlüssels wird veröffentlicht, d. H. Allen bekannt. Der private Teil ist nur Ihnen, dem Komponenten-/App-Entwickler, bekannt und soll so bleiben.

Wenn Sie Ihre Assembly signieren, wird 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 Assembly lädt, einen Überprüfungsschritt. Der öffentliche Schlüssel wird verwendet, um zu überprüfen, ob die Assembly tatsächlich von Ihnen stammt. Dazu benötigen Sie lediglich den öffentlichen Schlüssel (der auch in tokenisierter Form im Assembly-Manifest eingebettet ist). Wenn die Assembly manipuliert wurde, würde sich der Hash-Wert unterscheiden und das Laden der Assembly würde abgebrochen. Dies ist ein Sicherheitsmechanismus.

4
Gishu

Eine .snk-Datei wird verwendet, um sicherzustellen, dass kein anderer Benutzer eine eigene Assembly an Ihre Stelle verschieben 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 geheftet.

Wenn 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 Assembly überhaupt geändert wurde, sind diese Werte unterschiedlich, und der Benutzer der Assembly weiß, dass die Assembly, die Sie haben, nicht die von Ihnen bereitgestellte ist.

Im Kontext von BizTalk Server muss jeder, der benutzerdefinierte Assemblys erstellt, die von Ihrer BizTalk-Lösung verwendet werden, eine .snk-Datei zum Signieren der Assembly verwenden, damit BizTalk Server sie in den GAC laden und verwenden kann.

3
Michael Lang