コード例 #1
0
ファイル: AES_CPA.py プロジェクト: j40903272/SecurityLab2019
            tmp[0] ^= Rcon[(i + 4) // 4]
        key[i] = np.bitwise_xor(key[i + 4], tmp)
    return key


T = Trace(1, 0)
n_sample = len(cipher_state)
lastRoundKey = np.zeros((16))
all_CorrTrace = []

for i in range(16):
    table = np.zeros((n_sample, 256))
    byte = cipher_state[:, i]
    for subkey in range(256):
        for n in range(n_sample):
            table[n, subkey] = T.hamming_weight(byte[n] ^ subkey)
    CorrTraces = correlationTraces(all_trace_df.values, table)
    CorrTraces[0, :] = 0
    all_CorrTrace.append(CorrTraces)
    lastRoundKey[i] = np.argmax(np.max(CorrTraces, axis=1))

key = inv_key_schedule(lastRoundKey)

tmp = np.stack([lastRoundKey, key[:4].flatten()], axis=0).astype(int)
df = pd.DataFrame(tmp)
df.to_csv("Key.csv", index=False, header=None)

line = []
for i in range(16):
    CorrTraces = all_CorrTrace[i]
    rank = np.argsort(np.max(CorrTraces, axis=1))