당신은 새 AirPods Pro의 포장을 신나게 뜯는다. 15만원 가까이 썼다. 안드로이드 폰에 연결한다. 소리는 난다. 문제없다. 그런데 설정 메뉴를 아무리 뒤져도 배터리 잔량 표시는 없고, 노이즈 캔슬링 스위치는 애초에 존재하지도 않았던 것처럼 사라져 있다. 주변음 허용 모드를 조절하고 싶어도 — 휴대폰에는 그런 메뉴 자체가 없다. 택배 앱에서 확인해보니, 당신이 산 건 분명 정품이다.
이 기능들은 고장 난 게 아니다. 전부 이어폰 안에 멀쩡히 들어 있다. 다만 애플 기기가 없으면, 이어폰이 그 데이터를 내주는 것을 거부할 뿐이다.
이 부조리한 현실을 폭로하고 있는 것은 LibrePods라는 오픈소스 프로젝트다.
이어폰은 누구와 대화하고 있는가
이 대결을 이해하려면, 먼저 AirPods과 iPhone 사이에서 실제로 무엇이 오가는지 알아야 한다.
어떤 애플 기기든 AirPods에 연결할 때, 이어폰과 휴대폰 사이에는 두 개의 통신 경로가 생성된다. 첫 번째 경로는 표준 블루투스 프로토콜을 통해 음악을 귀까지 전달한다. 두 번째 경로는 애플만의 비밀 통로 — AAP(Apple Accessory Protocol, 애플 액세서리 프로토콜)이라는 것이다.
이 전용 채널은 블루투스의 L2CAP 계층 위에서, 포트 번호 0x1001, 서비스 ID 74ec2172-0bad-4d01-8f77-997b2be0722a로 동작한다. 일반 블루투스 기기 입장에서는 그저 별 의미 없는 데이터 파이프일 뿐이지만, AirPods 입장에서는 이곳이 진짜 두뇌다.
이 채널을 통해 전송되는 데이터 패킷은 고정된 형식을 따른다: 4바이트 헤더 04 00 04 00, 그 뒤에 길이 바이트, 기능 번호, 구체적인 데이터. 배터리 상태는 22바이트로 왼쪽, 오른쪽, 충전 케이스의 잔량을 기술한다. 착용 감지는 8바이트. 노이즈 캔슬링 전환 — 꺼짐, 노이즈 캔슬링, 주변음 허용 — 은 0D 뒤에 01, 02, 03만 붙이면 된다.
다시 말해, AirPods이 애플 기기에 보내는 모든 ‘고급 기능’ 정보는 사실 고정 형식의 짧은 데이터 패킷일 뿐이다. 이어폰은 줄곧 브로드캐스트하고 있었다. 다만 애플 기기만 ‘알아들을 수 있는’ 언어로 말하고 있었을 뿐이다.
이 외에도 AirPods은 BLE 브로드캐스트를 통해 암호화된 데이터를 외부로 전송하는데, 여기에는 배터리 정보와 착용 상태가 포함된다. 하지만 암호화 키 — iCloud 클라우드 키 — 는 애플 기기 간에만 동기화된다. 비애플 기기가 받는 것은 알아들을 수 없는 잡음뿐이다.
세 겹의 자물쇠: 애플은 어떻게 이 기능들을 가둬놓았는가
애플의 폐쇄 전략은 인식의 틈을 이용한다: 이상하다고 느끼지 않으면, 요구할 생각도 안 하게 된다. 그러나 만약 요구하려 든다면, 당신 앞에는 세 개의 잠긴 문이 있다는 것을 발견하게 될 것이다.
첫 번째: iCloud 페어링 잠금. iPhone으로 AirPods을 처음 연결할 때, 애플 클라우드 서비스는 백그라운드에서 한 쌍의 암호화 키를 교환하고, 이를 Apple ID에 바인딩해 이어폰의 보안 칩에 저장한다. 이후 이 키가 없는 어떤 기기도 고급 기능 데이터 교환에 참여할 수 없다. 안드로이드 폰에 표시되는 ‘연결됨’은 불완전한 상태다: 음악은 재생되지만, 이어폰은 배터리가 얼마나 남았는지 알려주기를 거부한다.
두 번째: 독자 BLE 브로드캐스트 확장. 블루투스 브로드캐스트 프로토콜에는 표준 광고 방식이 규정되어 있다. 애플은 표준 위에 암호화된 페이로드를 한 겹 더 씌웠고, 오직 iCloud 키를 가진 기기만 이를 복호화할 수 있다. LibrePods의 접근 방식은 이어폰에 이 키를 직접 요청하는 것이다 — 애플 기기의 요청 방식을 그대로 흉내 낸다. 이 과정은 코드 내에서 ‘Magic Pairing’이라고 불린다 — 자신이 애플 기기인 척하면, 이어폰이 열쇠를 준다.
세 번째: MFi 칩과 Vendor ID 검사. 애플의 MFi(Made for iPhone) 인증은 액세서리에 인증 칩이 내장되어 있을 것을 요구한다. AirPods은 외부 인증이 필요하지 않지만, 연결된 기기의 Vendor ID(제조사 번호)를 확인한다. Vendor ID가 0x004C(애플의 회사 번호)가 아니면, 일부 기능이 조용히 비활성화된다 — 어떤 알림도 없이, 그저 기능 메뉴에서 몇 개 옵션이 사라질 뿐이다. LibrePods 프로젝트는 안드로이드 기기의 Vendor ID를 애플 것으로 위장하면 추가 기능이 해금된다는 것을 발견했다. 리눅스에서는 더 간단하다: 설정 파일 한 줄만 바꾸면 된다.
이 세 겹의 자물쇠가 드러내는 것은 불편한 진실 하나다: AirPods 하드웨어는 애플이 허용한 것보다 훨씬 더 많은 것을 할 수 있다.
28,000개의 별과 16세 학생
LibrePods 프로젝트의 창시자는 Kavish Devar, 인도 구르가온에 살고 있으며, 프로젝트가 언론에 널리 보도될 당시 불과 16세였다. GitHub 저장소 데이터에 따르면, 프로젝트는 현재 28,000개 이상의 별(28,000명이 “이 프로젝트를 계속 지켜보겠다”는 의사를 표시한 것)을 받았고, 1,600명 이상이 코드를 복제해 직접 개선했다.
리버스 엔지니어링의 첫 단계는 패킷 캡처다 — 블루투스 스니핑 도구로 iPhone과 AirPods 사이의 원시 데이터 교환을 포착한다. 눈에 보이는 것은 16진수 데이터 스트림이다: 04 00 04 00으로 시작하는 핸드셰이크 요청, 0D 01은 ‘노이즈 캔슬링 전환’, 28 01은 ‘대화 인식 켜기’를 의미한다.
두 번째 단계는 기능 하나하나에 대한 실험이다. 노이즈 캔슬링을 이리저리 전환해보고, 데이터 패킷의 어떤 바이트가 변하는지 관찰한다. 수백 번의 반복 끝에 각 바이트의 의미가 번역된다. Devar는 여러 커뮤니티 기여자들에게 감사를 표했다 — @tyalie는 최초의 프로토콜 문서를 작성했고, @pabloaul은 Wireshark 파싱 플러그인을 개발했으며, @timgromeyer는 리눅스 버전 프로토타입을 구현했다.
이 리버스 엔지니어링 과정의 정교함은 여기에 있다: 어떤 암호화 알고리즘도 깨뜨리지 않았고, 애플의 영업 비밀을 훔치지도 않았다. 이 프로젝트가 한 일은 가장 소박한 행위다 — 대화 중인 두 사람 옆에 앉아서, 한 마디 한 마디 대화를 기록한 다음, 각각의 단어가 무슨 뜻인지 추측하는 것이다. 이 접근법은 법적으로 상호운용성을 위한 공정 이용(fair use)에 해당하며, 많은 관할권에서 이러한 행위를 명시적으로 보호한다.
하드웨어는 당신의 것, 경험은 애플의 것
이 사건은 한 가지 질문을 테이블 위에 올려놓는다: 15만원 주고 산 물건, 그중 얼마나 진짜 당신의 것인가?
법적으로, 이어폰 자체는 당신 소유다. 그러나 이어폰 안에는 애플의 펌웨어가 돌고 있다 — 애플이 저작권을 보유하고, 소스를 공개하지 않으며, 오직 애플 기기를 통해서만 완전히 활성화되는 소프트웨어다. 만약 AirPods을 한 번도 애플 기기에 연결한 적이 없다면, 그 노이즈 캔슬링이 세 가지 모드 간에 전환 가능하다는 사실을 영원히 알지 못할 것이다 — 전환 명령이 암호화된 채널을 통과해야 하기 때문이다.
이것은 일종의 변형된 ‘기능 임대’다: 15만원에 산 이어폰 하드웨어의 완전한 사용 권한은, 당신이 또 하나의 애플 제품을 소유하고 있는지에 달려 있다. 애플의 관점에서 보면, 폐쇄 프로토콜은 경험의 파편화를 줄이고, 호환성 문제로 인한 AS 부담을 피하며, 보안 업데이트를 통합적으로 배포할 수 있게 해준다 — “더 나은 경험을 위해 우리가 전체 체인을 통제합니다.”
그러나 사용자의 시각은 완전히 다르다. Hacker News에서 누군가는 이렇게 썼다: “AirPods은 오프라인 기기니까, 지금 한 쌍 사면 평생 쓸 수 있다. 하지만 자기 하드웨어를 쓰기 위해 관문을 통과하지 않아도 되는 제조사를 보상하는 게 더 똑똑한 선택일 수도 있다.” 또 다른 댓글은 더 날카롭다: “예전에는 우리가 암호화 기술로 스스로를 보호했는데, 이제는 기업과 정부가 암호화 기술로 우리의 통제로부터 스스로를 보호한다.”
이 프로젝트 또한 자신의 한계를 솔직히 인정한다. 듀얼 채널 HD 음성, 심박수 모니터링, 공간 음향 — 이것들은 안드로이드 루트 권한이 필요하거나, 아직 프로토콜이 완전히 해석되지 않았다. LibrePods는 다섯 개의 기호로 각 기능의 구현 상태를 표시한다: ✅ 완전 사용 가능, ⚪ 애플 기기로 위장 필요, 🔴 아직 구현되지 않음, ⛔ 명시적으로 제외, ❓ 상태 미확인. 이 솔직함 덕분에 프로젝트는 승리 선언문이 아니라, 현재 채워지고 있는 빈 지도처럼 읽힌다.
두 진영, 누구도 이기지 못했다
LibrePods의 이야기는 단순한 ‘선인의 승리’가 아니다. 연구자의 시각에서 보면, 개인정보 보호와 보안에 대한 애플의 투자는 진짜다 — AirPods의 종단 간 암호화 덕분에 위치 데이터가 쉽게 유출되지 않고, 폐쇄된 펌웨어 업데이트 메커니즘은 악의적 변조 리스크를 낮춘다. 애플은 비애플 기기의 경험을 능동적으로 망가뜨린 적이 없다. 그저 한 번도 그 경험을 만들어주지 않았을 뿐이다.
이에 대한 커뮤니티의 답변은: 네가 안 만들었으니, 우리가 직접 만든다. 28,000명의 관심은 이것이 소수의 니즈가 아니라는 것을 보여준다. 소비자가 한 쌍의 이어폰에 지불하는 금액이 이미 많은 사람의 월급을 초과하는 상황에서, “내가 산 물건을 내가 얼마나 쓸 수 있는가”라는 질문에 대한 민감도는 점점 더 높아질 수밖에 없다.
이 프로젝트의 미래 역시 불투명하다. 애플은 언제든 한 번의 펌웨어 업데이트로 프로토콜을 수정해, 수년간의 리버스 엔지니어링을 하룻밤에 무효화할 수 있다. Hacker News의 현실적인 조언은 이렇다: 만약 장기간 LibrePods를 사용할 계획이라면, AirPods이 애플 기기에 연결되어 자동 업데이트되지 않도록 하고, 펌웨어를 현재 버전에 ‘잠가’ 두어라. 이것은 자유라기보다 — 족쇄를 찬 채로 쟁취한 제한된 공간처럼 들린다.
필자는 이 문제에 대해 간단한 정답이 있다고 생각하지 않는다. 애플은 자신의 생태계에 R&D 투자를 하고 그로부터 이익을 얻을 권리가 있고, 소비자도 전액을 지불하고 구매한 하드웨어의 일부 기능만 사용할 수 있는 이유에 의문을 제기할 권리가 있다. 이 긴장은 하나의 오픈소스 프로젝트로 해소되지 않을 것이다. 그러나 LibrePods와 같은 모든 프로젝트는, 그 긴장이 더 잘 보이도록 만든다.
참고 링크: