문제

사용자 인터페이스에서 확인할 필요없이 블루투스를 통해 두 대의 기기를 페어링 할 수 있습니다.이 기기를 페어링하는 데 동의합니다.예를 들어 NFC를 통해 추가 데이터를 교환 한 다음 추가 사용자 작업없이 Bluetooth를 통해 두 장치를 안전하게 페어링 할 수 있나요?

도움이 되었습니까?

해결책

이것이 바로 Android 2.3.3 (API 레벨 10)부터 createInsecureRfcommSocketToServiceRecord()BluetoothDevice에 추가 된 이유입니다 ( SDK 문서 ) ... 이전에 대한 SDK 지원이 없었습니다. Android가 PIN 코드 (예 : 임베디드 장치)를 입력하기위한 사용자 인터페이스없이 장치에 연결할 수 있도록 설계되었지만 사용자 PIN 입력없이 두 장치 간의 연결을 설정할 때와 마찬가지로 사용할 수 있습니다.

listenUsingInsecureRfcommWithServiceRecord()의 corollary method BluetoothAdapter는 이러한 유형의 연결을 허용하는 데 사용됩니다. 방법이 쌍으로 사용되어야하므로 보안 위반이 아닙니다. 이 기능을 사용하여 기존 Bluetooth 장치와 페어링을 시도 할 수는 없습니다.

NFC를 통해 단거리 통신을 수행 할 수도 있지만이 하드웨어는 Android 기기에서 눈에 띄지 않습니다. 확실히 하나를 선택하고 둘 다 사용하는 솔루션을 만들려고하지 마십시오.

도움이되기를 바랍니다!

추신 리플렉션을 사용하여 2.3 이전의 많은 장치에서이 작업을 수행하는 방법도 있습니다. 코드가 존재했기 때문입니다 ...하지만 대량 배포 된 프로덕션 응용 프로그램에 대해 반드시 이것을 권장하지는 않습니다. StackOverflow 를 참조하세요.

다른 팁

음, 이것은 실제로 두 부분으로 나뉩니다.

  1. 블루투스 페어링 핸드 셰이크를 거치지 않고 블루투스 기기 2 개를 페어링 할 수 있나요? 아니, 할 수 없습니다. 프로토콜에 구워 져 있으므로이 문제를 해결할 방법이 없습니다.
  2. 사용자 인터페이스없이 핸드 셰이크를 수행 할 수 있습니까? 예, 할 수 있습니다. 코드에 불과합니다.

    Windows 랜드에서 어떻게하는지 잘 모르겠지만 * nix 랜드에는 새 장치가 나타날 때 알림을 받고 페어링 코드를 보낼 수있는 Bluez 스택에 내장 된 기능이 있습니다. 이러한 기능이어야합니다. 사용자 인터페이스가 사용하는 것입니다.) 충분한 시간과 경험이 주어지면 어떻게 든 자신 만의 Bluetooth 설정 앱 버전을 작성하는 방법을 알아낼 수있을 것입니다.

    • 새 기기가 도착 함 감지
    • 이름 / 블루투스 Mac 주소를 살펴보고 사용할 페어링 코드에 대한 내부 데이터베이스를 확인했습니다.
    • 페어링 코드를 전송하고 작업을 완료했습니다.

      사용자 인터페이스를 표시하지 않아도됩니다.

      계속해서 코드를 작성해 주시면 손에 넣을 수 있으면 좋겠습니다.

짧은 답변 : OBEX를 사용하여 장치간에 파일을 보낼 때 페어링하라는 메시지가 거의 표시되지 않으므로 확실히 가능합니다.

1) 애플리케이션과 기기 자체를 각각 인증 필요 / 불필요 인증 모드로 설정할 수 있으므로 페어링이 필요하지 않은 경우가 많았습니다. 예를 들어 대부분의 OBEX (OPP) 서버는 인증이 전혀 필요하지 않으므로 페어링 / 본딩이 필요하지 않습니다.

아마도 "Wireless Designs"의 답변이이 경우를 다루고있을 것입니다.

2) 기기 / 앱에서 페어링이 필요한 경우 :

2.1) 페어링을 위해 v2.1 이전에는 두 장치에 일치하는 암호 / PIN이 있어야했습니다. 따라서 사용자 참여 (PIN 입력) 또는 PIN을 알기위한 소프트웨어 지식이 필요했습니다. 앱 유전자 태그 코드에 정의되어 있거나 BlueZ 및 Win7과 같은 OS의 스마트 ( Windows 7 문서에서 내 Bluetooth의 슬라이드 20 )에는 다음과 같은 논리가 있습니다. if pin callback send pin="1234". Android가 무엇을하는지 모릅니다.

2.2) v2.1에서 SSP (Secure Simple Pairing)가 추가되었습니다. 페어링 변경 : <인용구> 라코 디스

32feet.NET의 BluetoothWin32Authentication 사용자 가이드 에서 SSP 섹션도 참조하세요. [ 1 ]

따라서 페어링을 요청하지 않으려면 NFC 제안과 같이 " JustWorks "또는"Out-of-Band "가 필요합니다.

도움이되기를 바랍니다 ...

예, 사양에 정의 된대로 이론적으로 가능합니다. 그러나이를 허용 할 실제 구현은 아직 없습니다.

참조 : NFC 포럼 연결 핸드 오버 기술 사양 http://www.nfc-forum.org/specs/spec_list/

보안 사양에서 인용- "핸드 오버 프로토콜은 한 장치가 다른 장치에서 제공하는 무선 네트워크에 연결할 수 있도록 네트워크 액세스 데이터 및 자격 증명 (이동 통신사 구성 데이터)을 전송해야합니다. NFC 장치와 태그 간의 통신에 근접해야하기 때문에이동 통신사 구성 데이터를 도청하는 것은 어렵지만 기기의 합법적 인 소유자의 인식 없이는 불가능하지는 않습니다. 이동 통신사 구성 데이터를 기기에 근접 할 수있는 기기로 전송하는 것은이 사양의 범위 내에서 합법적 인 것으로 간주됩니다. "

BT 버전 2.0 이하-프로그래밍 방식으로 입력 된 표준 PIN 코드를 사용하여 페어링 / 결합 할 수 있어야합니다.1234 또는 0000. 매우 안전하지는 않지만 많은 BT 장치에서이 작업을 수행합니다.

BT 버전 2.1 이상-Mode 4 Secure Simple Pairing "just works"모델을 사용할 수 있습니다.타원형 암호화 (그것이 무엇이든)를 사용하고 매우 안전하지만 Man In The Middle 공격에 개방되어 있습니다.이전의 '0000'핀 코드 접근 방식과 비교하면 광년 앞서 있습니다.사용자 입력이 필요하지 않습니다.

이것은 블루투스 사양에 따른 것이지만 사용할 수있는 것은 스택이 지원하는 블루투스 표준 버전과 보유한 API에 따라 다릅니다.

사용자가 페어링을 승인하지 않고 두 대의 장치를 페어링 할 수 있는지 묻는 경우에는 할 수없는 보안 기능입니다.Bluetooth를 통해 페어링 된 경우 NFC를 통해 데이터를 교환 할 필요가 없습니다. Bluetooth 링크를 통해 데이터를 교환하기 만하면됩니다.

NFC를 통해 인증 패킷을 전달하여 블루투스 보안을 우회 할 수 없다고 생각하지만 틀릴 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top