mozilla

Revision 433231 of Cifrado

  • Enlace amigable (slug) de la revisión: Persona/Crypto
  • Título de la revisión: Cifrado
  • Id de la revisión: 433231
  • Creada:
  • Creador: oblivionXor
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

El sistema de identidad persona usa el cifrado de llave publica para asegurar la confianza y seguridad en el proceso de autenticacion.

¿Porque el sistema descrito en la descripcion general de Persona IdP funciona?

Cadena de confianza

El navegador del usuario almacena localmente algunas piezas de informacion para cada una de las entidades de este usuario: una direccion de correo electronico, un par de llaves, y un certificado del IdP(Identity Provider) asociado.

El par de llaves del usuario es un par criptografico DSA o RSA standard y es generado y guardado localmente en el navegador del usuario. El certificado es firmado por el IdP asociado con la identidad del usuario elegida. Estos certificados estan diseñados para durar no mas de 24 horas y pueden ser proporcionados de nuevo siempre y cuando el usuario tenga una sesion activa con el IdP. Los pares de llaves nunca son compartidos entre computadoras ni entre navegadores.

Como se describe en la descripcion general del protocolo, el navegador del usuario es capaz de generar y firmar declaraciones de identidad efimeras especificas del sitio. Cuando se toman juntas estas declaraciones con la informacion en un certificado de algun usuario, el sitio es capaz de verificar la identidad de ese usuario. La autenticidad de los certificados debe ser verificada obteniendo la llave publica del IdP, la cual es publicada en un documento disponible sobre SSL.

De esa manera, la seguridad de Persona depende de la decision del usuario de mantener en secreto la llave privada, el dominio que guarda la llave privada y la coneccion SSL al IdP que esta siendo asegurado. Un rompimiento de cualquiera de estos puntos podria indeterminar la seguridad de la identidad de un usuario.

Generando pares de llaves IdP

Para los IdPs (Identity Providers ), el paquete jwcrypto proporciona una herramienta de linea de comandos, generate-keypair, la cual genera las llaves adecuadas para el uso con Persona. Debido a que las llaves generadas son ya JSON-serialized, la llave publica es adecuada para su inclusion directa en el campo de llaves publicas de algun IdP.

Certificado y formato de declaracion

Por favor, consulte la especificacion de BrowserID para informacion detallada, pero a un alto nivel, ambos certificados y declaraciones son cadenas con tres partes: un encabezado, un cuerpo y una firma criptografica. Cada parte esta codificada y concatenada separadamente en Base64Url, con caracteres "." delimitando cada parte. El cuerpo no esta encriptado, por lo que su plaintext esta disponible si lo decodificas en base64url.

Los certificados y las declaraciones son empaquetados juntos en una "declaracion respaldada" cuando el usuario intenta autenticarse en algun sitio. El paquete es creado concatenando un certificado y una declaracion con un "~" separandolos.

Fuente de la revisión

<p>El sistema de identidad persona usa el cifrado de llave publica para asegurar la confianza y seguridad en el proceso de autenticacion.</p>
<p><span style="color: rgb(68, 68, 68); font-family: arial, sans-serif; font-size: small; line-height: 16px;">¿</span><span style="line-height: inherit;">Porque el sistema descrito en la descripcion general de <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Persona/Identity_Provider_Overview?redirectlocale=en-US&amp;redirectslug=Persona%2FIdentity_Provider_Overview" title="https://developer.mozilla.org/en-US/docs/Mozilla/Persona/Identity_Provider_Overview?redirectlocale=en-US&amp;redirectslug=Persona%2FIdentity_Provider_Overview">Persona IdP</a>&nbsp;funciona?</span></p>
<h3 id="Chain_of_Trust">Cadena de confianza</h3>
<p>El navegador del usuario almacena localmente algunas piezas de informacion para cada una de las entidades de este usuario: una direccion de correo electronico, un par de llaves, y un certificado del IdP(Identity Provider) asociado.</p>
<p>El par de llaves del usuario es un par criptografico DSA o RSA standard y es generado y guardado localmente en el navegador del usuario. El certificado es firmado por el IdP asociado con la identidad del usuario elegida. Estos certificados estan diseñados para durar no mas de 24 horas y pueden ser proporcionados de nuevo siempre y cuando el usuario tenga una sesion activa con el IdP. Los pares de llaves nunca son compartidos entre computadoras ni entre navegadores.</p>
<p><img alt="" class="internal" src="/@api/deki/files/6299/=Persona_chain_of_trust.png" style="width: 901px; height: 282px;" /></p>
<p>Como se describe en la <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Persona/Protocol_Overview?redirectlocale=en-US&amp;redirectslug=Persona%2FProtocol_Overview" title="https://developer.mozilla.org/en-US/docs/Mozilla/Persona/Protocol_Overview?redirectlocale=en-US&amp;redirectslug=Persona%2FProtocol_Overview">descripcion general del protocolo</a>, el navegador del usuario es capaz de generar y firmar declaraciones de identidad efimeras especificas del sitio. Cuando se toman juntas estas declaraciones con la informacion en un certificado de algun usuario, el sitio es capaz de verificar la identidad de ese usuario. La autenticidad de los certificados debe ser verificada obteniendo la llave publica del IdP, la cual es publicada en un documento disponible sobre SSL.</p>
<p>De esa manera, la seguridad de Persona depende de la decision del usuario de mantener en secreto la llave privada, el dominio que guarda la llave privada y la coneccion SSL al IdP que esta siendo asegurado. Un rompimiento de cualquiera de estos puntos podria indeterminar la seguridad de la identidad de un usuario.</p>
<h3 id="Generating_IdP_Keypairs">Generando pares de llaves IdP</h3>
<p>Para los IdPs (Identity Providers ), el <a href="https://github.com/mozilla/jwcrypto" title="https://github.com/mozilla/jwcrypto">paquete jwcrypto</a>&nbsp;proporciona una herramienta de linea de comandos, <code>generate-keypair</code>, la cual genera las llaves adecuadas para el uso con Persona. Debido a que las llaves generadas son ya JSON-serialized, la llave publica es adecuada para su inclusion directa en el campo de llaves publicas de algun IdP.</p>
<h3 id="Certificate_and_Assertion_Format">Certificado y formato de declaracion</h3>
<p>Por favor, consulte la <a href="https://github.com/mozilla/id-specs/blob/prod/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/prod/browserid/index.md">especificacion de BrowserID</a>&nbsp;para informacion detallada, pero a un alto nivel, ambos certificados y declaraciones son cadenas con tres partes: un encabezado, un cuerpo y una firma criptografica. Cada parte esta codificada y concatenada separadamente en&nbsp;<a href="https://tools.ietf.org/html/rfc4648#section-5" title="https://tools.ietf.org/html/rfc4648#section-5">Base64Url</a>, con caracteres "." delimitando cada parte. El cuerpo no esta encriptado, por lo que su plaintext esta disponible si lo decodificas en base64url.</p>
<p><img alt="" class="internal" src="/@api/deki/files/6300/=JWT.png" style="width: 595px; height: 111px;" /></p>
<p>Los certificados y las declaraciones son empaquetados juntos en una "declaracion respaldada" cuando el usuario intenta autenticarse en algun sitio. El paquete es creado concatenando un certificado y una declaracion con un "~" separandolos.</p>
Revertir a esta revisión