ARM-software/PAF
GitHub: ARM-software/PAF
ARM官方的物理攻击学习框架,用于研究故障注入和侧信道攻击原理并帮助加固代码防御能力。
Stars: 26 | Forks: 6
..
SPDX-FileCopyrightText: Copyright 2021,2022,2024,2025 Arm Limited and/or its
affiliates
SPDX-License-Identifier: Apache-2.0
根据 Apache 许可证 2.0 版(“许可证”)获得许可;
除非遵守许可证,否则您不得使用此文件。
您可以在以下网址获取许可证副本:
```
http://www.apache.org/licenses/LICENSE-2.0
```
除非适用法律要求或书面同意,否则根据许可证分发的软件
均按“原样”提供,
不附带任何明示或暗示的担保或条件。
请参阅许可证以了解许可证下的特定语言管理权限和
限制。
此文件是 PAF(Physical Attack Framework)的一部分。
|BadgeLicence| |CIUbuntu2204| |CIUbuntu2404| |CImacOS14| |CImacOS15|
.. |BadgeLicence| image:: https://img.shields.io/github/license/ARM-software/PAF
:alt: PAF 许可证
:target: https://github.com/ARM-software/PAF/blob/main/LICENSE.txt
.. |CIUbuntu2204| image:: https://github.com/ARM-software/PAF/actions/workflows/ubuntu-2204.yml/badge.svg
:alt: Ubuntu 22.04 上的最新构建状态 (x86 & arm 架构)
:target: https://github.com/ARM-software/PAF/actions/workflows/ubuntu-2204.yml
.. |CIUbuntu2404| image:: https://github.com/ARM-software/PAF/actions/workflows/ubuntu-2404.yml/badge.svg
:alt: Ubuntu 24.04 上的最新构建状态 (x86 & arm 架构)
:target: https://github.com/ARM-software/PAF/actions/workflows/ubuntu-2404.yml
.. |CImacOS14| image:: https://github.com/ARM-software/PAF/actions/workflows/macos-14.yml/badge.svg
:alt: macOS Sonoma 上的最新构建状态 (arm 架构)
:target: https://github.com/ARM-software/PAF/actions/workflows/macos-14.yml
.. |CImacOS15| image:: https://github.com/ARM-software/PAF/actions/workflows/macos-15.yml/badge.svg
:alt: macOS Sequoia 上的最新构建状态 (arm 架构)
# :target: https://github.com/ARM-software/PAF/actions/workflows/macos-15.yml
# PAF,Physical Attack Framework
欢迎使用 PAF!PAF 是一套工具和库,用于学习物理攻击(例如故障注入和侧信道攻击),并有望帮助加强代码库以抵御这些威胁。
# 需求
要从源代码构建 PAF,您需要一个兼容 C++17 的 C++ 编译器,
以及 `CMake `_。
PAF 的大量工具假定您至少可以访问 Tarmac traces。这些是程序执行的详细追踪,它们由许多 Arm 产品生成,例如 CPU 的软件模型(例如 FastModel)。
PAF 具备直接驱动 FastModel 并执行多项分析的能力。为了使用此功能,您需要拥有访问 `FastModel `_ 的权限
# 构建
构建 PAF 最简单的方法是:
.. code-block:: bash
$ cmake -S . -B build
$ cmake --build build
一种稍微进阶的构建和测试 PAF 的方法是:使用 ``clang`` 编译器、``Ninja`` 构建系统,在带有调试信息的发布模式下构建,并生成 ``compile_commands.json`` 文件,如下所示:
.. code-block:: bash
$ CC=clang CXX=clang++ cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
$ ln -s build/compile_commands.json .
$ ninja -C build/
$ ninja -C build/ check
# 测试
PAF 包含单元测试和应用程序级测试。单元测试可以使用 ``test`` 目标执行,无需外部依赖。
应用程序级测试则完全不同,因为它需要访问交叉编译器和 FastModel。如果您有权使用它们,``CMake`` 可以使用以下命令为您设置测试环境:
.. code-block:: bash
$ CC=clang CXX=clang++ cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
-DFVP_MODEL_DIR:PATH=/opt/FastModels/11.12/FVP_MPS2_Cortex-M3_CC312/models/Linux64_GCC-6.4/FVP_MPS2_Cortex-M3_CC312 \
-DFVP_PLUGINS_DIR:PATH=/opt/FastModels/11.12/FastModelsPortfolio_11.12/plugins/Linux64_GCC-6.4 \
-DARM_GCC_INSTALL_DIR:PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major
# 使用与文档
有关 PAF 及其提供的工具和如何使用它们的更多信息,请参阅 `主文档 `_。
# 许可证
PAF 在 `Apache v2.0 许可证 `_ 下分发。
# 第三方软件
PAF 使用了未包含在 PAF 源代码存储库中的第三方软件。PAF 的配置和构建系统 `CMake` 会自动下载、配置和构建这些第三方软件。由于每个第三方软件都有其特定的许可证,您必须检查它们的许可证是否符合您的特定要求。
PAF 所需的第三方软件包括:
- `tarmac-trace-utilities `_,
在 https://github.com/ARM-software/tarmac-trace-utilities/blob/main/LICENSE.txt 下获得许可,
该库为 PAF 提供了高效处理 tarmac traces 的基础。
- `pyyaml `_、
`pyelftools `_ 和
`tqdm `_,被 ``run-model.py`` 及其辅助工具使用。
- `GoogleTest `_,
在 https://github.com/google/googletest/blob/main/LICENSE 下获得许可,
是 PAF 使用的单元测试框架。
- `numpy `_,在 https://github.com/numpy/numpy/blob/main/LICENSE.txt 下获得许可,
被某些单元测试使用。
其他可以通过 PAF 的配置和构建系统选择性地与 PAF 一起使用的第三方软件:
- `GTKWave `_:PAF 使用 ``fstapi`` 来支持 ``fst`` 文件,如同 ``GTKWave`` 在 ``src/helpers/fst`` 文件夹中发布的那样。引用 GTKWave 的 `LICENSE.txt` 文件中的话:
``src/helpers`` 中的转储文件处理源代码在 MIT 许可证下授权,以促进更广泛的重用。
默认情况下,CMake 会使用 `fstapi`。但是,可以在配置时通过传递 ``-DWITH_GTKWAVE_FST_SUPPORT:BOOL=OFF`` 来禁用它,以放弃对 `fst` 文件格式的支持。
# 安全
要报告此项目中的安全漏洞,请遵循 `安全策略 `_ 中的指导。
# 反馈、贡献与支持
请使用与此存储库关联的 GitHub issue 跟踪器提供反馈。
非常欢迎代码贡献。请确保它们遵循 PAF 其余代码中使用的风格,并通过 GitHub pull requests 提交。
标签:ARM架构, Bash脚本, CISA项目, CTF训练, 侧信道分析, 信息安全教学, 密码学攻击, 嵌入式安全, 开源安全工具, 故障注入攻击, 旁路攻击, 漏洞分析, 物理攻击框架, 白盒密码学, 硬件安全, 网络安全, 网络安全教育, 芯片安全, 路径探测, 逆向工具, 逆向工程平台, 隐私保护