2006年12月3日星期日

通过Web Service调用Google SOAP Search API

  我曾经介绍过“使用Axis开发Web Service程序”的一些步骤,做为一个更有特色的应用范例,本次我将介绍使用Axis通过Web Service调用Google SOAP Search API,实现Google搜索、Google快照、Google拼写这三项功能,包括示例源代码。

  一、环境配置

  首先,没有Java开发环境的,需要安装一下环境,点这里查看《Java开发环境的详细配置方法》,其实,本示例安装JDK 1.42以及Eclipse 3.2就可以了。

  二、将Apache Axis相关包文件放在WEB-INFlib目录下

  从Apache的主页上下载Axis包文件,复制到lib目录下。

  三、申请Google SOAP Search API license key

  要使用Google的服务,必须要有“license key”,如果你有Gmail帐号,点这里就可以申请license key,这个license key是一段很长的字符串,每个key可以支持每天1000次的Google搜索。

  四、下载WSDL文件,生成客户端Java代码

  WSDL文件的下载地址参见:http://api.google.com/GoogleSearch.wsdl

  生成客户端代码的批处理文件如下:

set Axis_Lib=D:workspace estWEB-INFlib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:workspace estsrc
set Package=com.google.api
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% GoogleSearch.wsdl

  最后会生成下列代码文件:

DirectoryCategory.java
GoogleSearchBindingStub.java
GoogleSearchPort_PortType.java
GoogleSearchResult.java
GoogleSearchService.java
GoogleSearchServiceLocator.java
ResultElement.java

  五、编写程序,调用Google SOAP Search API

  在上面那个包下,编写你自己的Java程序,就可以调用Google SOAP Search API.目前可以使用的Google服务有:网页搜索,网页快照,拼写检查这三个。

  Java示例代码如下,请使用前将clientKey替换为你自己的。替换后直接运行即可得出结果。

package com.google.api;

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;

public class ClientGoogle {

  public static void main(String[] args) throws ServiceException,
    RemoteException {
    String clientKey = "kkkkkkkkkkkkkkkkkkkkkkkkkkey";
    GoogleSearchServiceLocator service = new GoogleSearchServiceLocator();
    GoogleSearchPort_PortType gsp = service.getGoogleSearchPort();

    //Google Search API
    GoogleSearchResult searchResult = gsp.doGoogleSearch(clientKey,
        "www.williamlong.info", 0, 10, false, "", false, "", "latin1",
        "latin1");
    System.out.println("Google Search Results:");
    System.out.println("======================");
    ResultElement results[] = searchResult.getResultElements();
    for (int counter = 0; counter < results.length; ++counter) {
      ResultElement result = results[counter];
      String returnResult = "('" + result.getTitle() + "','"
          + result.getURL() + "','" + result.getSnippet() + "')";
      System.out.println("Return Result");
      System.out.println(returnResult);
    }

    //Google CachedPage
    byte[] cachedBytes = gsp.doGetCachedPage(clientKey,
        "http://www.williamlong.info/");
    System.out.println("Cached page:");
    System.out.println("============");
    String cachedString = new String(cachedBytes);
    System.out.println(cachedString);

    //Google SpellingSuggestion
    String suggestion = (String) gsp.doSpellingSuggestion(clientKey,
        "williamlong");
    System.out.println(suggestion);

  }

}

  当然,你也可以不使用Apache Axis,Google自己也提供了一个API包可以做为客户端调用,下载地址参见这里

  最后声明一下,Google SOAP Search API是属于实验产品,每个license每天最多只允许搜索一千次,其许可协议注明不能使用于商业模式的网站,而对于个人研究来说,每天一千次的搜索也就足够了。

  相关专业名词解释:

  Web Service:是一种革命性的分布是计算技术。它使用基于XML的消息处理作为基本的数据通讯方式,消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异,使异类系统能够作为计算网络的一部分协同运行。开发人员可以使用像过去创建分布式应用程序时使用组件的方式,创建由各种来源的Web服务组合在一起的应用程序。由于Web服务是建立在一些通用协议的基础上,如HTTP(Hypertext Transfer Protocol, WWW服务程序所用的协议),SOAP(Simple Object Access Protocol,简单对象访问协议),XML,WSDL(Web Services Description Language,Web服务描述语言),UDDI(Universal Description,Discovery,and Integration,通用描述发现和集成协议)等,这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此Web服务将会有很强的生命力。

  SOAP:是“Simple Object Access Protocol”的缩写,SOAP是消息传递的协议,它规定了Web Services之间是怎样传递信息的。简单的说,SOAP规定了:

  1. 传递信息的格式为XML.这就使Web Services能够在任何平台上,用任何语言进行实现。

  2. 远程对象方法调用的格式。规定了怎样表示被调用对象以及调用的方法名称和参数类型等。

  3. 参数类型和XML格式之间的映射。这是因为,被调用的方法有时候需要传递一个复杂的参数,例如,一个Person对象。怎样用XML来表示一个对象参数,也是SOAP所定义的范围。

  WSDL:是“Web Services Description Language”的缩写。WSDL是Web Services的定义语言。当实现了某种服务的时候(如:股票查询服务),为了让别的程序调用,必须告诉大家服务接口。例如:服务名称,服务所在的机器名称,监听端口号,传递参数的类型,个数和顺序,返回结果的类型等等。这样别的应用程序才能调用该服务。WSDL协议就是规定了有关Web Services描述的标准。

  UDDI:是“Universal Description, Discovery,and Integration”的缩写。简单说,UDDI用于集中存放和查找WSDL描述文件,起着目录服务器的作用。

  XML:(eXtensible Markup Language,可扩展标记语言)是Internet上数据表示和数据交换的新标准。它是ISO(International Organization for Standardization,国际标准化组织)的SGML(Standard for General Markup Language,通用标记语言标准)的一个简化子集。XML关注信息本身,是Web上表示结构化信息的一种标准文本格式。与传统的注重页面信息显示的HTML(Hypertext Markup Language, 超文本链接标示语言)相比,关注于内容的XML具有以下诸多优点:良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙;等等。XML的出现和发展对于Internet和Intranet产生了巨大的影响。

2006年12月2日星期六

Google Blogger Beta中文界面启用

  昨天,ReallyFindIt留言给我一个消息,说Google Blogger Beta的后台管理的中文界面已经全面启用了。由于我以前一直用Email发帖子,登录后台较少,所以我立刻登录了一下Blogger Beta,发现界面的确已经全部是中文了。

  Blogger今年来在国内的服务断断续续,被折腾的也够呛,不过我依旧认为Blogger是最好的博客服务之一,速度快,功能多,Blogger Beta的一个最大的优势就是发表文章后不用重建了。这样发文章的速度就快多了。Blogger还有一个优势是操作简单,不用编辑HTML代码,只需要在设置界面上点几下鼠标,就可以完成界面部件的新增和修改,对于普通用户来说十分方便。另外Blogger还有很多实用的小技巧,所以,现在中文用户已经到了将Blogger升级到Blogger Beta的时机了。

  不过,如果你是通过FTP来发布Blogger的,那么还是不要升级好一些,反正FTP发布是肯定需要重建的。

PayPal支持电汇提现

  今天,收到一封邮件提示我的PayPal帐户收到了Review Me的50美元,于是登录了一下PayPal的英文网站,果然发现收到了50美元,同时我还发现另外一个有趣的东西,PayPal的英文网站居然用中文写了一个很大的广告,上书“最快3天,美元到您手-PayPal电汇提现”。这说明PayPal开通了对中国地区的电汇提现功能,中国人收美元又有了一个新方法。

  首先先向大家解释一个问题,就是PayPal和“PayPal贝宝”有什么区别?

  PayPal国际网站(www.paypal.com)是允许用户向世界各国用户发送和接收付款。 可以使用包括美元、加元、欧元、英镑、澳元和日元等币种。不过用户需要在账户添加国际信用卡(比如招行的信用卡)。

  PayPal贝宝(www.paypal.com.cn)只能向中国用户发送和接收付款,只能用人民币交易。用户可以添加一个中国的银行账户,在贝宝账户和银行账户之间进行资金转账。

  因此接收美元必须使用英文的PayPal才可以,中文的贝宝是收不到美元的。

  PayPal的网站上介绍新的电汇提现的一些优点:

  更快:只需3到7个工作日,美金就能到达用户的国内银行双币账号。

  更容易:只需几步便能在PayPal账户内添加用户的银行双币账号,立刻开始提现。

  更直接:无需海外银行账号,更不用申请支票,提现美金直接到达用户的国内银行双币账号。

  不过,我再给其补充上一条:

  更贵:每笔电汇提现需要支付20美元手续费(而且只有打折期间才是20美元) :(

  PayPal还在自己的网站上做了一张提现方案对比的图表:

  电汇

香港银行账户

美国银行账户 美国出具的支票
时间 3-7个工作日 5-7个工作日 3-4个工作日 6星期左右
費用 促销价20美元*
低于5折
提现免费
(可能会有兑换费用)
免费 5美元
收取币种 美元 港币 美元 美元
银行所在地 中国 香港 美国 存入中国银行账户

  注:一般国外银行电汇提现手续费在25至45美元之间。

  图表中可以看出,通过香港的招行一卡通提现是免费的,但是有汇率损失。美元全部转换为港币,用美国银行的帐户则完全免费,使用支票需要5美元费用,国内银行还会再收20元人民币左右的托收费用。

  总的来说,使用支票的方式还是更为实惠一些。当然,如果PayPal帐户资金较多的话,电汇也是不错的选择。

2006年12月1日星期五

百度搜藏的功能缺陷

  百度的网络收藏夹服务“百度搜藏”已经发布了,我也第一时间试用了一下,感觉百度搜藏有不少功能上的缺陷令人感到很遗憾,社会化功能很弱,速度也不是很快,不过搜索功能的确是做的不错。下面我就说一下我个人发现的一些百度搜藏的功能缺陷。

  一、分享地址在哪里?

  使用国外的del.icio.us美味书签的时候,可以很明确的知道任何一个人的书签地址,比如我的地址就是 http://del.icio.us/williamlong ,甚至分类(tags)地址也知道,比如这里是我baidu书签的地址。然而,使用百度搜藏的时候,我却找不到我的地址,或者是百度根本就没有这个功能,只有自己才能看到自己的书签。

分享地址在哪里

  更新:百度已经解决了这个缺陷,我们可以使用类似 http://cang.baidu.com/williamlong  的地址访问自己的搜藏地址。

  二、我的tags能分类吗?

  百度搜藏把tags翻译为“分类”,不过当我们的分类很多的时候,我们就需要一个bundle tags(分类包),我可以将我含义接近的分类再进行一次分类,这样我们的分类就看起来非常清晰了。

我的tags能分类吗

  三、只能进,不能出?

  百度搜藏的导入功能我用了一下,做的的确很不错,我的del.icio.us里的书签,可以连摘要和分类一起全部导入,一个都没有导错,看得出百度在导入这个功能上下了不少功夫,然而可惜的是,我在百度搜藏里面却找不到导出的功能,为什么其他的网络书签系统都提供导出功能,而偏偏百度搜藏却不提供呢?

只能进,不能出

  四、输出在哪里?

  百度搜藏里没有找到RSS输出,这也可以理解,用RSS的人也不多,JavaScript输出也没有找到,写Blog的人难道也不多,HTML输出呢?API呢?全都没有,不知道是因为这些功能没用?还是因为百度认为大家都不会用?

输出在哪里

  总之,用了一遍百度搜藏后,我觉得我还是继续使用我的del.icio.us吧,百度有不错的构思,可惜做的东西缺陷实在太多。

2006年11月30日星期四

软件加密锁编程技巧

  本文将介绍软件加密锁的一些编程技巧,以及软件开发者将如何编写安全可靠的代码,如何对付各种各样的加密狗破解,编写加密程序时应该尽量避免的一些问题等等。以下是全文。

  一、加密狗加密的基本原理

  开发商程序通过调用硬件加密狗的接口模块对硬件加密狗操作,硬件加密狗响应该操作并通过接口模块将相应数据返回给开发商的应用程序。开发商的应用程序可以对返回值进行判定并采取相应的动作。如果返回无效的响应,表明没有正确的狗,开发商可以将应用程序终止运行,或者让应用程序以错误的方式执行。简要示意如下:

软件加密锁编程

  二、常用的解密方法

  1、反汇编后静态分析: W32Dasm、IDA Pro

  2、用调试工具跟踪动态分析:SoftICE、TRW2000

  3、针对各种语言的反汇编工具:VB、Delphi、Java等

  4、其他监视工具:FileMon、RegMon 等

  三、如何提高加密强度

  下面,我们以Sentinel SuperPro加密锁为例,详细介绍一下使用如何在编程的过程中提高加密强度的方法。

  1、反DEBUG解密的编程方法和技巧

  访问狗之后不要立即做判断,判断狗不正确后,不要立即提示,或者不提示。开发商在程序各个部分插入校验算法的代码,用以增加程序代码的复杂性,防止解密者轻易跟踪发现全部的校验代码。校验代码插入程序的频率越高,破解难度越大,软件就越安全。

  重要的字符串不要在程序中以明文出现,应该使用算法动态生成。

  在不影响程序效率的情况下,尽量多写一些查狗的函数,彼此要有区别,使用不同的算法,多一些查狗出错的标志,让这些标志参与运算,在不同的模块中,使用不同的查狗函数。

  针对某一具体查询校验,都有三步骤组成:查询得到响应串;比较响应串和查询串是否匹配;根据校验结果执行相应的步骤。建议三个步骤要延时执行。最好将三步骤相互远离些,甚至放到不同的子程序或函数中。例如:执行“查询得到响应串”后,相隔50行执行“比较响应串和查询串是否匹配”,假如程序需要调用一个函数。那么就在这个函数里执行“执行相应的步骤”。解密者在跟踪过程中,即使发现了其中一部分程序代码,但很难发现另外两部分代码和全部三部分之间的关联。程序难于被破解。

  将加密锁返回的“响应串”作为程序中的参数使用。例如:算法单元返回“响应串”是“87611123”,而程序中需要使用“123”这个参数。程序中得到“响应串”后,将“响应串”减去“87611000”得到参数。如果解密者修改代码跳过查询校验加密锁部分,参数将是错误值,从而会使程序运行紊乱。

  程序在验证加密算法过程中,一般情况下验证数据不正确程序就会选择退出。这样一来很容易被解密者发现代码特征,跳过查询校验部分。开发商设计查询校验部分时,如果程序校验数据不正确,程序也不退出可以继续执行一些无用的操作使程序紊乱,用以隐蔽代码迷惑解密者。

  开发商的软件可能有多个模块,查狗的模块或接口不要用显而易见的名字来命名,这样会令解密者更容易找到加密点,当然也可以利用一些名字来迷惑解密者,尤其是dll,引出函数时甚至可以不用函数名。

  给查狗函数加入一定的随机性,例如,随机地执行某一API函数,或者在狗的存储区中划定一小块区域作随机读写,读写地址、读写内容、读写长度都是随机取的,这样可以很好地防止那些模拟工具。

  试用版与正式版要分开,试用版不提供的功能,代码已经删掉,使得不可能利用试用版破解得到正式版。

  在大多数情况下,破解是通过更改exe 或 dll 文件实现的,要在程序中检查exe或dll文件的完整性,即利用某种算法计算出整个文件的校验和,在程序中比较,如果文件被更改,校验和就会变化,这类算法网上有很多,可以查得到。另外,exe和dll之间要相互认证,一方面防止dll被替换,另一方面防止非法exe访问dll。

  小结:应该尽量避免的问题

  1)访问狗、做判断、提示用户写在一起

  2)重要的字符串在程序中以明文出现

  3)在狗中存放字符串,程序中读出比较

  4)调用同一函数或判断同一个全局标志查狗

  5)试用版软件同正式版软件是同一份

  6)查狗的模块或接口名字太明显

  7)程序无随机性,每次运行执行路径都一样

  8)没有检查exe 或 dll 文件的完整性,exe 和 dll 之间也没有相互认证

  2、反“监听仿真”软件保护锁的编程方法

  1)随机查询法:开发商使用SuperPro开发工具生成大量查询、响应对,如:1000 对,并在程序中使用这些校验数据。在程序运行过程中,从1000 对查询、响应对之中,随机的抽出其中一对验证SuperPro加密算法。因为,校验数据很多,每次验证加密算法使用的“查询响应对”可能不同,“监听仿真”软件即使纪录了一部分“查询响应对”,但无法纪录全部“查询响应对”。软件每次运行时,都可能使用新的查询响应校验数据,“监听仿真”软件无法响应这些新的查询。因此,“监听仿真”也就失去了模拟、仿真SuperPro软件保护锁的作用。

  2)延时法:开发商可以事先使用开发工具生成大量的校验数据,即:“查询、响应”对,比如:200000 组“查询、响应”对,开发程序过程中,开发商设计定时查询、校验加密锁的机制。在程序运行过程中,每10分钟查询并校验加密锁一次,使用过的校验数据,4年内不再重复使用。即使监听软件24小时记录数据,也需要4年才能纪录完毕。4年后,软件早已过了“热卖期”了,使用监听软件的解密者也就失去了行动意义。

  3)分组、分时法:开发商可以在程序中把查询响应对分组,比如:1200 对校验数据可分为12组,每100对一组。程序在一年中的第一月使用第一组校验数据,第二月使用第二组校验数据,以此类推。监听软件就算记录了第一月的校验数据,第二个三个月以后校验数据没有纪录,在以后的时间段软件仍然无法正常使用,从而“监听仿真”失去意义。

  4)随机噪声数据法:开发商可以在程序中随机产生查询数据,随机数据和真实数据混合在一起,监听软件即使记录了查询数据,也会被其随机性所迷惑,同时也无法仿真另一个次软件运行产生的随机数,加密软件也就无法破解。

  注:本文部分内容来源于彩虹加密锁Sentinel SuperPro的使用说明文档以及相关技术文档整理而成。

2006年11月29日星期三

软件加密狗破解思路和方法

  本文介绍的是软件加密狗破解的一般思路和方法,大家可能奇怪,昨天刚刚介绍完“软件加密锁产品评测”,怎么今天就介绍加密狗破解知识?其实做为软件开发者,研究好软件加密的确很重要,不过也很有必要多了解一些关于加密狗解密和破解的知识,加密和破解就像矛和盾一样,对于解密知识了解的越多,那么编写的加密代码就越好,要知道加密永远都比解密要容易的多,只有知己知彼,方能百战百胜。

  硬件加密锁,俗程“加密狗”,对于加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。

  硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。

  对于Debug调试破解,由于软件的复杂度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的复杂度已经变得越来越高,破解成本也越来越高,目前已经很少有人愿意花费大量精力进行如此复杂的破解,除非被破解的软件具有极高的价值。

  目前加密锁(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这种方法成本较低,也易于实现,对待以单片机等芯片为核心的加密锁(加密狗)具有不错的解密效果。

  由于加密锁(加密狗)的应用程序接口(API)基本上都是公开的,因此从网上可以很容易下载到加密狗的编程接口API、用户手册、和其它相关资料,还可以了解加密狗技术的最新进展。

加密锁

  例如,某个国内知名的美国加密狗提供商的一款很有名的加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密锁(加密狗)有64个内存单元,其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。

  数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可以使用Read函数读出存储单元里面的数据,也可以使用Write函数保存自己的信息到存储单元。

  计数器是这样一种单元,软件开发商在其软件中使用Decrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive)这个算法。

  算法单元较难理解一些,算法(algorithm)是这样一种技术,你用Query(queryData)函数访问它,其中queryData是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。

  此加密锁(加密狗)的所有API函数调用都会有返回值,返回值为0的时候表示成功。

  因此,破解思路就出来了,就是使用我们自己的工具(如VB、VC等)重新编写构造一个和加密狗API一样的DLL动态库文件,里面也包含Read、Write等全部API中包含的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对Query、Read函数进行处理,返回应用软件需要的数值即可。

  这个新的DLL文件编写成功后,直接替换掉原来的DLL文件,这时候再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永远会返回正确的数据给软件,从而实现了模拟加密狗的运行。

  以上是目前破解软件加密狗(加密锁)的一些常见思路,对于这种破解,软件开发者还是有相应的一些对策的,下一回我将在《软件加密锁编程技巧》一文中具体介绍一下软件开发者将如何编写安全可靠的代码,使得这种类似的破解方法失效。

2006年11月28日星期二

国内软件加密锁产品评测

  昨天讲述的“软件加密技术和注册机制”是一些软件加密的基本概念,在中国,开发和销售软件离不开加密,因为我国的软件保护法制还不太健全,人们的法制观念也比较淡薄,盗版软件有着丰富的土壤,并且因为软件是一种非常特殊的商品,很容易复制,就其功能来讲,正版和盗版的区别很小,如果开发出来的软件不进行加密的话,那么在中国就无法销售出去,人们乐意使用盗版软件而没有一些道德罪孽感,因此软件开发商有必要使用一些加密产品来保护软件开发者的利益,防止软件被盗版。

  前文介绍的加密解决方案中,软件加密锁(俗称加密狗)是一种加密安全强度最好的加密产品,所谓加密锁,就是一个安装在计算机并口或USB口上的一种特殊硬件,应用软件通过和这个硬件的通讯来确保软件不被盗版。目前市场上流行的加密锁产品很多,有美国SafeNet的圣天诺加密锁系列、HASP、深思洛克等,下面,我就将对目前常见的硬件加密锁(加密狗)进行一些技术上的评测,供软件开发商们参考。

名称 圣天狗 Hasp HL Sentinel SuperPro
外观 圣天狗加密锁 Hasp HL加密锁 Sentinel SuperPro加密锁
供应商 美国SafeNet 以色列Aladdin 美国SafeNet
存储空间 8K 4K 112字节
加密算法 128位AES/ECC 128位AES/RSA DES
芯片 MCU芯片 独家芯片 ASIC
支持接口 USB,不支持并口 USB,不支持并口 USB和并口
稳定性 可以保存数据10年 数据保全:最小10年
存储读写: 最小1百万次
可以保存数据10年
写操作:100,000次
远程升级 支持 支持 支持
产地 美国 以色列 美国
参考价格 100-200元 100-200元 50-100元
自己宣称的特点和优势 圣天诺加密锁保持行业内最高的可靠性,硬件故障率低于万分之一。
圣天诺加密锁承诺非人为、非机械的硬件损坏, 2 年内免费更换。

并口产品独有 ASIC 芯片由 Rainbow 公司自主设计,保证硬件不可复制,拥有最高安全级。别
全新推出应用于 USB 加密锁上的 MCU 芯片技术,支持 3-DES 和 128 位 AES 加密算法,加密强度极高。

一只加密锁可以同时保护 28 个软件,对软件实行分模块的分发与控制。
以易用性为使命,圣天诺开发工具具有革命性的意义,使复杂的加密过程轻松完成
采用128位密匙的公共AES算法,具有超强的防盗版性能。

创新性融入了多层安全技术,抗调试和抗反向工程能力突出。

许可证采用数字更新,签名采用1024位的私有密钥RSA算法。

首创的应用程序封装技术,提供了: 防逆工程保护,代码混淆,防范动态调试和防调试器。

符合ISO 9001:2000认证的生产设备。

SafeNet 在 2004 年推出全新硬件的 SuperPro USB ,支持 SuperPro 7.0 的所有新增功能,更拥有 512 字节( 256 存储单元)的大容量以配合高级许可机制和高级安全应用, SuperPro USB 锁比 SuperPro 并口锁( 128 字节)多 384 字节,也就是多了 192 个存储单元。 提供更大存储空间的同时, SuperPro USB 的安全性也大大增强。它应用抗黑客技术,有效阻止对写锁密码的恶意攻击。

内置新一代 MCU 芯片,支持 USB2.0 标准 / 支持带电插拔,即插即用,通过微软 WHQL 认证,提供 128-512 字节掉电保持存储空间,提供 28-124 个独立的算法单元,提供上亿种算法选择 / 支持 3DES, AES 算法,支持分软件分模块销售模式 / 支持 AS 加密技术,内置计数器 / 内置唯一序列号,提供远程升级功能。
加密强度 圣天狗与应用程序的通讯,采用公钥加密及128-bit AES加密机制。中间层的入侵方式,如监听与仿真,驱动程序的替换等都被有效的遏止。每次应用程序和硬件锁间的通讯,都会使用一个独立的加密密钥,让黑客无法暴力破解。圣天狗包括了内部验证,可以有效地预防圣天狗被复制。 HASP HL通过仅允许当加密锁连入计算机才可以对被保护的软件进行访问读取和执行,来防止盗版和非法使用的。HASP HL集合了一个高度安全,无法渗透破解的编码引擎。运行时,被保护的软件发送一个经过编码的字符串给HASP HL, HASP HL对该字符串解码并产生一个无法仿造复制的返回值。如果从HASP HL返回的值正确, 则该应用程序可以运行。如果没有连入HASP HL或者返回值不正确,则该应用程序不能运行。 HASP HL使用国家标准技术局(NIST)制订的高级加密标准。 超强锁把复杂的软硬件技术结合在一起以防止非法发布和使用开发商软件。

当被圣天诺超强锁保护的软件运行时,程序向插在计算机上的超强锁发出查询命令。超强锁迅速计算查询并给出响应。正确的响应保证软件继续运行。如果超强锁被拔掉,程序将不能运行。
 

名称 深思洛克精锐IV 飞天诚信ROCKEY6
外观 深思洛克加密锁 飞天诚信加密锁
供应商 北京深思洛克 北京飞天诚信
存储空间 8K和32K 70K
加密算法 RSA/3DES RSA/3DES
芯片 菲利浦16位智能卡芯片 中兴通讯32位智能卡芯片
支持接口 USB,不支持并口 USB,不支持并口
稳定性 10万次擦写寿命 10万次擦写寿命
远程升级 支持 支持
产地 北京 北京
参考价格 50-100元 50-100元
自己宣称的特点和优势 芯片自锁功能——软件对芯片的访问首先由PIN码保护,PIN码的尝试次数可由软件开发商设定。当非法用户利用字典攻击的情况出现时,如果次数超过设定值以后,芯片会自我锁定,外界一切对芯片的操作均被停止。

硬件随机数发生器(白噪声技术)——用于产生高强度随机数。除对称算法生成密钥需要外,随机数在安全加密领域具有非常重要和广泛的应用,因此,硬件本身带有高强度随机数发生器对安全而言意义重大。

硬件时钟定时器——是软件计时使用、反跟踪等常用软件保护手段中必备的功能,精锐TMIV硬件中提供计时周期长达10小时的定时器,可以轻松实现上述要求。
采用中兴通讯的32位智能卡加密锁、内置C51虚拟机;自主知识产权的COS系统—FEITIAN COS;提供Keil 试用开发环境;全球唯一硬件ID与管理编码;丰富的虚拟机系统调用和开发接口,支持双精度浮点的多种数学运算;强大的文件系统管理,用户可定义多种数据类型和安全级别;方便、安全的远程升级和模块管理功能;内置计数器。

Rockey6Smart采用的是32位的智能卡芯片,浮点运算能力是目前最快的。能满足多数运算要求。

加密强度 精锐IV采用的是PHILIPS最先进的16位智能卡芯片,其达到了目前全球科技产品领域最高安全级别——EAL5+。深思洛克向用户承诺精锐系列采用的核心智能卡芯片完全能够对抗主要的芯片攻击手段,确保产品安全性。 ROCKEY6 SMART采用的中兴通讯的32位智能卡芯片,该款芯片已经通过国家密码局资质认证的,并为其编号SSX20,2005年7月,SSX20安全芯片获“中国电子信息产业集团公司科学技术进步二等奖”。

飞天的另一款产品ROCKEY4 SMART使用的是ST的进口芯片,该款芯片是通过了国际安全机构检测和认证(EAL 4+和IT SEC认证)。
 

  以上测评数据大多来源各个产品的相关介绍,我对这些数据做一些解读,以供大家参考。

  1、Sentinel SuperPro为比较老的产品,其存储空间最小,加密强度也小,其他产品为较新的产品。

  2、AES为目前公认的最强的单钥加密算法,以目前电脑运算速度,在地球灭亡之日也是无法解开128位的AES密钥。而DES为70年代的算法,超级计算机可以在数天内解开其密钥。

  3、ECC(椭圆曲线)是最新的双钥加密算法,通常认为其比70年代的RSA算法速度快,安全性高。

  4、硬件加密锁的安全性在于其芯片的安全,芯片是不可复制并且具有保密、自毁等功能,目前评测产品中除了飞天锁外所有核心芯片全部来自国外。其中深思洛克精锐IV和飞天ROCKEY 6 Smart使用的是智能卡芯片,其他为单片机芯片。

  5、美国政府基于国家安全的考虑,对中国出口的加密产品在密钥长度上进行了严格限制,例如早期出口至我国的软件产品(如IE等)采用的密钥长度为40位(40位的密钥业余玩家都可以在几天内破解),而通常认为128位的密钥才能满足军用安全的需要。中国军用企业被美国法律禁止购买美国的128位加密产品。

  6、飞天诚信的ROCKEY 6 Smart加密锁使用的是国产的深圳中兴通讯的智能卡芯片,这种加密锁的核心芯片没有进口,因此较适合政府或者军方使用。

  7、32位智能卡芯片的浮点运算速度快于16位的智能卡芯片,对于经常调用RSA等函数有很大好处。