单机软件的一个特点是,你毫无保留地把程序都交给用户了。所以,如果软件能够反编译,任何的证书都形同虚设。也正因为此,我们下面所谈的,都是在软件已经过保护,不能反编译为前提的。

软件的认证,一般有三种元素存在:

  • 机器认证:只能在特定的机器上运行。

  • 用户认证:认证跟特定的用户名关联。

  • 时间认证:有固定的有效期,超出时间认证失效。

对于单机软件来说,更多时候是机器认证和时间认证结合,用户认证不太可用,因为用户名可以交给其他人使用。本文先介绍机器认证的方法。

软件证书制作和使用的流程如下图所示:

我们先来看软件证书制作,其步骤为:

  1. 客户软件生成一个机器码,并把机器码交给软件拥有者。

  2. 软件拥有者把机器码跟软件有效期结合在一起,形成软件认证信息的明文。

  3. 使用非对称密钥中的私钥,对明文信息进行签名。

  4. 明文信息和签名结合在一起,即形成软件证书。

而软件证书的使用,也就是验证过程,是跟制作过程基本反过来的:

  1. 客户软件得到证书之后,先分解出明文信息和签名。

  2. 使用非对称密钥中的公钥,对明文信息进行验证。

  3. 客户软件再次生成机器码,跟明文信息中的机器码进行匹配。

  4. 客户软件根据当前时间,跟明文信息中的有效期进行比较。

下面解释一下上面所提的数字签名相关的内容。

软件证书里包含机器码和有效期等信息,如果它是以一种明文方式呈现,那用户很容易就能将其修改。所以我们需要对信息进行加密。

我们可以使用一种对称加密的方法,也就是用一个密码加密,用同样的密码解密。我们上面提到过,单机软件就是把整个程序都交给用户了。无论密码藏在哪里,最终是有办法找到的。一旦找到了这个密码,所有软件证书的破解将迎刃而解。所以这种方法是行不通的。

而另外一种方法是,我没办法把密码藏起来,那就直接把密码告诉你好了;我没办法防止你改软件证书,那你随便改好了。关键就在于,证书一旦被修改,软件就能发现。这里使用的是非对称加密的数字签名方法。在非对称加密里,顾名思义,私钥是不能公开的,公钥是能够公开的。它们有两种使用方法:

1. 公钥加密,私钥解密。

2. 私钥加密,公钥验证。

我们这里使用的是第2种方法。下面是C#里使用RSA进行签名和验证的示例代码:

byte[] Sign(byte[] content, string privateKey)
{var sha256 = new SHA256CryptoServiceProvider();byte[] hash = sha256.ComputeHash(content);RSACryptoServiceProvider key = new RSACryptoServiceProvider();key.FromXmlString(privateKey);RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);formatter.SetHashAlgorithm("SHA256");return formatter.CreateSignature(hash);
}bool CheckSign(byte[] content, string publicKey, byte[] signData)
{try{var sha256 = new SHA256CryptoServiceProvider();byte[] hash = sha256.ComputeHash(content);RSACryptoServiceProvider key = new RSACryptoServiceProvider();key.FromXmlString(publicKey);RSAPKCS1SignatureDeformatter deformatter = new RSAPKCS1SignatureDeformatter(key);deformatter.SetHashAlgorithm("SHA256");if (deformatter.VerifySignature(hash, signData)){return true;}return false;}catch{return false;}
}

.NET单机软件保护策略(2)软件证书制作相关推荐

  1. 组策略管理——软件限制策略(4)

    编写软件限制规则 在前面几篇文章中讲了软件限制规则的基本概念,现在就来学习如何编写自定义软件限制策略. 编写规则应遵循的原则 首先,需要大家注意的是,软件限制策略应本着方便.安全.实用的原则来编写.限 ...

  2. OpensAS2搭建+AS2证书制作+SSL证书导入(EDI)

    参考: https://www.cnblogs.com/chenkeven/p/9257251.html  感谢东郭仔博文 背景: 公司部分业务采用EDI(Electronic data interc ...

  3. windows 2008 r2组策略安装软件

    http://wuxiaohui.blog.51cto.com/697989/139692 组策略分发软件全攻略(Advanced Installe制作msi格式文件) 2009-03-17 17:1 ...

  4. 组策略部署软件之一:软件分发概论与部署MSI程序包

    在局域网中,我们都会面临要给客户端机器进行软件安装.升级.维护.删除操作,这给我们带来的庞大工作量,以及由此可能产生的安全问题一直都是令所有网管头疼的事.那么我们今天就讲一下如何能过Windows S ...

  5. 组策略 从入门到精通(十)通过组策略进行软件分发和卸载

    其实在前面windows server 2008的一些博文中,已经介绍了如何通过组策略进行软件的分发,在windows server 2003中有些无法完成的软件分发工作在windows server ...

  6. 组策略分发软件全攻略

    组策略分发软件全攻略 在规模比较大的网络环境里面,为了对服务器和客户机上的软件.系统补丁进行集中统一的管理,我们可能会用到SUS.WSUS.SMS等.SUS.WSUS管理系统更新,不在本文讨论,请参考 ...

  7. Kubernetes部署(三):CA证书制作

    相关内容: Kubernetes部署(一):架构及功能说明 Kubernetes部署(二):系统环境初始化 Kubernetes部署(三):CA证书制作 Kubernetes部署(四):ETCD集群部 ...

  8. 组策略管理——软件限制策略(5)

    组策略管理--软件限制策略(5) 标签:安全 系统 管理 软件限制策略 组策略 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://m ...

  9. 调用 标签打印软件_标签打印软件如何制作陶瓷标签模板

    产品贴上标签可以让客户在外观上对产品有一个大概的了解,也能很快的从标签文字上得到产品用途等信息.现在市面上所见到的各种产品都有自己的标签,而且很多建材比如门板,窗户.家具.电器等等也是有自己的标签,包 ...

  10. 用组策略发布软件的简单解决办法

    利用组策略发布软件的简单解决办法 今天和大家共同学习一下利用组策略来发布软件,据说是很方便的,今天就来试一下 先说点小知识点:可能大家早就已经知道.见笑见笑 软件的部署分为指派和发布两种.发布呢不具有 ...

最新文章

  1. 统计s=hello alex alex hello haiyan cc haiyan com中每个单词的个数
  2. 下午就要考试啦~~附上自己做的考试范围
  3. zookeeper都有哪些使用场景
  4. 高通驱动9008安装_赛多利斯Sartorius-ambr? 250 高通量灌注培养系统
  5. 完全备份、差异备份、增量备份的区别
  6. I love max and multiply HDU - 6971(详细解答)
  7. 今年新增院士中,最年轻的是他
  8. nacos 整合Dubbo 多服务
  9. python123百钱买百鸡_day01笔记-百钱买百鸡(100文钱,必须买100只鸡,有几种方式)
  10. 完全不相关的结果集,拼成一个sql
  11. 远程访问服务器并登录LPAR,MySQL设置远程连接服务器
  12. Python实战 | 使用代理IP刷CSDN博客访问量
  13. 人民大学的AI学院,教师团队很凡尔赛
  14. 【大作业项目】二手房价格预测 Python
  15. AppRTC服务器搭建
  16. 【企业邮箱申请】网易企业邮箱陌生人来信安全提醒功能
  17. 【图片免费转PDF方法】
  18. linux无法打开或写入文件格式,Centos系统下“无法打开并写入文件”问题的解决...
  19. 2013年度中国优秀开源项目
  20. 一键清除maven仓库中下载失败的jar包

热门文章

  1. 财险产保险公司应用系统各子系统简介
  2. android安卓字体下载,安卓手机字体29款打包下载
  3. delphi mysql5_Delphi7连接MySql5.5.15
  4. 四万字Hive调优全方位指南(推荐收藏)
  5. 中兴力维动环监控接线图_【中兴力维动环监控方案,让运维管理更高效!】PjTime.COM 解决方案 中兴...
  6. 什么是工序分析法?工序分析的方法和实施步骤有哪些
  7. MATLAB中改变默认工作路径的方法
  8. iOS UIControl控件
  9. 好用的服务器终端,推荐7款超级好用的终端工具 —— SSH+FTP
  10. GoldVideo-基于Web Assembly的H265播放器实现