Skip to main content

tool to perform differential fault analysis attacks (DFA) against AES

Project description

phoenixAES: a tool to perform differential fault analysis attacks (DFA) against AES

Currently phoenixAES contains the following ciphers and fault models:

See https://blog.quarkslab.com/differential-fault-analysis-on-white-box-aes-implementations.html for more background.

Installation

There is no dependencies, it requires only Python 3.

python3 -m pip install phoenixAES

Usage

It takes a file of recorded outputs, optionally preceded by inputs (which will be ignored). First record must be with the correct output, to be used as reference.
E.g. for AES:

#!/usr/bin/env python3
import phoenixAES

with open('tracefile', 'wb') as t:
    t.write("""
74657374746573747465737474657374 BF9B06F11DF478145B8300FE440B0D06
74657374746573747465737474657374 BF9BDDF11D527814568300FE440B0DFA
74657374746573747465737474657374 BF9BF9F11DAC78145F8300FE440B0D67
74657374746573747465737474657374 BF9BF0F11DBB78140C8300FE440B0DEE
74657374746573747465737474657374 BF9BF9F11DAC78145F8300FE440B0D67
74657374746573747465737474657374 BF9B69F11DBD7814E68300FE440B0DAE
74657374746573747465737474657374 BF9BF0F11DBB78140C8300FE440B0DEE
74657374746573747465737474657374 BF9B90F11D4178149D8300FE440B0DE2
74657374746573747465737474657374 BF9BCFF11D0478140E8300FE440B0D28
74657374746573747465737474657374 FD9B06F11DF478E15B831AFE44C40D06
74657374746573747465737474657374 BA9B06F11DF4787B5B83E8FE44020D06
74657374746573747465737474657374 579B06F11DF478565B8364FE446F0D06
74657374746573747465737474657374 579B06F11DF478565B8364FE446F0D06
74657374746573747465737474657374 BF9B065C1DF4B6145B1800FE9E0B0D06
74657374746573747465737474657374 BF9B065C1DF4B6145B1800FE9E0B0D06
74657374746573747465737474657374 BF9B06251DF454145BC200FE060B0D06
74657374746573747465737474657374 BF9B06941DF4C3145BFB00FED20B0D06
74657374746573747465737474657374 BF9B12F11D977814DD8300FE440B0D21
74657374746573747465737474657374 BF9B90F11D4178149D8300FE440B0DE2
74657374746573747465737474657374 BF9BCFF11D0478140E8300FE440B0D28
74657374746573747465737474657374 BF9BDDF11D527814568300FE440B0DFA
74657374746573747465737474657374 BFFB06F1E2F478145B8300AB440B7906
74657374746573747465737474657374 BF5D06F142F478145B830049440B7306
""".encode('utf8'))

phoenixAES.crack_file('tracefile')

After ~50 ms:

Last round key #N found:
D014F9A8C9EE2589E13F0CC8B6630CA6

For two single faults in round 8:

#!/usr/bin/env python3
import phoenixAES

with open("r8faults", "w") as f:
    f.write("bf9b06f11df478145b8300fe440b0d06\n")
    f.write("fdfbf95ce2acb6e15f181aab9ec47967\n")
    f.write("ba5df02542bb547b0cc2e849060273ee\n")
phoenixAES.convert_r8faults_file("r8faults", "r9faults")
phoenixAES.crack_file("r9faults")

After ~50 ms:

Last round key #N found:
D014F9A8C9EE2589E13F0CC8B6630CA6

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

phoenixAES-0.0.5.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

phoenixAES-0.0.5-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file phoenixAES-0.0.5.tar.gz.

File metadata

  • Download URL: phoenixAES-0.0.5.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for phoenixAES-0.0.5.tar.gz
Algorithm Hash digest
SHA256 a75d487b3ce7b18597b11a2b56447bfbe6c9d9f99db2b6b5fb597bb4d7d71af1
MD5 86de6611c3b7a2a7ad2496070cee1067
BLAKE2b-256 afa17c4f5cb4426421498686ebf6f8d67b19dd658ba41dae0ca47a4feba3e1df

See more details on using hashes here.

File details

Details for the file phoenixAES-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: phoenixAES-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for phoenixAES-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 61d29ca7a64739965dc9c976277f8caea2db663e4783135c54f45bee2720585a
MD5 77f1e886771dae9796dd413c56980529
BLAKE2b-256 24ef49d31a8b0c2e25bfef9f1134425851994388d44f0639744899b683e9e4ad

See more details on using hashes here.

Supported by

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