#!/usr/bin/env julia include("util.jl") include("sbox.jl") include("plotutils.jl") function break_aes() plaintexts = load_file("plaintexts.dat", UInt8)[1:10_000, :] timings = load_file("timings.dat", UInt32)[1:10_000] 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) end plot_discrete_tval(0:0xFF, t_values, "key") end @time break_aes()