Emparejamiento Bluetooth sin confirmación del usuario


Puedo emparejar dos dispositivos a través de Bluetooth sin necesidad de confirmar esto en la interfaz de usuario, aceptar emparejar estos dispositivos. ¿Puedo intercambiar algunos datos adicionales, por ejemplo, NFC, y luego emparejar de forma segura esos dos dispositivos a través de Bluetooth sin ninguna acción adicional del usuario?

Author: michael, 2011-05-04

6 answers

Esta necesidad es exactamente la razón por la que se agregó createInsecureRfcommSocketToServiceRecord() a BluetoothDevice a partir de Android 2.3.3 (Nivel de API 10) ( SDK Docs)...antes de eso no había soporte SDK para esto. Fue diseñado para permitir que Android se conecte a dispositivos sin interfaces de usuario para ingresar un código PIN (como un dispositivo incrustado), pero también se puede usar para configurar una conexión entre dos dispositivos sin entrada de PIN de usuario.

El método corolario listenUsingInsecureRfcommWithServiceRecord() en BluetoothAdapter se utiliza para aceptar este tipo de conexiones. No es un violación de seguridad porque los métodos deben usarse como un par. No puede usar esto para simplemente intentar emparejarse con cualquier dispositivo Bluetooth antiguo.

También puede hacer comunicaciones de corto alcance a través de NFC, pero ese hardware es menos prominente en los dispositivos Android. Definitivamente elige uno, y no intentes crear una solución que use ambos.

¡Espero que eso ayude!

P.d. También hay formas de hacer esto en muchos dispositivos anteriores a la versión 2.3 usando reflexión, porque el código existía...pero no lo haría necesariamente recomendamos esto para aplicaciones de producción distribuida en masa. Vea esto StackOverflow.

 53
Author: Devunwired,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:00

Bueno, esto realmente debe ser dividido en 2 partes:

  1. ¿Puede emparejar 2 dispositivos Bluetooth sin pasar por un apretón de manos de emparejamiento Bluetooth? No, no puedes, eso está incluido en el protocolo, así que no hay forma de evitarlo.
  2. ¿Puede realizar el apretón de manos sin una interfaz de usuario? Sí, puedes: eso es solo código.

No estoy seguro de cómo lo haces en Windows land, pero en * nix land hay funciones enterradas en la pila Bluez que te permiten recibir notificaciones sobre cuando aparezca un nuevo dispositivo, y envíale el código de emparejamiento (claramente tiene que haber estas funciones: esas son las que usa la interfaz de usuario). Dado el tiempo y la experiencia suficientes, estoy seguro de que podría averiguar cómo escribir su propia versión de la aplicación de configuración de Bluetooth que de alguna manera:

  • Detectado un nuevo dispositivo había llegado
  • Miró el nombre/dirección mac bluetooth y comprobó alguna base de datos interna para el código de emparejamiento a utilizar.
  • Envió el código de emparejamiento y completó el operación

Todo sin tener que abrir una interfaz de usuario.

Si sigues adelante y escribes el código me ENCANTARÍA tenerlo en mis manos.

 4
Author: Femi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-04 16:16:57

Respuesta corta: Cuando envío archivos entre dispositivos con OBEX casi nunca se me pide que se empareje, por lo que es ciertamente posible.

1) Una aplicación y el propio dispositivo se pueden configurar en los modos de autenticación need/not-need, por lo que a menudo no había ningún requisito para el emparejamiento. Por ejemplo, la mayoría de los servidores OBEX (OPP) no necesitan ninguna autenticación en absoluto, por lo que no hay necesidad de emparejamiento/vinculación.

Presumiblemente la respuesta de "Wireless Designs"estaba cubriendo ese caso.

2) Entonces si el emparejamiento era requerido por el dispositivo/aplicación:

2.1) Antes de la v2.1 para el emparejamiento, los dos dispositivos necesitaban tener frases de contraseña/PINES coincidentes. Por lo tanto, esto necesitaba la participación del usuario (para ingresar los PINES) o el conocimiento en el software para conocer el PIN: definido en la aplicación if pin callback send pin="1234", o inteligencia en el sistema operativo como BlueZ y Win7 (ver Diapositiva 20 en mi Bluetooth en Windows 7 doc) que tiene lógica como: if(remotedevice=headset) then expectedPin ="0000". No sé lo que hace Android

2.2) En v2. 1 Secure Simple Pairing (SSP) fue añadir. Que cambia el emparejamiento a:

if (either is pre-v2.1) then
   Legacy
else if (Out-Of-Band channel) then
   OutOfBand
else if (neither have "Man-in-the-Middle Protection Required") then
   (i.e. both have "Man-in-the-Middle Protection _Not_ Required")
   Just-Works
else
   Depending on the two devices' "IO Capabilities", either NumericComparison or Passkey.
   Passkey is used when one device has KeyboardOnly -- and the peer device _isn't_ NoInputNoOutput.
endif

De 32feet.NET ' s BluetoothWin32Authentication user guide , ver también las secciones SSP en [1]

Así que para que el emparejamiento no sea solicitado necesita "JustWorks" o "Fuera de banda", por ejemplo, su sugerencia NFC.

Espero que eso ayude...

 4
Author: alanjmcf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-04 19:39:11

Sí es posible en teoría según lo definido por la especificación. Sin embargo, todavía no existe una aplicación práctica que lo permita.

Refer: NFC Foro Entrega de conexión Especificación Técnica http://www.nfc-forum.org/specs/spec_list /

Citando el pliego de condiciones relativo a la garantía - " El Protocolo de traspaso requiere la transmisión de datos de acceso a la red y credenciales (los datos de configuración del operador) para permitir que un dispositivo se conecte a red inalámbrica proporcionada por otro dispositivo. Debido a la proximidad necesaria para la comunicación entre los dispositivos NFC y las etiquetas, la escucha de los datos de configuración del operador es difícil, pero no imposible, sin el reconocimiento del propietario legítimo de los dispositivos. La transmisión de datos de configuración del operador a dispositivos que pueden ser llevados a una proximidad cercana se considera legítima dentro del alcance de esta especificación."

 2
Author: Xabi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-04 16:08:58

BT versión 2.0 o menos - Debería ser capaz de emparejar/unir usando un código PIN estándar, introducido mediante programación, por ejemplo, 1234 o 0000. Esto no es muy seguro, pero muchos dispositivos BT lo hacen.

BT versión 2.1 o superior - Mode 4 Secure Simple Pairing "just works" model can be used. Utiliza cifrado elíptico (sea lo que sea) y es muy seguro, pero está abierto a los ataques del Hombre en el Medio. En comparación con el antiguo enfoque de código pin '0000', está a años luz de distancia. Esto no requiere ningún usuario entrada.

Esto es de acuerdo con las especificaciones de Bluetooth, pero lo que puede usar depende de qué versión del estándar Bluetooth admite su pila y qué API tiene.

 0
Author: Simon Peverett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-16 21:04:15

Si está preguntando si puede emparejar dos dispositivos sin que el usuario apruebe el emparejamiento, no, no se puede hacer, es una característica de seguridad. Si está emparejado a través de Bluetooth, no es necesario intercambiar datos a través de NFC, solo intercambiar datos a través del enlace Bluetooth.

No creo que pueda eludir la seguridad Bluetooth pasando un paquete de autenticación a través de NFC, pero podría estar equivocado.

 -2
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-04 15:07:21