From 3887b041f6f61906a38662f2ba52f625254c5ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Tue, 14 May 2019 15:02:48 +0200 Subject: [PATCH] break script: Print key --- break_script/break_aes.jl | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/break_script/break_aes.jl b/break_script/break_aes.jl index 9659997..4bb3110 100755 --- a/break_script/break_aes.jl +++ b/break_script/break_aes.jl @@ -1,28 +1,33 @@ #!/usr/bin/env julia include("util.jl") -include("sbox.jl") +#include("sbox.jl") include("plotutils.jl") +import CSV +using Formatting + function parse_csv(filename) - println("Starting parsing") data = CSV.read(filename, header=0) - println("Parsing done") - plaintexts::Matrix{UInt8} = convert(Matrix{UInt8}, data[:, 1:16]) - timings::Matrix{UInt32} = convert(Matrix{UInt32}, data[:, 17:17]) + plaintexts::Matrix{UInt8} = convert(Matrix{UInt8}, data[:, 1:16])#[1:50, :] + timings::Matrix{UInt32} = convert(Matrix{UInt32}, data[:, 17:17])#[1:50] return plaintexts, timings end function break_aes() plaintexts, timings = parse_csv("timing.csv") t_values = Vector{Float64}(undef, 0x100) - for key=0:0xFF - msb_set = (sbox[(plaintexts[:, 1] .⊻ key) .+ 1] .& 0x80) .!= 0 - group_slow = timings[msb_set] - group_fast = timings[msb_set.==false] - t_values[key + 1] = t_val(group_fast, group_slow) + for keybyte=1:16 + for key=0:0xFF + msb_set = (sbox[(plaintexts[:, keybyte] .⊻ key) .+ 1] .& 0x80) .!= 0 + group_slow = timings[msb_set] + group_fast = timings[msb_set.==false] + t_values[key + 1] = t_val(group_fast, group_slow) + end + print(format("{:02x} ", argmax(t_values) - 1)) end + println() plot_discrete_tval(0:0xFF, t_values, "key") end -@time break_aes() +break_aes()