Cum să pună în aplicare autentificarea aplicației client

  1. Atunci când se utilizează RSA există o problemă. Clientul cunoaște cheia publică a serverului, acesta criptează datele și le transmite la server. Interceptărilor atacator criptate cererea clientului si poate trimite la server (și serverul îl decriptează fără probleme cheie privată). Desigur, un atacator nu poate descifra răspunsul de la server, dar serverul la cererea atacatorului efectua deja un fel de acțiune, și nu ar trebui să fie.
  2. Nu există nici un nume de utilizator și parole. Client și server - aceasta aplicatie pe php.
  3. A se vedea. Revendicării 1

Rutoken Web nu înțeleg cum mă poate ajuta.

Ca o opțiune într-un corp criptat, introduceți 1 mai câmp TTL în care este stocat (amprentă de timp) trimiterea, la verificarea serverului în cazul în care TTL nu este mai veche de un anumit timp, de exemplu 3 minute. Deci, în cazul în care un atacator gather deja semnat mesajul nu poate bombarda serverul lor, mai degrabă trimise la server, nu se întâmplă nimic.

În general, ai pus limite dure.

Se pare greșit înțeles ... Atunci nu există decât SSL sau ceva de genul asta.
Clienții și serverele trebuie să facă schimb de chei publice pentru canalul de încredere. Urmatorul client acceseaza serverul. Serverul generează o cheie de sesiune. criptează cheia publică și îl trimite Clientului.
Clientul primeste cheia de sesiune și decriptează cu cheia sa privată.
Mai mult decât atât, toate informațiile sunt criptate cu această cheie de sesiune. pentru că atacatorul nu știe cheia, iar datele nu substituie, și nu citește.
Dacă oferi un schimb securizat de chei publice și în siguranță, magazin inchis, atunci totul va fi OK.

FanKiLL. TTL nu este o opțiune. Nu sunt sigur că timpul pe server, iar clientul va fi la fel) și fac o cerere la server să-și amintească de timp și așteaptă următoarea cerere timp de 3 minute - nu este o opțiune. Da, rama este destul de greu, dar discutăm diverse opțiuni în căutarea pentru „perfectă condiționată.“ În mod ideal, aș dori ceva de genul: setările client și server sunt salvate (mânerelor la instalarea) orice date (chei, sau ceva de genul asta). Și astfel, atunci clientul poate trimite o cerere la datele de 1, iar serverul a dat seama că este clientul, nu atacatorul (în cazul în care un atacator a trimis aceeași cerere exactă, serverul ar trebui să-l refuze). Pentru o astfel de punere în aplicare „perfectă“ ar fi minunat de a folosi un fel de cheie în continuă schimbare la 2, aceeași cerere de client în formă criptată au fost diferite. Ar fi cravată frumos pentru un timp (de exemplu, codul depinde de timpul și a schimbat la fiecare 5 secunde), dar nu sunt sigur că timpul va fi la fel.

AstralMan. în cazul în care schimbul deschis pentru chei de canal de încredere, nu au nevoie. Puteți utiliza criptarea sincron. apoi cheia de sesiune nu funcționează, atacatorul nu trebuie să decripta datele, doar trimite datele criptate la server, iar serverul nu a înțeles că acest lucru nu este un client și efectuează o acțiune.

> În cazul în care schimbul de chei publice pentru canal de încredere, nu au nevoie.
Doar o nevoie de a fi în măsură să generit cheie de sesiune, care nu este capabil să intercepteze intrusul.

> Puteți folosi criptarea sincron. apoi cheia de sesiune nu funcționează, atacatorul nu neapărat
> Decripta datele, doar trimite datele criptate către serverul
Ei bine, el a trimis date la server, deci ce? Primiți un răspuns de la server, și ceea ce va face cu ea nu știu cheia de sesiune.

> Și serverul nu înțelege că acest lucru nu este un client și efectuează o acțiune.
Fiecare cerere se poate transmite ID sesiune care generit serverul prima dată când un client.

De fapt pe care încercați să pună în aplicare PGP.
Daca nu sunteti un client, desigur, - se pune întrebarea care este trimis împreună cu un corp criptat, aveți nevoie de ceea ce acel identificator la serverul știe care-cheie pentru a utiliza pentru a-l decripta (numele de utilizator sau ID-ul, etc este legat la cheia de sesiune ..). Tu nu va aplica pentru decriptarea tuturor cheile nu au fost încă decoda.

AstralMan. Pot genera cheia de sesiune și cripta cu cheia, care cunoaște clientul și serverul știe. Același client cheie a decripta cheia de sesiune. Atacatorul nu ar fi capabil să-l decripta. Serverele răspunde la atacator nu este interesat, va trimite datele, și serverul de a face ceva (ștergeți înregistrarea, inclusiv modulul, va trimite soldați la Taganrog, etc.).

FanKiLL. Ei bine, clientul poate fi prezentat în aer liber, spunând „Eu% clientUniqueName%», iar datele sunt trimise criptat.

Anonym Apoi rămâne problema, un atacator bombardează serverul trimite% clientUniqueName% + un text, vă irosi resurse de pe server încearcă razshifrovat + clar dacă datele descifreze într-adevăr de exemplu, verificați dacă există un câmp ... defunct

Cred că trebuie să rezolve mai întâi problema de identificare, astfel încât cererile inutile au fost respinse în această etapă, a doua etapă de decriptare. Ceea ce ați descris rezolvă o problemă a treia parte nu poate citi / modifica datele.
Probleme rămân:
1) Colectarea deja criptate mesaje și să le retrimită la server (de exemplu, în cazul în care o comandă pentru ao adăuga la baza de date, în cel mai bun caz face o verificare de fond pe un dublu și nu se întâmplă nimic, cel mai rău va fi spammed)
2) Deșeuri de resurse pentru a decripta mesajele rămase.

Anonym. atunci fiecare cerere ar trebui să fie atribuit un număr unic și dublu nu a mers.
Clientul spune server-ului doresc să șterg magazinele de server de date cererea și trimite ID-ul cererea clientului. Clientul trimite acest ID server. Server elimină datele și scrie ID-ul. În cazul în care un atacator trimite din nou solicitarea, serverul verifică ID-ul nu va face nimic, deoarece Am îndeplinit deja această solicitare.
Ceva de genul asta ... celelalte opțiuni nu văd.