1use super::super::DifferentialPrivacyConfig;
31use std::time::Duration;
32
33#[derive(Debug, Clone)]
35pub struct FederatedPrivacyConfig {
36 pub base_config: DifferentialPrivacyConfig,
38
39 pub clients_per_round: usize,
41
42 pub total_clients: usize,
44
45 pub sampling_strategy: ClientSamplingStrategy,
47
48 pub secure_aggregation: SecureAggregationConfig,
50
51 pub amplification_config: AmplificationConfig,
53
54 pub cross_device_config: CrossDeviceConfig,
56
57 pub composition_method: FederatedCompositionMethod,
59
60 pub trust_model: TrustModel,
62
63 pub communication_privacy: CommunicationPrivacyConfig,
65}
66
67#[derive(Debug, Clone, Copy)]
69pub enum ClientSamplingStrategy {
70 UniformRandom,
72
73 Stratified,
75
76 ImportanceSampling,
78
79 PoissonSampling,
81
82 FairSampling,
84}
85
86pub use super::super::federated::secure_aggregation::{SecureAggregationConfig, SeedSharingMethod};
97
98pub use super::super::federated::byzantine_aggregation::{
107 ByzantineRobustConfig, ByzantineRobustMethod, ReputationSystemConfig, StatisticalTestConfig,
108 StatisticalTestType,
109};
110pub use super::super::federated::composition_analyzer::FederatedCompositionMethod;
111pub use super::super::federated::cross_device_manager::CrossDeviceConfig;
112
113#[derive(Debug, Clone)]
124pub struct AmplificationConfig {
125 pub enabled: bool,
127
128 pub subsampling_factor: f64,
130
131 pub shuffling_enabled: bool,
133
134 pub multi_round_amplification: bool,
140
141 pub heterogeneous_amplification: bool,
143}
144
145#[derive(Debug, Clone, Copy)]
147pub enum TrustModel {
148 HonestButCurious,
150
151 SemiHonest,
153
154 Byzantine,
156
157 Malicious,
159}
160
161#[derive(Debug, Clone, Default)]
166pub struct CommunicationPrivacyConfig {
167 pub encryption_enabled: bool,
173
174 pub anonymous_channels: bool,
176
177 pub communication_noise: bool,
179
180 pub traffic_analysis_protection: bool,
182
183 pub threat_modeling: AdvancedThreatModelingConfig,
185
186 pub cross_silo_config: Option<CrossSiloFederatedConfig>,
188}
189
190#[derive(Debug, Clone, Default)]
192pub struct AdvancedThreatModelingConfig {
193 pub enabled: bool,
195
196 pub adversarial_capabilities: AdversarialCapabilities,
198
199 pub attack_surface_analysis: AttackSurfaceConfig,
201
202 pub threat_intelligence: ThreatIntelligenceConfig,
204
205 pub risk_assessment: RiskAssessmentConfig,
207
208 pub countermeasure_evaluation: CountermeasureEvaluationConfig,
210}
211
212#[derive(Debug, Clone)]
214pub struct AdversarialCapabilities {
215 pub computational_resources: ComputationalThreatLevel,
217
218 pub network_capabilities: NetworkThreatCapabilities,
220
221 pub data_capabilities: DataThreatCapabilities,
223
224 pub algorithmic_knowledge: AlgorithmicKnowledgeLevel,
226
227 pub collusion_potential: CollusionThreatLevel,
229
230 pub attack_persistence: AttackPersistenceLevel,
232}
233
234#[derive(Debug, Clone, Default)]
236pub struct AttackSurfaceConfig {
237 pub client_attack_vectors: ClientAttackVectors,
239
240 pub server_attack_vectors: ServerAttackVectors,
242
243 pub communication_vulnerabilities: CommunicationVulnerabilities,
245
246 pub aggregation_vulnerabilities: AggregationVulnerabilities,
248
249 pub privacy_mechanism_vulnerabilities: PrivacyMechanismVulnerabilities,
251}
252
253#[derive(Debug, Clone, Default)]
255pub struct ThreatIntelligenceConfig {
256 pub enabled: bool,
258
259 pub real_time_monitoring: bool,
261
262 pub signature_database: ThreatSignatureDatabase,
264
265 pub anomaly_detection: AnomalyDetectionConfig,
267
268 pub threat_correlation: ThreatCorrelationConfig,
270}
271
272#[derive(Debug, Clone)]
274pub struct RiskAssessmentConfig {
275 pub methodology: RiskAssessmentMethodology,
277
278 pub risk_tolerance: RiskToleranceLevels,
280
281 pub impact_assessment: ImpactAssessmentCriteria,
283
284 pub likelihood_estimation: LikelihoodEstimationMethods,
286
287 pub mitigation_strategies: RiskMitigationStrategies,
289}
290
291#[derive(Debug, Clone, Default)]
293pub struct EffectivenessMetrics {
294 pub detection_accuracy: f64,
296 pub false_positive_rate: f64,
298 pub false_negative_rate: f64,
300 pub response_times: Vec<f64>,
302}
303
304#[derive(Debug, Clone, Default)]
306pub struct CostBenefitAnalysisConfig {
307 pub implementation_costs: Vec<f64>,
309 pub operational_costs: Vec<f64>,
311 pub benefits: Vec<f64>,
313 pub roi_methods: Vec<String>,
315}
316
317#[derive(Debug, Clone, Default)]
319pub struct DynamicAdaptationConfig {
320 pub triggers: Vec<String>,
322 pub strategies: Vec<String>,
324 pub learning_rate: f64,
326 pub min_threshold: f64,
328}
329
330#[derive(Debug, Clone, Default)]
332pub struct CountermeasureOptimizationConfig {
333 pub algorithms: Vec<String>,
335 pub target_metrics: Vec<String>,
337 pub constraints: Vec<String>,
339 pub frequency: String,
341}
342
343#[derive(Debug, Clone, Default)]
345pub struct CountermeasureEvaluationConfig {
346 pub effectiveness_metrics: EffectivenessMetrics,
348
349 pub cost_benefit_analysis: CostBenefitAnalysisConfig,
351
352 pub dynamic_adaptation: DynamicAdaptationConfig,
354
355 pub optimization: CountermeasureOptimizationConfig,
357}
358
359#[derive(Debug, Clone)]
361pub struct DataMarketplaceConfig {
362 pub enabled: bool,
364 pub pricing_models: Vec<String>,
366 pub quality_metrics: Vec<String>,
368 pub access_controls: Vec<String>,
370}
371
372#[derive(Debug, Clone)]
374pub struct RegulatoryComplianceConfig {
375 pub regulations: Vec<String>,
377 pub compliance_checks: Vec<String>,
379 pub reporting_requirements: Vec<String>,
381 pub audit_trails: bool,
383}
384
385#[derive(Debug, Clone)]
387pub struct AuditAccountabilityConfig {
388 pub audit_logging: bool,
390 pub accountability_mechanisms: Vec<String>,
392 pub verification_methods: Vec<String>,
394 pub compliance_tracking: bool,
396}
397
398#[derive(Debug, Clone)]
400pub struct TrustEstablishmentMethods {
401 pub certification_authorities: Vec<String>,
403 pub reputation_systems: Vec<String>,
405 pub verification_protocols: Vec<String>,
407}
408
409#[derive(Debug, Clone)]
411pub struct TrustVerificationMechanisms {
412 pub methods: Vec<String>,
414 pub frequency: String,
416 pub thresholds: Vec<f64>,
418}
419
420#[derive(Debug, Clone)]
422pub struct OrganizationReputationSystem {
423 pub metrics: Vec<String>,
425 pub scoring_algorithms: Vec<String>,
427 pub update_frequencies: Vec<String>,
429}
430
431#[derive(Debug, Clone)]
433pub struct TrustLifecycleManagement {
434 pub establishment_phases: Vec<String>,
436 pub maintenance_procedures: Vec<String>,
438 pub recovery_mechanisms: Vec<String>,
440 pub degradation_triggers: Vec<String>,
442}
443
444#[derive(Debug, Clone)]
446pub struct DataGovernanceConfig {
447 pub classification: Vec<String>,
449 pub access_policies: Vec<String>,
451 pub quality_standards: Vec<String>,
453 pub retention_policies: Vec<String>,
455}
456
457#[derive(Debug, Clone)]
459pub struct PrivacyAgreementConfig {
460 pub templates: Vec<String>,
462 pub negotiation_protocols: Vec<String>,
464 pub enforcement_mechanisms: Vec<String>,
466 pub compliance_monitoring: bool,
468}
469
470#[derive(Debug, Clone)]
472pub struct CrossSiloFederatedConfig {
473 pub enabled: bool,
475
476 pub organization_trust: OrganizationTrustConfig,
478
479 pub data_governance: DataGovernanceConfig,
481
482 pub privacy_agreements: PrivacyAgreementConfig,
484
485 pub data_marketplace: DataMarketplaceConfig,
487
488 pub regulatory_compliance: RegulatoryComplianceConfig,
490
491 pub audit_accountability: AuditAccountabilityConfig,
493}
494
495#[derive(Debug, Clone)]
497pub struct OrganizationTrustConfig {
498 pub trust_establishment: TrustEstablishmentMethods,
500
501 pub trust_verification: TrustVerificationMechanisms,
503
504 pub reputation_system: OrganizationReputationSystem,
506
507 pub trust_lifecycle: TrustLifecycleManagement,
509}
510
511#[derive(Debug, Clone, Copy)]
514pub enum ComputationalThreatLevel {
515 Limited, Moderate, Substantial, Unlimited, }
520
521#[derive(Debug, Clone, Default)]
522pub struct NetworkThreatCapabilities {
523 pub can_intercept: bool,
525 pub can_modify: bool,
527 pub can_inject: bool,
529 pub can_analyze_traffic: bool,
531 pub can_timing_attack: bool,
533 pub can_dos: bool,
535}
536
537#[derive(Debug, Clone, Default)]
538pub struct DataThreatCapabilities {
539 pub can_access_training_data: bool,
541 pub can_modify_training_data: bool,
543 pub can_inject_poisoned_data: bool,
545 pub can_membership_inference: bool,
547 pub can_extract_parameters: bool,
549 pub can_gradient_inversion: bool,
551}
552
553#[derive(Debug, Clone, Copy)]
554pub enum AlgorithmicKnowledgeLevel {
555 BlackBox, GrayBox, WhiteBox, Adaptive, }
560
561#[derive(Debug, Clone, Copy)]
562pub enum CollusionThreatLevel {
563 None, Limited, Substantial, Majority, }
568
569#[derive(Debug, Clone, Copy)]
570pub enum AttackPersistenceLevel {
571 OneTime, Intermittent, Persistent, Adaptive, }
576
577#[derive(Debug, Clone, Default)]
578pub struct ClientAttackVectors {
579 pub model_poisoning: bool,
581 pub data_poisoning: bool,
583 pub gradient_manipulation: bool,
585 pub local_model_extraction: bool,
587 pub client_impersonation: bool,
589}
590
591#[derive(Debug, Clone, Default)]
592pub struct ServerAttackVectors {
593 pub server_compromise: bool,
595 pub malicious_aggregation: bool,
597 pub backdoor_injection: bool,
599 pub budget_manipulation: bool,
601 pub client_discrimination: bool,
603}
604
605#[derive(Debug, Clone, Default)]
606pub struct CommunicationVulnerabilities {
607 pub mitm_attacks: bool,
609 pub eavesdropping: bool,
611 pub replay_attacks: bool,
613 pub message_injection: bool,
615 pub timing_analysis: bool,
617}
618
619#[derive(Debug, Clone, Default)]
620pub struct AggregationVulnerabilities {
621 pub secure_aggregation_bypass: bool,
623 pub aggregation_manipulation: bool,
625 pub statistical_attacks: bool,
627 pub reconstruction_attacks: bool,
629}
630
631#[derive(Debug, Clone, Default)]
632pub struct PrivacyMechanismVulnerabilities {
633 pub dp_parameter_inference: bool,
635 pub budget_exhaustion: bool,
637 pub composition_attacks: bool,
639 pub auxiliary_info_attacks: bool,
641}
642
643#[derive(Debug, Clone, Default)]
644pub struct ThreatSignatureDatabase {
645 pub attack_patterns: Vec<AttackPattern>,
647 pub threat_actors: Vec<ThreatActorProfile>,
649 pub vulnerability_signatures: Vec<VulnerabilitySignature>,
651}
652
653#[derive(Debug, Clone)]
654pub struct AttackPattern {
655 pub id: String,
657 pub description: String,
659 pub indicators: Vec<AttackIndicator>,
661 pub severity: ThreatSeverity,
663 pub mitigations: Vec<String>,
665}
666
667#[derive(Debug, Clone)]
668pub struct ThreatActorProfile {
669 pub id: String,
671 pub capabilities: AdversarialCapabilities,
673 pub attack_methods: Vec<String>,
675 pub targeting_preferences: Vec<String>,
677}
678
679#[derive(Debug, Clone)]
680pub struct VulnerabilitySignature {
681 pub id: String,
683 pub affected_components: Vec<String>,
685 pub exploitation_indicators: Vec<String>,
687 pub severity_score: f64,
689}
690
691#[derive(Debug, Clone)]
692pub struct AttackIndicator {
693 pub indicator_type: IndicatorType,
695 pub value: String,
697 pub confidence: f64,
699}
700
701#[derive(Debug, Clone, Copy)]
702pub enum IndicatorType {
703 NetworkTraffic,
704 GradientPattern,
705 ModelBehavior,
706 PerformanceAnomaly,
707 CommunicationPattern,
708}
709
710#[derive(Debug, Clone, Copy)]
711pub enum ThreatSeverity {
712 Low,
713 Medium,
714 High,
715 Critical,
716}
717
718#[derive(Debug, Clone)]
719pub struct AnomalyDetectionConfig {
720 pub algorithms: Vec<AnomalyDetectionAlgorithm>,
722 pub thresholds: AnomalyThresholds,
724 pub response_actions: AnomalyResponseActions,
726}
727
728#[derive(Debug, Clone, Copy)]
729pub enum AnomalyDetectionAlgorithm {
730 StatisticalBaseline,
731 MachineLearningBased,
732 DeepLearningBased,
733 EnsembleMethods,
734}
735
736#[derive(Debug, Clone)]
737pub struct AnomalyThresholds {
738 pub statistical_threshold: f64,
740 pub confidence_threshold: f64,
742 pub false_positive_rate: f64,
744}
745
746#[derive(Debug, Clone)]
747pub struct AnomalyResponseActions {
748 pub alert_generation: bool,
750 pub automatic_quarantine: bool,
752 pub enhanced_monitoring: bool,
754 pub incident_escalation: bool,
756}
757
758#[derive(Debug, Clone)]
759pub struct ThreatCorrelationConfig {
760 pub correlation_algorithms: Vec<CorrelationAlgorithm>,
762 pub temporal_window: Duration,
764 pub cross_client_correlation: bool,
766}
767
768#[derive(Debug, Clone, Copy)]
769pub enum CorrelationAlgorithm {
770 TemporalPatternMatching,
771 BehavioralProfiling,
772 GraphBasedAnalysis,
773 StatisticalCorrelation,
774}
775
776#[derive(Debug, Clone, Copy)]
777pub enum RiskAssessmentMethodology {
778 QualitativeAssessment,
779 QuantitativeAssessment,
780 SemiQuantitativeAssessment,
781 ScenarioBasedAssessment,
782}
783
784#[derive(Debug, Clone)]
785pub struct RiskToleranceLevels {
786 pub privacy_risk_tolerance: f64,
788 pub security_risk_tolerance: f64,
790 pub utility_risk_tolerance: f64,
792 pub operational_risk_tolerance: f64,
794}
795
796#[derive(Debug, Clone)]
797pub struct ImpactAssessmentCriteria {
798 pub confidentiality_impact: ImpactLevel,
800 pub integrity_impact: ImpactLevel,
802 pub availability_impact: ImpactLevel,
804 pub compliance_impact: ImpactLevel,
806}
807
808#[derive(Debug, Clone, Copy)]
809pub enum ImpactLevel {
810 Low,
811 Medium,
812 High,
813 Critical,
814}
815
816#[derive(Debug, Clone)]
817pub struct LikelihoodEstimationMethods {
818 pub historical_analysis: bool,
820 pub expert_judgment: bool,
822 pub threat_modeling: bool,
824 pub simulation_based: bool,
826}
827
828#[derive(Debug, Clone, Default)]
829pub struct RiskMitigationStrategies {
830 pub avoidance_strategies: Vec<String>,
832 pub mitigation_controls: Vec<String>,
834 pub transfer_mechanisms: Vec<String>,
836 pub acceptance_criteria: Vec<String>,
838}
839
840#[derive(Debug, Clone)]
842pub enum PersonalizationStrategy {
843 None,
845
846 FineTuning { local_epochs: usize },
848
849 MetaLearning { inner_lr: f64, outer_lr: f64 },
851
852 ClusteredFL { num_clusters: usize },
854
855 MultiTask { task_similarity_threshold: f64 },
857
858 PersonalizedLayers { personal_layer_indices: Vec<usize> },
860
861 ModelInterpolation { interpolation_weight: f64 },
863
864 Adaptive { adaptation_rate: f64 },
866}
867
868#[derive(Debug, Clone, Copy)]
870pub enum CompressionStrategy {
871 None,
873
874 Quantization { bits: u8 },
876
877 TopK { k: usize },
879
880 RandomSparsification { sparsity_ratio: f64 },
882
883 ErrorFeedback,
885
886 GradientMemory { memory_factor: f64 },
888
889 LowRank { rank: usize },
891
892 Structured { structure_type: StructureType },
894}
895
896#[derive(Debug, Clone, Copy)]
898pub enum StructureType {
899 Circulant,
900 Toeplitz,
901 Hankel,
902 BlockDiagonal,
903}
904
905#[derive(Debug, Clone, Copy)]
907pub enum ContinualLearningStrategy {
908 EWC { lambda: f64 },
910
911 MAS { lambda: f64 },
913
914 Progressive,
916
917 LwF { distillation_temperature: f64 },
919
920 GEM { memory_size: usize },
922
923 FedContinual { memory_budget: usize },
925
926 TaskAgnostic,
928}
929
930#[derive(Debug, Clone)]
932pub struct PersonalizationConfig {
933 pub strategy: PersonalizationStrategy,
935
936 pub local_adaptation: LocalAdaptationConfig,
938
939 pub clustering: ClusteringConfig,
941
942 pub meta_learning: MetaLearningConfig,
944
945 pub privacy_preserving: bool,
947}
948
949#[derive(Debug, Clone)]
951pub struct AdaptiveBudgetConfig {
952 pub enabled: bool,
954
955 pub allocation_strategy: BudgetAllocationStrategy,
957
958 pub dynamic_privacy: DynamicPrivacyConfig,
960
961 pub importance_weighting: bool,
963
964 pub contextual_adjustment: ContextualAdjustmentConfig,
966}
967
968#[derive(Debug, Clone)]
970pub struct CommunicationConfig {
971 pub compression: CompressionStrategy,
973
974 pub lazy_aggregation: LazyAggregationConfig,
976
977 pub federated_dropout: FederatedDropoutConfig,
979
980 pub async_updates: AsyncUpdateConfig,
982
983 pub bandwidth_adaptation: BandwidthAdaptationConfig,
985}
986
987#[derive(Debug, Clone)]
989pub struct ContinualLearningConfig {
990 pub strategy: ContinualLearningStrategy,
992
993 pub memory_management: MemoryManagementConfig,
995
996 pub task_detection: TaskDetectionConfig,
998
999 pub knowledge_transfer: KnowledgeTransferConfig,
1001
1002 pub forgetting_prevention: ForgettingPreventionConfig,
1004}
1005
1006#[derive(Debug, Clone)]
1010pub struct LocalAdaptationConfig {
1011 pub adaptation_rate: f64,
1012 pub local_epochs: usize,
1013 pub adaptation_frequency: usize,
1014 pub adaptation_method: AdaptationMethod,
1015 pub regularization_strength: f64,
1016}
1017
1018#[derive(Debug, Clone, Copy)]
1019pub enum AdaptationMethod {
1020 FineTuning,
1021 FeatureExtraction,
1022 LayerWiseAdaptation,
1023 AttentionBasedAdaptation,
1024}
1025
1026#[derive(Debug, Clone)]
1028pub struct ClusteringConfig {
1029 pub num_clusters: usize,
1030 pub clustering_method: ClusteringMethod,
1031 pub similarity_metric: SimilarityMetric,
1032 pub cluster_update_frequency: usize,
1033 pub privacy_preserving_clustering: bool,
1034}
1035
1036#[derive(Debug, Clone, Copy)]
1037pub enum ClusteringMethod {
1038 KMeans,
1039 DBSCAN,
1040 AgglomerativeClustering,
1041 SpectralClustering,
1042 PrivacyPreservingKMeans,
1043}
1044
1045#[derive(Debug, Clone, Copy)]
1046pub enum SimilarityMetric {
1047 CosineSimilarity,
1048 EuclideanDistance,
1049 ModelParameters,
1050 GradientSimilarity,
1051 LossLandscape,
1052}
1053
1054#[derive(Debug, Clone)]
1056pub struct MetaLearningConfig {
1057 pub inner_learning_rate: f64,
1058 pub outer_learning_rate: f64,
1059 pub inner_steps: usize,
1060 pub meta_batch_size: usize,
1061 pub adaptation_method: MetaAdaptationMethod,
1062}
1063
1064#[derive(Debug, Clone, Copy)]
1065pub enum MetaAdaptationMethod {
1066 MAML,
1067 Reptile,
1068 ProtoNets,
1069 RelationNets,
1070 FOMAML,
1071}
1072
1073#[derive(Debug, Clone, Copy)]
1075pub enum BudgetAllocationStrategy {
1076 Uniform,
1077 ProportionalToData,
1078 ProportionalToParticipation,
1079 UtilityBased,
1080 FairnessAware,
1081 AdaptiveAllocation,
1082}
1083
1084#[derive(Debug, Clone)]
1086pub struct DynamicPrivacyConfig {
1087 pub enabled: bool,
1088 pub adaptation_frequency: usize,
1089 pub privacy_sensitivity: f64,
1090 pub utility_weight: f64,
1091 pub fairness_weight: f64,
1092}
1093
1094#[derive(Debug, Clone)]
1096pub struct ContextualAdjustmentConfig {
1097 pub enabled: bool,
1098 pub context_factors: Vec<ContextFactor>,
1099 pub adjustment_sensitivity: f64,
1100 pub temporal_adaptation: bool,
1101}
1102
1103#[derive(Debug, Clone, Copy)]
1104pub enum ContextFactor {
1105 DataSensitivity,
1106 ClientTrustLevel,
1107 NetworkConditions,
1108 ModelAccuracy,
1109 ParticipationHistory,
1110}
1111
1112#[derive(Debug, Clone)]
1114pub struct LazyAggregationConfig {
1115 pub enabled: bool,
1116 pub aggregation_threshold: f64,
1117 pub staleness_tolerance: usize,
1118 pub gradient_similarity_threshold: f64,
1119}
1120
1121#[derive(Debug, Clone)]
1123pub struct FederatedDropoutConfig {
1124 pub enabled: bool,
1125 pub dropout_probability: f64,
1126 pub adaptive_dropout: bool,
1127 pub importance_sampling: bool,
1128}
1129
1130#[derive(Debug, Clone)]
1132pub struct AsyncUpdateConfig {
1133 pub enabled: bool,
1134 pub staleness_threshold: usize,
1135 pub mixing_coefficient: f64,
1136 pub buffering_strategy: BufferingStrategy,
1137}
1138
1139#[derive(Debug, Clone, Copy)]
1140pub enum BufferingStrategy {
1141 FIFO,
1142 LIFO,
1143 PriorityBased,
1144 AdaptiveMixing,
1145}
1146
1147#[derive(Debug, Clone, Default)]
1149pub struct BandwidthAdaptationConfig {
1150 pub enabled: bool,
1151 pub compression_adaptation: bool,
1152 pub transmission_scheduling: bool,
1153 pub quality_of_service: QoSConfig,
1154}
1155
1156#[derive(Debug, Clone)]
1158pub struct QoSConfig {
1159 pub priority_levels: usize,
1160 pub latency_targets: Vec<f64>,
1161 pub throughput_targets: Vec<f64>,
1162 pub fairness_constraints: bool,
1163}
1164
1165#[derive(Debug, Clone)]
1167pub struct MemoryManagementConfig {
1168 pub memory_budget: usize,
1169 pub eviction_strategy: EvictionStrategy,
1170 pub compression_enabled: bool,
1171 pub memory_adaptation: bool,
1172}
1173
1174#[derive(Debug, Clone, Copy)]
1175pub enum EvictionStrategy {
1176 LRU,
1177 LFU,
1178 FIFO,
1179 ImportanceBased,
1180 TemporalDecay,
1181}
1182
1183#[derive(Debug, Clone)]
1185pub struct TaskDetectionConfig {
1186 pub enabled: bool,
1187 pub detection_method: TaskDetectionMethod,
1188 pub sensitivity_threshold: f64,
1189 pub adaptation_delay: usize,
1190}
1191
1192#[derive(Debug, Clone, Copy)]
1193pub enum TaskDetectionMethod {
1194 GradientBased,
1195 LossBased,
1196 StatisticalTest,
1197 ChangePointDetection,
1198 EnsembleMethods,
1199}
1200
1201#[derive(Debug, Clone)]
1203pub struct KnowledgeTransferConfig {
1204 pub transfer_method: KnowledgeTransferMethod,
1205 pub transfer_strength: f64,
1206 pub selective_transfer: bool,
1207 pub privacy_preserving: bool,
1208}
1209
1210#[derive(Debug, Clone, Copy)]
1211pub enum KnowledgeTransferMethod {
1212 ParameterTransfer,
1213 FeatureTransfer,
1214 AttentionTransfer,
1215 DistillationBased,
1216 GradientBased,
1217}
1218
1219#[derive(Debug, Clone)]
1221pub struct ForgettingPreventionConfig {
1222 pub method: ForgettingPreventionMethod,
1223 pub regularization_strength: f64,
1224 pub memory_replay_ratio: f64,
1225 pub importance_estimation: ImportanceEstimationMethod,
1226}
1227
1228#[derive(Debug, Clone, Copy)]
1229pub enum ForgettingPreventionMethod {
1230 EWC,
1231 MAS,
1232 PackNet,
1233 ProgressiveNets,
1234 MemoryReplay,
1235}
1236
1237#[derive(Debug, Clone, Copy)]
1238pub enum ImportanceEstimationMethod {
1239 FisherInformation,
1240 GradientNorm,
1241 PathIntegral,
1242 AttentionWeights,
1243}
1244
1245#[derive(Debug, Clone)]
1246pub struct PrivacyLevel {
1247 pub name: String,
1248 pub epsilon: f64,
1249 pub delta: f64,
1250 pub scope: PrivacyScope,
1251}
1252
1253#[derive(Debug, Clone, Copy)]
1254pub enum PrivacyScope {
1255 Individual,
1256 Group,
1257 Organization,
1258 Global,
1259}
1260
1261impl Default for FederatedPrivacyConfig {
1264 fn default() -> Self {
1265 Self {
1266 base_config: DifferentialPrivacyConfig {
1276 noise_multiplier: 4.0,
1277 ..DifferentialPrivacyConfig::default()
1278 },
1279 clients_per_round: 100,
1280 total_clients: 1000,
1281 sampling_strategy: ClientSamplingStrategy::UniformRandom,
1282 secure_aggregation: SecureAggregationConfig {
1286 enabled: false,
1287 ..SecureAggregationConfig::default()
1288 },
1289 amplification_config: AmplificationConfig::default(),
1290 cross_device_config: CrossDeviceConfig::default(),
1291 composition_method: FederatedCompositionMethod::FederatedMomentsAccountant,
1292 trust_model: TrustModel::HonestButCurious,
1293 communication_privacy: CommunicationPrivacyConfig::default(),
1294 }
1295 }
1296}
1297
1298impl Default for AmplificationConfig {
1299 fn default() -> Self {
1300 Self {
1301 enabled: true,
1302 subsampling_factor: 1.0,
1303 shuffling_enabled: false,
1304 multi_round_amplification: false,
1305 heterogeneous_amplification: false,
1306 }
1307 }
1308}
1309
1310impl Default for AdversarialCapabilities {
1311 fn default() -> Self {
1312 Self {
1313 computational_resources: ComputationalThreatLevel::Limited,
1314 network_capabilities: NetworkThreatCapabilities::default(),
1315 data_capabilities: DataThreatCapabilities::default(),
1316 algorithmic_knowledge: AlgorithmicKnowledgeLevel::BlackBox,
1317 collusion_potential: CollusionThreatLevel::None,
1318 attack_persistence: AttackPersistenceLevel::OneTime,
1319 }
1320 }
1321}
1322
1323impl Default for AnomalyDetectionConfig {
1324 fn default() -> Self {
1325 Self {
1326 algorithms: vec![AnomalyDetectionAlgorithm::StatisticalBaseline],
1327 thresholds: AnomalyThresholds::default(),
1328 response_actions: AnomalyResponseActions::default(),
1329 }
1330 }
1331}
1332
1333impl Default for AnomalyThresholds {
1334 fn default() -> Self {
1335 Self {
1336 statistical_threshold: 0.95,
1337 confidence_threshold: 0.8,
1338 false_positive_rate: 0.05,
1339 }
1340 }
1341}
1342
1343impl Default for AnomalyResponseActions {
1344 fn default() -> Self {
1345 Self {
1346 alert_generation: true,
1347 automatic_quarantine: false,
1348 enhanced_monitoring: true,
1349 incident_escalation: false,
1350 }
1351 }
1352}
1353
1354impl Default for ThreatCorrelationConfig {
1355 fn default() -> Self {
1356 Self {
1357 correlation_algorithms: vec![CorrelationAlgorithm::StatisticalCorrelation],
1358 temporal_window: Duration::from_secs(3600), cross_client_correlation: false,
1360 }
1361 }
1362}
1363
1364impl Default for RiskAssessmentConfig {
1365 fn default() -> Self {
1366 Self {
1367 methodology: RiskAssessmentMethodology::QualitativeAssessment,
1368 risk_tolerance: RiskToleranceLevels::default(),
1369 impact_assessment: ImpactAssessmentCriteria::default(),
1370 likelihood_estimation: LikelihoodEstimationMethods::default(),
1371 mitigation_strategies: RiskMitigationStrategies::default(),
1372 }
1373 }
1374}
1375
1376impl Default for RiskToleranceLevels {
1377 fn default() -> Self {
1378 Self {
1379 privacy_risk_tolerance: 0.1,
1380 security_risk_tolerance: 0.05,
1381 utility_risk_tolerance: 0.2,
1382 operational_risk_tolerance: 0.15,
1383 }
1384 }
1385}
1386
1387impl Default for ImpactAssessmentCriteria {
1388 fn default() -> Self {
1389 Self {
1390 confidentiality_impact: ImpactLevel::Medium,
1391 integrity_impact: ImpactLevel::High,
1392 availability_impact: ImpactLevel::Medium,
1393 compliance_impact: ImpactLevel::High,
1394 }
1395 }
1396}
1397
1398impl Default for LikelihoodEstimationMethods {
1399 fn default() -> Self {
1400 Self {
1401 historical_analysis: true,
1402 expert_judgment: true,
1403 threat_modeling: false,
1404 simulation_based: false,
1405 }
1406 }
1407}
1408
1409impl Default for LocalAdaptationConfig {
1410 fn default() -> Self {
1411 Self {
1412 adaptation_rate: 0.01,
1413 local_epochs: 1,
1414 adaptation_frequency: 1,
1415 adaptation_method: AdaptationMethod::FineTuning,
1416 regularization_strength: 0.01,
1417 }
1418 }
1419}
1420
1421impl Default for ClusteringConfig {
1422 fn default() -> Self {
1423 Self {
1424 num_clusters: 5,
1425 clustering_method: ClusteringMethod::KMeans,
1426 similarity_metric: SimilarityMetric::CosineSimilarity,
1427 cluster_update_frequency: 10,
1428 privacy_preserving_clustering: false,
1429 }
1430 }
1431}
1432
1433impl Default for MetaLearningConfig {
1434 fn default() -> Self {
1435 Self {
1436 inner_learning_rate: 0.01,
1437 outer_learning_rate: 0.001,
1438 inner_steps: 5,
1439 meta_batch_size: 32,
1440 adaptation_method: MetaAdaptationMethod::MAML,
1441 }
1442 }
1443}
1444
1445impl Default for DynamicPrivacyConfig {
1446 fn default() -> Self {
1447 Self {
1448 enabled: false,
1449 adaptation_frequency: 10,
1450 privacy_sensitivity: 1.0,
1451 utility_weight: 0.5,
1452 fairness_weight: 0.3,
1453 }
1454 }
1455}
1456
1457impl Default for ContextualAdjustmentConfig {
1458 fn default() -> Self {
1459 Self {
1460 enabled: false,
1461 context_factors: vec![ContextFactor::DataSensitivity],
1462 adjustment_sensitivity: 0.1,
1463 temporal_adaptation: false,
1464 }
1465 }
1466}
1467
1468impl Default for LazyAggregationConfig {
1469 fn default() -> Self {
1470 Self {
1471 enabled: false,
1472 aggregation_threshold: 0.9,
1473 staleness_tolerance: 5,
1474 gradient_similarity_threshold: 0.8,
1475 }
1476 }
1477}
1478
1479impl Default for FederatedDropoutConfig {
1480 fn default() -> Self {
1481 Self {
1482 enabled: false,
1483 dropout_probability: 0.1,
1484 adaptive_dropout: false,
1485 importance_sampling: false,
1486 }
1487 }
1488}
1489
1490impl Default for AsyncUpdateConfig {
1491 fn default() -> Self {
1492 Self {
1493 enabled: false,
1494 staleness_threshold: 10,
1495 mixing_coefficient: 0.9,
1496 buffering_strategy: BufferingStrategy::FIFO,
1497 }
1498 }
1499}
1500
1501impl Default for QoSConfig {
1502 fn default() -> Self {
1503 Self {
1504 priority_levels: 3,
1505 latency_targets: vec![100.0, 200.0, 500.0],
1506 throughput_targets: vec![10.0, 5.0, 1.0],
1507 fairness_constraints: true,
1508 }
1509 }
1510}
1511
1512impl Default for MemoryManagementConfig {
1513 fn default() -> Self {
1514 Self {
1515 memory_budget: 1000,
1516 eviction_strategy: EvictionStrategy::LRU,
1517 compression_enabled: false,
1518 memory_adaptation: false,
1519 }
1520 }
1521}
1522
1523impl Default for TaskDetectionConfig {
1524 fn default() -> Self {
1525 Self {
1526 enabled: false,
1527 detection_method: TaskDetectionMethod::GradientBased,
1528 sensitivity_threshold: 0.1,
1529 adaptation_delay: 5,
1530 }
1531 }
1532}
1533
1534impl Default for KnowledgeTransferConfig {
1535 fn default() -> Self {
1536 Self {
1537 transfer_method: KnowledgeTransferMethod::ParameterTransfer,
1538 transfer_strength: 0.5,
1539 selective_transfer: false,
1540 privacy_preserving: true,
1541 }
1542 }
1543}
1544
1545impl Default for ForgettingPreventionConfig {
1546 fn default() -> Self {
1547 Self {
1548 method: ForgettingPreventionMethod::EWC,
1549 regularization_strength: 0.1,
1550 memory_replay_ratio: 0.1,
1551 importance_estimation: ImportanceEstimationMethod::FisherInformation,
1552 }
1553 }
1554}
1555
1556impl Default for AdaptiveBudgetConfig {
1557 fn default() -> Self {
1558 Self {
1559 enabled: false,
1560 allocation_strategy: BudgetAllocationStrategy::Uniform,
1561 dynamic_privacy: DynamicPrivacyConfig::default(),
1562 importance_weighting: false,
1563 contextual_adjustment: ContextualAdjustmentConfig::default(),
1564 }
1565 }
1566}
1567
1568impl From<&AmplificationConfig> for crate::privacy::differential_privacy::AmplificationConfig {
1569 fn from(config: &AmplificationConfig) -> Self {
1576 Self {
1577 enabled: config.enabled,
1578 shuffling_enabled: config.shuffling_enabled,
1579 }
1580 }
1581}