ChipWhisperer Scope Interface
+Researchers at WPI and across the country use ChipWhisperer devices to conduct +side-channel analysis research. ChipWhisperer has an existing library developed to +interface with their devices. However, this library was improved upon by providing +higher-level API calls
+-
+
- +class CWScope +
-
+
- +__init__(self, firmware_path: str, gain: int = 25, num_samples: int = 5000, offset: int = 0, target_type: any = cw.targets.SimpleSerial, target_programmer: any = cw.programmers.STM32FProgrammer) None: +
Initializes a CW scope object
+-
+
- Parameters: +
-
+
firmware_path (str) – The name of the compiled firmware that will be loaded on the CW target board
+gain (int) – The gain of the CW scope
+num_samples (int) – The number of samples to collect for each trace on the CW scope
+offset (int) – The tine offset for CW scope trace collection
+target_type (any) – The target type of the CW scope. This depends on the specific ChipWhisperer device that you are using.
+target_programmer (any) – The target programmer of the CW scope. This depends on the specific ChipWhisperer device that you are using.
+
+- Returns: +
None
+
+- Authors: +
Samuel Karkache (swkarkache@wpi.edu)
+
+
-
+
- +disconnect(self) +
Disconnect CW Scope and Target
+
-
+
- +standard_capture_traces(self, num_traces: int, experiment_keys: np.ndarray = None, experiment_texts: np.ndarray = None, fixed_key: bool = True, fixed_pt: bool = False) (np.ndarray, np.ndarray, np.ndarray, np.ndarray): +
Capture procedure for ChipWhisperer devices. Will return a specified number of traces and the data associated +with the collection.
+-
+
- Parameters: +
-
+
num_traces (int) – The number of traces to capture
+experiment_keys (list) – A collection of keys to use for the capture of each trace. If not specified, the procedure +will use the cw basic key generation key = cw.ktp.Basic()[0]
+experiment_texts (list) – A collection of texts to use for the capture of each trace. If not specified, the procedure +will use the cw basic plaintext generation text = cw.ktp.Basic()[1]
+fixed_key (bool) – Whether to use a fixed key for cw.ktp key generation. Ignored if a collection of keys are supplied.
+fixed_pt (bool) – Whether to use a fixed plaintext for cw.ktp text generation. Ignored if a collection of texts are supplied.
+
+- Returns: +
a tuple containing the power traces, keys, plaintexts, and ciphertexts for the experiment
+
+- Return type: +
tuple(np.ndarray, np.ndarray, np.ndarray, np.ndarray)
+
+- Raises: +
TypeError – if the length of the specified experiment keys and experiment texts are not equal to each other or the number of traces +to be collected.
+
+- Authors: +
Samuel Karkache (swkarkache@wpi.edu)
+
+
-
+
- +capture_traces_tvla(self, num_traces: int, group_a_keys: np.ndarray = None, group_a_texts: np.ndarray = None, group_b_keys: np.ndarray = None, group_b_texts: np.ndarray = None, ktp: any = cwtvla.ktp.FixedVRandomText()) (np.ndarray, np.ndarray): +
Captures fixed and random trace set needed for TVLA. Group A is the fixed set and group B is the random set.
+-
+
- Parameters: +
-
+
num_traces (int) – The number of traces to capture for each set
+group_a_keys (list) – An array of keys for group A
+group_a_texts (list) – An array of texts for group A
+group_b_keys (list) – An array of keys for group B
+group_b_texts (list) – An array of texts for group B
+ktp – the key text pair algorithm, defaults to cwtvla.ktp.FixedVRandomText(). This is ignored if keys or texts +for group A and group B are provided.
+
+- Return type: +
(np.ndarray, np.ndarray)
+
+- Authors: +
Samuel Karkache (swkarkache@wpi.edu)
+
+
-
+
- +cw_to_file_framework(self, num_traces: int, file_parent: FileParent, experiment_name: str, keys: np.ndarray = None, texts: np.ndarray = None, fixed_key: bool = True, fixed_pt: bool = False) None: +
Captures traces on a ChipWhisperer device and saves them directly to the custom file framework. The collected +traces, keys, plaintexts, and ciphertexts are saved as dataset to the specified experiment. If the experiment +specified does not exist in the file, then a new one is created.
+-
+
- Parameters: +
-
+
num_traces (int) – The number of traces to capture
+file_parent (FileParent) – The FileParent object to save the file to
+experiment_name (str) – The name of the experiment
+keys (np.ndarray) – The keys for the experiment
+texts – The plaintexts for the experiment
+texts – np.ndarray
+fixed_key (bool) – Whether the key should be fixed (assuming the keys and texts parameters are None)
+fixed_pt (bool) – Whether the plaintext should be fixed (assuming the keys and texts parameters are None)
+
+- Returns: +
None
+
+- Authors: +
Samuel Karkache (swkarkache@wpi.edu)
+
+