Un camp etiquetat com a número de compte no és automàticament una referència pública, i l'etiqueta no és la prova. La prova és què permet la possessió: si conèixer el número inicia la sessió d'algú, baixa un perfil de connexió o autoritza un dispositiu, aquest número és una credencial amb un cicle de vida. Faig les cinc comprovacions següents sempre que un servei lliura una identitat numèrica i la qualifica d'innòcua. Cadascuna produeix una línia en un registre breu, i el registre és el lliurable, no un veredicte sobre el producte.

Inventarieu què concedeix realment la possessió

Anoteu per separat cada acció que desbloqueja el número. Iniciar la sessió en un portal, obtenir un fitxer de configuració, autoritzar un dispositiu nou i proporcionar un inici de sessió de túnel acceptat són autoritats diferents, i un servei pot implementar-ne una sense les altres. Un portal que accepta el número com a únic camp no diu res sobre com el túnel autentica el seu par més tard ni sobre com es deriven les claus de trànsit.

El model general és fàcil d'enunciar: una credencial bearer és aquella que el titular pot utilitzar sense demostrar la possessió d'una clau criptogràfica separada, i aquesta és la distinció que RFC 6750 traça per als testimonis. És una comparació, no l'afirmació que un servei basat en un número implementi OAuth. Si el titular no necessita res més, tracteu el número com un secret bearer i classifiqueu la resta del disseny en conseqüència.

Protegiu-lo com un secret, no com una referència

L'emmagatzematge deriva de la classificació. Un valor que inicia la sessió pertany a un gestor de contrasenyes, no a una captura de pantalla, un historial del porta-retalls, un missatge de xat o una nota del navegador. Les captures de pantalla són la fuita habitual: el número és curt i sembla innòcu, així que acaba en un fil d'assistència que sobreviu al dispositiu d'on va sortir.

El phishing és l'altre mode de fallada, i no li importa com d'aleatori és el número. Un impostor que vol el valor us demanarà que l'enganxeu en un formulari, i una credencial que no caduca mai i no té segon factor val la pena. Arribeu al camí d'inici de sessió des d'una adreça d'interès o una adreça coneguda, no des d'un enllaç en un missatge que també demana el número.

Tracteu el material de recuperació com a part del secret. Si l'operador també va emetre un codi de recuperació, un PIN o una adreça electrònica que pot restablir el compte, són credencials separades amb el mateix requisit de protecció. Un sol canal de restabliment desprotegit converteix tots els altres controls en decoració.

Comproveu juntes la resistència a l'endevinació i la limitació de taxa

La longitud només té sentit al costat del mètode de generació. Un número llarg produït per una seqüència predictible és més feble que un valor curt produït per un generador criptogràfic, i un nombre impressionant de dígits no estableix impredictibilitat. Pregunteu com es genera el valor abans de raonar sobre com és de difícil endevinar-lo.

La resistència a l'endevinació per si sola tampoc no sobreviu a una taxa d'intents il·limitada. Els controls que importen són els que implementa l'operador: comptadors d'intents fallits, bloquejos, limitació per origen i si un número incorrecte es pot distingir d'un inexistent. Si el servei ho admet, un intent fallit us mostra com és l'error i si apareix un comptador de reintents:

# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"

Registreu què revela la resposta. Un error diferent per a un compte desconegut és un oracle d'enumeració fins i tot quan el número és impossible d'endevinar, i aquesta troballa pertany al registre, tant si la podeu corregir des del client com si no.

Planifiqueu la rotació i la revocació abans de necessitar-les

Trobeu el procés admès per a un número perdut o exposat i anoteu-lo mentre tot funciona. Es pot substituir la credencial del compte? La substitució invalida els dispositius ja inscrits, les sessions actives o la configuració baixada? Quin material de recuperació exigeix el procés? Un servei sense dependència del correu pot traslladar més responsabilitat de recuperació a l'usuari, cosa que fa el procediment més important, no menys.

Separeu la substitució del compte de la revocació de la credencial. Si el número autoritza la baixada d'una clau, un certificat o un perfil, substituir el número pot deixar vàlid aquell material baixat, i revocar el material baixat pot ser una altra operació amb un altre propietari. No suposeu que un camp canviat acaba amb totes les connexions; comproveu el model real de l'operador i anoteu on ho heu verificat.

Documenteu la decisió i torneu-la a comprovar més endavant

Mantingueu un registre d'una pàgina per servei: quines autoritats concedeix el número, on s'emmagatzema, qui el pot restablir, quines proves d'ús existeixen i què faríeu a la primera hora després d'una revelació. Aquest registre és el que converteix una discussió sobre terminologia en una decisió que algú pot auditar.

Les afirmacions de privadesa necessiten el seu propi abast. Un número generat aleatòriament pot seguir sent un identificador estable que enllaça esdeveniments del compte al llarg del temps; la impredictibilitat no és la no-enllaçabilitat, i cap de les dues propietats no diu res sobre les metadades de xarxa conservades. Compareu dissenys complets en lloc de comptar camps en una pantalla d'inici de sessió.

Abans de registrar-lo:

  • S'enumeren totes les autoritats que concedeix el número, incloent-hi les baixades i l'autorització de dispositius.
  • Els canals d'emmagatzematge i recuperació estan protegits amb el mateix estàndard que el número mateix.
  • El mètode de generació i els límits de taxa es coneixen, no se suposen per la longitud.
  • Existeixen un procediment de substitució i un de revocació, i sabeu quin anul·la quin.
  • El registre indica qui pot restablir el valor i quines proves queden després de l'ús.

Articles relacionats