安全知识 当前各种加密方案完全解析
作者: 出处:yesky 更新时间:2007-10-15 责任编辑:allen
 
 

  加密方案涉及的主要技术

  1.外壳加密

  “外壳”这个词估计是中国人独创的,我觉得比较生动贴切,它的意思就是给可执行的文件加上一个外壳。用户执行的实际上是这个外壳的程序,而这个外壳程序负责把用户原来的程序在内存中解开压缩,并把控制权交还给解开后的真正的程序,由于一切工作都是在内存中运行,用户根本不知道也不需要知道其运行过程,并且对执行速度没有什么影响。
相关文章链接
"网管知识 网吧的技术漏洞应如何封杀?
企业选择反间谍软件程序需注意10个要点

  如果在外壳程序中加入对软件锁或钥匙盘的验证部分,它就是我们所说的外壳加密了。其实外壳加密的作用还不止于此,在Internet上面有很多程序是专门为加壳而设计的,它对程序进行压缩或根本不压缩,它的主要特点在于反跟踪,加密代码和数据,保护你的程序数据的完整性。如果你不希望你的程序代码被黑客修改,如果你的程序不希望被人跟踪调试,如果你的算法程序不想被别人静态分析,这种外壳程序就是为你设计的。

  需要注意的是,有很多网上免费的外壳加密程序兼容性很差,加密后的程序在某些计算机或某些操作系统下无法运行。

  2.序列号加密中的数学算法

  大多数软件加密本身的实现都是一种编程上的技巧。但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重越来越大了。

  我们先来看看在因特网上大行其道的序列号加密的工作原理。当用户从网络上下载某个Shareware—共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用。注册过程一般是用户把自己的私人信息(一般主要指名字)连同信用卡号码告诉给软件公司,软件公司会根据用户的信息计算出一个序列码出来,在用户得到这个序列码后,按照注册需要的步骤在软件中输入注册信息和注册码,其注册信息的合法性由软件验证通过后,软件就会取消掉本身的各种限制。

  软件验证序列号的合法性过程,其实就是验证用户名与序列号之间的换算关系是否正确的过程。现有的序列号加密算法大多是软件开发者自行设计的,大部分相当简单。而且有些算法作者虽然下了很大的工夫,但效果往往达不到它所希望的结果。其实现在有很多现成的加密算法可以使用,如RSADES、MD4、MD5……只不过这些算法是为了加密密文或密码用的,同序列号加密多少有些不同,如果希望使用这些加密算法的话多少需要动点脑筋。我在这里试举一例,希望有抛砖引玉的作用:

  1)在软件程序中有一段加密过的密文S;

  2)密钥=F(用户名称,序列号); (用上面的二元算法得到密钥)

  3)明文D=F-DES(密文S,密钥); (用得到的密钥来解密密文得到明文D)

  4)CRC=F-CRC(明文D); (对得到的明文用各种CRC统计)

  5)检查CRC是否正确,最好多设计几种CRC算法,检查多个CRC结果是否都正确。

  用这种方法,在没有一个已知正确的序列号的情况下是永远推算不出正确的序列号的。

  3.解释、编译与反编译

  如果你设计了一种不希望别人知道的特有的算法,所采用的加密手段往往同你的编程语言有很大的关系。对于解释语言与编译语言所编制出来的代码安全性上而言,可以说是各有优缺点。解释语言有一个致命的弱点,那就是解释语言的程序代码都是以伪码的方式存放的,一旦被人找到了伪码与源码之间的对应关系,就很容易做出一个反编译器出来,你的源程序等于被公开了一样。而编译语言因为直接把用户程序编译成机器码,再经过优化程序的优化,很难从程序返回到你的源程序的状态,但对于熟悉汇编语言的解密者来说,也很容易通过跟踪你的代码来确定某些代码的用途。

  根据我对各种具有反编译器的语言的了解,Visual Basic 5.0以上版本和C语言还没有反编译器。我的建议是:

  1)千万不能编制功能强大的子程序,如果你程序的一个子程序就能印钱的话,我就不需要看别的了。

  2)多用全局变量,最好是全局的临时变量,这个变量在每个子程序中的用法都不一样,程序结构可能不太好,但能造成牵一发而动全身的效果。

  3)如果能用C++的话,尽量用C++来编程,最好把你的算法全用类来实现,哪怕是一个加法减法也给它定义个类,再从子类上面继承继承再继承。

  4)编译后的程序不能小于500kB。

  4.CPU、操作系统与编程语言

  一个软件的加密性是否良好同具体的CPU、操作系统与编程语言是有很大关系的。这里有个加密方面的摩尔定律,某种技术的普及化程度越高,那么它的加密性就越差。例如我用VB写一个程序,其中调用了大量的ActiveX、COM等控件,而且针对MMX、3DNow、SSE……做了具体的优化。这样的程序比完全用VC写的程序的安全性要好得多,因为这完全是一种纯技术上的比拼,如果某个黑客对VB,ActiveX,COM的技术及内部工作原理十分清楚的话,可能破解这种程序要比用VC编写的程序容易许多。如果说软件的加密性同软件的执行效率是不冲突的话,那么软件的加密性同软件的可移植性就很难共存了,因为你不可能希望一个能锁住所有门的锁有很好的安全性。不同的平台、不同的CPU都会产生不同的加密方式,但软件必然是在特定的CPU和操作系统平台上执行,针对特定平台的优化,不但是安全性的要求,更多的是执行效率上的考虑

  我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。

更多天网防火墙使用技巧和教程 点击进入天网防火墙软件门户
使用中出现问题不知道怎么解决?去天网防火墙软件社区 求助吧

 

 
     
 
 
后退<<上一页 继续>>下一页
[上一页][第1页][第2页][第3页][第4页][第5页][下一页]
 
内容导航  
第1页安全知识 当前各种加密.. 第2页安全知识 当前各种加密..
第3页安全知识 当前各种加密.. 第4页安全知识 当前各种加密..
第5页天网防火墙
上一篇 : Skype开发移动Internet电.. 下一篇天网Maze2007官方使用指..
 
  您要为所发表的言论的后果负责,请各位遵纪守法并注意文明用语
标题:  

[ 关于本站 ] [ 广告服务 ] [ 商务合作 ] [ 联系我们 ] [ 合作伙伴 ] [ 法律顾问 ] [ 网站地图 ]
千橡公司 京ICP证041489号 Copyright (c) 1997-2007 All Right Reserved.