메시지 인증 코드

메시지 스트림은 오디오 전환을 구성하는 데 사용됩니다. 자세한 내용은 다음을 참조하세요. 오디오 전환 메시지. 이러한 중요한 구성의 경우 제공업체는 메시지가 GMSCore (빠른 페어링 모듈)에서 전송되고 찾을 수 있습니다.

MAC (메시지 인증 코드) 생성

FP Seeker는 기기 구성 메시지에 메시지 인증 코드를 추가합니다. HMAC-SHA256을 사용하여 메시지의 MAC은 다음 중 처음 8바이트로 구성됩니다.

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))

어디서

  1. K는 concat(계정 키, 48바이트 ZEROs)에 의해 생성됩니다.
  2. message는 메시지 스트림의 추가 데이터입니다.
  3. nonce는 concat(session_nonce, message_nonce)에 의해 생성됩니다. 세션 nonce와 메시지 nonce는 다음 섹션에서 정의됩니다.
  4. opad는 값이 지정된 반복되는 바이트로 구성된 64바이트의 외부 패딩입니다. 0x5C입니다.
  5. ipad는 값이 지정된 반복되는 바이트로 구성된 64바이트의 내부 패딩입니다. 0x36입니다.

세션 nonce 및 메시지 nonce

재생 공격을 방지하려면 제공자는 nonce가 종료되어 있지 않은지 확인해야 합니다. 반복되지 않습니다. 두 제공업체 모두에서 시계 또는 카운터 동기화를 유지하고 있으므로 Seeker는 간단하지 않으며 Provider는 세션 nonce를 생성합니다. (연결당) - 연결 중 모든 메시지와 공유됩니다. 탐색자는 메시지당 메시지 nonce를 생성하는데 이는 무작위로 생성됩니다 각 메시지의 MAC을 생성하기 위한 nonce는 세션 nonce와 메시지 nonce의 조합입니다. concat(session_nonce, message_nonce)

기기 정보 이벤트 그룹에 세션 nonce를 추가합니다.

메시지 그룹 이름
기기 정보 이벤트 0x03
메시지 코드 이름
세션 nonce 0x0A

RFCOMM에서 세션 nonce가 생성되어 탐색자에게 전송되어야 합니다. 연결:

옥텟 데이터 유형 설명
0 uint8 기기 정보 이벤트 0x03
1 uint8 세션 nonce 0x0A
2~3명 uint16 추가 데이터 길이 0x0008
4~11명 세션 nonce 다름

MAC가 필요할 때 메시지를 보내기 위해 탐색자는 메시지 nonce를 보냅니다 MAC 주소도 있습니다.

옥텟 데이터 유형 설명
0 uint8 메시지 그룹 다름
1 uint8 메시지 코드 다름
2~3명 uint16 추가 데이터 길이(추가 데이터 길이 + 16) 다름
4 - n 추가 데이터 다름
n+1~n+8 메시지 nonce 다름
n+9~n+16 메시지 인증 코드 다름

MAC (메시지 인증 코드) 확인

공급자는 메시지 인증 코드가 포함된 메시지를 수신하면 생성하는 함수와 동일한 함수를 사용하여 이를 확인해야 합니다. 즉, 수신된 MAC은

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))

각 항목의 의미는 다음과 같습니다.

  1. Kconcat(account key, 48-byte ZEROs)에 의해 생성되며 제공자 저장된 모든 계정 키를 통과하여 MAC을 확인해야 합니다.
  2. message: 추가 데이터 (메시지 nonce 및 MAC 제외)입니다. 메시지 스트림입니다.

MAC가 올바른 경우 제공자는 메시지가 표시됩니다. 그렇지 않은 경우 제공자는 오류 이유, 0x3 - 잘못된 메시지 인증 코드로 인해 허용되지 않습니다.