A little NanoApp integration of PQ primitives on a Nano. The selected algorithme are NIST finalists:
- kyber (as the sole lattice KEM remaining)
- falcon (the lowest bandwidth/storage candidate)
The syntax of APDU (byte string to be send to Nano) are:
FALCON Keygen:
FALCON Sign:
FALCON Verify:
KYBER Keygen:
KYBER Encaps:
KYBER Decaps:
pip3 install "ledgercomm[hid]"
- compile inside docker the root of app :
sudo docker run --rm -ti -v "/dev/bus/usb:/dev/bus/usb" -v "$(realpath .):/app" --privileged ledger-app-builder:latest
BOLOS_SDK=$NANOSP_SDK make clean
BOLOS_SDK=$NANOSP_SDK make
exit
cp bin/app.hex pkg/nanosp/app_nanosp.hex
ledgerctl install -f nanosp.json
- falcon low footprint: https://falcon-sign.info/Falcon-impl-20211101.zip
- pqm4 :https://github.com/mupq/pqm4