Aislamiento de almacenamiento
Extensiones:
Las billeteras basadas en extensiones de navegador como MetaMask usan almacenamiento local aislado al que solo puede acceder la extensión, sin que un sitio web pueda acceder. La extensión puede enviar datos al sitio web, o el sitio web puede solicitar datos haciendo solicitudes para pasar mensajes. Las claves privadas se almacenan en el almacenamiento local de espacio aislado y se realizan solicitudes desde el sitio web a la extensión para firmar mensajes. La extensión devuelve el mensaje firmado al sitio web.
Basado en la web:
Billeteras criptográficas basadas en navegador como Authereum , Portis , Torus y Fortmatic, use el almacenamiento local de espacio aislado también a través de un iframe. A diferencia de las cookies, el almacenamiento local está estrictamente restringido por dominio, lo que significa que si un sitio web establece un valor en el almacenamiento local, solo ese sitio web puede leer el valor; entonces alice.com no puede leer el almacenamiento local de bob.com. Para proteger los valores confidenciales del almacenamiento local, se establecen en un subdominio controlado, por ejemplo x.wallet.com, ya que ningún otro sitio web podrá leer el almacenamiento local. Este subdominio no contiene IU está destinado solo para comunicación iframed. El proveedor de web3 de esas billeteras carga un iframe oculto en el sitio web, que se utiliza para comunicarse con el subdominio que contiene el almacenamiento de espacio aislado; así, por ejemplo, Alice en dapp.com usando Authereum, el SDK de Authereum se conecta a x.authereum.org usando un iframe y envía postMessagesolicitudes al iframe desde el sitio web para firmar mensajes. Esto impide que el sitio web lea datos confidenciales, como claves privadas, y solo permite que el sitio web envíe solicitudes de firma de manera similar a cómo funcionan las extensiones de billetera.
No todas las billeteras basadas en la web tienen almacenamiento local de espacio aislado, por lo que debe evitar usarlas, ya que cualquier sitio web puede leer los datos confidenciales almacenados, pero las billeteras mencionadas aquí son seguras en ese sentido.
Protección contra ataques de phishing
Los ataques de suplantación de identidad se producen cuando se engaña a un usuario para que piense que está utilizando un sitio web conocido, pero en su lugar está utilizando un sitio web malicioso que se asemeja al sitio web legítimo. Authereum, Portis y Torus son soluciones de inicio de sesión basadas en nombre de usuario y contraseña, por lo que abren la ventana de autenticación de inicio de sesión en una nueva ventana emergente o redireccionamiento. Esto permite al usuario verificar la legitimidad del dominio del sitio web. La autenticación de Google también hace este patrón. Además de abrir una nueva ventana al iniciar sesión para que el usuario la verifique, algunos proveedores de billeteras basados en la web también abren una nueva ventana al firmar mensajes y transacciones para verificar la solicitud.
El secuestro de clics ocurre cuando un sitio web se carga a través de un iframe en el sitio web y el sitio web superpone una IU diferente en la parte superior del sitio web iframed con eventos de puntero establecidos en ninguno y luego engaña al usuario para que ingrese información o haga clic en un botón en la IU superpuesta pero en realidad están haciendo clic en un botón en el sitio web iframed. Esto es peligroso porque la acción en el sitio web iframed puede ser algo así como enviar fondos a la billetera de los atacantes.
Para evitar que el sitio de la billetera se cargue en un iframe, todo lo que el sitio de la billetera tiene que hacer es configurar el encabezado HTTP X-Frame-Options: DENY
, que es lo que Authereum y Portis están haciendo para estar a salvo de estos ataques.
Confiar en los scripts de contenido
Es fácil verificar el código fuente de la extensión del navegador mediante el uso de complementos de visor de origen, pero para evitar que una extensión se actualice automáticamente con código malicioso, un usuario puede instalar la extensión manualmente para bloquearla en una versión obteniendo el código fuente de github si es de código abierto o de descargar los scripts de origen.
Dado que con las billeteras basadas en la web, el propietario del sitio de la billetera controla las secuencias de comandos de contenido, entonces debe confiar en que las secuencias de comandos de contenido que administran los datos clave confidenciales no serán maliciosas, ya que el propietario del sitio de la billetera o un atacante que obtuvo acceso al sitio de la billetera puede en cualquier momento, actualice el código fuente del sitio web con un código incorrecto.
Para confiar en los scripts de contenido, el sitio de billetera se puede alojar en IPFS ya que la dirección web es el hash de contenido, lo que significa que puede confiar en que no cambiará. Authereum es una billetera que ya ofrece esto visitando authereum.eth o resolviendo la contenthash
propiedad de su nombre ENS.
Conveniencia
Las billeteras basadas en la web son portátiles porque puedes usar la misma billetera en cualquier sistema operativo, navegador, computadora de escritorio o dispositivo móvil, mientras que con la extensión del navegador estás atascado con el entorno desde el que estás usando la extensión. Las extensiones son muy inconvenientes pero ofrecen más garantías de aislamiento de almacenamiento. Sin embargo, con las cuentas basadas en contratos, se pueden ofrecer más funciones de seguridad en el lado de la billetera.
Cuentas basadas en contratos
MetaMask, Portis, Torus y Fortmatic están basados en cuentas de propiedad externa (EOA), lo que significa que los fondos se almacenan y administran con una sola clave. Si un atacante obtiene acceso a la clave de firma, también tendrá acceso a los fondos almacenados en esa clave.
Las cuentas basadas en contratos (CBA), como Authereum, brindan más garantías de seguridad porque cada contrato de cuenta puede tener varias claves para administrarlo y cada clave también puede tener autoridad limitada sobre las acciones que puede realizar.
Ventajas de las cuentas basadas en contratos:
- Los fondos no se almacenan en una sola clave
- Puede recorrer las claves de administración
- Recuperación de cuenta, en caso de robo o pérdida de sus claves de administración
- Transferir y retirar límites
- Controles de acceso para claves, lo que significa que puede restringir qué métodos puede invocar una clave