Risposte:
Il file .snk viene utilizzato per applicare un nome sicuro a un assembly .NET . consiste in un nome così forte
un semplice nome di testo, numero di versione e informazioni sulla cultura (se fornite), oltre a una chiave pubblica e una firma digitale.
SNK contiene una coppia di chiavi univoca: una chiave privata e pubblica che può essere utilizzata per garantire un nome sicuro univoco per l'assembly. Quando l'assembly ha un nome sicuro, viene creato un "hash" dal contenuto dell'assembly e l'hash viene crittografato con la chiave privata. Quindi questo hash firmato viene inserito nell'assembly insieme alla chiave pubblica di .snk.
Più tardi, quando ha bisogno di qualcuno per verificare l'integrità del fortemente nome in assemblea, essi costruire un hash dei contenuti del montaggio, e utilizzare la chiave pubblica dal gruppo per decifrare l'hash che è venuto con il gruppo - se i due hash corrispondono, la verifica dell'assemblaggio passa.
È importante poter verificare gli assembly in questo modo per garantire che nessuno sostituisca un assembly con uno dannoso che sovvertirà l'intera applicazione. Questo è il motivo per cui gli assembly con nome non sicuro non sono attendibili allo stesso modo degli assembly con nome sicuro, quindi non possono essere inseriti nel GAC. Inoltre, esiste una catena di fiducia: non è possibile generare un assembly con nome sicuro che faccia riferimento a assembly con nome non forte.
L'articolo " I segreti del nome forte (archiviato nella Wayback Machine) ". Fa un ottimo lavoro nel spiegare questi concetti in modo più dettagliato. Con le immagini.
In un mondo the.Net il file SNK viene utilizzato per firmare i file binari compilati. Ciò consente a un paio di cose di accadere:
Non ho familiarità con il server BizTalk , quindi non credo di poter fare molta luce su quale scopo specifico servano all'interno di quell'ambiente.
Spero che questo sia stato in qualche modo utile.
Il file .snk viene utilizzato per firmare gli assembly per poterli aggiungere alla Global Assembly Cache (GAC).
Il file .snk contiene i token pubblici e privati per la tua chiave. Quando si desidera firmare alcuni dati (o binari) con quella chiave, viene calcolata una somma di controllo sui dati, che viene quindi crittografata con il token privato. Il checksum crittografato viene quindi aggiunto ai dati. Chiunque può utilizzare il token pubblico della propria chiave per decrittografare il checksum e confrontarlo con il checksum calcolato per verificare che i dati firmati non siano stati manomessi.
Puoi leggere di più sulla crittografia a chiave pubblica su http://en.wikipedia.org/wiki/Public-key_cryptography .
Un file .snk è una versione persistente della "Chiave" prodotta dall'utilità sn nel set di utilità del framework. Quindi utilizzare questo file per "firmare digitalmente" i propri assiemi. È una chiave in 2 parti .. combinazione di chiave privata-pubblica. La parte pubblica della chiave è pubblicata, cioè nota a tutti. La parte privata è nota solo a te, lo sviluppatore del componente / app e intende essere mantenuta in questo modo.
Quando si firma l'assembly, viene utilizzata la chiave privata e un valore hash per l'assembly per creare una firma digitale incorporata nell'assembly. Successivamente, chiunque carica il tuo assieme passa attraverso una fase di verifica. La chiave pubblica viene utilizzata per convalidare se l'assembly proviene davvero da te .. hai solo bisogno della chiave pubblica per questo (che è anche incorporata in una forma tokenizzata nel manifest dell'assembly). Se l'assemblaggio è stato manomesso, il valore dell'hash sarebbe diverso e il carico dell'assemblaggio verrebbe interrotto. Questo è un meccanismo di sicurezza.
Un file .snk viene utilizzato per garantire che qualcun altro non possa far scivolare un assieme al posto del tuo. Fornisce una coppia di chiavi di crittografia / decrittografia.
Quando un file .snk viene utilizzato per firmare un assembly, un valore hashcode viene calcolato dal file assembly e crittografato utilizzando la chiave privata. Quel "digest" crittografato viene quindi aggiunto all'assembly insieme alla chiave pubblica dal file .snk.
Quindi, quando qualcuno riceve l'assemblaggio, può anche calcolare quel valore di codice hash. Usano la chiave pubblica per decrittografare quella calcolata e confrontare i valori calcolati. Se l'assembly è stato completamente modificato, tali valori saranno diversi e l'utente dell'assembly saprà che l'assembly che hai non è quello che hai fornito.
Nel contesto di BizTalk Server, chiunque costruisca eventuali assembly personalizzati utilizzati dalla soluzione BizTalk dovrà utilizzare un file .snk per firmare l'assembly in modo che il server BizTalk possa caricarlo nel GAC e utilizzarlo.