Change Log#
- V6.0.0
- Major Updates:
Move hardware folder to firmware
Move hardware/victims/firmware to firmware/mcu
Move target FPGA firmware to firmware/fpga
Move capture board firmware to newaetech/chipwhisperer-capture
Reduce the size of the repo (~1/5th the size of 5.7.0)
Revamp Windows installer to use WSL
Revamp documentation, move hardware docs to https://chipwhisperer.readthedocs.io/en/latest/
Move lesser used HALs to firmware/mcu/hal/chipwhisperer-fw-extra submodule
Move capture firmware out of Python files
Move example traces to newaetech/chipwhisperer-traces
Change from setup.py to pyproject.toml
GPIO/Glitch API refactor by @DJShepherd
Improved IO/memory performance by @DJShepherd
- New Features:
Add ChipWhisperer-Husky-Plus support
Add save/load of GlitchController results
Add parity and stopbits settings for serial
Add scope.io.nrst_drive_poweroff to control behaviour of nRST pin when target_pwr=False
Add XON/XOFF support
Add SSV2 support to FPGAs
Determine FPGA register addresses via verilog source files
Add sca204 hardware ECC labs
Add sca205 software ECC labs
Add multi USART support
Add CW340 support
Add CW312T-XC7A35 support
Add option to invert glitch/trigger MCX on Husky
Add pipelined AES FPGA code
Print settings changed by scope.default_setup()
Improve Husky UART triggering
Add settings for controlling capture board error LEDs
Add firmware erase call that doesn’t require programming FPGA (quick_firmware_erase())
Add parameters to GlitchController.calc() to exclude params and sort by result
Add scope.vglitch_reset()
Add ability to get/set XADC VCC alarm limits
Add firmware erase ability to firmware installer
Add FPGA initb read method
numicro8051 support by @nikitalita
Greatly improved SAD trigger performance on Husky (512 samples @ 200MHz)
Improved SAD interface for Husky
Added SAD explorer
Added new demo for [Husky SAD](newaetech/chipwhisperer-jupyter)
- Fixes:
Fix inconsistent phase between target and ADC clock when using extclk source
Check pointers for simpleserial_put
Fix -j flag on makefiles
Improve test_husky.py
Add delay to default_setup() for clocks to settle
Fix firmware build for make 4.4+
Many fixes for Husky clock generation
Remove SAM4S loop optimizations
Fix hex_decode call by @ogianatiempo
Minimize Husky target clock drop when changing ADC clock and add warning
Improve STM32 programming speed
Increase reliability of SAM4S programmer
Fix issue with Husky long stream captures on Linux
Fix issues with CW305 bitstream build
Remove caddr_t from SAM4S/STM32 builds, fixes build on some GCC versions
CW310 UART fixes by @nasahlpa
Fix udev rule reference by @marx-nick
- V5.7.0
- New Features:
Automatically setup husky_userio pins for MPSSE when enable_MPSSE() called
Add SAM4S bootloader support - allows programming SAM4S target boards
Add SAM4S target HAL
Add openocd/run_openocd.sh for easier JTAG/SWD programming and debugging
Add openocd/fe310.cfg to allow fe310 programming via MPSSE
Common build system for capture boards/cw305/cw310
Add context manager support to ChipWhisperer (thanks @wallento !)
Add cglitch_setup(), vglitch_setup(), and glitch_disable() to scopes for easy glitch setup/disable.
Add cw.list_devices() to list attached NewAE devices
Add scope.reset_clock_phase() for CWNano
New and improved GlitchController with glitch map support
Full Husky support for SCA101 and Fault101
Improve glitch performance on replacement CWNano glitch transistor
- Fixes:
Fix MPSSE timeout on CWPro
Change logger to use temp files (Thanks @S-Vaes !)
Fix dict_repr for nano ADC
Fix f3 linkerscript stack location
Correctly set openocd srst signal pin
Identify srst signal as push pull
Add glitch/clock AUX out for Pro
Fix baud rate for simpleserial version not being applied to non simpleserial firmware
Fix FE310 baud rate not being set to 38400bps @ 7.37MHz
- V5.6.1
- New Features:
ChipWhisperer-Husky and CW310 Bergen Board support
Add scope.fw_version_str
Switch from pyusb to libusb1 - deprecates libusb0.dll on Windows
Add as_int parameter to scope.get_last_trace() to return traces as integers
Add driver detection for Windows
Add force and bitstream option to cw.scope()
Improve 50-naeusb.rules
Add SimpleSerial 2.1 and deprecate SimpleSerial 2.0
Add ChipWhisperer version check.
Add SAM3U firmware feature list and checks
Add common interface for USB scopes/targets
Add ability to connect to scope via hardware location
Add debugger support (via OpenOCD) to Lite, Pro, Nano, and Husky
Add GUI based Windows firmware installer
Add linting, automatic hardware testing, and firmware building actions
Add FW_CHANGES.txt
- Fixes:
Fix SS_VER_1_X and XMega simplserial-rsa
Fix SSV2 unstuff data for >30 zeros
Fix AVR lock bits read
Fix Nano connect status
Fix Nano scope.adc.clk_src not being changeable.
Explicit memory ordering in bootloader-glitch
Cast analyzer CPA calculations to long double to avoid precision issues in large projects
Fix Pro screen getting stuck when capturing
Checkout master branch for ChipWhisperer-Jupyter in installer
Fix timeout length on simpleserial reads
More versionadded/versionchanged for docs
Fix FPGA target.dis()
Fix DCM lock on glitch - caused issues with enable_only glitching (most noticable at high frequencies)
Fix TraceWhisperer verilog files not being installed in user mode
Fix issues with unintended double glitch on CWLite and Pro
Fix simple_PGE when key is numpy array
Don’t try calculating pge if known_key not set
No longer overwrite builtins.bytearray
Fix memory numbers in STM32F3 linkerscript
Revert to old NewAE rules
- Firmware:
CWLite: 0.62.0
CWNano: 0.62.0
CWPro : 1.62.0
CW305 : 0.52.0
CWHusky: 1.2.0
CWBergen: 1.2.0
- V5.5
- New Features:
Re-add SAKURA-G support
TraceWhisperer cleanup + convenience functions
ChipWhisperer firmware auto_program()
Add segmented capture to ChipWhisperer, allowing for super fast capture
Add simpleserial-ecc
New demo: uECC attack
New ChipWhisperer Firmware: CDC serial ports for UART communication (i.e. communication with `”COMX”`/`”/dev/ttyACMX”`
New target class: SimpleSerial2_CDC with automatic serial port detection (no need to figure out `”COMX”`/`”/dev/ttyACMX”`)
Add simpleserial documentation (thanks @coastalwhite !)
Add new simpleserial commands to get available commands
Add maskedAES for more targets (thanks @jmichelp !)
Add better method for loading new CW bitstream
Add avr-gcc and arm-gcc to installer (optional)
- Fixes:
Add CWPro aux_out
Update ESP32 build for newer build system version
Reset Xmega if programming fails (should prevent programming from immediately failing next call)
Setup script improvements
Fix outdated 99-rules.newae
Fix voltage range on CW305 VCCINT
Fix STM32F4 HW floating point (thanks @mcsmonk !)
Fix Nano crash when >128 bytes read from USART
VM now supports uploading firmware to chipwhisperer
Fix pipe error caused by interrupting USB communications
- V5.4
- New Features:
AES MixColumns Attack and Variable Vector KTP (requires scared/estraces)
Update FW for USB devices - auto configure as WinUSB
Update FW to increase serial buffer
Support both libusb0 and libusb1
Add automated plotting functions for analyzer plots
Add TraceWhisperer
Improve CW305 AES implementation
Add cw.plot()
Add scope.sn
Major CWNano speedup
Analyzer autoplots
- Add SimpleSerialV2 (not used by default) binary serial protocol
Use 230400bps for SSV2 baud
Major capture speedup when using SSV2
New experiment/target class: CW305 HW ECC
Add CW305 register name autodetect
Add glitch arm timing of “no_glitch” (moderate speedup for SSV2)
- Fixes:
target.baud not being reset correctly after programming STM32
Turn of STM32 HW floating point
- V5.3.1
- New Features:
New CWPro firmware - Add in_waiting_tx for Pro
Public target.in_waiting_tx()
Add SAMFWLoader CWPro support
Add CWPro USB binary
- Fixes:
Fix TIO state read on CWPro
Fix tx buffer overrun on CWPro
- V5.3.0
- New Features:
New CW305 USB firmware
New CWLite/CWNano USB firmware
Major tutorial overhaul - Tutorials now built for https://learn.chipwhisperer.io - Includes both remastered and all new tutorials - Add prerecorded traces to power analysis labs
New tutorials (SCA101): - Lab 3_1 - Recovering Data from a Single Bit - Lab 6_4 - Jittery Triggering on UART
New tutorials (Fault101): - Voltage glitch versions of clock glitch tutorials
New tutorials (SCA201): - Dynamic Time Warp resync - Hardware AES lab
New tutorials (Fault201): - Introduction to AES Fault Attacks - AES Loop Skip Fault attack - 1.5 Round AES Attack - DFA Attack Against Final MixColumns
New hardware documentation at https://rtfm.newae.com
Add documented way to read state of TIO1-4 on Lite/Pro
Add glitch controller for improved glitch recording
Add API reprogramming supports for Nano and CW305
Add T-Table enc/dec leakage models
Add __array__() function to IndividualIterable (allows conversion to numpy array)
Add tqdm to preprocessing
Add batch run for CW305 for fast capture
Add SPI Programming for CW305
Add default FPGA programming for CW305
- Fixes:
Make Nano serial and capture more reliable
Improve Nano reliablity in VM
Build fixes for STM32F3 and STM32L5
Greatly improved reliablity OpenADC long offset captures
Make target.SimpleSerial more robust
Fix tx buffer overrun
- V5.2.0
- New Features:
CW-Lite/Pro: Increase maximum glitch repeat to 8192
CW-Lite/Pro: Add nRESET as trigger input
Targets: Add RT1062 HAL (NXP Cross-over MCU)
Targets: Add EFR32MG21 HAL (SiLabs with ‘secure element’)
Targets: Add FE310 HAL (RISC-V)
Targets: Add STM32L5 HAL (NXP M33)
Add option to allow more specific hardware AES engine triggers
Add SAD section to SPA_1
Small fixes to SPA_2
SimpleSerial additions: - simpleserial_read_witherrors - Define return for simpleserial_wait_ack - simpleserial_last_sent - simpleserial_last_read
- Fixes:
CW-Lite/Pro: Fix glitch logic which was not correctly gating output - start and end edge were slightly off
Fix HW float being used on STM32F3 instead of software float - This also fixes a crash related to the wrong C library being used on older (pre q2-2018) gcc versions
Allow STM32F3 to use different input clock speeds (was previously fixed to 7.37MHz)
Fix STM32F3 programming timeout
Expand tests
Add ack option to capture_trace()
Fix project not saving correctly when multiple segments used
Code cleanup
Various other fixes
- V5.1.3
Windows installer (released)
Improvements to Jupyter notebooks - use real-time plotting during capture, various small fixes
New LPC1114 Jupyter tutorial
Add PSOC62 HAL, fix NRF52840 HAL and SAM4L HAL
Add CW-Nano firmware source + schematics
- V5.1.2:
Windows installer
Fix PGE calculation and known key highlighting for attacks which don’t target the base key.
- V5.1.1:
Fix STM32F baud setting
Update Jupyter requirements to have everything needed to run all tutorials
Fix chipwhisperer autodetect when nothing attached
- V5.1.0:
- Tutorial Updates:
New tutorial: Fault_5-RSA_Fault_Attack
New tutorial: Fault_2-Introduction_to_Vcc_Glitch_Attacks
New tutorial: PA_DPA_3-AES_DPA_Attack
New tutorial: PA_HW_Pro_1 added
New tutorial: !!Introduction_to_Jupyter!!
Fault_4 updated for new API
Tutorials now list supported hardware at the top of the tutorial
Improved support for non-CWLITEARM targets
Tutorial tests now output .rst files for Read the Docs
Change Setup.ipynb to Setup_Generic.ipynb
- Scope updates:
Added default_setup() method
cw.scope() can now autodetect scope type
CWPro only features updated to work with API
- Project updates:
Major project API updates
New project format
CW1200 Pro only features added to API
Completed tutorials now available on Read the Docs
Added tutorials submodule for completed tutorial .rst files
Key text pair interface updated
Added cw.capture_trace()
Moved Jupyter to Submodule in top of project
Separated requirements.txt into Jupyter (in Jupyter submodule) and non Jupyter files
Changed to snake_case instead of camelCase
Added Sphinx documentation
API now documented with Google Style Guide
Many tutorial changes to reflect API changes
Changed tutorials to use C preprocessor to change firmware rather than via awk
C firmware CRYPTO_TARGET no longer defaults to AVRCRYPTOLIB
CW308_AURIX clock and regulator fixes
Fixed generate_firmware_files.py for python3
Removed some unused files
Expose baud for STM32 programmer
Fixed XMEGA and STM32 programming issues
Fixed “Trigger not found in ADC data” issue
Improved CW305 support
- V5.0.1:
Fixed project loading
Initial CW305 Support
Various small fixes
- V5.0.0:
Replaced GUI with Jupyter
Moved to Python 3 (Python 2.7 no longer supported)
Improved API for Projects
Added GUILess Analyzer support
Added Jupyter Notebooks for most major tutorials
Added Notebooks for new tutorials
Small cleanups to API
- V4.0.2:
Improve SAD logic
Add RSA firmware build for ARM.
Add new setup scripts (CEC1702, ESP32)
Various small fixes
- V4.0.1:
State for GUI Programmers is not held in between actions, allowing the programmers to be left open during captures/glitching without causing problems
The GUI programmers now use the 4.0 api to set pins for programming, saving pin states before an action to restore them after.
Most firmware files are now compatible with the ARM compiler
Example scripts in chipwhisperer/software/scripting-examples have been updated for 4.0, providing an example of using the ChipWhisperer tool without the GUI for clock glitching, trace capture during encryption, and trace analysis.
- V4.0.0:
Rewritten script interface, now almost all work is done via preconfigured scripts
New API allows direct access to configuration (useful with new script architecture)
New firmware examples (ESP32, Spartan 6 cheap FPGA board)
- V3.5.3:
FW: Add RSA firmware example (see https://wiki.newae.com/Tutorial_B11_Breaking_RSA)
FW: Add MBED TLS crypto library for ARM targets (see https://wiki.newae.com/Tutorial_A8_32bit_AES)
SW: Add utility to copy traces to new project
Capture: Add ability to measure “Trigger High” length in number of samples
FW: Fix trigger GPIO pin in STM32F4 HAL
FW: Fix AVR “sizeafter” target in makefile
SW: Update testing scripts to use os.path and auto-program for XMEGA programming
Capture: Fix timer bug in CW1173 Reset aux module
- V3.5.0:
SW: Allow each module to set a default error message severity
Capture: Support connecting multiple CW-Lite/Pro scopes
Capture: Add SPI flash programmer target
Capture: Add STM32F programmer
Capture: Add setup script for 87C51 target
FW: Fix bug in SAM4L HAL that disabled crypto countermeasures
FW: Improve Makefile output on Windows
SW: Return script results when running Capture/Analyzer scripts via API
Analyzer: Fix off-by-one error in C-accelerated CPA attack
Capture: Properly randomize fixed/random plaintexts in CRI T-Test mode
Capture: Fix float/int conversion bug in glitch explorer
- V3.4.0:
Addition of trace-cache in preprocessing module, useful with slow preprocessing module.
Dynamic Time Warp (DTW) based trace resync preprocessing, based on the “Elastic Alignment” paper by Jasper
SimpleSerial firmware V1.1 now supports ACK in messaage structure, useful in slow encryptions to avoid timeout
STM32F firmware targets (including STM32F0, F1, F2, F3, F4)
New trace plotting command allows plotting arbitrary traces (not just range), along with specific colours.
- V3.3.0:
CW1200 support added (bitstream built-in, various fixes for CW1200)
New firmware build system supports targets beyond AVR/XMEGA (now can build for STM32F, etc)
Add downsample mode for CWLite, CW1200 (make better use of sample buffer by downsampling ADC to get very slow sampler rates)
New simple AES crypto library for firmware targets
Huge speed-up to waveform data processing on capture
Support automatic downsampling of waveform display (requires recent version of pyqtgraph)
- V3.2.0:
Updated HW model system, breaks some old APIs but makes it easier to add custom leakage models
Fixed bug where unplugging CW-Lite with terminal open caused flood of close messages
Fixes to CW305 interface
AVR Programmer adds ATMegaRF2564RFR2 device support
- V3.1.11:
Added support to DES (recovers 48 of the 56 bits key)
Refactored attack classes
- V3.1.10:
Added basic support to multiple channels (doesn’t save yet).
Trace Output Plot widget with new parameter: X Axis with time values.
New Streaming mode capture option.
- V3.1.9:
Improved serial terminal.
Added stop capture button.
Fixed a lot of memory leaks.
New trace manager (supports deletion of multiple items).
Pip support.
Support to projects/plugins in user’s home.
Test scripts.
Improved code documentation.
Code cleanups.
New Glitch Explorer widget.
Bandstop digital filter option (credits to Marc).
Removed parentParam argument from many classes (some older scripts may need to delete it to come back to live) :-/
Added buttons to load and save settings.
Project settings saved with the traces during capture.
Logging.
- V3.1.8:
Read/save buttons.
Trace recorder.
Graph widget: hairlines, grid, move, help, select trace, position.
Check for updates.
New Parameter class. API runs standalone now (especially the capture tool).
Customizable key/trace colors.
Results table with color gradient.
Faster graphs plotting, especially in fast mode.
Fixed a bug where highlighted traces for other keys would not show up.
Trace Explorer moved to the main window as a settings dock.
Bug fixes.
- V3.0:
Consolidate project (move traces to the project dir).
Improved trace manager.
Fixed GUI bugs with Mac OS X.
New plugin architecture (should be much easier to add new modules).
Bug fixes.
Large code refactoring.