Shared clipboard

La aplicación permite compartir el portapapeles entre un móvil Android y una aplicación Java de escritorio.

Para que funcione, será necesario tener las dos aplicaciones abiertas, la de escritorio, donde habrá que generar un QR que caduca, y la del teléfono.

En la aplicación del teléfono habrá dos botones que servirán para pegar el portapapeles de la máquina de escritorio, o para copiar el portapapeles del móvil a la máquina de escritorio.

Cuando el usuario pulsa uno de los botones de operación, se obtendrán unos bytes aleatorios del micrófono, necesarios para completar la operación, y se abrirá el escaneador de QR con el que habrá que escanear un QR no caducado.

Descripción

Se incluyen dos aplicaciones.

  • Aplicación de escritorio, puedes generar el QR, y copiar al portapapeles el contenido que deseas compartir con el móvil.
  • Aplicación de Android. Podrás elegir si quieres pegar el portapapeles remoto al móvil, o si quieres copiar el portapapeles del móvil a la máquina remota. Luego tendrás que capturar el QR de la aplicación de escritorio.

Descripción del código

  • Aplicación de escritorio: Se hace uso de encriptación para que el contenido compartido no vaya en claro por la wifi. Se usa una combinación muy potente de intercambio de claves por Diffie-Hellman y un secreto compartido a través del QR.
  • Aplicación de Android: Se hace uso de las librerías programadas en Java para la aplicación de escritorio. El resto de la aplicación está en Kotlin (primera aplicación mía parcialmente en este lenguaje).

Pantallas

Shared clipboard (2025)

Ver vídeo
Descargar

Versiones

image

Aplicación combinada de Java desktop (Impresión del QR) y Android (lectura del QR y elección de la operación a efectuar)

Se añaden mecanismos muy potentes de encriptación, en los que únicamente la longitud del texto compartido se expone de manera evidente.

Se podría mejorar la robustez de la encriptación hasta hacerla prácticamente infranqueable, si el atacante no tiene más información extra, pero lo dejamos para una posible versión futura.


Puedes ver un vídeo de la aplicación combinada funcionando Vídeo de demostración

INFORMACIÓN ADICIONAL

...

La aplicación shared-clipboard de la parte de Android no toma ni comparte ningún dato del usuario

La aplicación shared-clipboard de escritorio no toma nigún dato de usuario, con la excepción de que se conecta al servidor para comprobar si hay alguna nueva versión disponible.

En ese proceso, el servidor toma el país de la IP del usuario, el idioma y la versión de la aplicación, y los almacena con fines meramente estadísticos para tener una estadística de los arranques de la aplicación.


Ambas aplicaciones necesitan obtener datos puramente aleatorios para componer las claves de encriptación, y para ello se escucha el micrófono como fuente de ruido durante aproximadamente un segundo (tanto en la aplicación de Android como en la de escritorio), para obtener esos pocos datos aleatorios necesarios para la encriptación.


Las aplicaciones no obtienen ningún otro dato del usuario, y los datos comentados antes, se utilizan exclusivamente con fines técnicos.

Vídeos

Descargas