Am fost implicat într-o discuție zilele trecute cu privire la implementarea autentificării backend-to-backend. Comunicațiile dintre fiecare backend au loc prin Protocolul de mesaje SOAP (XML)..
Obiectiv:
Autentificați apelurile care provin din backend-ul A <> backend-ul B. Se poate considera că toate comunicările trec mai întâi prin tunelul TLS
Soluția propusă de ei:
Anexați a Semnătură într-un antet XML care este calculat utilizând numai anumite părți ale corpului cererii și un marcaj de timp, criptat cu AES-ECB
Secretele sunt împărtășite pe un canal extern și menținute la fiecare capăt.
Preocupările mele / soluția proprie:
Din punctul meu de vedere, această problemă necesită a de tip MAC de autentificare care ar garanta integritatea și autenticitatea mesajului.
Le-aș recomanda să folosească HMAC-SHA256 în schimb, cu un marcaj temporal nonce pentru a preveni atacurile de reluare și să-l transmită într-un mod personalizat. Antet XML care ar fi validat de fiecare backend.
Nu înțeleg necesitatea utilizării criptării aici, mai ales că nu cifrează corpul cererii (confidențialitate). Cu toate acestea, nu am argumente suficient de puternice în acest sens De ce solutia lor este nesigur/nepotrivit
NB: Consider că modul de criptare ECB poate avea și probleme de oracol și, în general, ar fi preferat CBC față de el?