全球唯一ID | 64位(bit) |
超大用户空间 | 32K |
硬件芯片 | 16位高强度智能卡芯片 |
锁内硬件可编程 | 可使用成熟的C51语言开发锁内程序 |
文件存储 | 可执行文件、密钥文件等机密文件不可导出,杜绝锁内算法泄漏 |
安全数据存储 | 智能卡硬件保证锁内数据安全存储 |
非对称加解密算法 | 硬件内部支持512/1024位RSA非对称算法 |
对称加解密算法 | 硬件内部支持DES/3DES对称算法 |
复杂数学运算 | 硬件内部支持单/双精度浮点运算 |
远程升级 | 建立在RSA算法体系上的安全远程升级 |
全球唯一ID | 每个 ROCKEY3 加密锁内部都有一个唯一的硬件 ID,这个硬件 ID 是在加密锁出厂时烧入的,即使是厂家也不能修改这个硬件 ID,而且这个硬件 ID 具有唯一性, 即世界上不可能有两个相同硬件 ID 的 ROCKEY3 加密锁,当开发者需要给特定用户加密时,可以通过检查这个 ID 来确认加密的唯一有效性。 开发商可以通过RY3_GetHardID接口来获得硬件序列号。 |
硬件算法 | ROCKEY3硬件实现512、1024、2048位的RSA运算功能,MD5,SHA1散列算法,复杂的单精度和双精度浮点运算 |
开发商口令 | 开发商口令(24字节)是开发商在进行软件保护开发时使用到的,其作用主要是对ROCKEY3硬件进行设置,如:创建文件,删除文件等。该口令为24个字节,初始值为:“123456781234567812345678”,十六进制表示为“0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38”。虽然开发商口令只能向锁内写入和删除文件,而不能获取锁内的任何数据,但还是建议开发商在初始化时,将默认的开发商口令更改成自己的设定的独特值,以防止被非法者获取 |
开发商ID | 开发商ID为8个字节,初始值为“00000000”。开发商可以通过ROCKEY3加密锁设置工具或者API接口函数来重新设置开发商ID,并通过开发商ID来判断是否是自己的ROCKEY3。在设置开发商ID时,为了防止其他人设置相同的开发商ID,ROCKEY3采用了种子的方式来生成开发商ID,即开发商输入产生开发商ID的种子(种子长度最大为250字节),ROCKEY3会在硬件内部根据该种子产生相应的开发商ID,而且是不可逆的。只有生成者,才知道什么样的种子能生成自己的开发商ID,这样其他人即使获得了开发商ID,但由于不知道产生开发商ID的种子,因此无法设置相同的硬件,大大增加了安全性。 开发商可以通过RY3_SetVendorID接口来设置开发商ID。 |
数据存储区 | ROCKEY3 加密锁提供8k的数据存储区。其中 0-7168 字节为低级数据存储区,7169-8192字节(共1024字节)为高级数据存储区。低级存储区不论是开发商模式还是用户模式都可以进行读、写操作。高级数据存储区只有在验证了开发商密码后(即开发商模式),才能进行写操作,读操作不需要验证开发商密码。用户模式只能对高级数据存储区进行读操作。 软件开发商在调用API函数对数据存储区进行写操作时,请调用RY3_VendorWrite接口。 |
共享内存区 | ROCKEY3 加密锁内有32字节的共享内存区。能够充分保证在锁内运行的程序享有充足的卡片内存 开发商可以通过RY3_ReadShare、RY3_WriteShare接口来读写共享内存区 |
用户可用空间 | ROCKEY3 加密锁提供32k的用户可用空间。在此空间中,用户可以存放自己的文件 |
文件系统 | ROCKEY3中的文件系统与Windows的文件系统一样,是文件结构,文件包括:可执行文件,数据文件和密钥文件。每个文件都有自己的ID,这个ID为2个字节,例如:0x1002,0x100A等,文件的ID不能重复。对文件系统的操作,可以通过调用内部函数(C51语言)和外部API函数来实现 |
可执行文件 | 可执行文件是由C51语言编写的,在加密锁内部运行的文件。您的应用程序运行时,调用我们提供的各种语言的API接口,向该文件传入输入数据,可执行文件在加密锁内部运行后,将结果返回给外部的应用程序。可执行文件可以被其他可执行文件改写,验证开发商口令后可以创建和写入。文件中的内容不能被任何人读取。当需要远程升级时,可以创建可执行文件,通过程序改写锁内的可执行文件 |
内部数据文件 | 存放数据信息的文件。该文件在开发商口令验证后,可以通过API接口写入,但不能读。或者通过锁内可执行文件来读取和写入。即应用程序调用外部的API接口,API接口调用ROCKEY3内部的可执行文件,可执行文件(通过C51语言)读写内部数据文件。 |
核心芯片 | 16位高强度智能卡芯片 |
硬件序列号 | 全球唯一硬件序列号 |
存储空间 | 32K |
硬件内置算法 | 种子码算法,Float运算,DES,3EDS,RSA算法等 |
时钟芯片 | 无 |
读次数 | 无限制 |
写次数 | 至少10万次 |
USB通讯 | 无驱高速HID协议,USB通讯硬件级加密,USB1.1标准设备,兼容USB2.0接口 |
操作系统支持 | Windows 98SE、Windows Me、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 2008、Windows7 |
接口类型 | USB A型插头 |
处理器 | 16位智能卡芯片 |
内置安全算法 | 512/1024/2048位RSA、3DES、MD5、SHA1等算法 |
加密方式 | API调用、外壳加密、通讯加密 |
外观尺寸 | 63*20*9mm(G6外壳) |
外壳材质 | ABS(树脂) |
总重量 | 11g |
工作温度 | 0℃~60℃ |
存放温度 | -25℃~+85℃ |
湿度 | 20%-80% |
供电方式 | USB口取电 |
工作功率 | 0.5w(最大) |
工作电流 | 100mA (最大) |
数据保存年限 | 至少 10 年 |
虚拟机开发环境 | 支持C51编译器——KEIL集成开发环境 |
加密方案设计原则 | 软件加密方法是每个软件开发商结合自己软件特点所设计出来的具有独特性的方案,每个开发商应该有自己特别的方案,不要雷同,更要做好保密工作,防止破解者根据经验进行破解 |
有迷惑性的代码 | 通常来说,编程人员和解密者都具有很好的逻辑思维能力,他们都会认为如果某段程序存在,那么就应该有这段程序存在的意义。编程人员为了代码的效率和空间会不断的剔除无用的代码,解密者也是这么理解开发人员的,他通过分析程序中保护代码的每一段指令来追索编程人员的保护思路。如果反其道而行之,故意添加大量的无用的代码,把程序复杂化,毕竟开发者是在拿高级语言编写程序,而解密者是在看汇编代码,想搞清楚哪些代码是有用的,哪些代码是无用的,并不是一件简单的事。 |
虚假的检查 | 故意去把返回结果和一些错误的答案进行比较,比较结果一定应该是错误的,如果比较结果发现是正确的,说明有人正在试图破解您的软件。反击的手段可以有多种选择。 |
验证时机的选择 | ![]() 软件在运行时,验证时机可以是没有规律的,是散乱的,那么要查找到所有的加密点则不是一件容易的事情。 |
ROCKEY3软件加密新理念 | 传统的软件加密方法很多只是把加密锁当作存储设备,将简单的信息存储在里面,然后在软件运行时进行判断,也有许多开发商只是检测硬件是否存在,这些加密手段在现在的破解中十分容易,根本就没有任何加密价值,软件非常容易被盗版。后来有的加密锁中加入了自定义算法,但由于硬件的限制,算法也只有简单的加,减,左移,右移等,算法再怎么变化也就是这几种之间的组合,最主要的是这样的算法根本不能完成软件需要的功能。 智能卡技术的介入,使加密锁可以完成以前只有在PC中才可以实现的功能,软件开发商可以通过这样的步骤来实现软件加密。 (1)使用高级语言开发软件 (2)将核心算法转换成C51语言,进行编译。转换成ROCKEY3的可执行文件的方式存储在加密锁中。 (3)应用程序运行过程中,遇到关键算法时,将需要运行的数据传给ROCKEY3,ROCKEY3在加密锁内调用可执行文件内完功能,将结果传给应用程序,程序继续执行。 ![]() 很多商业软件,如CAD设计软件,工程预算软件,财务软件等里面包括很多数学计算的公式,对这样的软件进行高强度的加密是非常容易的。由于ROCKEY3具有复杂的双精度浮点运算的能力,可以运算复杂的三角函数,因此能够满足这些软件的计算要求。那么原来在计算机内存中完成的运算完全可以植入到加密锁中运行,这样破解者只能跟踪到程序中的输入和输出,而不清楚加密锁中的算法是什么,在没有加密锁的情况下,程序中就没有计算的结果或结果不正确,从而软件不能运行。例如:我们可以将身份证15位升级到18位的算法放入ROCKEY3中运行,没有加密锁就没有正确的结果,软件必须靠加密锁来完成,从而不可破解。这种加密方法需要注意: (1)算法要够复杂。算法如太简单,如只是一个加法,那么破解者完全可以通过输入和输出猜测到锁内的算法,使用软算法模拟,则程序被破解。 (2)ROCKEY3采用的是16位的智能卡芯片,浮点运算能力非常快。能满足多数运算要求。如某些应用软件要求运算速度,可以将复杂公式中的部分放到加密锁内运行。 (3)加密锁内的公式不能是已经公开的或者是泄漏的公式,这些不安全的公式可以被破解者软件模拟。 (4)计算的结果一定要是软件使用到的,而不是在软件中比较。如加密过程是比较的话,破解者很容易找到比较的逻辑判断点,进行屏蔽等修改,这样即使锁内的运算是多么复杂都是无效的。 上述的方法是软件保护中切实有效的方法,ROCKEY3就是一个黑盒子,那么只要注意上面的四点说明,使用这样的方法进行保护的软件是不可能被破解的。 |
ROCKEY3内进行逻辑判断 | 在对软件进行加密时,可以使用外部的API函数接口或者在锁内使用C51的接口来获得硬件信息,如硬件ID号,开发商ID等。由于这些硬件信息是唯一的,因此可以在ROCKEY3加密锁内部针对这些信息进行处理和判断,逻辑处理在加密锁内部,破解者是无法修改的,从而达到软件不能被破解。在这种加密方法中加入随机数的成份会大大增加加密强度。如:(1)软件运行时得到一个随机数和硬件ID,将随机数与这个ID进行处理,传入到锁内的可执行文件中。(2)在锁内进行反向处理,得到硬件ID,这个ID与使用C51语言得到的硬件ID进行比较,进行逻辑判断。这样破解者每次跟踪到的是随机内容,而逻辑的过程又是在加密锁内进行,软件不能被破解。 |
设置输入和输出迷宫 | 有的破解者使用USB协议分析仪,对PC与加密锁之间传输的数据进行分析。ROCKEY3在USB接口传输的数据是密文。但为了更加安全,建议软件开发商在传输数据时做一些处理,即加解密的算法由每个软件开发商自己掌握,各不相同。除了ROCKEY3的通讯算法外,再加上每个开发商自己的算法,一家的算法泄漏也不会影响其他的软件。加解密算法可以开发商自己设计,也可以使用3DES等流行的对称算法。其过程如下:(1)在外部API函数进行调用时,对要传输的数据进行处理。(2)在锁内的程序进行反向处理,得到真正的输入,再进行下面的程序。 |
计时功能 | 开发商可以在第一次运行时,将系统时间记录下来,在锁内创建一个起始时间的内部数据文件,然后把这个起始时间在加上一个时间(如30天,或使用分钟数等),再创建一个结束时间的内部数据文件,那么就可以解决如何设定开始时间的问题。 程序第一次运行时,锁内没有这2个数据文件,返回打开失败,开始创建,后面在运行时,这2个文件打开成功,可以向开始时间文件写新读到的系统时间,这时要比较新的时间是否比开始时间文件中的时间要早,防止用户修改系统时间,然后再与结束时间比较,看是否在范围内。这样就可以完全实现外部时钟的功能,即节省了成本,又可以防止外部时钟失效的问题。 |
计次功能 | 开发商可以在ROCKEY3内创建一个内部数据文件用来记录软件的使用次数,软件每使用一次,就将这个文件的次数改写一次,当文件不存在或者记录的次数为0时,软件使用到期。可以在ROCKEY3的可执行文件中进行逻辑处理,使用到期后核心的可执行文件无法运行。 |
3DES,RSA与应用程序的综合运用 | ROCKEY3加密锁采用的是16位的智能卡芯片,具备高性能的3DES和RSA运算能力。3DES,RSA这些对称和非对称的加解密算法可以使用在单机版软件,C/S结构和B/S结构中的软件中。下面就对C/S结构的软件举例说明: ![]() <1>为插在服务器上运行的加密锁,锁内存储有RSA运算的私钥,以及开发商自己编写的关联算法。 <2>服务器端程序,该程序主要是将客户端传来的数据进行处理,传输给加密锁,或者将加密锁处理的数据传给客户端。 <3>客户端程序,客户端需要有与服务器端加密锁中私钥对应的公钥。 应用程序运行时,客户端的程序产生随机数作为3DES加解密的密钥,使用程序中存在的公钥对随机数进行加密传给服务器端,服务器端在ROCKEY3在锁内使用私钥进行解密,并将对称密钥存储成内部数据文件。这样程序运行时在网络上传输的数据都是使用3DES算法加密过的数据,保证了传输数据的保密性,被跟踪到没有关系。 为了防止解密者篡改客户端程序,即购买一把ROCKEY3加密锁,然后使用破解者自己的RSA密钥对,将客户端的公钥替换进行解密,开发商还应该在ROCKEY3中加入自己设计的关联算法,这些算法以C51程序的形式在加密锁中,任何人无法得知其中的过程,那么即使公私钥被替换,但开发商这些独特的算法破解者是不知道的,软件也无法被破解。例如:如果要限制客户端的数目,当一个用户发出登录请求时,客户端将客户端的信息经过软件的3DES加密传给服务器端,服务器端软件将这些信息传入给ROCKEY3,加密锁在锁内进行:(1)将信息解密,与关联算法得到的信息进行比对,如一致则认为该客户端有效。(2)同时在锁内判断登陆数量是否已满。如这两点都满足,则表明客户端是一个合法用户,将登陆加密的信息发给客户端,客户端使用软件的3DES解密出客户端需要的正确结果,完成连接。如条件不满足,返回错误的加密信息,虽然表面看起来,与正确的数据差不多,但这时使用客户端的对称密钥解密后的数据是一堆无用乱码,连接失败。在这个示例中需要注意的就是:(1)一定要有关联算法,否则很容易被重新生成RSA密钥对,而被破解。(2)各种检查和判断一定要在锁内进行,服务器端的程序只是起到一个传输的作用。 |
远程升级 | 软件开发商将加密后的软件卖给最终用户后,在软件进行升级时可以利用远程升级功能而不必回收加密锁。远程升级时,在用户模式下就可更改加密锁中的资源:8192字节的数据存储区,1-8号的RSA公私钥对,1-8号的3DES密钥。但是不能升级32k用户空间中的内容,用户空间中的内容如果要升级,需要用户自行处理。 |
升级过程 | (1)在软件发行时,ROCKEY3内部存有可执行文件和内部数据文件,另外还要有一个用于升级的可执行文件,这里称为UP文件。升级时要保证传输的是密文,您可以使用RSA非对称加解密或者使用3DES对称加解密。这里我们使用RSA非对称加解密,就需要ROCKEY3中已经存在一个私钥。例如ROCKEY3内存在:A(可执行文件)、B(内部数据文件)、PRI(私钥文件)和UP(可执行文件)。br />(2)当软件进行升级时,开发商需要将新的A’和B’使用与已经存在的ROCKEY3中私钥文件(PRI)对应的公钥文件(PUB)进行加密,将加密后的结果传输给最终用户。注意,公钥文件最好不要存放在锁内。虽然即使写入也没有办法读出来,但是我们建议公钥文件最好不要存放在锁内。因为公钥泄漏可能会导致其他人产生非法的升级包,不过即使这样也只能破坏锁内数据,不会造成加密的安全问题。br />(3)在最终用户处的ROCKEY3内部的UP可执行文件接收到A’和B’的密文,使用锁内的私钥文件(PRI)将A’和B’解密,然后使用C51语言的文件操作接口(见6.3.1-6.3.6节中的说明),将锁内的A和B替换为A’和B’,升级完成。产生升级包时可以指定允许被升级的硬件ID,这样就能对指定ROCKEY3进行升级。 |
![]() | |
外观尺寸 | 74*23*10(mm) (默认G6外壳) |
外壳材质 | ABS(树脂) |
总重量 | 约14.6g(默认G6外壳) |
标签 | 有标签位(默认不贴标签) |
开发套件(SDK,Software Development Kit)是为开发人员提供的开发包,包括:USB Key硬件、开发工具和示例。您可以在线申请免费试用的开发套件!
飞天诚信科技股份有限公司 © 1998-2022。
网站备案号:京ICP备05039625号 京公网安备号:110108008029