BLE에서 무슨 모드와 무슨 레벨을 사용해야 가장 안전할까?
(글 맨 밑에 답 있음)
블루투스는 워낙 표준이 다양하고 버전따라서 달라서 다들 다른 이야기를 하는 것 같다.
BLE와 BT는 전혀 별개의 표준인데 같은거라고 이야기하는 사람도 있고
특히 Security Mode와 Security Level에 대해서 찾아보면 다들 조금씩 다르게 정리하곤 한다.
오늘은 Security Mode와 Security Level 에 대해서 총 정리해본다.
1. 23-09-24 All ABOUT CIRCUITS - Nthatisi Hlapisi
이 분이 제일 잘 정리한 것 같아서 먼저 정리 해보면
보안 모드는 3가지가 있고 각 모드에 따라 레벨의 갯수가 다르다고 한다.
대부분의 사람들이 Security Mode 1과 2를 말하는데, 3은 처음 보았다.
1. Security Mode 1
여기에는 보안 레벨 1~4까지가 있다고 한다.
Security Level 1 : 보안 없음 (인증, 암호화 없음)
Security Level 2 : 암호화만 있고 인증은 없음. (Just works)
Security Level 3 : 인증된 페어링 (OOBE, Passkey)
Security Level 4 : 128bit 강도 암호화 키를 사용해 인증된 페어링 (Numeric Comparison)
2. Security Mode 2
는 MAC 등 연결 기반 데이터 서명만 하는 모드이고 암호화는 없다.
여기는 보안 레벨 1~2까지가 있다고 한다.
Security Level 1 : 서명은 하지만 인증 없음 (Just works)
Security Level 2 : 서명 및 인증 있음 (OOBE, Passkey, Numeric Comparison)
3. Security Mode 3
브로드캐스팅 관련 장치를 다룰 때 사용하는 모드라고 한다.
Security Level 1 : 암호화 안함
Security Level 2 : 인증 안된 Broadcast_Code 를 Airwaves 타기 전에 암호화
Security Level 3 : 인증 된 Broadcast_Code 암호화
2. 18-01-09 Decipher - Mark Loveless
내용이 정확히 BT 인지 BLE인지 정확하게 기재되어있지는 않지만
보안 모드는 LE Security Mode 1과 LE Security Mode 2 이렇게 2개가 있다고 하는걸로 봐서 BLE를 말하는 것으로 보인다.
그리고 Security Mode 1에 데이터 서명이 없다고 하고 암호화 여부도 명시가 되지 않아서 가장 잘못 정리된 글이 아닌가 싶다.
보안 모드는 2개가 있다고 한다.
Security Mode 1 : 데이터 서명 없음
Security Mode 2 : 페어링과 관계 없이 데이터 서명 필요
Mixed Security Mode : 1과 2를 모두 지원해야 함
보안 레벨은 4개가 있다고 한다.
Security Level 1 : 보안이 전혀 없는 통신
Security Level 2 : 페어링 안 된 상태에서 AES-CMAC 암호화 지원
Security Level 3 : 암호화 지원, 페어링이 요구됨.
Security Level 4 : ECDHE 또는 P-256 사용
3. 21-09-21 Reliability Connect의 CEO 마이클 하워드
Bluetooth Low Energy Encryption의 Security Mode에는 2가지가 있고
Security Mode 1
Security Level 1 : 인증 없음, 암호화 없음
Security Level 2 : 인증 없음, 암호화 있음
Security Level 3 : 인증 있음, 암호화 있음
Security Level 4 : 인증 있음, 128bit 강도 암호화 키 사용한 보안 연결 페어링
Security Mode 2 는 암호화가 없고
Security Level 1 : 서명 있음, 인증되지 않은 페어링
Security Level 2 : 서명 있음, 인증된 페어링
4. 24-08-22 ELVIS (Embedded Lab Vienna for IoT & Security)
Bluetooth 클래식과 BLE 보안에 대한 것이 둘 다 나와있다.
BT는 보안모드 4개가 있고, 각 레벨은 모드에 따라 다르다고 한다.
1. BT 보안
Security Mode 1 : 보안 없음
Security Mode 2 :
Security Level 1 : 기본 모드 (모두 허용)
Security Level 2 : 2단계 인증 필요 (고정된 PIN 등)
Security Level 3 : 인증 및 승인 필요 (PIN 입력)
Security Mode 3 : 인증 및 암호화 지원
Security Mode 4 : BT 버전 2.1부터 도입, 4.1부터 SSP는 P-256 타원곡선으로 링크 키 생성
Security Level 0 : 서비스 검색 프로토콜에서만 사용하고 보안 기능 없음 (암호화도 없음)
Security Level 1 : 보안 기능 없음, 암호화
Security Level 2 : 인증 되지 않은 링크 키 사용, 암호화
Security Level 3 : 페어링 시 사용자 인증된 링크 키 사용, 암호화
Security Level 4 : 페어링 시 사용자 인증된 링크키 사용, FIPS 승인 된 알고리즘 사용
2. BLE 보안
LE Security Mode 1 : 암호화와 연관 되어 있음.
Security Level 1 : 인증 없음, 암호화 없음
Security Level 2 : 인증 없음, 암호화 있음
Security Level 3 : 인증된 페어링, 암호화 있음
Security Level 4 : 인증된 보안 연결 페어링, 암호화 있음
LE Security Mode 2 : 데이터 무결성(서명)과 연관 되어 있음. 암호화 없음
Security Level 1 : 인증되지 않은 페어링, 데이터 서명 있음
Security Level 2 : 인증된 페어링, 데이터 서명 있음
Mode 1에 Level 4가 페어링 및 암호화에 AES-CMAC과 P-256타원 곡선을 사용해서 가장 안전하다
그럼 페어링 시 채널을 어떻게 안전하게 보호하는가?
디스플레이가 있으면 6자리 PIN 띄워주고 사용자가 직접 비교 한 다음 컨펌하는
Numeric Comparison 을 사용하면 되는데,
이게 대체 어떤 식으로 작동하길래 중간자 공격에 안전한 걸까?
-> DH 등 키 교환 매커니즘을 통해서 키를 교환하고, 이것과 시간으로 HMAC을 계산해서
(시간 동기화가 잘 안 수 있는데 이런 경우 그냥 SALT같은 것을 임의로 만들어 사용하면 된다)
앞의 6자리를 잘라낸 뒤, HEX 값을 숫자로 변환 한 다음 다시 앞의 6자리를 잘라서 PIN으로 사용한다.
이렇게 되면 중간자 공격을 수행 했을 때 양쪽에서 띄워지는 PIN이 다를 수 밖에 없어서 안전한 것이다.
그래서, BLE에서 무슨 모드와 무슨 레벨을 사용해야 할까?
Security Mode : 1 / Security Level : 4 가 가장 안전하다.