
    i"+                     V   d Z ddlZddlmZmZ ddlmZmZ ddl	m
Z
mZ ddlmZmZmZmZmZ ddlmZmZ ddlmZ ddlZddlZddlZddlZdd	lmZmZ  G d
 de      Z G d de      Ze
 G d d             Z G d d      Z  G d d      Z! G d d      Z" G d d      Z# G d d      Z$y)z
CorvOS v2.1-Sigma - Quantum Security Shield
Protecao contra ataques a coerencia lambda2 = 0.999
Synapse-k | Arkhe(n) | Rio de Janeiro
    N)eignorm)fftfftfreq)	dataclassfield)ListDictTupleSetOptional)datetime	timedelta)Enum)dequedefaultdictc                   (    e Zd ZdZdZdZdZdZdZdZ	y)	
ThreatTypedecoherence_injectionsensor_poisoningretrocausal_hijackingquantum_ddoseigenvalue_manipulationentanglement_spoofingtemporal_paradoxN)
__name__
__module____qualname__DECOHERENCE_INJECTIONSENSOR_POISONINGRETROCAUSAL_HIJACKINGQUANTUM_DDOSEIGENVALUE_MANIPULATIONENTANGLEMENT_SPOOFINGTEMPORAL_PARADOX     5/home/workspace/corvos_sys/quantum_security_shield.pyr   r      s+    3)3!L73)r'   r   c                       e Zd ZdZdZdZdZy)ThreatSeverity            N)r   r   r   CRITICALHIGHMEDIUMLOWr&   r'   r(   r*   r*      s    HDF
Cr'   r*   c                       e Zd ZU eed<   eed<   eed<   eed<   ee	   ed<   e
ed<   ej                  ed<   dZeed	<   d
Zee   ed<   y
)QuantumThreat	threat_idthreat_typeseverity	timestampaffected_sensorscoherence_impactattack_vectorACTIVEcontainment_statusNmitigation_applied)r   r   r   str__annotations__r   r*   r   r   intfloatnpndarrayr=   r>   r   r&   r'   r(   r4   r4      sM    N#h::&&(,,r'   r4   c                       e Zd ZddedefdZdej                  ddfdZdee	e
e   ef   fdZd	ej                  dej                  fd
Zy)PhaseAnomalyDetector	n_sensorshistory_lengthc                 B    || _         t        |      | _        d| _        y )Nmaxlen        )rG   r   phase_historyexpected_phase_derivative)selfrG   rH   s      r(   __init__zPhaseAnomalyDetector.__init__,   s    "".9),&r'   current_phasesreturnNc                 V    | j                   j                  |j                                y N)rM   appendcopy)rO   rQ   s     r(   updatezPhaseAnomalyDetector.update1   s    !!."5"5"78r'   c                 :   t        | j                        dk  rdt               dfS t        j                  t        | j                        dd        }t        j                  t        j                  |d            }t        j                  |d      }t        j                  |t        j                  dz  kD        d   }t        j                  t        | j                        d         }t        j                  |d d d f   |d d d f   z
        }g }t        | j                        D ]R  }t        j                  ||   |      }	|	j                          |j                  t        j                   |	d d	              T t        j                  t        j                  |      d
kD        d   }
t        |      t        |
      z  }|rNt        |      | j                  z  t#        d
t        j                   |      t        j                  z        z  }d||fS dt               dfS )Nr,   FrL   r   )axisr-            ?T)lenrM   setrC   arraylistabsdiffmaxwherepirangerG   deletesortrU   meanmin)rO   recent
phase_diffmax_jump
suspiciousphasesdiff_matrixneighbor_diffsidiffsisolatedaffectedr7   s                r(   detect_spoofingz$PhaseAnomalyDetector.detect_spoofing4   s   t!!"Q&#%$$$t1122378VVBGGF34
66*1-XXh23A6
$t112267ffVAtG_vdAg>?t~~& 	6AIIk!na0EJJL!!"''%)"45	6 88BHH^4s:;A>z?S]28}t~~5CARUWUZUZAZ8[[H8++ceS  r'   rp   c                    t        j                  t        | j                        d         }t        j                  |d d d f   |d d d f   z
        }g }t        | j                        D ]R  }t        j                  ||   |      }|j                          |j                  t        j                  |d d              T t        j                  |      S )Nr[   r\   )rC   r`   ra   rM   rb   rg   rG   rh   ri   rU   rj   )rO   rp   rq   rr   rs   rt   s         r(   _compute_neighbor_differencesz2PhaseAnomalyDetector._compute_neighbor_differencesI   s    $t112267ffVAtG_vdAg>?t~~& 	6AIIk!na0EJJL!!"''%)"45	6 xx''r'   )   d   )r   r   r   rA   rP   rC   rD   rW   r   boolr   rB   rw   ry   r&   r'   r(   rF   rF   +   sc    -# -S -
9RZZ 9D 9!tSXu'<!= !*(BJJ (2:: (r'   rF   c                   ^    e Zd Zd
dedefdZdedej                  ddfdZdee	ee
f   fd	Zy)DecoherenceAttackDetectortarget_lambdadecay_thresholdc                 P    || _         || _        t        d      | _        d | _        y )Nr{   rJ   )r   r   r   lambda_historynoise_spectrum)rO   r   r   s      r(   rP   z"DecoherenceAttackDetector.__init__T   s'    *.#3/"r'   current_lambdasensor_readingsrR   Nc                     | j                   j                  |       t        |      }t        t	        |            }t        j                  |d t	        |      dz         | _        y )Nr-   )r   rU   r   r   r^   rC   rb   r   )rO   r   r   fft_valsfreqss        r(   rW   z DecoherenceAttackDetector.updateZ   sQ    "">2'O,- ffX.As8}/A%BCr'   c                    t        | j                        dk  ryt        | j                        dd  }t        |      dkD  r|d   |d   z
  t        |      z  nd}|| j                  kD  r!t	        d|| j                  dz  z        }d	|d
fS | j
                  Lt        j                  | j
                  t        | j
                        dz  d        }|dkD  rd	t	        d|      dfS y)Nr-   )FrL   noneir.   r   r[   r]   r\   Tinduced_decoherencer+         ?rf_interference)r^   r   ra   r   rk   r   rC   rj   )rO   rl   
decay_rater7   high_freq_noises        r(   detect_attackz'DecoherenceAttackDetector.detect_attack`   s    t""#a'%d))*340?B6{QfQi&*,F;TU
,,,3
d.B.BQ.F GHH#888* ggd&9&9#d>Q>Q:RVW:W:X&YZO$So68III!r'   )g+?gMbP?)r   r   r   rB   rP   rC   rD   rW   r   r|   r?   r   r&   r'   r(   r~   r~   S   sO    #e #e #DU DRZZ DD D"uT5#%56 "r'   r~   c                       e Zd ZddedefdZdedefdZdej                  de	e
ee   ee   f   fd	Zd
ej                  dej                  de
fdZy)ByzantineConsensusFilterrG   quorum_requiredc                 b    || _         || _        t        j                  |      | _        d| _        y )Ngffffff?)rG   r   rC   onessensor_reputationreputation_decay)rO   rG   r   s      r(   rP   z!ByzantineConsensusFilter.__init__o   s*    ".!#!3 $r'   	sensor_idwas_consistentc                     |r*t        d| j                  |   dz        | j                  |<   y | j                  |xx   dz  cc<   y )Nr]   gRQ?g?)rk   r   )rO   r   r   s      r(   update_reputationz*ByzantineConsensusFilter.update_reputationu   sD    03C9O9OPY9Z]a9a0bD""9-""9-4-r'   readingsrR   c                 l   | j                   t        j                  | j                         z  }| j                  ||      }t        j                  ||z
        }t        j
                  |      }d|z  }t        j                  ||k        d   }t        j                  ||kD        d   }|D ]  }	| j                  |	d        |D ]  }	| j                  |	d        t        |      | j                  k\  r/t        j                  ||         }
|
t        |      t        |      fS |t               t        |      fS )Nr,   r   TF)r   rC   sum_weighted_medianrb   medianre   r   r^   r   rj   r_   )rO   r   weightsweighted_median
deviationsmad	thresholdvalid	malicioussid	consensuss              r(   compute_consensusz*ByzantineConsensusFilter.compute_consensus{   s   ((266$2H2H+II//'BVVH67
ii
#G	y01!4HHZ)34Q7	 	.C""3-	. 	/C""3.	/u:---0Ic%j#i.88"CE3y>99r'   datar   c                     t        j                  |      }||   }||   }t        j                  |      }t        j                  |d      }||   S )Nr   )rC   argsortcumsumsearchsorted)rO   r   r   idxsorted_datasorted_weightsr   
median_idxs           r(   r   z)ByzantineConsensusFilter._weighted_median   sK    jj3i >*__VS1
:&&r'   N)rz   p   )r   r   r   rA   rP   r|   r   rC   rD   r   rB   r   r   r   r&   r'   r(   r   r   n   sx    %# %c %53 5 5:"** :uc#hPSTWPX?X9Y :$'RZZ '"** ' 'r'   r   c                   F    e Zd Zd
defdZdededee   dedee	ef   f
dZ
y	)RetrocausalHandshakeValidator
difficultyc                 0    || _         t               | _        y rT   )r   r_   seen_hashes)rO   r   s     r(   rP   z&RetrocausalHandshakeValidator.__init__   s    $5r'   packet_hashclaimed_future_timesensor_quorum	signaturerR   c                    || j                   v ry|j                  d| j                  z        sy|t        j                         k  ryt        |      dk  rddt        |       dfS t        j                  | |j                          j                               j                         d d	 }||k7  ry
| j                   j                  |       y)N)FzReplay detected0)FzInvalid proof-of-work)FzPre-ACK from past, not futurer   FzInsufficient quorum: z/112   )FzInvalid signature)TzValid pre-ACK accepted)r   
startswithr   r   nowr^   hashlibsha256	isoformatencode	hexdigestadd)rO   r   r   r   r   expected_sigs         r(   validate_pre_ackz.RetrocausalHandshakeValidator.validate_pre_ack   s    $***+%%cDOO&;<1/9}#1#m2D1ETJJJ~~6I6S6S6U5V&W&^&^&`akkmnqoqr$-[)-r'   N)r+   )r   r   r   rA   rP   r?   r   r   r   r|   r   r&   r'   r(   r   r      sG    !3 !.C .h .(+C.=@.EJ4QT9EU.r'   r   c            
       t    e Zd Zd Zdej
                  dedefdZde	de	de
e   d	e
e   def
d
Zd ZdefdZy)QuantumSecurityShieldc                     t               | _        t               | _        t	               | _        t               | _        g | _        t               | _
        d| _        y )N<   )rF   phase_detectorr~   decoherence_detectorr   consensus_filterr   handshake_validator	event_logr_   blocked_sensorsquarantine_durationrO   s    r(   rP   zQuantumSecurityShield.__init__   sG    24$=$?! 8 :#@#B .0),#% r'   sensor_phasesmeasured_lambdarR   c           
        K   | j                   j                  |       | j                  j                  ||       | j                   j                         \  }}}| j                  j	                         \  }}}| j
                  j                  |      \  }	}
}||
z
  }| j                  j                  |       d}|s|r| j                  ||||      }|s|st        |      dkD  rt        dt        j                         j                          |rt        j                  n!|rt        j                   nt        j                  t#        ||      dkD  rt$        j&                  nt$        j(                  t        j                         ||z  |||      }| j*                  j-                  |       | j/                          |	t        |
      t        | j                        |xs ||r|n|rdndt#        ||      |dS w)Nr   r   zEVT-g333333?)r5   r6   r7   r8   r9   r:   r;   r>   phase_spoofing)consensus_lambdavalid_sensorsr   attack_detectedattack_typer7   
mitigation)r   rW   r   rw   r   r   r   r   _apply_mitigationr^   r4   r   r   r8   r   r$   r   rd   r*   r0   r1   r   rU   _clean_old_blocked)rO   r   r   spoofing_detectedspoofed_sensorsspoof_severitydecoherence_detecteddeco_severityr   r   r   malicious_sensorsnew_blockedr   events                  r(   process_sensor_readingsz-QuantumSecurityShield.process_sensor_readings   s    ""=1!!((-H=A=P=P=`=`=b:?N;?;T;T;b;b;d8m[6:6K6K6]6]^k6l3	="3'-7##K0
 4//0ACW0?NJ 4<M8NQR8R! !9!9!; <=@QJ<<@TJ<<&<<03NM0RUX0X,,^l^s^s",,.!03D!D!0+#-E NN!!%(! ) /"4#7#780H4H*>;XiDTouNM:$
 	
s   G0G2spoofingdecoherencespoofedr   c                     g }|rD|D ]  }| j                   j                  |        |j                  d       |j                  d       |r"|j                  d       |j                  d       dj                  |      S )Nisolated_spoofed_sensorsreduced_retrocausal_windowincreased_controller_gainactivated_em_shieldingz, )r   r   rU   join)rO   r   r   r   r   mitigationsr   s          r(   r   z'QuantumSecurityShield._apply_mitigation   s{     .$$((-.9:;<:;78yy%%r'   c                    t        | j                        dkD  rqt        t        j                  j                  t        | j                        t        dt        | j                              d            }| xj                  |z  c_        y y )N2   
   F)replace)r^   r   r_   rC   randomchoicera   rk   )rO   	to_removes     r(   r   z(QuantumSecurityShield._clean_old_blocked   sr    t##$r)BII,,T$2F2F-G.1"c$:N:N6O.PZ_ - a bI  I-  *r'   c                 d   t        | j                        t        | j                        | j                  r| j                  d   j                  nd t        | j                        dk  rdt        | j                        dz  z
  ndt	        | j
                  j                  j                               dS )Nr[   rz   r]   rL   )r   total_events
last_eventsystem_integrityconsensus_reliability)r^   r   r   __dict__rB   r   r   rj   r   s    r(   get_security_statusz)QuantumSecurityShield.get_security_status   s    "4#7#78/9=$..,55TKNtOcOcKdgjKjs4+?+?'@3'F Gps%*4+@+@+R+R+W+W+Y%Z
 	
r'   N)r   r   r   rP   rC   rD   rB   r
   r   r|   r   rA   r?   r   r   r  r&   r'   r(   r   r      sl    &$
2:: $
6;$
@D$
L&$ &T &"%c(&7:3x&DG&.
T 
r'   r   )%__doc__numpyrC   scipy.linalgr   r   	scipy.fftr   r   dataclassesr   r   typingr	   r
   r   r   r   r   r   enumr   r   hmacasyncior   collectionsr   r   r   r*   r4   rF   r~   r   r   r   r&   r'   r(   <module>r     s   
  " " ( 3 3 (  % % ** *T  	- 	- 	-&( &(P" "6%' %'N. .*J
 J
r'   