加密狗

加密锁是一种插在计算机并行口上的软硬件结合的加密产品(新型加密锁也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现较新的狗(加密锁)内部还包含了单片机。软件开发者可以通过接口函数和加密锁进行数据交换(即对加密锁进行读写),来检查加密锁是否插在接口上;或者直接用加密锁附带的工具加密自己EXE文件(俗称“包壳”)。这样,软件开发者可以在软件中设置多处软件锁,利用加密锁做为钥匙来打开这些锁;如果没插加密锁或加密锁不对应,软件将不能正常执行。

加密锁是为软件开发商提供的一种智能型的具有软件保护功能的工具,它包含一个安装在计算机并行口或USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密锁基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。

加密锁通常被叫成加密狗,是加密锁的另一个名字(外号)。

加密狗的发展及应用

编辑

介绍了国内加密狗的由来及发展历史,给出各代加密狗的硬件组成及工作原理。详细讲解了第四代加密狗独特的加密方法与其强大的硬件组成。 [1] 

加密狗的由来

加密狗是一种用于软件加密的小型外置硬件设备,现在常见的有并口与USB接口两种类型,加密狗被广泛应用于各种软件之中,其中如著名的绘图软件AutoCAD,国内相当数量的工程软件与财务软件等。加密狗的成功应用,翻开了软件知识产权保护的新篇章。

国内最早的加密狗是由现北京彩虹天地信息技术有限公司总经理、董事长—陈龙森先生在1990年提出并设计完成的。他的想法是,把一个小的硬件装置加载到微机的并行口上,其中内置几个逻辑芯片,作为核心的是一个计数器;然后通过软件,向外加的硬件装置发送脉冲信号,并等待返回信号,如果有,则表明外部存在硬件设备,否则就视作非法运行,被加密软件停止工作。因此,陈龙森设计的软件中,专门设有一个模块,用来读取并行口上的硬件信息。软件开发的技术人员,可以把实现此项功能的软件模块,加载到任何需要对用户信息判断的地方,进行编译连接,从而就能形成可以保护自身的软件产品。 [1] 

工作原理

加密锁通过在软件执行过程中和加密锁交换数据来实现加密的。加密锁内置单片机电路(也称MCU),使得加密锁具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密锁。加密锁内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密锁硬件不能被复制。同时,加密算法是不可预知、不可逆的。

加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=17345、DogConvert(A)=43565。下面,我们举个例子说明单片机算法的使用。 比如一段程序中有这样一句:A=Fx(3)。程序要根据常量3来得到变量A的值。于是,我们就可以把原程序这样改写:A=Fx(DogConvert(1)-17342)。那么原程序中就不会出现常量3,而取之以DogConvert(1)-17342。这样,只有软件编写者才知道实际调用的常量是3。而如果没有加密锁,DogConvert函数就不能返回正确结果,结果算式A=Fx(DogConvert(1)-17342)结果也肯定不会正确。这种使盗版用户得不到软件使用价值的加密方式,要比一发现非法使用就警告、中止的加密方式更温和、更隐蔽、更令解密者难以琢磨。

最新进展

最新的硬件加密原理

随着解密技术的发展,单片机加密狗由于其算法简单,存储空间小,容易被硬件复制等原因,正逐渐被市场所淘汰。以北京深思洛克软件技术股份有限公司为首的国内加密狗厂商研发出稳定性更好、存储空间更大(最大为64K)、有效防止硬克隆的第四代加密狗——‘’智能卡‘’加密狗,‘’智能卡‘’加密狗以其独创的‘’代码移植‘’原理,已经被国内大型商业软件开发商如擎洲广达、金蝶、用友、CAXA、广联达、神机妙算、鲁班……所采用。

以世界上第一款智能卡加密锁——精锐IV为例,简单介绍一下‘’代码移植‘’原理。

‘’代码移植‘’加密原理为一种全新的、可信的软件保护模型,工作原理为:软件中部分代码经过编译,‘’移植‘’到加密锁硬件内部,软件中没有该段代码的副本。

在这套软件保护方案中,PC端应用软件的关键的代码和数据‘’消失‘’了,被安全地移植到精锐IV型加密锁的硬件中保护起来。在需要使用时,应用软件可以通过功能调用引擎来指令精锐IV运行硬件中的关键代码和数据并返回结果,从而依然可以完成整个软件全部的功能。由于这些代码和数据在PC端没有副本存在,因此解密者无从猜测算法或窃取数据,从而极大程度上保证了整个软件系统的安全性。简言之,精锐IV提供了一套可信的解决方案,从理论上保证软件加密的安全。

一种控制软件运行权限的智能加密锁设计

编辑

提出一种直接用在计算机并行口上,通过与计算机进行数据交换来识别计算机端软件合法性,从而控制软件运行权限的硬件加密锁及其实现方案。加密锁以单片机为主控芯片,以不影响计算机正常使用打印端口为设计原则,以现代加密技术为安全认证核心。并分析了计算机与加密锁数据交换原理、软件设计、认证协议和可靠通信的方法。通过测试,证明设计方案实用、可靠。 [2] 

软件设计

加密锁软件设计包括计算机端的软件设计和加密锁端的软件设计。计算机端的软件主要是给应用软件提供调用的函数模块。包括认证驱动模块、会话密钥产生模块、加密解密模块、数据交换模块。其中,认证驱动模块产生认证请求,如根据时间或事件产生认证请求,当认证事件发生后,应用程序调用其它模块,通过与加密锁通信来确定当前应用软件的合法性。会话密钥产生模块向主调程序返回一定比特数的伪随机数作为会话密钥。加密解密模块对给定的明文和密钥计算出对应的密文,或者对给定的密文和密钥计算出相应的明文。数据交换模块将计算机中指定的数据发送到加密锁,并接收加密锁返回的数据或确认信号,并在其中设置超时时间,当超时次数大于指定次数时,认为加密锁未接在并行端口上,或加密锁非法。程序采用标准C语言编写,易于跨平台使用。 [2] 

可靠通信设计

为了实现计算机和加密锁的可靠通信,采用以下方法:首先,在通信的数据中增加一个校验字节,发送方在发送数据时计算校验字节,放在其通信数据的最后,而接收方接收到通信数据后首先验证校验字节,如果正确则进行正常的数据处理,否则向发送方返回非确认信号,从而建立起错误重发送机制。其次,加密锁平常是处于空闲状态的,只有在计算机与加密锁通信时才使加密锁处于激活状态。为了识别出计算机使用打印机与计算机和加密锁通信这两种情况,计算机在与加密锁认证之前,向打印口连续发送‘’0XFF‘’信号,以正确激活加密锁。 [2] 

指纹识别加密狗

相比于传统的加密方案,市面上又出现了一种新型加密狗,Synaptics宣布了一种新的微型USB加密狗方案,可以插在任何笔记本上,使之立刻具备指纹识别功能。

该方案基于Synaptics Natural ID安全指纹识别技术,并通过了FIDO安全认证,兼容新广泛,并完全支持Windows Hello、Microsoft Passport。这个小家伙非常迷你,插到USB接口上也几乎感受不到,不会占用多少空间。Synaptics称之为‘’交钥匙方案‘’,也就是OEM、ODM厂商可以直接就拿来做成成品并销售,也可以绑定在笔记本上。

技术发展

随着解密技术的日益升级,对加密锁的安全性提出更高要求。传统的智能型可编程加密锁主张的是‘’代码片移植‘’——将被保护程序母体分点式镂空,这个从理论上说是安全的,但是实际并非如此,有以下两点原因:一是,从已有程序母体中抽出待移植代码片是一件比较困难的事情,所以抽出的代码逻辑大多数都相对较简单;二是,由于加密锁本身的硬件执行效率限制,复杂的算法在锁中运行效率将是个最大的瓶颈。

运用案例

1、擎洲广达工程计价软件

2、广联达造价软件

3、清华斯维尔造价软件

4、神机妙算造价软件

5、鲁班造价软件

原网址:https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%8A%A0%E5%AF%86%E9%94%81/23647070?fromtitle=%E5%8A%A0%E5%AF%86%E9%94%81&fromid=10131434

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 构造器(constructor)

有一点很重要,即你要时刻询问子句"如果异常发生了,所有东西能被正确清理码?",尽管大多数情况下时非常安全的,但涉及到构造器时,问题出现了,构造器会把对象设置成安全的初始状态,但还会又别的动作,比如打开一个文件,这样的动作只有在对象使用完毕并且用户调用了特殊的…

keeplive linux平台下,Linux下搭建keepalive+nginx

一、 安装nginx(略)二、 安装keepalive安装依赖包 yum install –y popt* gcc* openssl* nmaptar fvxz keepalived-1.2.15.tar.gzcd keepalived-1.2.15./configure –prefix/usr/local/keepalivedmake && make installmkdir /etc/keepalived ##为keepalived创建配置文…

第二十二期:淘宝技术架构分享

一,淘宝技术架构 1.UIC: 用户中心(User Interface Center),提供所有用户信息相关的读写服务,如基本信息,扩展信息,社区信息,买卖家信用等级等等。 淘宝现在有两类卖家B 和C,这是通过在用户身上打不同的标签…

Linux启动过程以及初始化

Linux系统启动 POST加电自检–> 硬件检查 引导加载程序BIOS(Boot Sequence)–> 找到主引导记录(MBR),引导加载程序检查分区表并找到一个可引导的分区 加载对应引导上的MBR(bootloader)–> 引导加载程序将所选操作系统的内核加…

Deep learning with Python 学习笔记(9)

神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推力,之后你便再也无法控制其飞行轨迹或着陆点。如果想要避免不好的结果&…

linux c 读取摄像头,Linux下onvif客户端获取ipc摄像头 获取能力:GetCapabilities

getcapabilities:获取能力,主要目的获取设备能力信息(获取媒体服务地址)鉴权:但是在调用获取设备能力之前是需要鉴权的。onvif协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致…

[计算机网络][HTTP]

定义 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协 议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由 统一资…

8次c语言上机作业答案,计算机二级C语言上机题库及答案2017

计算机二级C语言上机题库及答案2017引导语:我们将要迎来2017年9月份的计算机考试,大家准备好了吗,以下是百分网小编分享给大家的计算机二级C语言上机题库及答案2017,欢迎测试!一、填空题给定程序中已建立一个带有头结点的单向链表…

Swagger Learing - Spring Boot 整合swagger

学习了一下swagger。 这是编写的Demo 源码 https://github.com/AmberBar/Learning/tree/master/swagger-learning/swagger 需要的小伙伴可以clone直接运行 访问地址 http://localhost:9999/swagger-ui.html#/ 转载于:https://www.cnblogs.com/amberbar/p/10308256.html

[Leedcode][JAVA][第202题][快乐数]

【问题描述】 编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为…

c语言结构体实现存储信息,用C语言结构体实现通讯录

实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系…

Java类加载机制的理解

算上大学,尽管接触Java已经有4年时间并对基本的API算得上熟练应用,但是依旧觉得自己对于Java的特性依然是一知半解。要成为优秀的Java开发人员,需要深入了解Java平台的工作方式,其中类加载机制和JVM字节码这样的核心特性。今天我将…

java学习(171): 枚举类

定义一个枚举类 //枚举类型 public enum test122 {RED,GREEN,BLUE;}测试类 public class test123 {public static void main(String[] args){System.out.println( test122.BLUE );test122[] sigstest122.values();for(test122 e:sigs){System.out.println( "枚举名称&qu…

[剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

【问题描述】[第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:输入: "bb…

c语言程序改错例题,C语言程序改错习题

C语言程序改错习题行动是通向成功的唯一途径。以下是小编为大家搜索整理的C语言程序改错习题,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!在考生文件夹下,给定程序MODI.C的功能是:求一维数组a中的.最大元素及其下标。…

java学习(172): 使用class实现反射编程,创建对象

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

关于mysql中GROUP_CONCAT函数的使用

偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人。 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数&#xff0…

linux中tuned是否启动命令,tuned-adm 性能调优分析

tuned-adm 性能调优分析徐小东 (a.k.a toy)(xxdlhygmail.com)2017.04tuned-adm 简介RHEL 自带的性能调优工具,通过针对特定应用场景提供配置 (profile) 来改善系统性能性能调优方向CPU: governor、energy_perf_bias、min_perf_pct性能调优方向CPU: governor、energy…

java学习(173):class反射编程方法

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

[剑指offer]面试题第[25]题[Leedcode][JAVA][第21题][合并两个有序链表]

【问题描述】[简单] 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4【解答思路】 1. 非递归 时间复杂度&…