diff --git a/aes-t-tables/cargo.sh b/aes-t-tables/cargo.sh index 8b36e48..ce66d1d 100755 --- a/aes-t-tables/cargo.sh +++ b/aes-t-tables/cargo.sh @@ -1,5 +1,5 @@ #/bin/bash -export OPENSSL_DIR=$(readlink -f ../../../openssl) +export OPENSSL_DIR=$(readlink -f ~/openssl) export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR=$OPENSSL_DIR export PKG_CONFIG_PATH=$OPENSSL_DIR export X86_64_UNKNOWN_LINUX_GNU_PKG_CONFIG_PATH=$OPENSSL_DIR diff --git a/cache_utils/src/bin/cache_info.rs b/cache_utils/src/bin/cache_info.rs index c83c483..cd230ec 100644 --- a/cache_utils/src/bin/cache_info.rs +++ b/cache_utils/src/bin/cache_info.rs @@ -27,6 +27,7 @@ pub fn main() { if let Some(uarch) = MicroArchitecture::get_micro_architecture() { if let Some(vendor_family_model_stepping) = MicroArchitecture::get_family_model_stepping() { + println!("{:?}", uarch); let slicing = cache_slicing( uarch, core_per_socket, diff --git a/cache_utils/src/bin/two_thread_cal.rs b/cache_utils/src/bin/two_thread_cal.rs index 65a52e3..067fc19 100644 --- a/cache_utils/src/bin/two_thread_cal.rs +++ b/cache_utils/src/bin/two_thread_cal.rs @@ -86,7 +86,7 @@ fn main() { println!("Number of cores per socket: {}", core_per_socket); - let m = MMappedMemory::new(SIZE); + let m = MMappedMemory::new(SIZE, true); let array = m.slice(); let cache_line_size = 64; diff --git a/cache_utils/src/frequency.rs b/cache_utils/src/frequency.rs index f9168d2..b47e9a8 100644 --- a/cache_utils/src/frequency.rs +++ b/cache_utils/src/frequency.rs @@ -15,7 +15,7 @@ pub enum Error { } #[cfg(all(target_os = "linux", feature = "use_std"))] -#[link(name = "cpupower")] +#[link(name = "cpufreq")] extern "C" { //unsigned long cpufreq_get_freq_kernel(unsigned int cpu); fn cpufreq_get_freq_kernel(cpu: c_uint) -> c_ulong; diff --git a/covert_channels_benchmark/src/main.rs b/covert_channels_benchmark/src/main.rs index cace066..cf778f9 100644 --- a/covert_channels_benchmark/src/main.rs +++ b/covert_channels_benchmark/src/main.rs @@ -50,6 +50,7 @@ fn run_benchmark( for result in results.iter() { println!("{:?}", result); println!("C: {}, T: {}", result.capacity(), result.true_capacity()); + println!("Detailed:\"{}\",{},{},{},{}", name, num_pages, result.csv(), result.capacity(), result.true_capacity()); average_p += result.error_rate; average_C += result.capacity(); average_T += result.true_capacity() @@ -79,6 +80,7 @@ fn run_benchmark( "{} - {} Variance of p: {}, C: {}, T:{}", name, num_pages, var_p, var_C, var_T ); + println!("CSV:\"{}\",{},{},{},{},{},{},{}",name,num_pages,average_p, average_C, average_T, var_p, var_C, var_T); BenchmarkStats { raw_res: results, average_p, @@ -91,6 +93,8 @@ fn run_benchmark( } fn main() { + println!("Detailed:Benchmark,Pages,{},C,T",CovertChannelBenchmarkResult::csv_header()); + println!("CSV:Benchmark,Pages,p,C,T,var_p,var_C,var_T"); for num_pages in 1..=32 { /*println!("Benchmarking F+F"); for _ in 0..16 { diff --git a/covert_channels_evaluation/src/lib.rs b/covert_channels_evaluation/src/lib.rs index e30d793..410803e 100644 --- a/covert_channels_evaluation/src/lib.rs +++ b/covert_channels_evaluation/src/lib.rs @@ -53,7 +53,19 @@ impl CovertChannelBenchmarkResult { pub fn true_capacity(&self) -> f64 { let p = self.error_rate; - self.capacity() * (1.0 + ((1.0 - p) * f64::log2(1.0 - p) + p * f64::log2(p))) + if p == 0.0 || p == 0.0 { + self.capacity() + } else { + self.capacity() * (1.0 + ((1.0 - p) * f64::log2(1.0 - p) + p * f64::log2(p))) + } + } + + pub fn csv(&self) -> String { + format!("{},{},{},{},{}", self.num_bytes_transmitted, self.num_bit_errors, self.error_rate, self.time_rdtsc, self.time_seconds.as_nanos()) + } + + pub fn csv_header() -> String { + format!("bytes_transmitted,bits_error,error_rate,time_rdtsc,time_nanosec") } }