본문 바로가기
임베디드.일렉트로닉스

BLE . 페어링 . 본딩 . RPA . IRK

by i.got.it 2026. 4. 6.

 

 

BLE 암호화 연결 관련 

 

RPA (Resolvable Private Address)

-  BLE 고정 주소인 BD Address 를 노출시키지 않고, RP Address 를 IRK 로 생성하여 런타임 중에도 계속 변경된다.   

- RPA = hash(IRK, prand) + prand . 

- prand : 24비트 랜덤 숫자. 이 숫자가 생성시마다 매번 변경되므로 RP 주소가 변경됨. 

- 보통 기본설정 15분 단위로 변경되며 설정 변경가능. 

 

IRK (Identity Resolving Key)

- RPA 생성시 사용되는 128비트 키,  블루투스 스택이  생성하는 암호. 

- 칩내부의 TRNG (True Randon Number Generator, 난수 생성기) 로 128비트 랜덤값 생성하고 칩의 플래시메모리에 저장됨. 

- 한 번 생성하면  이후 변경하지 않고 유지함. 

 

Bonding

- 연결기기간의 IRK 를  저장하여 이후 자동 연결됨. 

 

Pairing

- 연결 시기간의 IRK 를 교환하기위한 임시 키 방식의 교환 절차. 

- 임시 비번 등을 키보드로 타이핑하든지 , NFC 근접 , 기기에 있는 버튼 클릭(Just Work)등 다양한 방식으로 구현됨.   

 

 

 

Pairing 프로세스 일회성 암호 통신 채널 구축 통신용 임시 비밀번호 설정
Bonding 상태/저장 생성된 키를 Flash에 저장 주소록에 상대방 등록
IRK 128-bit 키 RPA(가짜 주소) 를 생성/해독하는 열쇠 진짜 신분증 (변하지 않음)
RPA 48-bit 주소 외부 노출 주소 가짜 주소 (15분마다 바뀜)

 

 

 

 

Bonding 완료이후  동작. 

 

1 .기기에서 수신한 RPA 에서 prand 와 저장해두고 있던 IRK 로 ah(IRK, prand) 계산 수행. 

2. 상기 계산결과 RPA 의 hash 와 일치하면 본딩된 기기, 즉 기기도 동일한 IRK 를 갖고 있다. 일치하지 않는다면 다른 IRK 가진 기기 이므로 본딩 된 기기가 아닌 것으로 판정.  

 

 

 

Bonding 제거 

- 양쪽 기기 모두 본딩 제거 가능해야 한다.  

 

예. 

  • Central(스마트폰): 블루투스 설정 메뉴에서 "이 기기 지우기(Forget Device)" 클릭.
  • Peripheral(기기): 특정 버튼을 길게 누르는 등의 동작을 통해 Flash(NVS)에 저장된 본딩 데이터를 삭제하는 코드를 실행.

 

 

화이트리스트 

- 본딩 과정으로 서로 IRK 를 교환하지 않은 기기간에 통신은 불가하지만, 연결시도 자체를 방지하지는 못한다. 

- 연결시도를 허용된 기기하고만 가능하게 할려는 경우 화이트리스트에 등록한다. 

 

  • 동작:
    • Peripheral: 리스트에 없는 기기가 연결을 시도하면 스택/하드웨어 차원에서 즉시 거절. (응답 자체를 안 함)
    • Central: 리스트에 없는 기기의 광고 패킷은 아예 무시.

코드예. 

- central, peripheral 모두 동일 함수. 

nRF Connect SDK 

CENTRAL 측 
bt_le_filter_accept_list_add(&remote_addr); // BD Address 추가
// 스캔 시 BT_LE_SCAN_OPT_FILTER_ACCEPT_LIST 옵션 사용

PERIPHERAL 측 
bt_le_filter_accept_list_add(&central_addr); // BD Address 추가
// 광고 시 BT_LE_ADV_OPT_FILTER_CONN 등의 옵션 사용

/////////////////////////////

// filter accept list 에서 1개 제거. 
int bt_le_filter_accept_list_remove(const bt_addr_le_t *addr);

// filter accept list 모두 제거. 
int bt_le_filter_accept_list_clear(void);


///// peripheral 측 bt_le_adv_param 멤버 oprions 설정. 
   BT_LE_ADV_OPT_FILTER_CONN | // FAL 에 있는 기기만 연결허용. 
   BT_LE_ADV_OPT_FILTER_SCAN_REQ; // FAL 에 있는 기기만 request scan response 허용.

 

 

 

 


첫 등록 : 2026.04.06

최종 수정 : 2026.04.12

단축 주소 : https://igotit.tistory.com/6549


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5