본문으로 바로가기
반응형

오늘은 Bonding과 Pairing의 차이를 설명하고자 합니다. 많은 사람들이 Bonding가 Pairing을 비슷한 의미로 생각하고 있고 저 또한 혼용해서 사용했던 기억이 있습니다. 하지만 전혀 다른 내용입니다. Step부터가 다르기 때문이죠. Bonding은 Pairing이 된 후 발생을 하게 됩니다. 이 의미를 알아 두면 나중에 프로그래밍을 할 때 도움이 되지 않을까 싶습니다. Bonding과 Pairing의 의미에 대해서 알아보겠습니다.




Pairing은 말 그대로 한 쌍을 만드는 과정입니다. Pairing은 디바이스들이 Security feature을 교환합니다. 이때 Bluetooth 버전에 따라서 다른데, Bluetooth 버전이 2.1 이상부터는 Security feature에 man in the middle protection에 대한 정보도 있습니다. MTIM(Man In The Middle)에 대해서는 추후에 설명드리도록 하겠습니다. 



Bonding은 결합이라는 뜻을 갖고 있습니다. Bluetooth에도 비슷한 의미로 쓰인다고 생각하시면 됩니다. Bonding은 Pairing이 된 이후에 발생을 하게 된다고 하였는데요, Pairing 프로세스가 장치에 저장되는 것을 Bonding이라고 생각하시면 됩니다. 즉, Pairing 프로세스가 장치에 저장이 되어 본딩 이후에 장치 제거를 하지 않는 이상 재연결 시 Pairing을 하지 않아도 됩니다.




MITM(Man In The Middle)


앞서 Pairing을 설명하면서  man in the middle protection을 이야기를 했는데요, man in the middleMITM이라고 불립니다. MITM은 중간자 공격이라는 뜻으로 A와 B가 정보를 주고받고 있는데 C가 중간에서 정보를 가로 채가는 것을 뜻합니다. 일반적으로 우리가 잘 알고 있는 스니핑도 이에 해당됩니다. 최근에 이슈가 많이 되고 있는 부분이기도 하면서 꼭 보안이 필요한 부분입니다. 



MITM Protection 기능은 Bluetooth 2.1에서부터 지원을 하고 있습니다. Bluetooth 2.1을 넘어오면서 SSP(Simple Secure Pairing)을 지원하고 있는데요, PINCODE 입력 없이 Pairing이 가능하게 해줍니다. 완전히 PINCODE를 사용하지 않는 것은 아닙니다. Bluetooth 버전들끼리 모두 호환이 되어야 하기 때문에 SSP 지원하지 않는 모듈과는 PINCODE 입력이 필요합니다. 그러면 SSP를 지원하는 모듈과의 Pairing은 PINCODE를 사용하지 않기 때문에 보안이 약하다고 생각할 수 있는데, 전혀 그렇지 않습니다. MITM Protection 여부에 따라서 SSP는 4가지의 association models을 지원하고 있습니다.


Just Works, Numeric Comparison, Passkey Entry, Out of Band라는 것을 지원하는데, 암호화 없이 일반적으로 사용하는 상태가 Just Works입니다. Numeric Comparison의 경우 숫자를 Display를 할 수 있는 경우에 사용 가능하며  YES/NO를 쓸 것인지 Numer를 입력할 것인지 여러 가지 경우의 수가 있는데 자세한 내용은 아래 URL을 참조하시면 될 듯합니다. 

https://www.bluetooth.com/blog/bluetooth-pairing-part-4/


PINCODE 같은 경우는 저장해서 사용을 하지만 Numeric comparison의 경우 Random 0 ~ 999999 숫자를 통해 인증을 하게 됩니다. 예전에 어느 문서에서 봤는데, 이 보안이 뚫릴 확률이 0%대였던 걸로 기억합니다. 다만 PINCODE와 다르게 저장하는 방식이 아니라 Display를 할 수 있는 경우에 가능한 것은 단점인듯합니다. 이상으로 마치겠습니다.



2019/04/08 - [프로그래밍/C#] - [Zedgraph] C# 그래프 라이브러리를 이용한 실시간 그래프

2019/10/24 - [프로그래밍] - 블루투스의 모든 것 - Bluetooth COD(Class Of Device)란?

2019/04/05 - [MCU/AVR] - [atmel studio7]ATmega128 프로젝트 생성

2019/08/25 - [프로그래밍/C#] - C# 마우스 제어(클릭, 좌표 이동)

2019/06/09 - [프로그래밍] - 소스 코드 주석 다는 법

2019/07/28 - [잡담] - 제이비랩 HRS-20XB 언박싱

반응형