En informàtica, Challenge-Handshake Authentication Protocol (CHAP) (protocol d'autenticació Desafiament-Acord) és un protocol d'autenticació utilitzat originalment pel protocol punt a punt (PPP) per validar usuaris. CHAP també es porta en altres protocols d'autenticació com RADIUS i Diameter.
Gairebé tots els sistemes operatius de xarxa admeten PPP amb CHAP, igual que la majoria de servidors d'accés a la xarxa. CHAP també s'utilitza a PPPoE, per autenticar usuaris DSL.
Com que el PPP envia dades sense xifrar i "en clar", CHAP és vulnerable a qualsevol atacant que pugui observar la sessió PPP. Un atacant pot veure el nom de l'usuari, el repte CHAP, la resposta CHAP i qualsevol altra informació associada amb la sessió PPP. L'atacant pot llavors muntar un atac de diccionari fora de línia per obtenir la contrasenya original. Quan s'utilitza en PPP, CHAP també proporciona protecció contra atacs de repetició per part del peer mitjançant l'ús d'un repte generat per l'autenticador, que normalment és un servidor d'accés a la xarxa.
Quan s'utilitza CHAP en altres protocols, es pot enviar en clar o pot estar protegit per una capa de seguretat com ara Transport Layer Security (TLS). Per exemple, quan CHAP s'envia per RADIUS utilitzant User Datagram Protocol (UDP), qualsevol atacant que pugui veure els paquets RADIUS pot muntar un atac de diccionari fora de línia, com passa amb PPP.
CHAP requereix que tant el client com el servidor coneguin la versió en text clar de la contrasenya, tot i que la contrasenya en si no s'envia mai per la xarxa. Per tant, quan s'utilitza en PPP, CHAP proporciona una millor seguretat en comparació amb el Protocol d'autenticació de contrasenya (PAP), que és vulnerable per aquests dos motius.
Beneficis de CHAP Quan el node envia CHAP, el servidor d'autenticació el rebrà, obtindrà la contrasenya "bona coneguda" d'una base de dades i realitzarà els càlculs de CHAP. Si els hashes resultants coincideixen, es considera que l'usuari està autenticat. Si els hashes no coincideixen, es rebutja l'intent d'autenticació de l'usuari.
Com que el servidor d'autenticació ha d'emmagatzemar la contrasenya en text sense xifrar, és impossible utilitzar formats diferents per a la contrasenya emmagatzemada. Si un atacant robés tota la base de dades de contrasenyes, totes aquestes contrasenyes serien visibles "en clar" a la base de dades.
Com a resultat, mentre que CHAP pot ser més segur que PAP quan s'utilitza sobre un enllaç PPP, impedeix un emmagatzematge "en repòs" més segur que amb altres mètodes com ara PAP.
Variants MS-CHAP és similar a CHAP però utilitza un algorisme hash diferent i permet que cada part autentiqui l'altra.
Cicle de treball CHAP és un esquema d'autenticació utilitzat originalment pels servidors de protocol punt a punt (PPP) per validar la identitat dels clients remots. CHAP verifica periòdicament la identitat del client mitjançant una confirmació de connexió a tres vies. Això passa en el moment d'establir l'enllaç inicial (LCP) i pot tornar a passar en qualsevol moment posterior. La verificació es basa en un secret compartit (com ara la contrasenya del client).
Després de completar la fase d'establiment de l'enllaç, l'autenticador envia un missatge de "desafiament" al node. El peer respon amb un valor calculat mitjançant una funció hash unidireccional sobre el repte i el secret combinats. L'autenticador comprova la resposta amb el seu propi càlcul del valor hash esperat. Si els valors coincideixen, l'autenticador reconeix l'autenticació; en cas contrari, hauria de finalitzar la connexió. En PPP, l'autenticador pot enviar un nou repte a intervals aleatoris al node i repeteix els passos de l'1 al 3. Tanmateix, quan s'utilitza CHAP en la majoria de situacions (per exemple, RADIUS), aquest pas no es realitza.
Paquets CHAP Descripció1 byte1 byte2 bytes1 byteVariableVariableRepteCodi = 1IDLongitudDurada del repteValor del repteNomRespostaCodi = 2IDLongitudDurada de la respostaValor de respostaNomÈxitCodi = 3IDLongitudMissatgeFracàsCodi = 4IDLongitudMissatge L'ID escollit per al repte aleatori també s'utilitza als paquets de resposta, èxit i error corresponents. Un nou repte amb un nou ID ha de ser diferent de l'últim repte amb un altre ID. Si es perd l'èxit o el fracàs, es pot tornar a enviar la mateixa resposta i això activa la mateixa indicació d'èxit o error. Per a MD5 com a hash, el valor de resposta és MD5(ID||secret||challenge), l'MD5 per a la concatenació d'ID, secret i repte.
Referències
Categoria:Criptografia Categoria:Protocols de xarxa