Strong Name(SN)はアセンブリの一意性と信頼性を保証する仕組みです。
Win32のライブラリabc.dllを配布する場合に、このファイルをそのまま配布したとすると、使う側はLoadLibraryなどを使って実行します。この場合abc.dllが本物のdllである保証はありません。他の人が作った物である可能性もあります。
COMを使ってabc.dllを配布する場合、インストールプロセスに於いて、abc.dllのRegsterServerを実行し、 abc.dllがもつGUIDをレジストリに登録します。使う側はCoCreateInstanceなどを使ってそのGUIDを指定し利用します。しかしそのGUIDはオープンであって他の人が同じGUIDを使ってそのライブラリに偽装することを防ぐことはできません。
SNは上記の問題を解決するためのしくみです。abc.dllのハッシュを秘密鍵で暗号化し、abc.dllの内部に公開鍵と電子署名(暗号化したハッシュ)を持たせます。そしてabc.dllを使うアプリapp.exeをビルドする際、abc.dllから公開鍵と得てその情報を app.exeに埋め込みます。実行時にabc.dllのハッシュを計算したものと電子署名を公開鍵で復号したものが一致するか確認します。
Strong Nameを施すためにはまずキーファイルを作成しなければなりません。このファイルに秘密鍵と公開鍵が格納されています。キーファイルの作成は以下の方法で行います。
これでリンクすると、Strong Nameのついたアセンブリができます。