Herramientas OTP y la seguridad digital

En un mundo digital donde las contraseñas ya no son suficientes para proteger nuestras cuentas, las herramientas OTP (One-Time Password) se han convertido en una capa adicional esencial para mantener a salvo nuestra identidad, nuestros datos y nuestra privacidad.

Una OTP es una contraseña que solo se puede usar una vez, y que suele tener una validez de unos pocos segundos. Es un código numérico que se genera de forma automática y que sirve para verificar la identidad de un usuario cuando se accede a una cuenta o se realiza una operación sensible. Aunque existen varios tipos de OTP, el más común en el ámbito personal y empresarial es el TOTP (Time-based One-Time Password), que genera un nuevo código cada 30 segundos.

Este código no es generado de forma manual, ni se recibe por SMS (algo que puede ser interceptado). Lo genera una app de autenticación en el dispositivo del usuario, a partir de una clave secreta compartida cuando se activa la verificación en dos pasos (2FA) en la cuenta del usuario.

¿Por qué usar herramientas OTP?

Utilizar OTP como parte de un sistema de verificación en dos pasos (2FA) mejora radicalmente la seguridad de las cuentas, incluso si alguien averigua la contraseña principal. Este sistema de seguridad evita accesos no autorizados: Un atacante necesitaría también el código temporal generado por la app OTP, lo cual requiere acceso físico al dispositivo. Esto reduce, por ejemplo, el impacto del phishing: Aunque un atacante consiga la contraseña con técnicas de ingeniería social, no podrá acceder sin el código temporal.

Además, esta solución de seguridad no depende de la red móvil: A diferencia de los códigos enviados por SMS, una app OTP funciona sin necesidad de estar conectada a Internet.

Este sistema de seguridad ofrece compatibilidad con múltiples servicios: Plataformas como Google, GitHub, Microsoft, Dropbox, Amazon o incluso bancos ya ofrecen integración con autenticación OTP.

Diversidad en las herramientas

Hay muchas apps de autenticación disponibles: Google Authenticator, Microsoft Authenticator, Authy, 1Password, entre otras. Cada una tiene sus ventajas y limitaciones en cuanto a sincronización, respaldo o interfaz de usuario. Además, cada una de ellas ofrece distintos niveles de accesibilidad en su interfaz de usuario y limitaciones a la hora de importar y exportar los tokens de autenticación entre otros dispositivos y aplicaciones OTP. Por ejemplo, el proyecto Free OTP ofrece una solución de código libre que implementa los protocolos HOTP y TOTP garantizando la mayor compatibilidad con los distintos servicios de OTP.

Es aconsejable utilizar una herramienta en la que confiemos y que permita exportar e importar las claves que tengamos almacenadas ya que estas operaciones son necesarias cuando llega ese momento de cambiar de dispositivo de seguridad.

Problemas de accesibilidad

Junto a los posibles problemas de accesibilidad en la interfaz de usuario que pueda tener el cliente OTP que estemos utilizando, hay que mencionar que el proceso de autenticación puede presentar barreras de accesibilidad a algunas personas con discapacidad o poca soltura tecnológica.

El proceso consiste en copiar un número de 6 cifras desde una aplicación en nuestro teléfono móvil a una página web o una ventana de autenticación de usuario donde hay un campo numérico donde se nos solicita esa contraseña numérica. El problema es que tenemos menos de 30 segundos para completar este proceso.

Algunos clientes OTP incorporan la función de almacenar en el portapapeles la contraseña generada, evitando la necesidad de memorizar el número.

También si estamos utilizando el ecosistema de Apple, podemos copiar el número en nuestro iPhone y pegarlo desde el portapapeles del Mac gracias al servicio de interoperabilidad de Apple llamado Continuity.

Otra solución puede ser tener un cliente OTP también en nuestro equipo de escritorio o equipo portátil y así podemos obtener estas contraseñas OTP en nuestro dispositivo móvil o nuestro equipo de trabajo.

Programación táctil para personas ciegas con Code Jumper

Code Jumper es un juguete físico que facilita el aprendizaje de los conceptos de la programación a personas ciegas.
Este proyecto ha sido desarrollado por Microsoft en colaboración con American Printing House for the Blind (APH).
Consiste en un sistema físico de piezas llamadas micro‑pods conectadas entre ellas mediante cables para definir un flujo de programa. Cada micro pod representa una operación o función de programación(Play, Loop, Selection, etc)
Una vez se hayan completado las conexiones entre piezas y cables para construir un programa, luego se puede reproducir mediante sonidos y narraciones auditivas accesibles. En el app, cada conexión genera una línea de código accesible mediante lectores de pantalla o el botón “leer código” en una consola que acompaña a esta herramienta.

¿Qué son los micro pods?

Un micro‑pod es una pieza física del tamaño aproximado de una pastilla de jabón, diseñada para ser manipulada fácilmente con las manos. Cada Micro pod tiene asociada una función de las posibles para construir un programa.

El micro pod tiene una forma ovalada o circular, con un aspecto aplanado. Fabricado en plástico rígido y con texturas que permiten diferenciarlos. Cada pod tiene conexiones y botones físicos que permiten identificarlo fácilmente. Las conexiones son similares a las clavijas de auriculares y los botones pueden ser selectores de apagado y encendido o diales para seleccionar un valor.

Contenidos y recursos educativos

APH ofrece un currículo de 19 lecciones de unas 25 horas con actividades guiadas, ejercicios, retos y videos.
Los tipos de piezas incluyen:

  • Secuencia y reproducir sonidos (Play pods)
  • Bucles y repeticiones (Loop pods), por ejemplo, tocar una canción infantil  
  • Variables y contadores (Constant, Variable plugs), p. ej. una cuenta atrás
  • Selección / condicionales y azar (Selection, Random plugs), p. ej. historias con desenlaces variables .
  • Bucles anidados, para construir patrones musicales complejos.

Además hay ejercicios más complejos llamados Code Jumper Puzzles donde se requieren soluciones más imaginativas.

Puedes adquirir Code jumper en su página oficial.

Code File Catcher: una herramienta para dar contexto a tus consultas a la IA

Muchas veces, cuando queremos pedir ayuda a una IA para depurar un fallo, revisar una estructura o mejorar un código, necesitamos enviar más que una simple función. Necesitamos compartir el contexto completo del proyecto: otros archivos, dependencias, configuraciones, etc.

Los entornos de desarrollo incluyen un navegador de archivos para moverte entre los distintos ficheros de un proyecto pero, en la mayoría de los casos, el navegador de archivos incluye alguna barrera de dificultad o la cantidad de ficheros es bastante grande lo que dificulta la tarea a los desarrolladores con discapacidad o con poca destreza a la hora de moverse en su entorno de desarrollo. Con Code File Catcher puedes hacer eso fácilmente.

Code File Catcher es una aplicación sencilla pero poderosa que te permite seleccionar una carpeta de tu disco, elegir los tipos de archivos de código que quieres incluir, y obtener automáticamente un texto con todo el contenido de esos archivos perfectamente organizado y listo para copiar o exportar.

Esto resulta especialmente útil si estás trabajando con asistentes de inteligencia artificial como ChatGPT, Gemini o similares, que requieren el contexto completo del código para ofrecer respuestas precisas y útiles.

Entre las distintas operaciones que puede realizar actualmente están: recopila todos los archivos fuente relevantes de un proyecto o carpeta, muestra un texto estructurado con el nombre del archivo y su contenido y puede copiar ese texto al portapapeles o exportarlo como archivo `.txt`.

El proyecto está disponible bajo una licencia libre en GitHub. Puedes consultarlo, usarlo, modificarlo y, si lo deseas, contribuir con mejoras o sugerencias. El proyecto está abierto a colaboraciones, especialmente si pueden ayudar a que la herramienta sea aún más útil para más personas.

Puedes encontrar el código del proyecto y participar en él en el repositorio de Code File Catcher en Github.

Cómo escribir matrices con MathML

Una matriz es una tabla de números organizada en filas y columnas. Las matrices se utilizan ampliamente en muchas ramas de las matemáticas y ciencias aplicadas. Se utilizan para resolver sistemas de ecuaciones lineales, representar transformaciones geométricas, modelar datos en inteligencia artificial o describir redes eléctricas o circuitos.

Para las personas ciegas, escribir y leer matrices puede plantear diversas barreras de accesibilidad como la incapacidad de memorizar toda la información contenida en la matriz, incompatibilidad del producto de apoyo con el formato utilizado para mostrar la matriz, limitaciones de los sistemas de formateado de texto y marcado semántico, etc. En el caso de otros perfiles de discapacidad el producto de apoyo puede encontrar problemas para navegar por los datos de la matriz o no existir una semántica suficiente para identificar filas, columnas o celdas concretas por lo que una persona que utilice un sistema de control por voz o un barredor no podrá interactuar de forma apropiada con la matriz.

Utilizando MathML podemos solucionar muchos de estos problemas ya que aporta semántica y compatibilidad con los diversos productos de apoyo. Con MathML, no solo podemos mostrar una matriz, sino también describirla de forma que cualquier persona, con o sin discapacidad, pueda acceder a su contenido.

Cómo escribir una matriz con MathML

En MathML tenemos el elemento mtable para representar matrices. Además podemos encerrarla entre corchetes utilizando el elemento mfenced como se requiere en algunos ejercicios matemáticos o de física.

El siguiente ejemplo muestra una matriz de 2×2 celdas con los valores 1, 2, 3 y 4:

<math>
<mfenced open="[" close="]">
<mtable>
<mtr>
<mtd><mn>1</mn></mtd>
<mtd><mn>2</mn></mtd>
</mtr>
<mtr>
<mtd><mn>3</mn></mtd>
<mtd><mn>4</mn></mtd>
</mtr>
</mtable>
</mfenced>
</math>

Con el elemento mtr marcamos una fila de la matriz y con mtd marcamos una celda concreta.

En el navegador la matriz se mostraría de la siguiente forma:

1 2 3 4

También podemos escribir la matriz con variables para la resolución de problemas de álgebra:

<math>
<mtable>
<mtr>
<mtd><mi>a</mi></mtd>
<mtd><mi>b</mi></mtd>
</mtr>
<mtr>
<mtd><mi>c</mi></mtd>
<mtd><mi>d</mi></mtd>
</mtr>
</mtable>
</math>

En el navegador se mostraría de la siguiente forma:

a b c d

Nueva configuración para los comandos de VoiceOver para Mac

Una de las formas más rápidas de ampliar la funcionalidad del lector de pantallas para MacOS es a través de los comandos de VoiceOver para Mac. Estos comandos permiten asociar a un atajo de teclado la ejecución de un comando de VoiceOver, la ejecución de un script de AppleScript o la apertura de una aplicación.

Con la publicación de MacOS 15.4 la categoría de comandos para VoiceOver en la aplicación para configurar VoiceOver para Mac ha sufrido muchos cambios. En la versión anterior, dentro de esta categoría, aparecían 4 pestañas para configurar el comportamiento del teclado, del TrackPad, del teclado numérico extendido y una pestaña para los comandos de VoiceOver personalizados por el usuario.

 Desde MacOS 15.4 en la categoría de Comandos encontraremos lo siguiente: distintas casillas de verificación y selectores para permitir y modificar el control mediante el teclado extendido, el Trackpad o la tecla opción; varias opciones para modificar el acceso a la navegación rápida de VoiceOver y la sección de conjunto de comandos que es donde encontramos las opciones para agregar y eliminar los comandos de VoiceOver.

Conjunto de comandos

En esta sección de conjunto de comandos encontraremos un selector que nos permite usar los comandos integrados o los comandos de usuario.

Si marcamos los comandos integrados, desactivaremos todas las personalizaciones de comandos de VoiceOver que hayamos creado. En cambio, seleccionando comandos de usuario activaremos todas las personalizaciones que hayamos registrado en nuestro VoiceOver.

Editar conjunto de comandos del usuario

Al marcar la opción comandos de usuario el botón Editar se activa. Al pulsar este botón accederemos a la pantalla de Editar conjunto de comandos del usuario.

En esta pantalla encontraremos un campo de búsqueda, un selector de filtro de búsqueda, un selector para visualizar los resultados como columnas o como tabla y un área de lista llamada Asignaciones de comandos que contiene todos los comandos disponibles. Justo debajo de la tabla encontraremos el botón Aceptar para guardar los cambios realizados y volver a la pantalla anterior.

Es recomendable seleccionar la visualización como columnas si eres usuario de VoiceOver ya que  recorrer la lista de elementos por categorías se simplifica. Pero si seleccionamos la visualización como tabla nos aparecerá unos botones de Añadir y Eliminar los elementos de la tabla.  

Filtro de listado de comandos

En el contenedor llamado Asignaciones de comandos aparecen todos los comandos disponibles. Esta lista es muy extensa por lo que es recomendable usar las opciones disponibles en el filtro. Al pulsar el botón Filtro de comandos nos aparecerá una lista de selección con las siguientes opciones: todo, teclas de VoiceOver, teclas de opción, teclas de navegación rápida, teclas del teclado numérico, acciones del trackpad, comandos con una entrada asignada, comandos sin entrada asignada, asignaciones de entrada modificadas por el usuario, asignaciones de entrada bloqueadas que no se pueden cambiar, entradas con varios comandos asignados y entradas con varios comandos asignados en la misma categoría.

Con el filtro activado podemos localizar rápidamente qué comandos hemos personalizado, qué comandos de VoiceOver carecen de atajo de teclado o si tenemos algún comando de VoiceOver con varios atajos registrados. Por ejemplo, al seleccionar el filtro Entradas con varios comandos asignados en la misma categoría podemos observar que el atajo Control+Opción+Comando+Mayúsculas+espacio está asignado a Mover hacia abajo el ratón y Mover hacia arriba el ratón. Esto se debe a que con la misma pulsación de teclado podemos mantener un click de ratón o levantar el click de ratón.

Añadiendo un nuevo comando

Podemos utilizar el botón añadir que aparece cuando hemos seleccionado la visualización como tabla.

Al pulsar el botón Añadir aparecerá una nueva fila en la tabla y el cursor de VoiceOver se colocará en la columna de Entrada. En esa columna hay un botón desplegable que nos permitirá seleccionar si el nuevo comando utilizará un comando del Trackpad, del teclado numérico, una pulsación con la tecla Opción o un comando de VoiceOver. Mediante la navegación progresiva por el botón desplegable podemos elegir, por ejemplo, que nuestro atajo sea del tipo Tecla Opción, Letras con Mayúsculas y la combinación ⌥⇧E.

Pulsando la combinación Control+Opción+flecha derecha pasaremos a la columna Categoría, que en estos momentos puede estar vacía. Si volvemos a pulsar Control+Opción+flecha derecha llegaremos a la columna Comando, que es también un botón desplegable.

Al pulsar el botón desplegable para el comando de nuestro atajo de teclado se desplegará un menú progresivo con las siguientes opciones: general, información, navegación, texto, Internet, buscar, tablas, tamaño y posición, audio, braille, efectos visuales, habla, puntos activos, Braille 2D y comandos personalizados. Este último elemento nos permite ejecutar un script, abrir una aplicación, abrir una utilidad, ejecutar un flujo de Automator o ejecutar un atajo de la utilidad de Atajos de MacOS e iOS. Las primeras categorías corresponden a las diversas funciones que puede hacer VoiceOver. De esta forma podemos cambiar algunos de los atajos de teclado de VoiceOver o crear las combinaciones de teclado necesarias para aquellos comandos de VoiceOver que no son cómodos de pulsar en un teclado distinto al teclado inglés de Estados Unidos.

Para nuestro ejemplo buscaremos en la categoría general la opción Desplegar o contraer triángulo desplegable

Una vez seleccionado buscaremos el botón aceptar y nuestro nuevo comando para VoiceOver estará disponible. Así que cuando encontremos un elemento con un conmutador de despliegue, si pulsamos Opción+Mayúsculas+e provocaremos que el control se despliegue o se contraiga en lugar de tener que usar las funciones de ratón de VoiceOver.

Cambiando el comportamiento general de VoiceOver

Aunque, en principio, podemos modificar todos los elementos que aparecen en la lista, hay unas cuantas funciones que no son modificables por lo que no podemos cambiar su asignación de teclas o su gesto para el Trackpad. Eso no nos impide crear un nuevo comando con otra asignación de teclas que no esté en uso y podamos acceder a esa funcionalidad de VoiceOver mediante otro método de teclado o de Trackpad.

Qué es la Internet Society

Durante mi estancia en Puerto rico participando en el II congreso de accesibilidad de la UPR tuve la oportunidad de conocer y relacionarme con miembros del capítulo de Puerto Rico de la Internet Society. Eso me permitió conocer mejor esta asociación con unos fines muy interesantes.

¿Qué es la Internet society?

La Internet Society (ISOC) es una organización global sin ánimo de lucro que desempeña un papel fundamental en la promoción de una Internet abierta, segura y accesible para todos. Fundada en 1992 por pioneros de la red como Vinton Cerf y Robert Kahn, su misión es garantizar que Internet siga siendo una herramienta de empoderamiento y desarrollo a nivel mundial. En un mundo donde Internet forma parte de casi todos los aspectos de nuestra vida, desde la educación hasta el trabajo, desde la comunicación hasta el entretenimiento, garantizar su libre acceso y buen funcionamiento es más importante que nunca.

Hoy en día, ISOC cuenta con una red global de miembros individuales, organizaciones afiliadas y capítulos locales repartidos por todo el mundo.

¿Qué hacen?

ISOC trabaja en múltiples frentes para fortalecer la infraestructura y las políticas de Internet. Sus principales áreas de acción incluyen temas relacionados con la conectividad global, seguridad y confianza en Internet, desarrollo de políticas de protección de Internet, educación y capacitación y también temas de accesibilidad en Internet.

¿Por qué lo hacen?

La visión de ISOC es una Internet para todos: abierta, globalmente conectada, segura y confiable. Creen que una Internet accesible y segura es esencial para el desarrollo social, económico y cultural de las comunidades en todo el mundo.

¿Cómo se organizan?

La Internet Society se estructura de forma global, pero su fuerza está en la participación local. Está compuesta por:

Capítulos (Chapters)

Los capítulos son grupos de miembros organizados por región o país que promueven los principios de ISOC a nivel local. Existen más de 110 capítulos activos en todo el mundo. Cada capítulo es autónomo, pero está vinculado a la misión de ISOC. Pueden organizar eventos, debates, talleres, y colaborar con autoridades locales para influir en decisiones tecnológicas y regulatorias.

Unirte a un capítulo local te permite involucrarte más directamente, conocer a otras personas con intereses comunes y participar en iniciativas que afectan a tu comunidad.

Miembros individuales

Cualquier persona del mundo puede convertirse en miembro de ISOC de forma gratuita. Solo necesitas registrarte en su web. Como miembro, puedes votar en elecciones internas, participar en discusiones y colaborar en proyectos.

Miembros organizacionales

ISOC también ofrece membresías para empresas, universidades, ONGs y otras entidades interesadas en apoyar el desarrollo sostenible de Internet.

Junta Directiva

La gobernanza de ISOC está en manos de una Junta de Directores elegida por los miembros y organizaciones afiliadas. Esta junta supervisa las actividades de la organización, aprueba presupuestos y define estrategias.

¿Cómo puedo ser miembro?

Cualquier persona interesada puede unirse a ISOC de forma gratuita como miembro individual. El proceso de inscripción es sencillo y se realiza a través de su sitio web oficial. Además, existen membresías para organizaciones, destinadas a empresas, instituciones académicas y entidades gubernamentales que deseen apoyar la misión de ISOC. En el caso de empresas y organizaciones tiene un coste anual variable según el tipo y tamaño de la organización, con diferentes niveles de beneficios.

¿Qué obligaciones tienen sus miembros?

Los miembros individuales deben adherirse a un código de conducta que promueve la honestidad, integridad y respeto en todas las interacciones relacionadas con ISOC. Esto incluye participar de manera constructiva en las actividades y discusiones de la comunidad, así como respetar las normas y políticas establecidas por la organización.

La participación en los eventos y actividades es opcional aunque si se pertenece a un capítulo es necesario que el nuevo miembro mantenga una participación activa en las actividades organizadas por el capítulo.

¿Qué beneficios obtienen sus miembros?

Además de trabajar por una Internet abierta y segura para todas las personas los miembros de ISOC pueden acceder a recursos educativos y formativos sobre tecnología, derechos digitales y políticas de Internet, pueden participar en en proyectos globales y locales con impacto real, formar parte de una red internacional de activistas, tecnólogos, desarrolladores, académicos y defensores de los derechos digitales, participar en las decisiones de la asociación y, además, asistir a eventos, conferencias y programas de becas.