
| 出版日期:2000-01-10 总期号:891 本年期号:03 |
|
cpu、操作系统与编号语言
飞天诚信软件加密论坛之六 一个软件的加密性是否良好同具体的cpu、操作系统与编程语言是有很大关系的。比如:破解一个在sgi工作站上的程序就比破解pc上的程序要难得多。这是因为人们对sgi工作站的了解要比对pc的了解少得多,而且也很难找到相关的系统资料。这里有个加密方面的摩尔定律:某种技术的普及化程度越高,那么它的加密性就越差。例如我用vb写一个程序,其中调用了大量的activex、com等控件,而且针对mmx、3dnow、sse等做了具体的优化,这样的程序要比完全用vc写的程序的安全性要好得多。因为这完全是一种纯技术上的比拼,而且上面这些方法都不需要加密方面的专家就能实现,一个好的程序员只要多花些心思就能够完成。对pc而言,经历了dos、win31、win95/98、winnt、win2000等一系列操作系统的变迁,在不同平台下编程方式的区别也很大。相对于dos下16位段模式、传统的单任务、线性指令流的编程方式,win32下的消息传递和多任务方式的编程就大大增加了软件的复杂性。如果能够很好地利用这一点,软件的加密性便能够得到很大的提升。 但通常,我们认为软件的加密性与软件的效率是成反比的。这主要是因为大多数的软件开发者都是在软件完成之后才开始考虑加密性的问题,如果在软件编制的初期考虑,这个问题就容易解决多了。比如:我们常说的面向对象编程(oop),大多数人只是在被动的使用oop来编程,而在具体的函数功能实现上往往还是传统的模块化思想。如果我们把每个函数、每个功能都细化成oop,软件的加密强度就会大大地提高,而且软件的可维护性也会很好。使用针对核心的计算函数进行特定cpu的优化(fpu、mmx、3dnow、sse等),不但软件的加密性能提高,而且运算速度也会大大地加快。 软件的加密性同软件的可移植性很难共存。不同的平台、不同的cpu都会产生不同的加密方式,针对特定平台的优化,不但是安全性的要求,更多的是执行效率上的考虑。 |
|||||||||||||||||