zoukankan      html  css  js  c++  java
  • Linux下基于签名技术的软件保护

    题目要求:

    对于Linux下给定的ELF可执行程序、自行开发签名工具对程序的代码段(Load Segment)首先进行散列,然后对散列值进行签名,签名数据应作为单独的节(Section)附加到原ELF可执行程序的尾部。同时,应开发验证软件并加入操作系统,在运行任何ELF可执行程序前对ELF文件进行验证,若ELF可执行程序没有被签名或者签名验证失败则应停止运行本程序,若签名验证成功则可以正常运行。

    签名后的ELF可执行程序可正常运行在带有签名验证的Linux操作系统上,以及不带有签名验证机制的Linux操作系统上;

    签名后的ELF可执行程序中的签名数据节应可通过readelf与objdump等程序解析得到正确的值;

    运行ELF可执行程序的方式应保持不变,不得通过其他程序运行ELF可执行程序的方式验证签名;

    签名验证所需要的公钥、证书以及验证程序可以预先设置在操作系统中;

    本题不考察选手对加密算法的实现,因此选手可以选择开源的加密软件库进行加密,但是对应强度应不低于RSA2048;

    实现程序主要涉及对ELF可执行格式的理解、Linux操作系统下程序运行的机制的理解,以及对加密算法的运用。

    分析:分为几个步骤。第一步要做的是环境配置,这道题目对环境的要求还是比较严苛的,限定使用C语言和UOS系统。

    第二步:实现对elf文件的程序解析和散列。

    第三步:加入签名程序,对散列值按照一定的规律进行记录,并将签名数据作为单独的节加入到程序末尾

    第四步:加入验证程序,通过各种方法对签名进行验证,证明程序合法且未被篡改。

    第五步:对判断结果进行处理,若判断结果为通过,运行,若判断结果为不通过,则停止运行

  • 相关阅读:
    Push UIViewController with different orientation to previous
    shouldAutoRotate Method Not Called in iOS6
    UIScrollView中图片放大后不居中,或居中后移动有偏差解决办法
    iOS7隐藏状态栏 status Bar
    【struts2】Struts2的系统架构
    【struts2】核心概念
    【struts2】struts2的execAndWait拦截器使用
    【struts2】<s:url>标签
    【sql】CHARINDEX
    【js】在js中加HTML注释标签的原因?
  • 原文地址:https://www.cnblogs.com/zjm15511858030/p/12887483.html
Copyright © 2011-2022 走看看