#[derive(Debug, Clone, PartialEq)]
pub struct SecurityReport {
pub algebraic_security_bits: f64,
pub parseval_shield_status: String,
pub total_security_bits: f64,
}
pub fn audit_soundness(
field_bits: u32,
constraint_degree: u32,
num_queries: u32,
) -> SecurityReport {
let base_security = (field_bits as f64) - (constraint_degree as f64).log2();
let algebraic_security = base_security * (num_queries as f64);
let shield_status = if field_bits >= 64 {
"DETERMINISTIC (Sparse Attack Surface < 2^64)"
} else {
"PROBABILISTIC (Small Field Risk)"
}
.to_string();
let binding_security = 128.0;
let total_security = if algebraic_security < binding_security {
algebraic_security
} else {
binding_security
};
SecurityReport {
algebraic_security_bits: algebraic_security,
parseval_shield_status: shield_status,
total_security_bits: total_security,
}
}
pub fn audit_goldilocks_config() -> SecurityReport {
audit_soundness(64, 2, 1)
}