1 de Julio de 2020

(CC) Afsal / OpenIDEO

Por Javier Rodríguez (@bloguintosh) – No cabe duda de que el cifrado de datos es una de las capacidades más demandadas en la actualidad sobre todo tipo de dispositivos y comunicaciones. Después de todo, la cantidad de información que almacenamos y transmitimos es ciertamente sensible… ¡En todos los sentidos! Y entre los muchos algoritmos que podemos utilizar para ello nos encontramos con el RC4, diseñado por Ronald Rivest de la RSA Security en el año 1987, y que se ha utilizado tanto en el cifrado WEP o WAP de las comunicaciones inalámbricas como en el protocolo TLS/SSL (Transport Layer Security).

Sin embargo RC4 no destaca especialmente por tratarse del sistema criptográfico más robusto; emplea claves con un tamaño mínimo de 40 bits y un máximo de 2048 bits. Por un lado porque se trata de un algoritmo de clave simétrica: la misma clave que se utiliza para cifrar datos es la que se emplea para descifrar el bloque de datos a texto plano. Por otro porque en su concepción inicial se tuvo en consideración un factor clave sobre otros: la velocidad. De ahí, precisamente, que su uso se haya popularizado y continúe usándose en aplicaciones que demanden una cierta capacidad de codificación en tiempo real: microcontroladores, conexiones Bluetooth y un largo etcétera.

De hecho, y más allá de sus usos más conocidos, también se han desarrollado modos o variaciones para fortalecer precisamente sus puntos más débiles; empleando por ejemplo un poco de «sal» sobre la clave utilizada tanto en el cifrado como en la conversión a plano.

El origen del RC4 / ARC4 / ARCFOUR

El hecho de que el cifrado RC4 esté tan difundido también se debe a uno de esos capítulos peculiares de la comunidad, dado que fue en 1994 cuando Bob Anderson hizo pública la descripción del algoritmo en la lista de correo Cypherpunks y, como se suele decir, el resto fue historia. Bob demostró en su descripción la compatibilidad del algoritmo con el módulo objeto RC4 distribuido con los diversos toolkits proporcionados por la RSA. Sin embargo, aun después de hacerse público y mantener dicha compatibilidad había algo que no podía emplearse para no infringir la marca de RSA: su nombre. La solución fue tan sencilla como denominar a la versión apócrifa mediante el acrónimo ARC4 (Alleged RC4) o ARCFOUR.

Y si bien estamos de acuerdo con el hecho de que no destaca por su fortaleza de cifrado –hay quien mantiene que RSA tiene un as en la manga en este sentido, y de hecho aun hoy mantiene ARC4 como marca registrada– continúa tratándose de uno de los algoritmos de cifrado más utilizado hoy día, nuevamente, tanto por su velocidad como facilidad de implementación: el código necesario es sumamente fácil de memorizar, lo que significa que probablemente puedas implementarlo del tirón en cualquier lenguaje de programación que tengas a mano.

De hecho, en el artículo Cómo implementar el Algoritmo de Encriptación ARC4 en Xojo puedes encontrar una implementación rápida y eficiente como una clase de Xojo; lo que significa la capacidad de utilizarla en cualquiera de las aplicaciones nativas que quieras desarrollar tanto para plataformas de escritorio (macOS, Windows, Linux, Raspberry Pi), iOS o en aplicaciones Web, sin variar una coma. De hecho, en el proyecto de ejemplo que puedes descargar te permitirá utilizarlo y comprobar su funcionamiento por ti mismo.

¿Cómo funciona el algoritmo de cifrado ARC4?

(CC) Afsal / OpenIDEOA grandes rasgos, el algoritmo de cifrado ARC4 utiliza una caja de estado con una longitud de 256 bytes que se inicializa con una numeración consecutiva y posteriormente con una serie de operaciones matemáticas y permutaciones contando para ello con cada uno de los bytes correspondientes a la clave proporcionada. Este el agoritmo denominado Key Scheduling Algorithm o KSA.

Posteriormente, para la encriptación/desencriptado propiamente dicho de los datos se hace un XOR (OR exclusivo) sobre cada uno de los bytes del bloque de datos en combinación con un nuevo byte obtenido del keystream. ¿Y como se obtiene dicho valor? Aquí se emplea el algoritmo PRGA (Pseudo-Random Generation Algorithm), nuevamente basado en la permutación de los bytes en la caja de estado para hallar la posición cuyo valor se empleará finalmente, y para lo cual se utilizan dos contadores inicializados a cero que se irán incrementado en sucesivas iteraciones.

Referencias adicionales

Si estás interesado en criptografía más allá del algoritmo ARC4, hay dos libros muy recomendables que no deberían de faltar en tu biblioteca: Applied Cryptography y Cryptography Engineering, de Bruce Schneier; además en el propio módulo Crypto de Xojo encontrarás otra serie de algoritmos listos para usar como RSA, PBKDF2 o HMAC entre otros.

_____
Javier Rodríguez (@bloguintosh) es Ingeniero de Xojo, Inc. y propietario de AprendeXojo.com, el sitio web sobre programación con Xojo en Español.

{Ilustración (CC) Afsal cmk @ OpenIDEO}

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 8 de Mayo de 2020

Dissecting an SSL certificate

Los certificados TSL, anteriormente conocidos como certificados SSL son otra forma de llamar a los certificados de clave pública X.509. Julia Evans ha hecho una gran labor explicando en su blog cómo es uno de estos certificados «por dentro» de forma muy didáctica: Dissecting an SSL certificate.

El «texto codificado» que se ve en el archivo de texto de estos certificados tiene este aspecto:

-----BEGIN CERTIFICATE-----
MIIElDCCA3ygAwIBAgIIMmzfdZnO9pMwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UE
BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl
cm5ldCBBdXRob3JpdHkgRzIwHhcNMTcwMTE4MTg1MjExWhcNMTcwNDEyMTg1MDAw
WjBpMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlI…

Pero la versión «entendiéndolo» es la de arriba, donde se detallan las diversas partes que lo componen: versión, número de serie, algoritmo, quién lo emite, validez, tema, etcétera.

La firma es la parte más crítica, pues es la que garantiza las entidades (autoridades) que los han firmado. Las entidades que publican los certificados se conocen y «confían» –según un protocolo criptográfico seguro– unas en otras. Cuando emiten certificados, los suben a un registro, registro que luego comprueban los navegadores web cuando llegan a las páginas. Si todo está en orden, el candadito se pone en verde/gris: sitio seguro. Si no lo está, aparece abierto/roto o con un aviso.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 31 de Marzo de 2020

Las Game Boy de Nintendo (1989) tenían un peculiar sistema de protección para que sólo se pudieran utilizar en ellas cartuchos debidamente licenciados por la compañía. Aun así los desarrolladores independientes investigaron sus entresijos y descubrieron cómo hackear el ingenioso sistema «medio técnico, medio legal» que servía de protección. En este vídeo de StackSmashing se explica en diez minutos esa fascinante aventura de ingeniería inversa y hacking que a día de hoy no pretende violar leyes sino simplemente satisfacer el ansia de conocimiento de los más geeks.

Tal y como explican, la protección de las Game Boy estaba en el arranque de los cartuchos; más concretamente en el logotipo. La consola comprobaba que el cartucho contuviera el logotipo de Nintendo: se mostraba deslizándose durante la carga del contenido y luego se comparaba con el mismo logo que también estaba almacenado en la consola. Si eran iguales, arrancaba; si no, se quedaba bloqueado. De este modo si alguien creaba un nuevo juego debería usar el mismísimo «logo Nintendo™», lo cual supondría una violación de una marca registradas, lo que era en sí parte de la protección porque facilitaba perseguirlo legalmente.

Game Boy Development Wiki

El hack consiste en utilizar un cartucho fabricado con una FGPA, un chip programable que no es una simple ROM estática. De este modo se puede mostrar un logo distinto en la pantalla y cuando se realiza el chequeo del logo auténtico (que se resume en 44 bytes) «entregarlo» discretamente para pasar la prueba, algo que es totalmente invisible. Se puede encontrar mucha información sobre esto en el Game Boy Development Wiki.

En las explicaciones hay una descripción completa de lo que hace cada pin de los cartuchos: lectura, escritura, direcciones, datos, reloj… Para la Game Boy existían diversos tipos de cartuchos, pero el truco de la FPGA se puede usar para simular cualquiera de ellos. Al final del vídeo se ve una placa ya diseñada que sirve tanto para poner ROM como para conectar otros circuitos y hacer más cosas interesantes.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 4 de Marzo de 2020

Let’s Encrypt

Debido a un bug el equipo que está detrás de Let’s Encrypt ha anunciado que va a tener que revocar el 4 de marzo unos 3 millones de certificados seguros. Eso es aproximadamente el 2,6% del los ~116 millones actualmente en activo. Let’s Encrypt es una entidad sin ánimo de lucro que desde hace años ofrece certificados seguros TSS/SSL («el candadito») para cualquier servidor de internet forma gratuita.

Han puesto a disposición de la comunidad una herramienta de comprobación que permite saber si un dominio concreto se ha visto afectado por ese bug:

La forma más simple de resolver el problema es renovar el certificado; los nuevos ya no están afectados por ese bug. Las personas registradas en el servicio que estén utilizando certificados afectados que van a revocarse también habrán recibido o recibirán un correo electrónico; basta que lo renueven para que todo vuelva a la normalidad.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear