Răspunsul scurt este „da, această configurație este vulnerabilă”. Dacă vrei ceva matematică, poți citi mai jos o explicație.
În XTS două chei sunt independente, deci are deja securitate pe 512 biți (deocamdată nu există atacuri care să scadă acest număr*). Deci, voi explica de ce folosirea criptării duble în modul XTS nu crește Securitate.
Să ne uităm îndeaproape la ecuația de criptare cu modul XTS:
$$
c_i = f(m_i, (K_1, K_2)) = T_i\oplus E_{K_1}(m_1)\oplus T_i \
T_i=E_{K_2}(SN)\otimes\alpha^{i-1}
$$
Unde $SN$ este un număr de sector, $(K_1,K_2)$ - chei de criptare, $m_i, c_i$ - blocuri de text simplu și respectiv de text cifrat și $\alpha$ este elementul primitiv al $GF(2^l)$ ($|m_i|=l$).
Acum să luăm în considerare o funcție de criptare cu criptare bloc:
$$
E_K=\pi_{q_{r+1}}\circ\varphi_{q_r}\circ...
\circ\varphi_{q_1}\circ\delta_{q_0}
$$
Unde $r$ este un număr de runde, $q_i,i=\overline{1,r}$ sunt chei rotunde (derivate din cheia de criptare folosind un set special de funcții numite „programarea cheilor”), $\varphi_{q_i},i=\overline{1,r}$ sunt funcții rotunde, $\pi_{q_{r+1}}, \delta_{q_0}$ sunt funcții de ieșire și, respectiv, de intrare cu tastele lor (aceste două funcții pot să nu depindă de tastă).
Existența acestor funcții de intrare și ieșire este cheia întrebării dvs. Să luăm în considerare un cifru bloc cu următoarea ecuație de criptare:
$$
E_{K_1,K_2} = \underbrace{\pi'_{q_{r+1}}\circ
\pi^{\varepsilon}_{q_{r+1}}}_{\pi_{q_{r+1}}}
\circ\overbrace{\varphi^{\varepsilon}_{q_r}\circ...
\circ\varphi^{\varepsilon}_{q_1}}^{\varphi_{q_r}\circ...
\circ\varphi_{q_1}}
\circ\underbrace{\delta^{\varepsilon}_{q_0}\circ
\delta'_{q_0}}_{\delta_{q_0}},\ q_0=q_{r+1}=(K_2,SN)
$$
Unde $\varphi^{\varepsilon}_{q_i}=\varphi_{q_i}, i=\overline{1,r}$ - funcții rotunde ale unui cifru bloc de bază $\varepsilon$ (AES în cazul dvs.), $\pi^{\varepsilon}_{q_{r+1}}, \delta^{\varepsilon}_{q_0}$ - funcțiile de ieșire și de intrare ale cifrului bloc de bază și $\pi'_{q_{r+1}}(x)=E_{K_2}(SN)\oplus x$, $\delta'_{q_0}(x)=E_{K_2}(SN)\oplus x$.
Există unele probleme cu această ecuație în cazul dependenței reale de $\pi^{\varepsilon}_{q_{r+1}}$ și $\delta^{\varepsilon}_{q_0}$ pe tastele lor (care sunt diferite), dar pot fi eliminate cu ușurință prin alegerea corectă a funcțiilor cheie de program. Nu voi face asta deocamdată pentru a preveni complexitatea excesivă.
În cele din urmă, am primit un cifr de bloc construit pe deasupra celui existent prin modificarea funcțiilor de ieșire și de intrare.
În cel mai simplu caz de atac Meet-in-the-middle, creați două tabele:
$$
s_i = E_{K_1,K_2}(m_i) \
s'_i = E^{-1}_{K'_1,K'_2}(c_i)
$$
După aceea cauți valori egale $s_i=s'_i$. Acest algoritm este potrivit pentru orice cifru bloc și pentru cel al nostru, așa că construcția, care a fost construită chiar acum, este vulnerabilă la acest atac, doar pentru că XTS nu adaugă nimic special la cifrul bloc, adică puteți considera criptarea în modul XTS ca bloc. -criptare înțeleaptă, când fiecare bloc este criptat cu propria sa cheie.
Cunoscând numărul sectorului și poziția blocului, construiți două tabele așa cum este descris mai sus pentru acest bloc și aflați cheile de criptare. În cel mai rău caz, trebuie să enumerați toate perechile de chei $(K_1, K_2)$ de două ori. Deci asimptotic nu există o creștere a securității.
* - există un atac, care vă permite să obțineți fiecare tweak, atunci când există două blocuri diferite în același sector cu o anumită condiție hold pentru texte cifrate și texte clare, dar nu recuperează o cheie de tweak. Puteți citi mai multe despre acest atac în comentariile publice pe XTS-AES.