quantrs2_device/security/
types.rs

1//! Security types and enums
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::{Duration, SystemTime};
6use uuid::Uuid;
7
8use crate::{DeviceError, DeviceResult};
9
10/// Security classification levels
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
12pub enum SecurityClassification {
13    #[default]
14    Public,
15    Internal,
16    Confidential,
17    Secret,
18    TopSecret,
19    QuantumProtected,
20    Custom(String),
21}
22
23/// Security objectives
24#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
25pub enum SecurityObjective {
26    Confidentiality,
27    Integrity,
28    Availability,
29    Authentication,
30    Authorization,
31    NonRepudiation,
32    Privacy,
33    Compliance,
34    QuantumSafety,
35    Custom(String),
36}
37
38/// Security standards
39#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
40pub enum SecurityStandard {
41    ISO27001,
42    NistCsf,
43    SOC2,
44    FedRAMP,
45    GDPR,
46    HIPAA,
47    PciDss,
48    Fips140_2,
49    CommonCriteria,
50    QuantumSafeNist,
51    Custom(String),
52}
53
54/// Post-quantum algorithms
55#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
56pub enum PostQuantumAlgorithm {
57    // NIST Post-Quantum Cryptography Standards
58    #[default]
59    Kyber,
60    Dilithium,
61    Falcon,
62    SphincsPlus,
63    // Additional algorithms
64    NTRU,
65    McEliece,
66    Rainbow,
67    SIDH,
68    SIKE,
69    NewHope,
70    FrodoKEM,
71    Custom(String),
72}
73
74/// Authentication methods
75#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
76pub enum AuthenticationMethod {
77    #[default]
78    Password,
79    Biometric,
80    SmartCard,
81    QuantumKey,
82    CertificateBased,
83    TokenBased,
84    BehavioralBiometrics,
85    ZeroKnowledgeProof,
86    QuantumSignature,
87    Custom(String),
88}
89
90/// Authorization models
91#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
92pub enum AuthorizationModel {
93    #[default]
94    RBAC, // Role-Based Access Control
95    ABAC,       // Attribute-Based Access Control
96    DAC,        // Discretionary Access Control
97    MAC,        // Mandatory Access Control
98    PBAC,       // Policy-Based Access Control
99    QuantumACL, // Quantum Access Control List
100    ZeroTrust,
101    Custom(String),
102}
103
104/// Threat detection algorithms
105#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
106pub enum ThreatDetectionAlgorithm {
107    SignatureBased,
108    BehaviorBased,
109    MachineLearning,
110    StatisticalAnalysis,
111    AnomalyDetection,
112    HeuristicAnalysis,
113    QuantumStateAnalysis,
114    QuantumNoiseAnalysis,
115    Custom(String),
116}
117
118/// Security analytics engines
119#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
120pub enum SecurityAnalyticsEngine {
121    SIEM, // Security Information and Event Management
122    SOAR, // Security Orchestration, Automation and Response
123    UEBA, // User and Entity Behavior Analytics
124    ThreatIntelligence,
125    QuantumSecurityAnalytics,
126    MLSecurityAnalytics,
127    RiskAnalytics,
128    Custom(String),
129}
130
131/// Regulatory frameworks
132#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
133pub enum RegulatoryFramework {
134    GDPR,
135    CCPA,
136    HIPAA,
137    SOX,
138    PciDss,
139    FISMA,
140    ITAR,
141    EAR,
142    QuantumRegulations,
143    Custom(String),
144}
145
146/// Compliance standards
147#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
148pub enum ComplianceStandard {
149    ISO27001,
150    Soc2Type1,
151    Soc2Type2,
152    FedRampLow,
153    FedRampModerate,
154    FedRampHigh,
155    Nist800_53,
156    CisControls,
157    QuantumCompliance,
158    Custom(String),
159}
160
161/// Encryption protocols
162#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
163pub enum EncryptionProtocol {
164    Tls1_3,
165    IPSec,
166    WireGuard,
167    QuantumSafeTLS,
168    QuantumKeyDistribution,
169    QuantumTunneling,
170    PostQuantumVPN,
171    Custom(String),
172}
173
174/// Security ML models
175#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
176pub enum SecurityMLModel {
177    AnomalyDetection,
178    ThreatClassification,
179    BehaviorProfiling,
180    RiskScoring,
181    FraudDetection,
182    IntrusionDetection,
183    QuantumAnomalyDetection,
184    QuantumThreatClassification,
185    Custom(String),
186}
187
188/// Security operation types
189#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
190pub enum SecurityOperationType {
191    Authentication,
192    Authorization,
193    Encryption,
194    Decryption,
195    ThreatDetection,
196    RiskAssessment,
197    ComplianceAudit,
198    IncidentResponse,
199    SecurityAnalytics,
200    PolicyEnforcement,
201    DataProtection,
202    HardwareSecurity,
203    CommunicationSecurity,
204    Custom(String),
205}
206
207/// Quantum security execution status
208#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
209pub enum QuantumSecurityExecutionStatus {
210    Pending,
211    Initializing,
212    AuthenticatingUsers,
213    DetectingThreats,
214    AnalyzingRisks,
215    EnforcingPolicies,
216    MonitoringCompliance,
217    RespondingToIncidents,
218    AnalyzingPerformance,
219    Completed,
220    Failed,
221    PartiallyCompleted,
222    ComplianceViolation,
223    SecurityThreatDetected,
224}
225
226/// Threat severity levels
227#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
228pub enum ThreatSeverity {
229    #[default]
230    Low,
231    Medium,
232    High,
233    Critical,
234}
235
236/// Incident severity levels
237#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
238pub enum IncidentSeverity {
239    #[default]
240    Low,
241    Medium,
242    High,
243    Critical,
244}
245
246/// Data protection event types
247#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
248pub enum DataProtectionEventType {
249    #[default]
250    AccessRequest,
251    DataModification,
252    DataDeletion,
253    SecurityViolation,
254}
255
256/// Security report types
257#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
258pub enum SecurityReportType {
259    #[default]
260    Summary,
261    Detailed,
262    Compliance,
263    ThreatAnalysis,
264}
265
266/// Security level
267#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
268pub enum SecurityLevel {
269    Low,
270    #[default]
271    Medium,
272    High,
273    Critical,
274}
275
276/// Security recommendation category
277#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
278pub enum SecurityRecommendationCategory {
279    #[default]
280    ThreatDetection,
281    Cryptography,
282    AccessControl,
283    Compliance,
284}
285
286/// Recommendation priority
287#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
288pub enum RecommendationPriority {
289    Low,
290    #[default]
291    Medium,
292    High,
293    Critical,
294}
295
296/// Implementation effort
297#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
298pub enum ImplementationEffort {
299    Low,
300    #[default]
301    Medium,
302    High,
303}
304
305/// Security maturity level
306#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
307pub enum SecurityMaturityLevel {
308    #[default]
309    Basic,
310    Intermediate,
311    Advanced,
312    Expert,
313}
314
315/// Helper trait for duration extensions
316pub trait DurationExt {
317    fn from_weeks(weeks: u64) -> Duration;
318    fn from_hours(hours: u64) -> Duration;
319    fn from_minutes(minutes: u64) -> Duration;
320}
321
322impl DurationExt for Duration {
323    fn from_weeks(weeks: u64) -> Duration {
324        Self::from_secs(weeks * 7 * 24 * 3600)
325    }
326
327    fn from_hours(hours: u64) -> Duration {
328        Self::from_secs(hours * 3600)
329    }
330
331    fn from_minutes(minutes: u64) -> Duration {
332        Self::from_secs(minutes * 60)
333    }
334}