JavaScrypt

JavaScript: herramientas de criptografía basadas en navegador

Bienvenido a JavaScrypt, la solución de encriptación de datos de alta seguridad que se ejecuta completamente en su navegador web. Para usar la página, su navegador debe ser compatible con JavaScript y no debe tener desactivada la ejecución de ese idioma. Veamos…

Si el recuadro de arriba dice "Tu navegador admite JavaScript", estás en el negocio.

JavaScrypt se ejecuta completamente en su navegador: no se envía nada a ningún sitio web cuando lo usa. Puede, si lo desea, descargar JavaScrypt en su propia computadora y usarlo cuando no esté conectado a Internet.

Las instalaciones de encriptación de JavaScrypt utilizan el Estándar de cifrado avanzado (AES) adoptado por los Estados Unidos como Estándar de procesamiento de información federal 197. AES admite longitudes de clave de 128, 192 y 256 bits; JavaScrypt utiliza claves de 256 bits exclusivamente.

Si ya está familiarizado con el cifrado, vaya directamente a las páginas que implementan los diversos componentes de JavaScrypt. Si eres un recién llegado, es posible que prefieras trabajar con el Tutorial de JavaScrypt, que demuestra cómo se usan.

Componentes JavaScrypt

  • Tutorial de JavaScrypt

  • Utilidad de cifrado / descifrado

  • Versión “magra” de lo anterior.

  • Utilidad de la esteganografía (escritura oculta)

  • Generador de frase de paso

  • Descargar el código fuente de JavaScrypt (archivo comprimido)

  • Fuente de distribución de documentación

  • Registro de desarrollo

¿Por qué cifrar con JavaScript?

A primera vista, JavaScript puede parecer una opción extraña para implementar el cifrado. Estos programas son bastante grandes y complicados, y descargarlos y ejecutarlos lleva más tiempo del requerido para un applet de Java o para acceder a un programa CGI en un servidor web. Elegí JavaScript por dos razones: seguridad y transparencia.

Seguridad. La única razón para el cifrado es proteger la privacidad. Esto significa que el proceso no puede implicar ningún enlace cuya seguridad sea sospechosa. Si los mensajes fueran cifrados por un servidor web, tendrían que pasar a través de Internet, donde cualquier sitio intermedio podría interceptarlos. Incluso si algún mecanismo, como HTTP seguro, pudiera evitar absolutamente que se intercepten los datos, no tendría forma de asegurarse de que el sitio que realizó el cifrado no guardara una copia en un archivo, etiquetado convenientemente con su dirección de Internet.

Para tener algún grado de seguridad, es esencial que todo el procesamiento se realice en su computadora, sin que ello implique ninguna transmisión o interacción con otros sitios en Internet. Un navegador web con JavaScript lo hace posible, ya que los programas incrustados en estas páginas se ejecutan totalmente en su propia computadora y no transmiten nada a través de Internet. La salida aparece solo en cuadros de texto, lo que le permite cortarla y pegarla en otra aplicación. A partir de ahí, la seguridad depende de ti.

La seguridad nunca es absoluta. Los datos encriptados con estas páginas pueden verse comprometidos de varias maneras, que incluyen, entre otras, las siguientes:

Su navegador web y / o su intérprete de JavaScript pueden contener errores o violaciones de seguridad deliberadas que informen sobre la actividad de su computadora a otro sitio de Internet.

Algún otro applet que se ejecuta en otra página de tu navegador, tal vez sin que te des cuenta de su existencia, está espiando en otras ventanas.

Alguna otra aplicación de "spyware" que se ejecuta en su computadora puede haber comprometido la seguridad de su sistema y estar indagando en su actividad.

Su navegador web puede mantener un "registro histórico" o "caché" de los datos que genera. Alguien puede venir más tarde y recuperar una copia de sus datos de ese registro.

La implementación de estas páginas puede contener un error o un error deliberado que hace que sus resultados sean inseguros. Es por esto que la transparencia, discutida a continuación, es esencial.

La seguridad de su computadora puede haber sido comprometida físicamente; ¿Cuándo fue la última vez que comprobó que un error que transmite las pulsaciones de teclas y / o el contenido de la pantalla a esa furgoneta blanca estacionada en la calle no estaba al acecho dentro del gabinete de su computadora?

Uno puede meterse en una fina fiebre de paranoia preocupándose por cosas como esta. Una forma de descartar los riesgos más probables es descargar una copia de estas páginas y los programas de JavaScript a los que hacen referencia y ejecutarla desde una URL "file:" en una computadora sin conexión de red ubicada en locales seguros bajo su control. Y mire cuidadosamente cualquier archivo creado por su navegador web. Puede encontrar las cosas más interesantes escondidas allí ...

Transparencia. Cualquier herramienta relacionada con la seguridad es tan buena como su diseño e implementación. La transparencia significa que, en esencia, todas las partes móviles son visibles para que pueda juzgar por sí mismo si la herramienta merece su confianza. En el caso de un programa, esto significa que el código fuente completo debe estar disponible, y que puede verificar que el programa que está ejecutando corresponde al código fuente proporcionado.

La naturaleza misma de JavaScript logra esta transparencia. Los programas están integrados en las páginas web con las que interactúa; para examinarlos, solo necesita usar la función "Ver código fuente" de su navegador, o guardar la página en un archivo en su computadora y leerla con un editor de texto; En cualquier componente de JavaScript, las páginas de referencia se pueden descargar y examinar de forma similar en forma de código fuente. El hecho de que JavaScript sea un lenguaje interpretado elimina el riesgo de que ejecute un programa diferente del supuesto código fuente: con un lenguaje interpretado, lo que lee es lo que ejecuta.

La transparencia es importante incluso si no sabe lo suficiente sobre programación o seguridad para determinar si los programas contienen fallas. El solo hecho de que puedan ser examinados por cualquier persona permite que aquellos con la experiencia necesaria puedan emitir juicios, y usted puede formar sus propias conclusiones basadas en su análisis.

La implementación de JavaScript del algoritmo de cifrado AES (Rijndael) fue desarrollada por Fritz Schneider; se ha modificado ligeramente para su uso en JavaScrypt pero produce un resultado idéntico a la implementación de referencia.

La implementación de JavaScript de el MD5 algoritmo resumen del mensaje fue desarrollado por Henri Torgemane; Consulte el archivo de código fuente md5.js para examinar el código, incluido el aviso de copyright y las condiciones de uso. El algoritmo MD5 fue desarrollado por Ron Rivest.

La implementación de JavaScript del SHA-2 funciones hash SHA-224 y SHA-256 es de Chen, Yi-Cyuan y lanzado bajo la MIT Licencia, que se incluye en el archivo de código fuente sha256.js. El código original está disponible en GitHub.