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

本文共 788 字,大约阅读时间需要 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

 

其他介绍:

转载于:https://www.cnblogs.com/tianma3798/p/5079548.html

你可能感兴趣的文章
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spark基础脚本入门实践3:Pair RDD开发
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>