Skip to content

luhsra/linux-kpac

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linux kernel with kpac extensions
=================================

This repository contains the source code of the Linux kernel with kpac
extensions described in "KPAC: Efficient Emulation of the ARM Pointer
Authentication Instructions" [1].

The core kpac functionality is implemented in kernel/kpac.c.  The various
hashing backends are implemented as header files in include/linux/kpac/ and are
included through include/linux/kpac_backend.h.  The types are defined separately
in include/linux/kpac_types.h.

The Kconfig database is extended with following configuration options:

+- Security options
   +- Enable software-emulated pointer authentication       [bool]
      +- Userspace mapping address                          [hex]
      +- Pointer authentication backend                     [choice]
         +- None (DEBUG)
         +- xxHash hashing algorithm
         +- ARMv8.3 QARMA block cipher
         +- PAC-PL backend on an FPGA

The extension is configured at runtime by writing into the debugfs directory
tree /sys/kernel/debug/kpac/:

+- kpac/
   +- addr               [Virtual address of the kpac page (read-only)]
   +- backend            [Hashing algorithm (read-only)]
   +- nr_aut             [Counter of AUT requests (read-only)]
   +- nr_aut             [Counter of PAC requests (read-only)]
   +- 0/
      +- cpumask         [CPUs served by CPU 0]
   +- 1/
      +- cpumask         [CPUs served by CPU 1]

   ...

   +- N/
      +- cpumask         [CPUs served by CPU N]

-----------

[1] https://sra.uni-hannover.de/Publications/2024/ostapyshyn_24_emsoft.pdf

About

Linux with kpac extensions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.5%
  • Assembly 0.8%
  • Shell 0.3%
  • Makefile 0.2%
  • Python 0.1%
  • Perl 0.1%