Releases: newaetech/chipwhisperer
ChipWhisperer 5.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()
, andglitch_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
ChipWhisperer 5.6.1
VM Update recommended
Installer Update recommended
Do not expose the VM/Jupyter over the internet.
New Features:
- ChipWhisperer-Husky and CW310 Bergen Board support
- Add debugger support (via OpenOCD) to Lite, Pro, Nano, and Husky
- Add debugger demo (jupyter/demos/Debugging the CW308_STM32F3 Using ChipWhisperer)
- Add
scope.fw_version_str
- Switch from pyusb to libusb1 - deprecates libusb0.dll on Windows
- Add
as_int
parameter toscope.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 GUI based Windows firmware installer
- Add linting, automatic hardware testing, and firmware building actions
- Add FW_CHANGES.txt
- Add SPI target programming
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.3.1
- CWBergen: 1.2.0
Blackhat 2021
Special release for Black Hat USA 2021.
USB library change, better firmware update process, and various small fixes
ChipWhisperer 5.5.2
This release fixes a ValueError issue with the previous release.
NOTE: ChipWhisperer shortcuts on Windows don't work - you'll need to navigate to where you installed ChipWhisperer and run ChipWhisperer
manually.
ChipWhisperer 5.5.1
USE ChipWhisperer 5.5.2 Instead
New Features:
- Add new logging system that uses multiple loggers instead of just the default/root one. Allows setting different levels for
different parts of the chipwhisperer API (scope, target, naeusb, etc) - Add correlation-vs-trace (thanks @Xuyang-Huang !)
Fixes:
- Fix
cw.plot([...]) * cw.plot([...])
being broken in VM and Windows installer. If you don't want to reinstall, this can be fixed by running:
!pip uninstall holoviews -y
!pip install holoviews
in Jupyter.
- Fix CW1200 not having nRST trigger
- Fix installer
- Fix STM32F2 programming
- Disable ILAs in CW305 AES build by default
- Improve CW305 define slurping
- Make SimpleSerial target.read() better reflect docs
- Fix SCA101/password bypass simulated trace notebook
- Fix STM32F0 for low SRAM F0s
ChipWhisperer 5.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
Installer Notes
- The ChipWhisperer Installer now includes everything you need to use ChipWhisperer!
- ChipWhisperer files are now located in
ChipWhisperer5_64\git\home\portable\chipwhisperer
Firmware Updater Usage
This tool only works on a ChipWhisperer that has already had its firmware erased. Must be used from the command line as follows:
cw_firmware_updater_5_5_0.exe <COM_PORT> <HARDWARE_TYPE>
where <COM_PORT>
is the AT91 Serial Bootloader's port (you can find this in Device Manager) and
<HARDWARE_TYPE>
is one of:
cwlite
cwnano
cw1200
cw305
5.4
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 off STM32 HW floating point
- VM: Fix firmware programming
Firmware updates:
- Auto driver configuration on Windows: Once updated firmware is installed, device will automatically configure as a WinUSB device if no other drivers present. See https://docs.microsoft.com/en-us/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages for uninstalling drivers.
- Serial buffer size increase from 128 bytes to 200 bytes. Allows 99 bytes of data to be sent with SimpleSerial v1 and 192 bytes to be sent with SimpleSerial V2
SimpleSerial 2
New serial communication protocol. Improved communication speed + data integrity, more flexibility with commands, longer data length supported. Normal capture speed with SSV2 is roughly 110 captures/second, but can be increased to ~150 captures/second by not reading response + setting scope.glitch.arm_timing="no_glitch"
(disables glitch)
Use in sca101/fault101 by setting SS_VER='SS_VER_2_0'
. Build SSV2 firmware by make PLATFORM=X CRYPTO_TARGET=Y SS_VER=SS_VER_2_0
. See readthedocs for documentation.
Firmware update tool
In some cases, users may be unable to reprogram the ChipWhisperer scope (not target) firmware from inside the VM. As such, there is a firmware updater Windows executable that will allow reprogramming of the ChipWhisperer from a native Windows install without requiring a full ChipWhisperer install. It can be used with the syntax cw_firmware_updater_5_4_0.exe <COM_PORT> <HARDWARE_TYPE>
where <COM_PORT>
is the AT91 serial bootloader serial port name (i.e. COM4
) and <HARDWARE_TYPE>
is one of cwlite
, cw1200
, cwnano
, or cw305
.
NOTE: This tool can only reprogram the ChipWhisperer. It cannot put the ChipWhisperer into bootloader mode, which is a prerequisite to reprogramming the ChipWhisperer.
ChipWhisperer 5.3.1
New CWPro firmware and small fixes. For VM/Windows installer/Windows drivers, see release 5.3.0 and update from there.
New Features
- New CWPro firmware
target.in_waiting_tx()
support- SAMFWLoader programming support for CWPro
- Add CWPro USB binary
Fixes
- TIO state read on CWPro
- TX buffer overrun on CWPro
ChipWhisperer 5.3.0
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
Quick Start:
- The "ChipWhisperer Virtual Machine" is recommended to get started with, as it includes all compilers required. It will need to be added to a VirtualBox Install.
- The "Windows Installer" provides you with a Jupyter instance setup with ChipWhisperer, but requires you to install arm or avr compilers, as well as make.
ChipWhisperer 5.2.1
Important Notes
- The VM now does not force a password change on the user account (SSH is off by default so should not be exposed). You will now be automatically prompted for a Jupyter password if one was not set - this step is required for Jupyter to start.
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