Skip to main content

A Python 3 client for interacting with FIAT-based firmware

Project description

The context for FIAT is somewhat standard for physical implementation, e.g., side-channel attacks. At a (very) high level, it can be modelled as follows

+---------------------------+                 +--------------------------+
|          client           |                 |          target          |
+===========================+                 +==========================+
|                           | ----- req ----> | kernel layer             |
|                           | <---- ack ----- |~~~~~~~~~~~~~~~~~~~~~~~~~~|
|                           |                 | driver layer: SPRs, GPRs |
|                           |                 |~~~~~~~~~~~~~~~~~~~~~~~~~~|
|                           | <-- trigger --- |  board layer: UART, GPIO |
+---------------------------+                 +--------------------------+

in the sense that there are two parties, a client (or user) and a target, who interact synchronously: the client transmits a req(uest) to the target, the target performs some computation, then the target transmits an ack(nowledgement) to the client, FIAT structures the target implementation into

  1. a kernel layer, i.e., the use-case specific functionality of interest,
  2. a board layer, i.e., infrastructure related to the hardware, or board said functionality is executed on,
  3. a driver layer, which uses the board layer to provide an interface to the kernel,

noting the state is reflected by a set of special- and general-purpose registers. The goal is to support both

  • the target implementation, e.g., by providing the board and driver layers, plus a build system, meaning the developer need only configure and implement the kernel layer, and
  • the client implementation, e.g., by providing a library that manages low-level interaction with a given target implementation,

while at least attempting to balance simplicity against flexibility.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libfiat-0.1.2.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libfiat-0.1.2-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file libfiat-0.1.2.tar.gz.

File metadata

  • Download URL: libfiat-0.1.2.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for libfiat-0.1.2.tar.gz
Algorithm Hash digest
SHA256 55e7c8bf37d7fd297392ee762ba5533022d2f6a3cf89afb80890247256ec718c
MD5 6c1e5e297a417bbf62a6dd51257f00b9
BLAKE2b-256 cecaea3d8fca9189504403a6ea95556ae1dd84240232579cdd8f3f018a3514c1

See more details on using hashes here.

File details

Details for the file libfiat-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: libfiat-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for libfiat-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0bf58383ac0dc7ed1d2d405e0ade384babd729b167f9c0d4db65d27e4e9863a0
MD5 33ebcefc0aeceefcdc5297ddad8d25ef
BLAKE2b-256 0238a2980f44220c478b0135bf7b234b287303b39190745adcbc982b85d463af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page