博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET程序集签名
阅读量:6320 次
发布时间:2019-06-22

本文共 734 字,大约阅读时间需要 2 分钟。

强命名程序集的一个好处是防篡改。假如我有一个程序集MyDll.dll,如果我用我自己的私钥进行签名将程序集中的内容进行哈希处理,其他人如果不知道我的私钥的话,就不能篡改我的这个程序集进行某些恶意的行为。

但对于一些大型程序的开发,私钥一般是不公开的,当然,与它匹配的公钥是公开的,可以自由分发。那么如何确保开发人员在开发的过程中使用强命名程序集(如希望将其放到GAC中,因此必然得是强命名程序集)。延迟签名就是为此目的。
仍以MyDll.dl为例:
1)生成公钥/私钥对
    sn -k Company.snk
2)提取出公钥,而将私钥另外进行妥善保管
    sn -p Company.snk public.snk
3)对程序集进行延迟签名
    csc /keyfile:public.snk /delaysign /t:library MyDll.cs
4)让CLR信任程序集的内容,不执行哈希处理
    sn -Vr MyDll.dll
    由于上面的命名会在注册表中添加相应项,因此对同一程序集只需执行一次。
    这样,MyDll.dll就可以安装到GAC中(如果你愿意的话)
5)其他开发人员可以引用此程序集,就好像一般的强命名程序集一样
6)假如开发完成要进行最终部署的话,一定要用私钥进行签名。
     否则,有人完全可以用这个公钥来做一个相同的程序集来替换掉你的这个程序集来做些坏事。
     总之,程序集的安全会大打折扣。为此,让保管私钥的人来完成如下签名
     sn -R MyDll.dll Company.snk
     注:我们不能单独提取出私钥,私钥和公钥是在一个文件中。公钥可以单独提取出来,以便于分发。
7)打开验证,在4)中的注册表项会被相应移除
    sn -Vu MyDll.dll

 

其他介绍:

转载地址:http://jqpaa.baihongyu.com/

你可能感兴趣的文章
八、主从复制
查看>>
深入理解RunLoop 整理资料
查看>>
俄罗斯方块
查看>>
LabVIEW将字符串转化为十进制
查看>>
欢迎光临
查看>>
20131205
查看>>
数组相减
查看>>
【poj 1962】Corporative Network(图论--带权并查集 模版题)
查看>>
使用AngularJS学习MVC的基础知识分享
查看>>
UDP template 代码
查看>>
爬虫 高性能
查看>>
使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(二)
查看>>
干吧跌!~brothers!~~
查看>>
linux 0.11 源码学习(七)
查看>>
函数模板的简单用法
查看>>
利用 LINQ的skip和Take 方法对List实现分页效果
查看>>
python 中的列表解析和生成表达式 - 转
查看>>
jQuery数组的遍历 function的加载
查看>>
杂记~~~MFC SOCKET
查看>>
AWK文本处理工具(Linux)
查看>>