Bluetooth Pairing

freejack·2021년 9월 17일
0

이 글은 bluetooth.com에서 운영하는 블로그중 Pairing과정에 대한 설명을 담은 5편의 블로그 시리즈물을 번역한것입니다.

블로그에서 다루는 내용이 부족하신 분은 블루투스 스펙문서를 다운받아 심층적인 분석을 하시기 바라며, 번역된 내용이 잘 이해가 안되시는 분들은 원문을 참조 하시기 바랍니다.


Bluetooth Pairing Part 1 – Pairing Feature Exchange

(블루투스 페어링 Part 1 - 페어링 기능 교환)

원본링크 : https://www.bluetooth.com/blog/bluetooth-pairing-part-1-pairing-feature-exchange/

Bluetooth® Core 사양에는 컨트롤러, 호스트 및 애플리케이션의 세 가지 주요 아키텍처 계층이 있습니다. 호스트 계층에는 페어링 및 키 배포를 위한 방법과 프로토콜을 정의하는 SM(Security Manager)이라는 모듈, 해당 보안 도구 상자 그리고 페어링 명령 프레임 형식, 프레임 구조 및 타임아웃 제한를 정의하는 SMP(Security Manager Protocol)가 있습니다. 보안 관리자(SM)는 키 배포 접근 방식을 사용하여 무선 통신에서 ID 및 암호화 기능을 수행합니다.

페어링은 링크를 암호화하는데 사용할 수 있는 키를 설정하기 위해 수행됩니다. 그런 다음 키를 공유하기 위해 전송 특정 키 배포가 수행됩니다. 키를 사용하여 향후 재연결시 링크를 암호화하거나, 서명된 데이터를 확인하거나, 임의 주소 확인을 수행할 수 있습니다. 일반적으로 페어링에는 3단계가 있습니다.

  • Phase 1: 페어링 기능 교환
  • Phase 2 (LE 레거시 페어링): 단기 키(STK, Short Term Key) 생성
  • Phase 2 (LE 보안 연결): 장기 키(LTK, Long Term Key) 생성
  • Phase 3: 전송 특정 키 배포

LE 레거시 페어링 및 LE 보안 연결은 대부분의 사람들에게 새로운 용어일 수 있습니다. LE는 "low energy"의 약자이며 Bluetooth® 사양에 Bluetooth 4.0 이상의 주요 기능으로 있습니다. Bluetooth 4.2 사양에서는 LE 물리적 전송에 대한 보안 연결 기능이 추가되어 Bluetooth LE 물리적 전송에서 FIPS 승인 알고리즘(AES-CMAC 및 P-256 타원 곡선)을 활용하도록 페어링을 업그레이드했습니다. Bluetooth 4.0 및 4.1 사양에 정의된 LE 페어링과 보안 연결을 구별하기 위해 LE 레거시 페어링이라고 합니다. 그림 1은 레거시 페어링과 보안 연결 모두에 적용되는 페어링 순서도입니다.

오늘은 1단계 페어링 기능 교환을 살펴보겠습니다: Pairing은 IO(Input/Output) 기능, Man-In-The-Middle 보호 요구 사항 등과 같은 보안 기능을 교환하는 것입니다. 두 장치 간의 페어링 정보 교환은 Pairing Request 및 Pairing Response 패킷을 통해 이루어집니다. 이 두 메시지의 내용은 아래 표 1 Pairing Request/Response에 나와 있습니다.

주) Man-In-The-Middle: 두 네트웍크 피어 사이에 끼어들어 둘사이에 교환되는 정보를 도청 및 조작해서 중계하는 공격기법

Code, IO Cap : "IO Capabilities"

IO는 입력/출력을 참조하므로 IO 기능이 결합되어 이 필드에 대한 값을 생성합니다. 입력 기능의 경우 아래에 자세히 설명된 "입력 없음(No Input)", "예/아니요(Yes/No)" 또는 "키보드(Keyboard)"일 수 있습니다.

기능설명
No Input장치에 '예' 또는 '아니요'를 표시할 수 있는 기능이 없습니다
Yes/No장치에 '예' 및 '아니요'로 쉽게 매핑할 수 있는 버튼이 2개 이상 있거나 장치에 사용자가 '예' 또는 '아니요'를 표시할 수 있는 메커니즘이 있습니다 (아래 참고 참조)
Keyboard장치에는 '0'에서 '9'까지의 숫자와 확인을 입력할 수 있는 숫자 키보드가 있습니다. 또한 장치에는 '예' 및 '아니요'로 쉽게 매핑할 수 있는 최소 2개의 버튼이 있거나 장치에는 사용자가 '예' 또는 '아니요'를 표시할 수 있는 메커니즘이 있습니다 (아래 참고 참조)

출력 기능의 경우 아래에 자세히 설명된 "출력 없음(No Output)" 또는 "숫자 출력(Numeric Output)"이 될 수 있습니다.

기능설명
No output장치에 6자리 십진수를 표시하거나 통신할 수 있는 기능이 없습니다
Numeric output장치에 6자리 십진수를 표시하거나 통신할 수 있는 기능이 있습니다

이러한 입력 및 출력 기능을 결합한 후 Bluetooth 장치가 가져야 하는 IO 기능을 정의하는 매트릭스가 있습니다.

어떤 페어링 알고리즘도 예/아니오 입력 및 출력 없음을 사용할 수 없으므로 "NoInputNoOutput"이 결과 IO 기능으로 사용됩니다.

위의 매트릭스에서 해당 IO 기능을 매핑하고 아래 열거형을 선택하여 페어링 요청/응답 패킷에 배치합니다.

설명
0x00DisplayOnly
0x01DisplayYesNo
0x02KeyboardOnly
0x03NoInputNoOutput
0x04KeyboardDisplay
0x05-0xFFReerved

OOB DF : "OOB Data Flag"

OOB(대역 외)는 외부 통신 수단을 사용하여 페어링 프로세스에 사용되는 일부 정보를 교환합니다. OOB 미디어는 NFC 또는 QRCode와 같이 페어링에 해당 정보를 전달할 수 있는 다른 무선 통신 표준이 될 수 있습니다.

설명
0x00OOB 인증 데이터가 없습니다
0x01원격 장치의 OOB 인증 데이터가 있습니다
0x02-0xFFReserved

BF : "Bonding_Flags"

본딩은 페어링이 발생한후 장기 키를 교환하고 나중에 사용할 수 있도록 해당 키를 저장하는 것입니다. 즉, 장치 간에 영구적인 보안을 생성하는 것입니다. 페어링은 본딩이 발생하도록 하는 메커니즘입니다.

본딩 플래그 (b1b0)본딩 타입
00No Bonding
01Bonding
10Reserved
11Reserved

MITM : "Man-In-The-Middle"

MITM은 "Man-In-The-Middle"의 약자입니다. 이 필드는 장치가 MITM 보호를 요청하는 경우 1로 설정되는 1비트 플래그입니다. 이 블로그는 페어링 기능 교환 절차에 중점을 둡니다. MITM에 관심이 있는 경우 Bluetooth Core Specification v4.2, Vol1, Part A, 5.2.3을 참조하십시오.

SC : "Secure Connection"

SC 필드는 LE 보안 연결 페어링을 요청하기 위해 1로 설정되는 1비트 플래그입니다. 가능한 결과 페어링 메커니즘은 두 장치가 모두 LE 보안 연결을 지원하는 경우 LE 보안 연결을 사용하고 그렇지 않으면 LE 레거시 페어링을 사용하는 것입니다. 따라서 이 플래그는 Phase 2 페어링 방식을 결정하는 지표입니다.

KP : "Key Press"

keypress 필드는 Passkey Entry 프로토콜에서만 사용되며 다른 프로토콜에서는 무시되는 1비트 플래그입니다. 패스키 입력 프로토콜은 레거시 페어링 및 보안 연결의 일반적인 페어링 방법입니다. 다음 블로그 기사에서 이에 대해 알아보겠습니다.

"Maximum Encryption Key Size"

최대 키 크기는 7에서 16 옥텟 범위에 있어야 합니다.

"Initiator Key Distribution" & "Responder Key Distribution"

이 두 필드의 정의는 아래와 같습니다. 향후 시리즈 블로그에서 키 배포에 대해 이야기할 때 설명하겠습니다.

페어링 기능 교환이 시작되면 개시자와 응답자는 페어링 요청과 응답을 통해 자신의 페어링 기능 정보를 서로 교환한다. 이 정보를 통해 개시자와 응답자는 서로 I/O 기능, 어떤 페어링 메커니즘(레거시 페어링 또는 보안 연결)을 사용해야 하는지 결정하고 Phase2에서 사용되는 페어링 방법(Just Work, Passkey Entry, Numeric Comparison 또는 Out of Band)을 선택할 수 있습니다. [Part2: 키 생성 방법] 에서 자세한 내용을 살펴보겠습니다.


Bluetooth Pairing Part 2 - Key Generation Methods

(블루투스 페어링 Part 2 - 키 생성 방법)

원본링크 : https://www.bluetooth.com/blog/bluetooth-pairing-part-2-key-generation-methods/

Bluetooth 페어링 [Part1: 페어링 기능 교환] 에서 저에너지로 Bluetooth®의 페어링 기능 교환에 대해 이야기했습니다. 페어링 기능 교환은 개시자와 응답자가 서로의 페어링 기능을 이해하도록 하는데 사용됩니다.

활성화할 수 있는 페어링 기능은 다음과 같습니다:

  • OOB DF : OOB Data Flag bit
  • MITM : Man-In-The-Middle bit
  • SC : LE secure connection indicator bit
  • IO Cap : IO Capabilities

*이러한 기능에 대한 소개는 Bluetooth 페어링 [Part1: 페어링 기능 교환] 을 참조하십시오.

이 교환 후에 두 장치는 다음 단계에서 사용할 키 생성 방법을 선택할 수 있습니다. 다음은 Bluetooth LE 레거시 페어링 및 Bluetooth LE 보안 연결을 위한 키 생성 방법 목록입니다.

블루투스 LE 레거시 페어링:

  • Just Works
  • Passkey
  • Out-of-Band(OOB)

Bluetooth LE 보안 연결에는 위의 세 가지 방법이 포함되며 한 가지 새로운 방법이 추가됩니다:

  • Numeric Comparison

Workflow

다음은 장치가 사용할 키 생성 방법을 결정하는 방법에 대한 작업흐름입니다.

1단계: 페어링 기능 교환 프레임에서 SC 비트 확인. SC 비트가 양쪽에서 1이면 LE 보안 연결이 사용되며 2단계로 이동합니다. 그렇지 않으면 LE 레거시 페어링이고 3단계로 이동합니다.

2단계: LE 보안 연결일때 개시자와 응답자가 따를 매트릭스는 다음과 같습니다.

  • "Use OOB"은 대역 외가 선택되었음을 의미합니다.
  • "Check MITM"은 "OOB Data Flag"를 무시하고 MITM 플래그인 "Man-In-The-Middle" 플래그를 확인하는 것을 의미합니다.
  • "Use IO Capabilities"에서 4단계로 이동하여 두 장치의 IO 기능에 따라 키 생성 방법을 선택합니다.

3단계: LE 레거시 페어링인 경우 다음은 개시자와 응답자가 따라야 할 매트릭스입니다.

  • "Use OOB"은 대역 외가 선택되었음을 의미합니다.
  • "Check MITM"은 "OOB Data Flag"를 무시하고 MITM 플래그인 "Man-In-The-Middle" 플래그를 확인하는 것을 의미합니다.
  • "Use IO Capabilities"에서 4단계로 이동하여 두 장치의 IO 기능에 따라 키 생성 방법을 선택합니다.

4단계: 아래는 IO 기능을 키 생성 방법에 매핑한 것입니다. 이 표를 사용하면 개시자와 응답자 모두 페어링 기능에 따라 적절한 연결 방법을 찾을 수 있습니다.

그 후, 개시자와 응답자는 키 생성 단계에서 사용될 방법을 이해합니다. 3부에서는 Passkey 방식을 사용하여 Bluetooth® LE 레거시 페어링에서 해당 키를 생성하는 방법을 소개합니다.


Bluetooth Pairing Part 3 –Low Energy Legacy Pairing Passkey Entry

(블루투스 페어링 Part 3 - 저에너지 레거시 페어링 암호키 입력)

원본링크 : https://www.bluetooth.com/blog/bluetooth-pairing-passkey-entry/

키 생성 방법에 대한 이전 블로그에서 키 생성 방법에 대해 이야기했습니다. 시작 및 응답 장치가 일부 IO 기능 조건을 충족하는 경우 LE 레거시 Bluetooth 페어링 암호키 입력 방법을 선택합니다.

이 블로그에서는 Passkey Entry와의 레거시 페어링 및 작동 방식을 살펴봅니다.


그림 1: LE 레거시 페어링, 암호키 입력

Temporary Key (TK) and Random Number Generation (임시키(TK) 및 난수 생성(RNG))

LE 레거시 페어링을 사용하면 각 장치에서 임시키(TK, Temporary Key)를 생성하여 페어링을 수행합니다.

  • 장치의 IO 기능(시작 장치 또는 응답 장치)에 표시 기능이 있는 경우 "000000"과 "999999" 사이에서 임의로 생성된 암호키 값이 표시됩니다. 다른 장치는 사용자가 TK에 표시되는 값을 입력할 수 있도록 키보드와 같은 입력 기능이 있어야 합니다.

  • 시작 장치와 응답 장치 모두의 IO 기능에 디스플레이 기능이 없지만 둘 다 "Keyboard Only"인 경우 사용자는 시작 장치와 응답 장치 간의 TK가 동일함을 보장해야 합니다. 이것은 Passkey Entry에 대한 특별한 경우입니다.

아래는 iOS 장치와 페어링하려는 "Authentication"이라는 이름의 장치이며 출력 인터페이스에 TK를 표시합니다. 그런 다음 iOS 장치는 대화 상자를 표시하고 사용자에게 TK 값을 입력하도록 요청합니다.



그림 2: iOS 장치상의 암호키 입력

TK 값이 준비되면 시작 및 응답 장치는 128비트 난수를 생성합니다: 시작 장치의 경우 Mrand, 응답 장치의 경우 Srand입니다.

Mconfirm and Sconfirm

Mconfirm 및 Sconfirm은 확인값 생성 함수 c1을 사용하여 계산할 수 있는 128비트 확인값입니다. 이 기능에 대한 세부 정보는 Bluetooth Core Spec V4.2, Vol.3, Part H, Section 2.2.3에서 찾을 수 있습니다.

c1 함수의 경우 입력 매개변수에는 다음이 포함됩니다:

  • TK (임시키)
  • Mconfirm의 경우 Mrand 또는 Sconfirm 계산의 경우 Srand
  • 페어링 요청 명령
  • 페어링 응답 명령
  • 시작 장치 주소 유형
  • 시작 장치 주소
  • 응답 장치 주소 유형
  • 응답 장치 주소

Verification (검증)

Mconfirm 및 Sconfirm이 준비되면 시작 장치는 Mconfirm을 응답 장치로 전송합니다. 응답 장치가 Mconfirm을 수신하면 시작 장치로 Sconfirm을 전송합니다. 시작 장치가 Sconfirm을 수신하면 응답 장치로 Mrand를 전송합니다.

응답 장치는 수신된 Mrand 값을 사용하여 시작 장치가 수행한 계산을 반복하여 Mconfirm 값을 확인합니다.

  • 응답 장치의 계산된 Mconfirm 값이 시작 장치에서 수신된 Mconfirm 값과 일치하지 않으면 페어링 프로세스가 중단되고 응답 장치는 "Confirm Value Failed (값 확인 실패)" 이유 코드와 함께 페어링 실패 명령을 보냅니다.

  • 응답 장치의 계산된 Mconfirm 값이 초기 장치로부터 수신한 Mconfirm 값과 일치하면 응답 장치는 Srand를 시작 장치로 전송합니다.

시작 장치는 수신된 Srand 값을 사용하여 응답 장치가 수행한 계산을 반복하여 수신된 Sconfirm 값을 확인합니다.

  • 시작 장치에서 계산한 Sconfirm 값이 응답 장치에서 수신한 Sconfirm 값과 일치하지 않으면 페어링 프로세스가 중단되고 초기 장치에서 "Confirm Value Failed (값 확인 실패)" 이유 코드와 함께 페어링 실패 명령을 보냅니다.

  • 시작 장치의 계산된 Sconfirm 값이 응답 장치에서 수신된 Sconfirm 값과 일치하면 시작 장치는 STK(단기키)를 계산하고 암호화를 활성화하도록 컨트롤러에 알립니다.

STK Generation (단기키 생성)

Bluetooth Core Spec V4.2, Vol.3, Part H, Section 2.2.4에 설명된 키 생성 기능 s1을 사용하여 STK를 생성합니다.

s1 함수의 경우 입력 매개변수에는 다음이 포함됩니다:

  • TK (임시키)
  • Srand (응답장치가 생성한 난수)
  • Mrand (시작장치가 생성한 난수)

페어링된 장치는 STK와 암호화된 링크를 설정합니다.

4부에서 LE 보안 연결에서의 새로운 페어링 알고리즘 (Numeric Comparison, 수치 비교)을 소개합니다.


Bluetooth Pairing Part 4 - Bluetooth Low Energy Secure Connections – Numeric Comparison

(블루투스 페어링 Part 4 - Bluetooth 저에너지 보안 연결–수치 비교)

원본링크 : https://www.bluetooth.com/blog/bluetooth-pairing-part-4/

3부에서는 패스키를 사용하는 LE 레거시 페어링에 대한 개요를 살펴보았습니다. LE 레거시 페어링 외에 LE 보안 연결은 페어링을 위한 다른 옵션입니다. LE 보안 연결은 Bluetooth v4.2에 도입된 향상된 보안 기능입니다. 키 생성을 위해 ECDH(Elliptic Curve Diffie Hellman)라는 FIPS(연방 정보 처리 표준) 호환 알고리즘을 사용합니다. LE 보안 연결의 경우 네 가지 연결 모델을 지원합니다:

  • Just Works
  • Numeric Comparison (LE 보안 연결 전용)
  • Passkey Entry
  • Out of Band (OOB)

Numeric Comparison은 레거시 페어링이 아닌 LE 보안 연결에만 존재합니다. 그래서 이것은 더 새로운 연관 모델이며, 오늘 우리는 그것을 내부적으로 살펴볼 것입니다.

1. Phase 1 – Pairing Feature Exchange (단계1 - 페어링 기능 교환)

Part1 에서 페어링 기능 교환에 대해 이야기했지만, 여기에서 다시 검토하고 싶습니다. Table 1은 Pairing Request/Response 패킷 정의 입니다. "AuthReq" 필드에는 "SC"라는 이름의 비트가 하나 있습니다. 장치에서 LE 보안 연결 페어링을 지원하는 경우 SC 필드는 1로 설정되고, 그렇지 않으면 0으로 설정됩니다. 두 장치가 모두 LE 보안 연결 페어링을 지원하면 LE 보안 연결 페어링이 사용되며, 그렇지 않으면 LE 레거시 페어링이 사용되어야 합니다.

표1. 페어링 요청/응답



*Bit 순서는 LSB 에서 MSB로.

따라서 두 장치가 LE 보안 연결로 페어링하려면 "SC"를 1로 설정하여 "보안 연결 기능이 있습니다"라는 피어 장치를 나타내야 합니다.

2. Phase 2 – Key Generation Method Selection (단계2 - 키 생성 방법 선택)

페어링을 통한 기능 교환후 개시자와 응답자는 사용할 키 생성 방법을 결정해야 합니다. 다음은 키 생성 방법에 대한 샘플 C 구문 코딩입니다:

표2는 Numeric Comparison를 위한 시작 및 응답 장치의 IO 기능을 나열합니다. 시작 장치와 응답 장치 모두에 디스플레이 및 Yes/No I/O 기능 또는 디스플레이 및 키보드 I/O 기능이 있는 경우 숫자 비교 연관 모델이 사용됩니다.

표2. 숫자 비교를 위한 IO 기능 매핑



* '-'는 숫자 비교 이외의 다른 키 생성 방법을 의미합니다.

3. Phase 2 – Authentication (단계2 - 인증)

키 생성 후 페어링은 2단계인 인증으로 이동합니다. 목표는 MITM(Man-In-The-Middle) 공격으로부터 보호하고 연결 링크를 암호화하는데 사용할 키를 생성하는 것입니다.

공개키 교환에서 각 장치는 자체 ECDH(Elliptic Curve Diffie-Hellman) 공개-개인키 쌍을 생성합니다. 공개-개인키 쌍에는 개인키와 공개키가 포함됩니다.

  • SKa, 시작 장치의 개인 키
  • PKa, 시작 장치의 공개 키
  • SKb, 응답 장치의 개인 키
  • PKb, 응답 장치의 공개 키



그림 1, 수치비교 인증과정

페어링은 Pka를 응답 장치로 보내는 시작 장치에 의해 시작됩니다. 응답 장치는 자체 PKb로 응답합니다. 공개 키가 교환된 후 장치는 Diffie-Hellman 키 계산을 시작할 수 있습니다. 그림1의 1b 끝에서 시작하는 것을 볼 수 있습니다.

그 후, 각 장치는 임의의 128비트 nonce(한번만 쓰여지는 말)를 선택합니다. 이 값은 재생 공격을 방지하는 데 사용됩니다.

  • Na, 시작 장치의 128비트 임의 nonce.
  • Nb, 응답 장치의 128비트 임의 nonce.

이에 따라 응답 장치는 Nb, Pka, PKb 및 0을 사용하여 계산된 커밋 Cb를 계산합니다. 이는 3단계, 그림1에 나와 있습니다.

4단계, 응답 장치는 시작 장치의 Na를 수신하기 전에 Cb를 공유해야 합니다.

5단계, 시작 장치는 응답 장치의 Nb를 수신하기 전에 Na를 공유해야 합니다.

6단계, 시작 장치는 응답 장치의 Nb를 수신한 후 응답 장치에서 온 Cb를 확인해야 합니다.

이 시점에서 시작하거나 응답하는 장치는 이미 피어 장치의 공개 키와 임의의 nonce를 알고 있습니다. 개시 장치는 응답 장치로부터 커밋(Cb)을 확인할 수 있습니다. 이 시점에서 실패는 공격자가 있거나 다른 전송 오류가 있음을 나타내며 페어링 프로세스가 중단되어야 합니다(단계 6.a).

커밋 확인이 성공했다고 가정하면 두 장치는 각각 해당 장치에서 사용자에게 표시되는 6자리 확인 값을 계산합니다. 사용자는 이 6자리 값이 일치하는지 확인하고 일치하는 항목이 있는지 확인해야 합니다. 일치하지 않으면 페어링이 중단됩니다.

4. Phase 3 – Long Term Key, LTK (단계3 - 장기키, LTK)

인증에 성공하면 두 장치가 링크 암호화에 사용할 LTK를 계산하기 시작합니다. 이것은 페어링 및 재연결을 위한 퍼즐의 마지막 조각입니다. 다른 연결 모델 내에서 피어 장치를 인증하고 중간자 공격(MITM)을 방지합니다. LTK 계산은 모든 LE 보안 연결 연결 모델에 공통적이므로 다음 블로그 게시물에서 이에 대해 더 자세히 설명하겠습니다.

5. Conclusion (결론)

사용자 경험과 편의에 따르면 파트 3, 암호 입력, 숫자 비교와 비교하여 6자리 확인 값이 이 두 장치 간에 일치하는지 여부를 나타내기 위해 YES 및 NO의 두 버튼만 있으면 됩니다. 암호 입력을 위한 숫자 키보드, '0'에서 '9'까지, 하드웨어에 대한 I/O 기능을 단순화하기 위해 개선된 것입니다. 한편, Numeric Comparison은 LE Secure Connections에만 존재하므로 도청 및 MITM과 같은 위협에 대해 다시 강화된 보호를 제공합니다. 따라서 개인 정보에 민감하고 Bluetooth LE 링크에 대한 높은 보호가 필요한 제품을 개발하기 시작한다면 여기가 좋은 선택입니다.


Bluetooth Pairing Part 5: Legacy Pairing – Out of Band

(블루투스 페어링 Part 5 - 레거시 페어링 - 대역외)

원본링크 : https://www.bluetooth.com/blog/bluetooth-pairing-part-5/

이전 블로그에서는 두 가지 유형의 페어링 방법인 암호 입력 및 숫자 비교와 같은 주제를 다루었습니다. 오늘은 다른 하나, out of band(OOB, 대역외)를 소개하겠습니다.

대역외(OOB) 연결 모델은 대역외 메커니즘을 사용하여 장치를 검색하고 페어링 프로세스에 사용되는 암호화 정보를 교환하거나 전송하는 시나리오를 위해 설계되었습니다. 대역외는 개발자를 위한 유연한 옵션으로 고유한 페어링 메커니즘중 일부를 정의할 수 있으므로 보안 수준은 대역외 보호 기능에 따라 다릅니다. 이제 내부를 살펴보겠습니다.

1. Phase 1 – Pairing Feature Exchange (단계1 - 페어링 기능 교환)

제 블로그 Bluetooth 페어링 Part 4에는 표1과 유사한 표가 있습니다. 이것은 페어링 요청/응답을 위한 프레임 구조입니다. 이 테이블에는 "OOB Data Flag"라는 필드가 하나 있으며 길이는 1바이트입니다.

"OOB 데이터 플래그"의 정의는 표2 를 참조하십시오.

OOB 데이터 플래그는 OOB 인증 데이터가 사용 가능한지 여부를 나타낼 때 사용되는 값을 정의합니다.

2. Bluetooth LE Legacy Pairing (블루투스 LE 레거시 페어링)

두 Bluetooth® 장치가 모두 LE 레거시 페어링을 사용하는 경우 프로세스를 쉽게 이해할 수 있습니다. 레거시 페어링 방법 선택 매핑에 대한 자세한 내용은 표3 을 참조하십시오. 이 표에서 이미 OOB 선택을 강조 표시했으며 다음을 볼 수 있습니다:

  • 페어링에 OOB를 사용하려면 두 장치 모두 OOB 데이터 플래그를 설정해야 합니다.
  • 장치중 하나가 OOB 데이터 플래그를 설정하고 다른 장치가 설정하지 않으면 두 장치 모두 녹색으로 표시된 표1의 "AutheReq" 필드에 있는 MITM 플래그를 확인합니다. 장치가 MITM 플래그를 설정하면 IO 기능을 페어링 방법에 매핑하여 페어링 방법이 선택됩니다. 매핑 세부 사항은 Bluetooth Core Specification v5.0, Vol3, Part H, Table 2.8을 참조하십시오.
  • 그렇지 않으면 페어링 방법으로 "Just Works"를 사용하십시오.

사진1 에서 음영 처리된 부분은 Bluetooth 페어링 3부, 레거시 페어링, 암호키 입력과 공통입니다. 이후 두 장치의 보안 관리자는 다음을 수행합니다:

  • 0단계. 양쪽 Mrand와 Srand에 임의의 값을 생성합니다. 그 후 대역외 메커니즘을 사용하여 장치 주소 및 128비트 TK(임시 키) 값과 같은 장치 검색에 도움이 되는 정보를 교환할 수 있습니다. [3부 레거시 페어링–암호키 입력] 에서 설명했듯이 TK 값은 의사 난수 엔진에 의해 생성되는 128비트 난수이며 엔진은 Bluetooth Core 사양의 요구 사항을 준수해야 합니다.

  • 1단계. c1 함수로 Mconfirm 및 Sconfirm을 계산합니다. 모든 암호화 도구 상자에 대해서는 Bluetooth Core Specification v5.0, Vol 3, Part H, Section 2.2를 참조하십시오.

  • 2단계. Mconfirm, Sconfirm 및 Mrand를 교환합니다.

  • 3단계. 응답 장치는 수신된 Mrand 값을 사용하여 수행된 시작 장치의 계산을 반복하여 Mconfirm 값을 확인합니다.

    • 응답 장치의 계산된 Mconfirm 값이 시작 장치에서 수신된 Mconfirm 값과 일치하지 않으면 페어링 프로세스가 중단되고 응답 장치는 "Confirm Value Failed(값 확인 실패)" 이유 코드와 함께 페어링 실패 명령을 보냅니다.
    • 응답 장치의 계산된 Mconfirm 값이 초기 장치로부터 수신한 Mconfirm 값과 일치하면 응답 장치는 Srand를 시작 장치로 전송합니다.

    개시 장치는 수신된 Srand 값을 사용하여 응답 장치가 수행한 계산을 반복하여 수신된 Sconfirm 값을 확인합니다.

    • 개시 장치에서 계산한 Sconfirm 값이 응답 장치에서 수신된 Sconfirm 값과 일치하지 않으면 페어링 프로세스가 중단되고 개시 장치에서 "Confirm Value Failed(값 확인 실패)" 이유 코드와 함께 페어링 실패 명령을 보냅니다.
    • 개시 장치의 계산된 Sconfirm 값이 응답 장치에서 수신된 Sconfirm 값과 일치하면 시작 장치는 STK(단기키)를 계산하고 암호화를 활성화하도록 컨트롤러에 알립니다.

3. Simplicity from OOB (OOB의 단순성)

현재 스마트폰과 태블릿에는 Bluetooth® 저에너지 기능이 표준으로 포함되어 있으며 Bluetooth를 사용하여 장치를 함께 연결하는 방법은 여러 가지가 있습니다. Bluetooth 장치를 함께 페어링하는 또 다른 인기 있는 방법은 NFC를 사용하여 장치를 '탭하여 페어링'하는 것입니다. NFC의 초저 범위 때문에 일부 개발자는 두 장치가 실제로 함께 페어링되어야 함을 보증하기 위해 장치 사이의 가까운 NFC 근접성을 사용합니다. 따라서 NFC는 OOB 페어링을 위한 좋은 통신 인터페이스가 될 수 있습니다. 사용자 경험은 페어링에 OOB를 사용할 때 약간 다릅니다. 예를 들어 사용자는 하나의 스마트폰과 하나의 손목 밴드를 가지고 있으며 두 장치 모두 Bluetooth 저에너지 및 NFC 인터페이스를 가지고 있습니다. 사용자는 처음에 두 장치를 함께 터치하고 페어링 옵션이 제공됩니다. "YES"를 선택하면 페어링이 성공한 것입니다. 이것은 교환된 정보가 두 장치 모두에서 사용되는 원터치 경험입니다...멋집니다.

profile
Learns until die

1개의 댓글

comment-user-thumbnail
2021년 10월 2일

많은 도움이 되겠읍니다. 고맙습니다

답글 달기