`
wildwind
  • 浏览: 100443 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论
阅读更多

   伪编译是计算机系统中针对解释性程序语言源代码保密的一种常用技术,文本格式的源代码经过伪编译成为二进制机器码,并可被特定的程序读懂。伪编译是一种较为简单的数据保密方法,与秘钥加密不同,它不存在关键字形式的加密解秘钥匙;应用程序可以读取二进制码xml数据的任意部分,而无需先将整个文档解密。我们知道,一个xml文档在内存中可表示为一段用unicode格式编码的字符串,而伪编译的基本思路,就是改变一般xml数据明文的特点,用一种新的编码方法将xml文档保存在存储器中。xml数据的伪编译通常有两种方式:

   
基于文本字符串方式,即将整个xml文档简单的看作一字符串,逐个字符进行伪编译。xml的默认字符编码方式是unicode,在iana(互联网数字化专职机构)中注册过编码方案的字符通常都可用unicode表示,因此,我们可以unicode为蓝本,对字符的存储字进行多次组合的反码、补码、加减、循环移位等处理,得到伪编译后的xml文档字符,此时用一般编辑器打开xml目标文档看到的是乱码。举例而言,一个简单的伪编译流程如下图所示:
                                       
<!----><!----><!---->
   
此时接收端只需调用一个反编译模块retransfe),便可直接对伪编译xml文档进行处理。  <o:p></o:p>

  基于xml文档结构方式,此方法通常须结合秘钥加密或字符串伪编译使用。由于xml文档采用标准的树形结构,因此我们可以将xml标记信息部分以索引树格式保存在存储块头部,而将数据部分保存在存储块后部。标记部分可以用一结构数组表示,每个数组元素中应包含标记的内容、位置及对应xml数据的相对地址指针。由于xml标记记载了xml源文档的结构及文字内涵的信息,是人们破读xml文档的主要凭借,并且xml标记部分的长度往往较短(小于xml的数据部分),因此可对xml标记部分进行高强度加密。由于通过前后两个标记元素的相对地址可得到单个标记对中的完整数据内容,所以不仅可对xml数据部分按字符串方式伪编译,也可将每段完整的标记数据内容视为以位为单位的一段二进制串,将此二进制串作为一整体进行反码、补码、加减、循环移位等处理。 
  基于xml文档结构伪编译较字符串伪编译其保密度要高得多,这是因为单纯的字符串伪编译无法改变xml源文档中相同字符的出现频率及编译结果,因此通过明文攻击很容易破译其算法。

  通常伪编译的算法是静态固定的,目标文档的保密性基于保持算法的秘密,我们一般称之为restricted(受限的)算法。此时当算法一旦泄漏,或对于程序的设计者,目标文档是完全透明的。需要指出的是,伪编译也可是动态的,即算法动态生成。举例而言,设反码为0,补码为1,前移为2,后移为3,任何时候不能存在"00""11""23""32"组合,则可以用一数字串如"0120313020"表示一个具体的伪编译算法组合,此数字串的长度越长,保密度越高,实际组合的次序可随机生成。显然,我们也可以将这种动态的伪编译视作一种特殊的对称算法,此时数字串便成了加密解密的秘钥。

  与秘钥算法相比,伪编译的加密强度要低好几个数量级,因此通常仅被用于非密级数据的加密。使用伪编译的一个前提是被加密数据的安全周期很短,由于计算机中软件实现伪编译的加密解密速度极快(没有延时),并且占用系统资源极少,因此对于一些交互频繁,实时性要求较高的应用而言还是具有实用性的。在b2b供应链中,伪编译主要用于后台系统,如库存管理、物料需求管理、运输管理等应用中。

  
系统安全的辅助策略
  为了保护供应链系统中的xml数据安全,除了上述几种主要的加密方法外,合理选择一些其它辅助的安全策略也是非常重要的,以下是关于一些常见策略的介绍。

  进程的访问令牌。通常在供应链系统中,数据的安全主要是通过控制用户口令来实现的,也就是说,只要具有了操作某个进程的用户权限,通过网络中任何一台计算机,都可以经数据库的用户校验访问应用层,这样做固然有其灵活方便的一面,不过,也有可能带来安全方面的隐患。例如,为了防止协同作假,通常销售与采购之间是不能数据交叉的,一个采购计划员在销售部的计算机上发布订单就是违规操作,同样,采购员a在采购员b的计算机上修改订单也是不允许的,然而,仅通过用户口令根本无法保证这点。为此我们可以安装每个客户端时在其计算机上生成唯一的令牌,所谓令牌通常是以用户身份,机器id(如网卡号),所调用应用层进程id号为参数得出的一个客户端秘钥,由于令牌的生成要调用应用层进程,因此客户端的安装过程必须经过服务器检验。客户端每次要调用应用层进程时,都要将该令牌作为身份认证传给该进程,而当其接受应用层的xml数据时,客户端程序也都会校验发送数据的应用层进程id号,只有当其与本地令牌相符才会显示。

  文档的数字签名。在xml数据的使用过程中,为了减小文档冗余,许多dtdschemaxslt文件都以外部形式存在,不仅没有保密,而且在调用过程中很容易被伪造。举例而言,一个200子元素在web页中应该被输出为 200元,现在将格式化的xslt文件稍加修改,输出的格式有可能变成200美元,在整个过程中,肇事者也许都无法接触到xml目标数据,却仍可以造成巨大的破坏。为了防止这种现象出现,我们要求确保这类外部文件在传输过程中没有被篡改,然而,由于许多dtdschemaxslt的调用都是文件内通过uri直接完成的,因此不能采用加密的方法。此时我们通过哈希函数为每个外部文件生成一个摘要(所谓哈希函数是一种单向散列函数,它可以将每个长文件单向映射为唯一定长的短字符串即摘要,将此摘要加密便得到文档的数字签名),可以将该数字签名放在数据库中或网络中,要调用网络中某外部文档时可通过相应的数字签名验证其真实性,由于数字签名较短,因此可以和xml文件一起传递,加密数字签名的秘钥通常保存在数据库中。数字签名的实际应用相当广泛,事实上,对于绝大多数有可能收到伪数据的情况,都可通过数字签名的方法来解决。除了本节所介绍的内容,在前面所说的网络安全协议如sslset中,也都嵌入了数字签名的方法。

  xml数据的合法有效期。通常,任何数据都有一定的生存周期,或者仅在某些时段是对用户可见的。假设某工厂规定每天上午进行采购计划的订单分解,中午审核,下午发送,即当天的订单发送后,相关的物料需求记录便已失效。而第二天要分解的物料需求虽然在当天夜里就已产生,但要到第二天早晨7:00才开始生效,可以被采购计划员进行订单分解。这样做的主要目的是将有关数据的操作限定在指定时段才能执行。通常,大部分的有效期校验都在数据库端进行,不过当xml数据存在于应用层缓冲中时,便需通过xml数据中嵌入的有效时间标记来进行数据过滤。另外,通过在xml数据中加入时间标记(),可以防止数据的二次接收,假设现在我们在应用层对产生的每张订货单都加上生成的时间标记,然后发送到生产计划部进行任务分配,现有订货单a 因为网络问题,向生产计划部发了两遍,由于两张订货单上的时间相同,因此生产计划子系统会自动将后一张过滤掉。

  数据交互的点对点跟踪。客户端通过应用层与数据库联系,数据库对每次连接都应记录流水操作(记录连接的客户名,计算机,时间,所查询的数据等信息),而有些处理不会反映到数据库中,因此数据库中的流水不会对这类操作有所记录。有时为了提高应用系统的性能,我们会在应用层设置数据缓冲,存放最近的常用数据,此时当客户端与应用服务器发生数据请求或交换时,应用层就应负责记录下连接信息,并定时汇总到数据库中。同样,客户端对于每次数据请求与交换也都会在本地留有记录,这样做的目的并不是为了直接将数据加密,而是万一有事故发生后可以通过比较流水来查找问题的症结。如数据库中显示用户a3月份共登陆了30次,而用户a的客户计算机上显示其3pu'huo仅登陆28次,除非用户a有权利在其它计算机上登陆,否则就有可能是其他人恶意假冒身份。

  客户端安装节点控制。通常,每个子系统的客户端安装节点数都是限定的,其限定数可以由管理员在数据库中设置。如某工厂的采购计划员一共有八个,那么,在数据库中就可以设采购订单子系统的安装节点数为八个,每安装一个客户端,数据库中的相应记录减一,当计划员人数改变时,数据库中相应字段的最大值也应改变。

  选择合适的防火墙。这是最基本的安全保护措施,虽然它与我们的开发并没有什么直接的关联,但却是必不可少的一关。不管你在设计过程中关于数据的安全保密考虑得有多周全,如果实际应用时忘了使用防火墙,那么你所作的一切努力就都是白费心机。因为哪怕一个最简单的特洛伊木马也能将你计算机中曾发生过的一切记录下来,并传给远程的偷窥者,要知道,目前绝大多数的企业内部网都有至少一个外部接口,更何况那个监视你计算机端口或投放木马的人很可能就是你身边的某个同事。使用防火墙的主要目的就是为了预防外部计算机对本机端口的侦听,过滤恶意的数据包传递,对不合理的计算机操作及有木马嫌疑的软件行为进行报警。目前市场上较为成熟的防火墙软件有check point公司的firewall1 3.0elron software公司的elron firewall/secure 32os;思科公司的pix firewall 4.1;微软公司的isa(internet security and acceleration) server 2000等。

  有关数据安全的保护策略还有很多,比如与实际操作系统及网络架构、数据库架构的安全策略相结合,本文所列举的仅是冰山一角,有兴趣者可以到 http://ww.security.org/http://www.vertarmy.org/http://www.cns911.com/(中国网络安全响应中心)等网站上了解更多信息。
<!---->
<!---->
分享到:
评论
2 楼 wildwind 2007-04-19  
xml解析测试:http://www-128.ibm.com/developerworks/xml/library/x-databdopt2/
1 楼 wildwind 2007-04-19  
项目要用到xml。做解析和反解析,看了看几个xml的开源工具,因为不会对xml文档直接操作,所以选择了castor,虽然castor的效率不是最好的,但适用是最好的。

相关推荐

    Flash 图片切换(XML数据源).zip

    这个压缩包很可能包含了实现这一功能的所有必要文件,包括Flash源文件(.fla)、编译后的SWF文件、以及XML数据文件。通过Flash的ActionScript编程,开发者可以读取XML文件中的数据,这些数据通常包含图片的URL、描述...

    Android一键反编译

    反编译是将已编译的二进制代码转换回可读性较高的源代码或伪代码的过程。在Android系统中,APK文件包含了应用程序的所有资源、Java字节码(Dalvik字节码或ART字节码)以及相关的元数据。通过反编译,我们可以查看和...

    jadex反编译工具

    在Android应用开发中,APK文件是最终分发给用户的可执行包,包含Java字节码(Dalvik字节码)、资源文件(如XML布局、图片等)、库文件和元数据。由于这些文件通常以二进制格式存在,普通用户和开发者无法直接读取或...

    APK反编译工具

    在Android应用开发中,APK文件是应用程序的打包格式,它包含了所有运行应用程序所需的资源、代码和元数据。然而,由于安全原因,开发者通常会对APK进行混淆和加固处理,以保护源代码不被轻易逆向工程。"APK反编译...

    Hadoop 2.7.4 Windows 64位 编译bin

    7. **Hadoop与Spark集成**:Hadoop 2.7.4编译的bin包可以用来支持Apache Spark,Spark是建立在Hadoop之上的快速数据处理引擎,支持批处理、交互式查询(如Spark SQL)和实时流处理。在Windows上搭建Spark环境时,...

    win10环境下hadoop-3.3.1编译后的源码包

    - 在本地启动Hadoop的伪分布模式进行测试,这需要配置`hadoop-env.sh`、`core-site.xml`、`hdfs-site.xml`等文件。 8. **学习资源**: - Apache Hadoop的官方网站提供了详细的文档和教程。 - Stack Overflow和...

    hadoop_windows编译版本

    【Hadoop Windows 编译版本】是专为在Windows操作系统上运行设计的,它使得开发者和数据分析师在没有Linux环境的情况下也能充分利用Hadoop的强大功能。Hadoop是一个开源框架,主要用于处理和存储大量数据,尤其适合...

    Eclipse中编译运行Hadoop-0.20.1源码

    在Hadoop的配置文件中,如`core-site.xml`和`hdfs-site.xml`,设置伪分布式模式,这意味着Hadoop会在单个节点上模拟分布式环境运行。 在Eclipse中,创建一个新的Java项目,项目名称可以自定义,例如“hadoop-0.20.1...

    安卓伪加密工具.rar

    3. **伪加密**:伪加密是一种代码混淆技术,它并不真正改变数据的含义,而是通过各种手段如随机跳转、代码重排、变量混淆等,使得攻击者难以理解代码逻辑,从而增加破解的难度。 4. **混淆技术**:混淆是通过改变...

    android apk 反编译工具

    5. **查看源代码**: 反编译后的Java类文件可以用JD-GUI或JAD等反编译器以伪代码的形式展示出来,帮助我们理解应用逻辑。 ### 反编译工具 - **Apktool**: 一个强大的工具,用于反编译APK的资源文件,包括XML布局、...

    基于anubis的GNSS数据质量分析经验总结.pptx

    Anubis通过命令行参数运行,用户需要指定输入的XML配置文件、输出日志文件的详细程度等。可以使用`Anubis.exe -X`命令生成默认配置文件,根据需求进行修改。处理结果保存在xtr文件中,利用Python或Perl的绘图脚本...

    apktool APK反编译

    它能够解析APK文件,将其内容解码为原始的XML布局文件、图片资源、字符串表等,并将Dalvik字节码反汇编为Smali代码,这是一种与Java语法类似的伪汇编语言。这使得开发者、安全研究人员或逆向工程师能够查看并修改APK...

    android apk反编译工具

    例如,使用像JD-GUI或Apktool这样的工具,可以将Dalvik字节码反编译为Java伪代码,虽然不完全等同于原始源代码,但能提供足够的理解应用逻辑的线索。 2. **资源解析**:提取APK中的资源文件,如图片、字符串、布局...

    window10下编译的hadoop2.7.2

    7. **安装和使用Hadoop 2.7.2**:编译得到的jar包可以用于在Windows环境中搭建Hadoop伪分布式或完全分布式集群。配置Hadoop的配置文件(如`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`和`yarn-site.xml`)...

    hadoop资料,hadoop基础,Hadoop源代码eclipse编译教程

    5. 编译与运行:使用Eclipse的构建功能编译源码,然后可以通过Hadoop的本地模式或者伪分布式模式运行编译好的二进制文件进行测试。 Hadoop实战部分,尤其是"虚拟多台电脑",意味着你将学习如何在多台虚拟机上搭建...

    win7下编译过的hadoop jar包

    通常,配置Hadoop涉及安装Java运行时环境(JRE)、配置Hadoop的环境变量、修改配置文件如`core-site.xml`, `hdfs-site.xml`, `mapred-site.xml` 和 `yarn-site.xml`,以及正确设置Hadoop的目录结构。这个预编译的JAR...

    Hadoop伪分布式集群环境搭建

    首先将数据复制到HDFS,然后编写并编译WordCount程序,最后运行MapReduce作业。 8. **停止Hadoop**:当不再使用Hadoop时,可以通过`sbin/stop-yarn.sh`和`sbin/stop-dfs.sh`命令关闭服务。 以上就是Hadoop伪分布式...

Global site tag (gtag.js) - Google Analytics