GithubHelp home page GithubHelp logo

pancanaka / linux-elf-sv-docs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nuaa-watchdog/linux-elf-sv-docs

0.0 0.0 0.0 15.3 MB

📗 Documents of Linux ELF binary signature verification solution.

Home Page: https://app.gitbook.com/@mrdrivingduck/s/linux-elf-sv/

License: MIT License

linux-elf-sv-docs's Introduction

Linux ELF 文件数据完整性保护系统

作者

张靖棠 (@mrdrivingduck),南京航空航天大学,计算机科学与技术学院,网络空间安全专业

宗华 (@zonghuaxiansheng),**科学技术大学,计算机科学与技术学院,计算机技术专业

简介

本解决方案旨在通过密码学技术,对 (包括但不限于) Intel® x86 平台下基于 Linux 内核的操作系统中的 ELF 文件实现数据完整性保护。方案主要分为两个部分:

  1. 用户空间下,基于信息摘要算法和非对称加密算法的 ELF 文件数字签名程序
  2. 内核空间下,基于内核密钥保留服务的 ELF 文件数据完整性验证模块

上述两部分全部由 GNU C 语言实现,另有少量用于审计、测试或批处理的 Python / shell 脚本文件。所有代码将在 MIT License 的许可下开源。

文档的后续内容主要介绍这两个部分的实现原理,以及使用说明。

ELF 文件数字签名程序

该程序主要包含三个主要工作:

  • 对于 ELF 文件执行时所需要使用的指令、数据等信息,分别生成固定长度的 信息摘要
  • 从 X.509 格式的证书中读取公私钥,根据摘要内容计算 数字签名
  • 将数字签名附加到原 ELF 文件中,作为 ELF 完整性的验证信息

{% hint style="info" %} 数字签名的附加不能破坏原 ELF 文件的格式,尤其不能破坏会被操作系统使用的关键执行信息 (指令、数据等)。对于一个不检验 ELF 文件完整性的操作系统,也能够正常、正确地执行这个 ELF 文件。 {% endhint %}

代码仓库地址:

ELF 文件数据完整性验证内核模块

当操作系统执行一个 ELF 文件时,内核首先将 ELF 文件载入内存,解析出文件中的 被保护信息 (代码、数据等) 和对应的数字签名。内核计算出被保护信息的摘要,再使用内核信任的内置密钥对数字签名进行解密,比对解密后的签名与信息摘要是否完全一致。如果数据完全一致,说明 ELF 文件的被保护信息未经篡改,内核继续完成 ELF 文件开始执行前的准备工作;如果数据不一致,说明 ELF 文件遭到篡改,为了维护操作系统的安全性,内核拒绝继续执行这个 ELF 文件。

{% hint style="info" %} 内核所进行的上述动作对用户来说完全透明。用户在输入执行 ELF 文件的命令后,不需要任何额外的操作。最终的执行结果只可能为以下两种:

  1. 内核正常执行 ELF 文件,输出预期结果
  2. 内核拒绝执行 ELF 文件,并显示错误原因 {% endhint %}

代码仓库地址:

设计原理与文档

当前文档由 GitHub + GitBook 共同管理。

代码仓库地址:

linux-elf-sv-docs's People

Contributors

mrdrivingduck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.