Question: https://colab.research.google.com/drive/1_w9guhY1n47Gc-kQCUiIJvK2x3hneM9J?usp=sharing Help with #3 and #4 ## Problem 3 (15 points): Power Hypothesis In this problem, you are asked to code up the routine to
https://colab.research.google.com/drive/1_w9guhY1n47Gc-kQCUiIJvK2x3hneM9J?usp=sharing
Help with #3 and #4
## Problem 3 (15 points): Power Hypothesis
In this problem, you are asked to code up the routine to calculate power hypothesis. Power hypothesis is to use the input plaintext to calculate a quantity that correlates well with the current measurements. In class, we have already discussed that one such quantity is the hamming weight (number of 1's) of output of the SBOX in the first round of AES after the input plaintext number is XORed with the corresponding key value.
The `powerHypothesis` routine should take as an input a vector `byteTrace` that corresponds to the plaintext number from each trace at a specific time - more specficially, `byteTrace` will be set to `plaintext[:,i]` where we iterate on the plaintext number from location `i` from all traces.
The output of `powerHypothesis` should be a matrix of size `numberOfTraces` x 256. Entry (i,j) of this matrix should be the hamming weight of the SBOX output of the XOR result between the plaintext number at trace i and the candidate key j.
To help you get started, I have already prepared the SBOX mapping for you.
# Declaration of the SBOX SBOX=np.array([99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]) def powerHypothesis(byteTrace): # Your code

def mycorr(A,B):
# Your code
Problem 4 (15 points): Correlation function In this problem, you are asked to write the mycorr (A,B) that takes in the numberOfTraces x256 matrix A, the output of powerHypothesis, and the numberOfTraces X traceSize current measurement matrix B, and returns a 256x traceSize correlation matrix C. As a reminder, the correlation function is computed as follows: C(i, j) = | (A(:,i)A(:,i))'(B(:,j)B(:,j)) ||A(:,i)-A(:,i) || ||B(:,j)B(:,j) ||
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
