use super::super::DifferentialPrivacyConfig;
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct FederatedPrivacyConfig {
pub base_config: DifferentialPrivacyConfig,
pub clients_per_round: usize,
pub total_clients: usize,
pub sampling_strategy: ClientSamplingStrategy,
pub secure_aggregation: SecureAggregationConfig,
pub amplification_config: AmplificationConfig,
pub cross_device_config: CrossDeviceConfig,
pub composition_method: FederatedCompositionMethod,
pub trust_model: TrustModel,
pub communication_privacy: CommunicationPrivacyConfig,
}
#[derive(Debug, Clone, Copy)]
pub enum ClientSamplingStrategy {
UniformRandom,
Stratified,
ImportanceSampling,
PoissonSampling,
FairSampling,
}
#[derive(Debug, Clone)]
pub struct SecureAggregationConfig {
pub enabled: bool,
pub min_clients: usize,
pub max_dropouts: usize,
pub masking_dimension: usize,
pub seed_sharing: SeedSharingMethod,
pub quantization_bits: Option<u8>,
pub aggregate_dp: bool,
}
#[derive(Debug, Clone)]
pub struct AmplificationConfig {
pub enabled: bool,
pub subsampling_factor: f64,
pub shuffling_enabled: bool,
pub multi_round_amplification: bool,
pub heterogeneous_amplification: bool,
}
#[derive(Debug, Clone, Default)]
pub struct CrossDeviceConfig {
pub user_level_privacy: bool,
pub device_clustering: bool,
pub temporal_privacy: bool,
pub geographic_privacy: bool,
pub demographic_privacy: bool,
}
#[derive(Debug, Clone, Copy, Default)]
pub enum FederatedCompositionMethod {
Basic,
AdvancedComposition,
#[default]
FederatedMomentsAccountant,
RenyiDP,
ZCDP,
}
#[derive(Debug, Clone, Copy)]
pub enum TrustModel {
HonestButCurious,
SemiHonest,
Byzantine,
Malicious,
}
#[derive(Debug, Clone)]
pub struct CommunicationPrivacyConfig {
pub encryption_enabled: bool,
pub anonymous_channels: bool,
pub communication_noise: bool,
pub traffic_analysis_protection: bool,
pub threat_modeling: AdvancedThreatModelingConfig,
pub cross_silo_config: Option<CrossSiloFederatedConfig>,
}
#[derive(Debug, Clone, Default)]
pub struct AdvancedThreatModelingConfig {
pub enabled: bool,
pub adversarial_capabilities: AdversarialCapabilities,
pub attack_surface_analysis: AttackSurfaceConfig,
pub threat_intelligence: ThreatIntelligenceConfig,
pub risk_assessment: RiskAssessmentConfig,
pub countermeasure_evaluation: CountermeasureEvaluationConfig,
}
#[derive(Debug, Clone)]
pub struct AdversarialCapabilities {
pub computational_resources: ComputationalThreatLevel,
pub network_capabilities: NetworkThreatCapabilities,
pub data_capabilities: DataThreatCapabilities,
pub algorithmic_knowledge: AlgorithmicKnowledgeLevel,
pub collusion_potential: CollusionThreatLevel,
pub attack_persistence: AttackPersistenceLevel,
}
#[derive(Debug, Clone, Default)]
pub struct AttackSurfaceConfig {
pub client_attack_vectors: ClientAttackVectors,
pub server_attack_vectors: ServerAttackVectors,
pub communication_vulnerabilities: CommunicationVulnerabilities,
pub aggregation_vulnerabilities: AggregationVulnerabilities,
pub privacy_mechanism_vulnerabilities: PrivacyMechanismVulnerabilities,
}
#[derive(Debug, Clone, Default)]
pub struct ThreatIntelligenceConfig {
pub enabled: bool,
pub real_time_monitoring: bool,
pub signature_database: ThreatSignatureDatabase,
pub anomaly_detection: AnomalyDetectionConfig,
pub threat_correlation: ThreatCorrelationConfig,
}
#[derive(Debug, Clone)]
pub struct RiskAssessmentConfig {
pub methodology: RiskAssessmentMethodology,
pub risk_tolerance: RiskToleranceLevels,
pub impact_assessment: ImpactAssessmentCriteria,
pub likelihood_estimation: LikelihoodEstimationMethods,
pub mitigation_strategies: RiskMitigationStrategies,
}
#[derive(Debug, Clone, Default)]
pub struct EffectivenessMetrics {
pub detection_accuracy: f64,
pub false_positive_rate: f64,
pub false_negative_rate: f64,
pub response_times: Vec<f64>,
}
#[derive(Debug, Clone, Default)]
pub struct CostBenefitAnalysisConfig {
pub implementation_costs: Vec<f64>,
pub operational_costs: Vec<f64>,
pub benefits: Vec<f64>,
pub roi_methods: Vec<String>,
}
#[derive(Debug, Clone, Default)]
pub struct DynamicAdaptationConfig {
pub triggers: Vec<String>,
pub strategies: Vec<String>,
pub learning_rate: f64,
pub min_threshold: f64,
}
#[derive(Debug, Clone, Default)]
pub struct CountermeasureOptimizationConfig {
pub algorithms: Vec<String>,
pub target_metrics: Vec<String>,
pub constraints: Vec<String>,
pub frequency: String,
}
#[derive(Debug, Clone, Default)]
pub struct CountermeasureEvaluationConfig {
pub effectiveness_metrics: EffectivenessMetrics,
pub cost_benefit_analysis: CostBenefitAnalysisConfig,
pub dynamic_adaptation: DynamicAdaptationConfig,
pub optimization: CountermeasureOptimizationConfig,
}
#[derive(Debug, Clone)]
pub struct DataMarketplaceConfig {
pub enabled: bool,
pub pricing_models: Vec<String>,
pub quality_metrics: Vec<String>,
pub access_controls: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct RegulatoryComplianceConfig {
pub regulations: Vec<String>,
pub compliance_checks: Vec<String>,
pub reporting_requirements: Vec<String>,
pub audit_trails: bool,
}
#[derive(Debug, Clone)]
pub struct AuditAccountabilityConfig {
pub audit_logging: bool,
pub accountability_mechanisms: Vec<String>,
pub verification_methods: Vec<String>,
pub compliance_tracking: bool,
}
#[derive(Debug, Clone)]
pub struct TrustEstablishmentMethods {
pub certification_authorities: Vec<String>,
pub reputation_systems: Vec<String>,
pub verification_protocols: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct TrustVerificationMechanisms {
pub methods: Vec<String>,
pub frequency: String,
pub thresholds: Vec<f64>,
}
#[derive(Debug, Clone)]
pub struct OrganizationReputationSystem {
pub metrics: Vec<String>,
pub scoring_algorithms: Vec<String>,
pub update_frequencies: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct TrustLifecycleManagement {
pub establishment_phases: Vec<String>,
pub maintenance_procedures: Vec<String>,
pub recovery_mechanisms: Vec<String>,
pub degradation_triggers: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct DataGovernanceConfig {
pub classification: Vec<String>,
pub access_policies: Vec<String>,
pub quality_standards: Vec<String>,
pub retention_policies: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct PrivacyAgreementConfig {
pub templates: Vec<String>,
pub negotiation_protocols: Vec<String>,
pub enforcement_mechanisms: Vec<String>,
pub compliance_monitoring: bool,
}
#[derive(Debug, Clone)]
pub struct DataClassificationConfig {
pub schemes: Vec<String>,
pub sensitivity_levels: Vec<String>,
pub labeling_rules: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct DataLineageConfig {
pub tracking_methods: Vec<String>,
pub provenance_recording: bool,
pub audit_trails: bool,
}
#[derive(Debug, Clone)]
pub struct DataQualityAssuranceConfig {
pub metrics: Vec<String>,
pub validation_rules: Vec<String>,
pub monitoring_frequency: String,
}
#[derive(Debug, Clone)]
pub struct DataRetentionPolicies {
pub retention_periods: Vec<String>,
pub disposal_methods: Vec<String>,
pub archive_policies: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct CrossSiloFederatedConfig {
pub enabled: bool,
pub organization_trust: OrganizationTrustConfig,
pub data_governance: DataGovernanceConfig,
pub privacy_agreements: PrivacyAgreementConfig,
pub data_marketplace: DataMarketplaceConfig,
pub regulatory_compliance: RegulatoryComplianceConfig,
pub audit_accountability: AuditAccountabilityConfig,
}
#[derive(Debug, Clone)]
pub struct OrganizationTrustConfig {
pub trust_establishment: TrustEstablishmentMethods,
pub trust_verification: TrustVerificationMechanisms,
pub reputation_system: OrganizationReputationSystem,
pub trust_lifecycle: TrustLifecycleManagement,
}
#[derive(Debug, Clone, Copy)]
pub enum ComputationalThreatLevel {
Limited, Moderate, Substantial, Unlimited, }
#[derive(Debug, Clone, Default)]
pub struct NetworkThreatCapabilities {
pub can_intercept: bool,
pub can_modify: bool,
pub can_inject: bool,
pub can_analyze_traffic: bool,
pub can_timing_attack: bool,
pub can_dos: bool,
}
#[derive(Debug, Clone, Default)]
pub struct DataThreatCapabilities {
pub can_access_training_data: bool,
pub can_modify_training_data: bool,
pub can_inject_poisoned_data: bool,
pub can_membership_inference: bool,
pub can_extract_parameters: bool,
pub can_gradient_inversion: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum AlgorithmicKnowledgeLevel {
BlackBox, GrayBox, WhiteBox, Adaptive, }
#[derive(Debug, Clone, Copy)]
pub enum CollusionThreatLevel {
None, Limited, Substantial, Majority, }
#[derive(Debug, Clone, Copy)]
pub enum AttackPersistenceLevel {
OneTime, Intermittent, Persistent, Adaptive, }
#[derive(Debug, Clone, Default)]
pub struct ClientAttackVectors {
pub model_poisoning: bool,
pub data_poisoning: bool,
pub gradient_manipulation: bool,
pub local_model_extraction: bool,
pub client_impersonation: bool,
}
#[derive(Debug, Clone, Default)]
pub struct ServerAttackVectors {
pub server_compromise: bool,
pub malicious_aggregation: bool,
pub backdoor_injection: bool,
pub budget_manipulation: bool,
pub client_discrimination: bool,
}
#[derive(Debug, Clone, Default)]
pub struct CommunicationVulnerabilities {
pub mitm_attacks: bool,
pub eavesdropping: bool,
pub replay_attacks: bool,
pub message_injection: bool,
pub timing_analysis: bool,
}
#[derive(Debug, Clone, Default)]
pub struct AggregationVulnerabilities {
pub secure_aggregation_bypass: bool,
pub aggregation_manipulation: bool,
pub statistical_attacks: bool,
pub reconstruction_attacks: bool,
}
#[derive(Debug, Clone, Default)]
pub struct PrivacyMechanismVulnerabilities {
pub dp_parameter_inference: bool,
pub budget_exhaustion: bool,
pub composition_attacks: bool,
pub auxiliary_info_attacks: bool,
}
#[derive(Debug, Clone, Default)]
pub struct ThreatSignatureDatabase {
pub attack_patterns: Vec<AttackPattern>,
pub threat_actors: Vec<ThreatActorProfile>,
pub vulnerability_signatures: Vec<VulnerabilitySignature>,
}
#[derive(Debug, Clone)]
pub struct AttackPattern {
pub id: String,
pub description: String,
pub indicators: Vec<AttackIndicator>,
pub severity: ThreatSeverity,
pub mitigations: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct ThreatActorProfile {
pub id: String,
pub capabilities: AdversarialCapabilities,
pub attack_methods: Vec<String>,
pub targeting_preferences: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct VulnerabilitySignature {
pub id: String,
pub affected_components: Vec<String>,
pub exploitation_indicators: Vec<String>,
pub severity_score: f64,
}
#[derive(Debug, Clone)]
pub struct AttackIndicator {
pub indicator_type: IndicatorType,
pub value: String,
pub confidence: f64,
}
#[derive(Debug, Clone, Copy)]
pub enum IndicatorType {
NetworkTraffic,
GradientPattern,
ModelBehavior,
PerformanceAnomaly,
CommunicationPattern,
}
#[derive(Debug, Clone, Copy)]
pub enum ThreatSeverity {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone)]
pub struct AnomalyDetectionConfig {
pub algorithms: Vec<AnomalyDetectionAlgorithm>,
pub thresholds: AnomalyThresholds,
pub response_actions: AnomalyResponseActions,
}
#[derive(Debug, Clone, Copy)]
pub enum AnomalyDetectionAlgorithm {
StatisticalBaseline,
MachineLearningBased,
DeepLearningBased,
EnsembleMethods,
}
#[derive(Debug, Clone)]
pub struct AnomalyThresholds {
pub statistical_threshold: f64,
pub confidence_threshold: f64,
pub false_positive_rate: f64,
}
#[derive(Debug, Clone)]
pub struct AnomalyResponseActions {
pub alert_generation: bool,
pub automatic_quarantine: bool,
pub enhanced_monitoring: bool,
pub incident_escalation: bool,
}
#[derive(Debug, Clone)]
pub struct ThreatCorrelationConfig {
pub correlation_algorithms: Vec<CorrelationAlgorithm>,
pub temporal_window: Duration,
pub cross_client_correlation: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum CorrelationAlgorithm {
TemporalPatternMatching,
BehavioralProfiling,
GraphBasedAnalysis,
StatisticalCorrelation,
}
#[derive(Debug, Clone, Copy)]
pub enum RiskAssessmentMethodology {
QualitativeAssessment,
QuantitativeAssessment,
SemiQuantitativeAssessment,
ScenarioBasedAssessment,
}
#[derive(Debug, Clone)]
pub struct RiskToleranceLevels {
pub privacy_risk_tolerance: f64,
pub security_risk_tolerance: f64,
pub utility_risk_tolerance: f64,
pub operational_risk_tolerance: f64,
}
#[derive(Debug, Clone)]
pub struct ImpactAssessmentCriteria {
pub confidentiality_impact: ImpactLevel,
pub integrity_impact: ImpactLevel,
pub availability_impact: ImpactLevel,
pub compliance_impact: ImpactLevel,
}
#[derive(Debug, Clone, Copy)]
pub enum ImpactLevel {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone)]
pub struct LikelihoodEstimationMethods {
pub historical_analysis: bool,
pub expert_judgment: bool,
pub threat_modeling: bool,
pub simulation_based: bool,
}
#[derive(Debug, Clone, Default)]
pub struct RiskMitigationStrategies {
pub avoidance_strategies: Vec<String>,
pub mitigation_controls: Vec<String>,
pub transfer_mechanisms: Vec<String>,
pub acceptance_criteria: Vec<String>,
}
#[derive(Debug, Clone, Copy)]
pub enum SeedSharingMethod {
ShamirSecretSharing,
ThresholdEncryption,
DistributedKeyGeneration,
}
#[derive(Debug, Clone, Copy)]
pub enum ByzantineRobustMethod {
TrimmedMean { trim_ratio: f64 },
CoordinateWiseMedian,
Krum { f: usize },
MultiKrum { f: usize, m: usize },
Bulyan { f: usize },
CenteredClipping { tau: f64 },
FedAvgOutlierDetection { threshold: f64 },
ReputationWeighted { reputation_decay: f64 },
}
#[derive(Debug, Clone)]
pub enum PersonalizationStrategy {
None,
FineTuning { local_epochs: usize },
MetaLearning { inner_lr: f64, outer_lr: f64 },
ClusteredFL { num_clusters: usize },
MultiTask { task_similarity_threshold: f64 },
PersonalizedLayers { personal_layer_indices: Vec<usize> },
ModelInterpolation { interpolation_weight: f64 },
Adaptive { adaptation_rate: f64 },
}
#[derive(Debug, Clone, Copy)]
pub enum CompressionStrategy {
None,
Quantization { bits: u8 },
TopK { k: usize },
RandomSparsification { sparsity_ratio: f64 },
ErrorFeedback,
GradientMemory { memory_factor: f64 },
LowRank { rank: usize },
Structured { structure_type: StructureType },
}
#[derive(Debug, Clone, Copy)]
pub enum StructureType {
Circulant,
Toeplitz,
Hankel,
BlockDiagonal,
}
#[derive(Debug, Clone, Copy)]
pub enum ContinualLearningStrategy {
EWC { lambda: f64 },
MAS { lambda: f64 },
Progressive,
LwF { distillation_temperature: f64 },
GEM { memory_size: usize },
FedContinual { memory_budget: usize },
TaskAgnostic,
}
#[derive(Debug, Clone)]
pub struct AdvancedFederatedConfig {
pub byzantine_config: ByzantineRobustConfig,
pub personalization_config: PersonalizationConfig,
pub adaptive_budget_config: AdaptiveBudgetConfig,
pub communication_config: CommunicationConfig,
pub continual_learning_config: ContinualLearningConfig,
pub multi_level_privacy: MultiLevelPrivacyConfig,
}
#[derive(Debug, Clone)]
pub struct ByzantineRobustConfig {
pub method: ByzantineRobustMethod,
pub expected_byzantine_ratio: f64,
pub dynamic_detection: bool,
pub reputation_system: ReputationSystemConfig,
pub statistical_tests: StatisticalTestConfig,
}
#[derive(Debug, Clone)]
pub struct PersonalizationConfig {
pub strategy: PersonalizationStrategy,
pub local_adaptation: LocalAdaptationConfig,
pub clustering: ClusteringConfig,
pub meta_learning: MetaLearningConfig,
pub privacy_preserving: bool,
}
#[derive(Debug, Clone)]
pub struct AdaptiveBudgetConfig {
pub enabled: bool,
pub allocation_strategy: BudgetAllocationStrategy,
pub dynamic_privacy: DynamicPrivacyConfig,
pub importance_weighting: bool,
pub contextual_adjustment: ContextualAdjustmentConfig,
}
#[derive(Debug, Clone)]
pub struct CommunicationConfig {
pub compression: CompressionStrategy,
pub lazy_aggregation: LazyAggregationConfig,
pub federated_dropout: FederatedDropoutConfig,
pub async_updates: AsyncUpdateConfig,
pub bandwidth_adaptation: BandwidthAdaptationConfig,
}
#[derive(Debug, Clone)]
pub struct ContinualLearningConfig {
pub strategy: ContinualLearningStrategy,
pub memory_management: MemoryManagementConfig,
pub task_detection: TaskDetectionConfig,
pub knowledge_transfer: KnowledgeTransferConfig,
pub forgetting_prevention: ForgettingPreventionConfig,
}
#[derive(Debug, Clone)]
pub struct MultiLevelPrivacyConfig {
pub local_dp: LocalDPConfig,
pub global_dp: GlobalDPConfig,
pub user_level: UserLevelPrivacyConfig,
pub hierarchical: HierarchicalPrivacyConfig,
pub context_aware: ContextAwarePrivacyConfig,
}
#[derive(Debug, Clone)]
pub struct ReputationSystemConfig {
pub enabled: bool,
pub initial_reputation: f64,
pub reputation_decay: f64,
pub min_reputation: f64,
pub outlier_penalty: f64,
pub contribution_bonus: f64,
}
#[derive(Debug, Clone)]
pub struct StatisticalTestConfig {
pub enabled: bool,
pub test_type: StatisticalTestType,
pub significancelevel: f64,
pub window_size: usize,
pub adaptive_threshold: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum StatisticalTestType {
ZScore,
ModifiedZScore,
IQRTest,
GrubbsTest,
ChauventCriterion,
}
#[derive(Debug, Clone)]
pub struct LocalAdaptationConfig {
pub adaptation_rate: f64,
pub local_epochs: usize,
pub adaptation_frequency: usize,
pub adaptation_method: AdaptationMethod,
pub regularization_strength: f64,
}
#[derive(Debug, Clone, Copy)]
pub enum AdaptationMethod {
FineTuning,
FeatureExtraction,
LayerWiseAdaptation,
AttentionBasedAdaptation,
}
#[derive(Debug, Clone)]
pub struct ClusteringConfig {
pub num_clusters: usize,
pub clustering_method: ClusteringMethod,
pub similarity_metric: SimilarityMetric,
pub cluster_update_frequency: usize,
pub privacy_preserving_clustering: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum ClusteringMethod {
KMeans,
DBSCAN,
AgglomerativeClustering,
SpectralClustering,
PrivacyPreservingKMeans,
}
#[derive(Debug, Clone, Copy)]
pub enum SimilarityMetric {
CosineSimilarity,
EuclideanDistance,
ModelParameters,
GradientSimilarity,
LossLandscape,
}
#[derive(Debug, Clone)]
pub struct MetaLearningConfig {
pub inner_learning_rate: f64,
pub outer_learning_rate: f64,
pub inner_steps: usize,
pub meta_batch_size: usize,
pub adaptation_method: MetaAdaptationMethod,
}
#[derive(Debug, Clone, Copy)]
pub enum MetaAdaptationMethod {
MAML,
Reptile,
ProtoNets,
RelationNets,
FOMAML,
}
#[derive(Debug, Clone, Copy)]
pub enum BudgetAllocationStrategy {
Uniform,
ProportionalToData,
ProportionalToParticipation,
UtilityBased,
FairnessAware,
AdaptiveAllocation,
}
#[derive(Debug, Clone)]
pub struct DynamicPrivacyConfig {
pub enabled: bool,
pub adaptation_frequency: usize,
pub privacy_sensitivity: f64,
pub utility_weight: f64,
pub fairness_weight: f64,
}
#[derive(Debug, Clone)]
pub struct ContextualAdjustmentConfig {
pub enabled: bool,
pub context_factors: Vec<ContextFactor>,
pub adjustment_sensitivity: f64,
pub temporal_adaptation: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum ContextFactor {
DataSensitivity,
ClientTrustLevel,
NetworkConditions,
ModelAccuracy,
ParticipationHistory,
}
#[derive(Debug, Clone)]
pub struct LazyAggregationConfig {
pub enabled: bool,
pub aggregation_threshold: f64,
pub staleness_tolerance: usize,
pub gradient_similarity_threshold: f64,
}
#[derive(Debug, Clone)]
pub struct FederatedDropoutConfig {
pub enabled: bool,
pub dropout_probability: f64,
pub adaptive_dropout: bool,
pub importance_sampling: bool,
}
#[derive(Debug, Clone)]
pub struct AsyncUpdateConfig {
pub enabled: bool,
pub staleness_threshold: usize,
pub mixing_coefficient: f64,
pub buffering_strategy: BufferingStrategy,
}
#[derive(Debug, Clone, Copy)]
pub enum BufferingStrategy {
FIFO,
LIFO,
PriorityBased,
AdaptiveMixing,
}
#[derive(Debug, Clone, Default)]
pub struct BandwidthAdaptationConfig {
pub enabled: bool,
pub compression_adaptation: bool,
pub transmission_scheduling: bool,
pub quality_of_service: QoSConfig,
}
#[derive(Debug, Clone)]
pub struct QoSConfig {
pub priority_levels: usize,
pub latency_targets: Vec<f64>,
pub throughput_targets: Vec<f64>,
pub fairness_constraints: bool,
}
#[derive(Debug, Clone)]
pub struct MemoryManagementConfig {
pub memory_budget: usize,
pub eviction_strategy: EvictionStrategy,
pub compression_enabled: bool,
pub memory_adaptation: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum EvictionStrategy {
LRU,
LFU,
FIFO,
ImportanceBased,
TemporalDecay,
}
#[derive(Debug, Clone)]
pub struct TaskDetectionConfig {
pub enabled: bool,
pub detection_method: TaskDetectionMethod,
pub sensitivity_threshold: f64,
pub adaptation_delay: usize,
}
#[derive(Debug, Clone, Copy)]
pub enum TaskDetectionMethod {
GradientBased,
LossBased,
StatisticalTest,
ChangePointDetection,
EnsembleMethods,
}
#[derive(Debug, Clone)]
pub struct KnowledgeTransferConfig {
pub transfer_method: KnowledgeTransferMethod,
pub transfer_strength: f64,
pub selective_transfer: bool,
pub privacy_preserving: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum KnowledgeTransferMethod {
ParameterTransfer,
FeatureTransfer,
AttentionTransfer,
DistillationBased,
GradientBased,
}
#[derive(Debug, Clone)]
pub struct ForgettingPreventionConfig {
pub method: ForgettingPreventionMethod,
pub regularization_strength: f64,
pub memory_replay_ratio: f64,
pub importance_estimation: ImportanceEstimationMethod,
}
#[derive(Debug, Clone, Copy)]
pub enum ForgettingPreventionMethod {
EWC,
MAS,
PackNet,
ProgressiveNets,
MemoryReplay,
}
#[derive(Debug, Clone, Copy)]
pub enum ImportanceEstimationMethod {
FisherInformation,
GradientNorm,
PathIntegral,
AttentionWeights,
}
#[derive(Debug, Clone)]
pub struct LocalDPConfig {
pub enabled: bool,
pub epsilon: f64,
pub mechanism: LocalDPMechanism,
pub data_preprocessing: DataPreprocessingConfig,
}
#[derive(Debug, Clone, Copy)]
pub enum LocalDPMechanism {
Randomized,
Duchi,
RAPPOR,
PrivUnit,
Harmony,
}
#[derive(Debug, Clone)]
pub struct GlobalDPConfig {
pub epsilon: f64,
pub delta: f64,
pub composition_method: CompositionMethod,
pub amplification_analysis: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum CompositionMethod {
Basic,
Advanced,
RDP,
ZCDP,
Moments,
}
#[derive(Debug, Clone)]
pub struct UserLevelPrivacyConfig {
pub enabled: bool,
pub user_epsilon: f64,
pub user_delta: f64,
pub cross_device_correlation: bool,
pub temporal_correlation: bool,
}
#[derive(Debug, Clone)]
pub struct HierarchicalPrivacyConfig {
pub levels: Vec<PrivacyLevel>,
pub level_allocation: LevelAllocationStrategy,
pub inter_level_composition: bool,
}
#[derive(Debug, Clone)]
pub struct PrivacyLevel {
pub name: String,
pub epsilon: f64,
pub delta: f64,
pub scope: PrivacyScope,
}
#[derive(Debug, Clone, Copy)]
pub enum PrivacyScope {
Individual,
Group,
Organization,
Global,
}
#[derive(Debug, Clone, Copy)]
pub enum LevelAllocationStrategy {
Uniform,
ProportionalToSensitivity,
OptimalAllocation,
AdaptiveAllocation,
}
#[derive(Debug, Clone)]
pub struct ContextAwarePrivacyConfig {
pub enabled: bool,
pub context_sensitivity: f64,
pub dynamic_adjustment: bool,
pub privacy_preferences: PrivacyPreferencesConfig,
}
#[derive(Debug, Clone)]
pub struct PrivacyPreferencesConfig {
pub user_controlled: bool,
pub preference_learning: bool,
pub default_privacy_level: PrivacyLevel,
pub granular_control: bool,
}
#[derive(Debug, Clone)]
pub struct DataPreprocessingConfig {
pub normalization: bool,
pub discretization: bool,
pub dimensionality_reduction: bool,
pub feature_selection: bool,
}
impl Default for FederatedPrivacyConfig {
fn default() -> Self {
Self {
base_config: DifferentialPrivacyConfig::default(),
clients_per_round: 100,
total_clients: 1000,
sampling_strategy: ClientSamplingStrategy::UniformRandom,
secure_aggregation: SecureAggregationConfig::default(),
amplification_config: AmplificationConfig::default(),
cross_device_config: CrossDeviceConfig::default(),
composition_method: FederatedCompositionMethod::FederatedMomentsAccountant,
trust_model: TrustModel::HonestButCurious,
communication_privacy: CommunicationPrivacyConfig::default(),
}
}
}
impl Default for SecureAggregationConfig {
fn default() -> Self {
Self {
enabled: false,
min_clients: 10,
max_dropouts: 5,
masking_dimension: 1000,
seed_sharing: SeedSharingMethod::ShamirSecretSharing,
quantization_bits: None,
aggregate_dp: true,
}
}
}
impl Default for AmplificationConfig {
fn default() -> Self {
Self {
enabled: true,
subsampling_factor: 1.0,
shuffling_enabled: false,
multi_round_amplification: true,
heterogeneous_amplification: false,
}
}
}
impl Default for CommunicationPrivacyConfig {
fn default() -> Self {
Self {
encryption_enabled: true,
anonymous_channels: false,
communication_noise: false,
traffic_analysis_protection: false,
threat_modeling: AdvancedThreatModelingConfig::default(),
cross_silo_config: None,
}
}
}
impl Default for AdversarialCapabilities {
fn default() -> Self {
Self {
computational_resources: ComputationalThreatLevel::Limited,
network_capabilities: NetworkThreatCapabilities::default(),
data_capabilities: DataThreatCapabilities::default(),
algorithmic_knowledge: AlgorithmicKnowledgeLevel::BlackBox,
collusion_potential: CollusionThreatLevel::None,
attack_persistence: AttackPersistenceLevel::OneTime,
}
}
}
impl Default for AnomalyDetectionConfig {
fn default() -> Self {
Self {
algorithms: vec![AnomalyDetectionAlgorithm::StatisticalBaseline],
thresholds: AnomalyThresholds::default(),
response_actions: AnomalyResponseActions::default(),
}
}
}
impl Default for AnomalyThresholds {
fn default() -> Self {
Self {
statistical_threshold: 0.95,
confidence_threshold: 0.8,
false_positive_rate: 0.05,
}
}
}
impl Default for AnomalyResponseActions {
fn default() -> Self {
Self {
alert_generation: true,
automatic_quarantine: false,
enhanced_monitoring: true,
incident_escalation: false,
}
}
}
impl Default for ThreatCorrelationConfig {
fn default() -> Self {
Self {
correlation_algorithms: vec![CorrelationAlgorithm::StatisticalCorrelation],
temporal_window: Duration::from_secs(3600), cross_client_correlation: false,
}
}
}
impl Default for RiskAssessmentConfig {
fn default() -> Self {
Self {
methodology: RiskAssessmentMethodology::QualitativeAssessment,
risk_tolerance: RiskToleranceLevels::default(),
impact_assessment: ImpactAssessmentCriteria::default(),
likelihood_estimation: LikelihoodEstimationMethods::default(),
mitigation_strategies: RiskMitigationStrategies::default(),
}
}
}
impl Default for RiskToleranceLevels {
fn default() -> Self {
Self {
privacy_risk_tolerance: 0.1,
security_risk_tolerance: 0.05,
utility_risk_tolerance: 0.2,
operational_risk_tolerance: 0.15,
}
}
}
impl Default for ImpactAssessmentCriteria {
fn default() -> Self {
Self {
confidentiality_impact: ImpactLevel::Medium,
integrity_impact: ImpactLevel::High,
availability_impact: ImpactLevel::Medium,
compliance_impact: ImpactLevel::High,
}
}
}
impl Default for LikelihoodEstimationMethods {
fn default() -> Self {
Self {
historical_analysis: true,
expert_judgment: true,
threat_modeling: false,
simulation_based: false,
}
}
}
impl Default for ReputationSystemConfig {
fn default() -> Self {
Self {
enabled: false,
initial_reputation: 1.0,
reputation_decay: 0.95,
min_reputation: 0.1,
outlier_penalty: 0.1,
contribution_bonus: 0.05,
}
}
}
impl Default for StatisticalTestConfig {
fn default() -> Self {
Self {
enabled: false,
test_type: StatisticalTestType::ZScore,
significancelevel: 0.05,
window_size: 10,
adaptive_threshold: false,
}
}
}
impl Default for LocalAdaptationConfig {
fn default() -> Self {
Self {
adaptation_rate: 0.01,
local_epochs: 1,
adaptation_frequency: 1,
adaptation_method: AdaptationMethod::FineTuning,
regularization_strength: 0.01,
}
}
}
impl Default for ClusteringConfig {
fn default() -> Self {
Self {
num_clusters: 5,
clustering_method: ClusteringMethod::KMeans,
similarity_metric: SimilarityMetric::CosineSimilarity,
cluster_update_frequency: 10,
privacy_preserving_clustering: false,
}
}
}
impl Default for MetaLearningConfig {
fn default() -> Self {
Self {
inner_learning_rate: 0.01,
outer_learning_rate: 0.001,
inner_steps: 5,
meta_batch_size: 32,
adaptation_method: MetaAdaptationMethod::MAML,
}
}
}
impl Default for DynamicPrivacyConfig {
fn default() -> Self {
Self {
enabled: false,
adaptation_frequency: 10,
privacy_sensitivity: 1.0,
utility_weight: 0.5,
fairness_weight: 0.3,
}
}
}
impl Default for ContextualAdjustmentConfig {
fn default() -> Self {
Self {
enabled: false,
context_factors: vec![ContextFactor::DataSensitivity],
adjustment_sensitivity: 0.1,
temporal_adaptation: false,
}
}
}
impl Default for LazyAggregationConfig {
fn default() -> Self {
Self {
enabled: false,
aggregation_threshold: 0.9,
staleness_tolerance: 5,
gradient_similarity_threshold: 0.8,
}
}
}
impl Default for FederatedDropoutConfig {
fn default() -> Self {
Self {
enabled: false,
dropout_probability: 0.1,
adaptive_dropout: false,
importance_sampling: false,
}
}
}
impl Default for AsyncUpdateConfig {
fn default() -> Self {
Self {
enabled: false,
staleness_threshold: 10,
mixing_coefficient: 0.9,
buffering_strategy: BufferingStrategy::FIFO,
}
}
}
impl Default for QoSConfig {
fn default() -> Self {
Self {
priority_levels: 3,
latency_targets: vec![100.0, 200.0, 500.0],
throughput_targets: vec![10.0, 5.0, 1.0],
fairness_constraints: true,
}
}
}
impl Default for MemoryManagementConfig {
fn default() -> Self {
Self {
memory_budget: 1000,
eviction_strategy: EvictionStrategy::LRU,
compression_enabled: false,
memory_adaptation: false,
}
}
}
impl Default for TaskDetectionConfig {
fn default() -> Self {
Self {
enabled: false,
detection_method: TaskDetectionMethod::GradientBased,
sensitivity_threshold: 0.1,
adaptation_delay: 5,
}
}
}
impl Default for KnowledgeTransferConfig {
fn default() -> Self {
Self {
transfer_method: KnowledgeTransferMethod::ParameterTransfer,
transfer_strength: 0.5,
selective_transfer: false,
privacy_preserving: true,
}
}
}
impl Default for ForgettingPreventionConfig {
fn default() -> Self {
Self {
method: ForgettingPreventionMethod::EWC,
regularization_strength: 0.1,
memory_replay_ratio: 0.1,
importance_estimation: ImportanceEstimationMethod::FisherInformation,
}
}
}
impl Default for AdaptiveBudgetConfig {
fn default() -> Self {
Self {
enabled: false,
allocation_strategy: BudgetAllocationStrategy::Uniform,
dynamic_privacy: DynamicPrivacyConfig::default(),
importance_weighting: false,
contextual_adjustment: ContextualAdjustmentConfig::default(),
}
}
}