transfiera de manera segura y conveniente un solo archivo desde una computadora de escritorio a una computadora móvil

Estoy buscando una forma conveniente de transferir de forma segura un solo archivo desde una computadora de escritorio A a una computadora móvil B. A ejecuta Linux, B ejecuta Android. Por "seguro" quiero decir que:

a) un archivo no debe filtrarse a un tercero y

b) A y B no confían el uno en el otro. Pregunto específicamente cómo transferir un solo archivo.

c) Debería ser tan fácil como seleccionar ese archivo en un administrador de archivos

Actualización 2016-11-24

Espero transferencias no regulares, en otras palabras, una transferencia suele ser la primera transferencia entre A y B, y no estaban configurados para esta transferencia antes. A y B están conectados a Internet. (Bueno, ¿qué no está conectado a Internet hoy en día?) Pero:

d) al menos una computadora no tiene una dirección IP global o

e) ninguno de los dos tiene una dirección IP global.

Considere los casos (d) y (e) por separado.

Algunos esquemas que se me ocurren.

  1. B está conectado como un almacenamiento MTP. Entonces, incluso la memoria flash interna de B es accesible. Contradice (b).
  2. Ethernet alámbrico o inalámbrico requiere configurar una red, luego un servidor de red de algún tipo (por ejemplo, FTP, HTTP), luego un esquema de autenticación. Este esquema es malo en (c).
  3. En principio, una conexión a través de un cable o un enlace óptico no requiere autenticación porque veo a qué dispositivo A o B está conectado. Así que encaja (c) mejor que una conexión inalámbrica. Pero no sé cómo explotar un cable sin Ethernet o qué programa puede transferir un archivo a través de un enlace óptico.
  4. Mover un dispositivo de memoria flash entre A y B. Limpiar toda la partición que contiene el archivo con el programa Unix "triturar" satisface (a). Bajo en (c).
¿Estaría de acuerdo con un programa que sirviera el archivo a través de LAN?
@zondo: Depende de los costos de seguridad y configuración de su solución. Espero transferencias no regulares, en otras palabras, una transferencia suele ser la primera transferencia entre A y B. (No lo mencioné en la pregunta, lo siento. Corregido). A y B están conectados a Internet. (Bueno, ¿qué no está conectado a Internet hoy en día?) Pero d) al menos una computadora oe) ambas no tienen una dirección IP global. Considere los casos (d) y (e) por separado.
No entiendo que esta es una pregunta de recomendación de software...
@Jan Doggen: En realidad, estoy de acuerdo en que la pregunta es entre el software y la seguridad, pero no tengo permitido realizar publicaciones cruzadas. 😉
¿ Eliminarlo aquí y colocarlo en security.stackexchange.com ? Creo que tienes muchas más posibilidades de obtener respuestas allí. Tenga cuidado de reformatear/reescribir su pregunta, estos c) d) e) hacen que sea difícil de leer.
el esquema 2 no es malo en c, si usa una aplicación cliente sana. Uso una extensión de Firefox para este propósito (no recuerdo el nombre exacto en este momento)
también lo que llamas Linux es de hecho GNU/Linux. o si prefiere decir solo el nombre del kernel, reemplace Android con Linux también.
@Sarge Borsch: "el esquema 2 no es malo en c, si usa una aplicación cliente sana". Ya ves, esta es la pregunta. ¿Que programa? ;-)
@Jan Doggen: Lo siento, uso (a), (b) y demás para que sea conciso y preciso. Esto no es un concurso literario. Creo que alguien que no puede seguir las referencias no puede ofrecer un consejo reflexivo.
Mi comentario fue sobre el diseño: fue un desastre. Steve limpió tu pregunta.
@beroal play.google.com/store/apps/… por ejemplo. Tiene una interfaz de usuario bruta, pero hace el trabajo.

Respuestas (3)

Puede usar, para archivos de texto pequeños, convertirlos a código QR, por ejemplo, usando la línea de comando y la biblioteca de códigos QR de python , en la pantalla de la computadora portátil y escanearlos con uno de los muchos clientes de Android en el teléfono, como QR Droid .

Tenga en cuenta que los códigos QR también se pueden usar para ingresar detalles de la conexión WiFi, por lo que podría usar un script para crear una conexión WiFi temporal con un código de acceso aleatorio y generar el código QR para esa conexión; esto eliminaría el tiempo de configuración. La misma secuencia de comandos podría configurar un FTP (p. ej.: twistd -n ftp) para permitir cargas y descargas o descargas del servidor web (p. ej.: python -m SimpleHTTPServer) que solo se ejecutan con acceso a un directorio específico solamente. Esto también podría generar un código QR para escanear para llegar a la ubicación correcta.

Todo el código mencionado en esta respuesta con la excepción de QR Driod es:

  • Gratis, gratis y de código abierto
  • Multiplataforma que incluye Windows, OS-X y Linux
  • Es probable que ya esté instalado en su sistema Linux o que sea fácil de instalar conpip
¿Hay alguna manera de ejecutar esos servidores HTTP y FTP de manera que ofrezcan conexiones cifradas y autenticadas? (Supongo que una contraseña de conexión se puede transferir a través de un código QR). De lo contrario, no es aceptable.
Siento que las recomendaciones de software se deslizan gradualmente hacia la creación de software. Esto es lo que me temía. ☹
@beroal: es posible configurar un servidor con autenticación; sin embargo, se necesita un poco más de una sola línea. Cuanto más específicos e inusuales sean sus requisitos, más necesitará personalizar el software; de ​​lo contrario, tendrá que trabajar de la manera que alguien de una gran empresa decidió por usted.

Una posibilidad incluye:

  • Transferencia de archivos Blu-tooth que tiene una autenticación y configuración de usuario mínimas y solo permite la comunicación uno a uno.

La autenticación Bluetooth generalmente consiste en que un dispositivo solicita un PIN que se genera aleatoriamente y se muestra en el otro dispositivo. Puede emparejar dispositivos para permitir que se restablezcan las conexiones cuando los 2 dispositivos estén dentro del alcance de cada uno sin pasar por este paso y algunos dispositivos, por ejemplo, auriculares, omiten este paso o tienen un PIN fijo. Una vez que se establece la comunicación, puede, por lo general a veces opcionalmente , especificar carpetas compartidas para permitir que el otro dispositivo descargue/cargue contenido mediante una interfaz de tipo explorador de archivos.

¿Qué quiere decir con "autenticación mínima"? ¿Que Bluetooth proporciona una autenticación débil? Entonces definitivamente no es aceptable.
Una transferencia de código QR parece factible. Le sugiero que coloque sus soluciones en 2 respuestas porque son bastante diferentes.

Este es un problema no trivial, no realmente adecuado para Softwarerecs.SE IMO.

Aún así, aquí va. (Con un poco de suerte, si la pregunta se migra a Security.SE, esta respuesta se migrará junto con ella).

Hay varias soluciones potenciales disponibles a costos de implementación muy diferentes.

En primer lugar, los puntos finales deberían protegerse contra cualquier ataque que pudiera revelar lo que se estaba transfiriendo. Ataques TEMPEST, por ejemplo.

Si utiliza comunicaciones a distancia (p. ej., inalámbricas u ópticas), existe el riesgo de escuchas a menos que las dos computadoras estén en un contenedor (p. ej., una jaula de Faraday o una caja o habitación a prueba de luz, respectivamente) impermeable a las señales involucradas.

Si usa comunicaciones por cable, debe asegurarse de que el medio de comunicación sea inmune a los ataques de estilo TEMPEST. Los cables USB y Ethernet especiales, etc. están disponibles a un precio elevado y supuestamente cumplen con este requisito. (O, nuevamente, tal vez podría construir o comprar una habitación o caja adecuada). Pero también debe considerar el riesgo de que A o B comprometan al otro en la conexión, por ejemplo, al intentar explotar la pila de red. Entonces, cuanto más simple sea el protocolo, mejor, para minimizar el TCB. Algo como serial (¿quizás a través del puerto JTAG en B?) podría ser su mejor apuesta en este frente.

Finalmente, si usa medios extraíbles, debe considerar cómo evitar que el malware se transfiera de A a B. Esto podría suceder a través de chips controladores (por ejemplo, BadUSB) si están presentes, o a través de otras vulnerabilidades más arriba en la pila.

Una opción razonablemente segura sería:

  • utilice un medio extraíble que no tenga firmware del controlador, por ejemplo, un disquete o un disco ZIP (creo que no tienen firmware), o un CD-R o DVD+/-R o BD-R; y
  • tenga un par de unidades para ese medio, una conectada a A y otra conectada a B, para evitar, por ejemplo, que BadUSB se transfiera de A a B; y
  • firmar el archivo en A antes de escribirlo en el medio extraíble y verificar la firma en B después de leerlo desde el medio extraíble (por ejemplo, usando GnuPG o uno de sus front-ends para generar y verificar firmas); y
  • llévelo a cabo en el entorno más resistente a las TEMPESTAD que pueda organizar.
"Si utiliza comunicaciones a distancia (por ejemplo, inalámbricas u ópticas), existe el riesgo de escuchas a menos que las dos computadoras estén en un contenedor". Hay una solución más económica. La integridad otorga confidencialidad por el algoritmo Diffie-Hellman, por lo tanto, es suficiente tener integridad para protegernos de las escuchas. TEMPEST no es un ataque a la transferencia, por lo que no es apropiado tocarlo en esta pregunta.
@beroal, pero los anfitriones no son de confianza. Por lo tanto, equipar cualquiera de ellos con un mecanismo para la comunicación a distancia (por ejemplo, un transceptor IrDA o WiFi) les permitiría abrir un canal lateral a distancia. La única forma obvia de bloquear eso sería atenuar la señal del canal lateral de alguna manera, de ahí mi sugerencia.