
파이어폭스의 오랜 숙제, WebUSB
웹 브라우저로 USB 장치를 직접 제어할 수 있다는 거, 신기하지 않나요? 예를 들어 웹사이트에 들어갔을 뿐인데 아두이노 보드에 펌웨어가 올라가고, 카드 리더기로 결제가 되고, 게임패드의 LED가 켜지고 하는 일들이요. 이게 가능한 이유가 바로 WebUSB라는 웹 표준 덕분이에요. 크롬이나 엣지 같은 크로미엄 계열 브라우저에는 이미 들어가 있죠.
그런데 파이어폭스는 어떨까요? 안타깝게도 WebUSB를 지원하지 않아요. 모질라 재단은 예전부터 "WebUSB는 보안상 위험이 너무 크다"는 입장이었거든요. 웹페이지가 브라우저만 통하면 바로 USB 장치에 접근할 수 있다는 건, 악성 사이트 입장에서는 엄청난 공격 표면(attack surface)이 되니까요. 그래서 파이어폭스 사용자들은 USB를 다뤄야 할 때마다 크롬을 따로 켜야 했어요. 그런데 최근 GitHub에 올라온 awawausb라는 확장 프로그램이 이 틈을 메워주고 있어요.
확장 프로그램이 어떻게 네이티브 USB에 접근할까
여기서부터가 좀 흥미로워요. 원래 브라우저 확장 프로그램은 샌드박스 안에 갇혀 있어서 USB 같은 시스템 자원에 직접 접근할 수가 없어요. 그럼 awawausb는 어떻게 동작할까요? 비밀은 Native Messaging Host라는 구조에 있어요.
이게 뭐냐면요, 브라우저 확장이 별도로 설치된 네이티브(OS 네이티브) 프로그램과 표준 입출력(stdin/stdout)으로 대화할 수 있게 해주는 다리 같은 거예요. 순서를 따라가보면 이래요. 먼저 웹페이지에서 WebUSB API처럼 보이는 자바스크립트 코드를 호출하면, awawausb 확장이 그걸 가로채서 네이티브 호스트 프로그램에게 "이 USB 장치에 이런 명령 보내줘"라고 메시지를 넘겨요. 그러면 호스트 프로그램이 OS 수준에서 실제 USB 드라이버와 통신해서 결과를 받아다가 다시 확장으로 돌려주는 거죠. 웹페이지 입장에서는 마치 진짜 WebUSB가 동작하는 것처럼 보이게 되는 구조예요.
이름도 재미있어요. awawa는 일본어로 당황하거나 허둥대는 소리인데, 파이어폭스에서 WebUSB 때문에 애먹던 개발자들의 심정을 유머러스하게 담은 것 같기도 하고요. 저장소 자체는 아직 초기 단계이고, 모든 USB 장치와 호환되는 건 아니에요. 하지만 기본적인 벌크 전송(bulk transfer), 인터럽트 전송 같은 기능은 동작한다고 알려져 있어요.
브라우저들의 Web API 철학 차이
이 지점에서 업계의 큰 흐름을 한 번 짚고 갈 만해요. 구글은 웹을 일종의 운영체제로 만들고 싶어 해요. 그래서 WebUSB, WebHID(휴먼 인터페이스 장치), WebSerial(시리얼 통신), WebBluetooth, WebNFC까지 온갖 하드웨어 API를 적극적으로 밀고 있어요. 이른바 "프로젝트 플루오레센스(Project Fugu)"라는 이름 아래 추진되는 전략이죠.
반면 모질라와 애플은 훨씬 보수적이에요. "웹은 문서와 앱을 보여주는 공간이지, 하드웨어 드라이버 대체품이 될 필요는 없다"는 거예요. 보안과 프라이버시를 최우선으로 두고, 악용 가능성이 큰 API는 들이지 않겠다는 입장이죠. 이런 철학 차이 때문에 파이어폭스 사용자들은 기능 면에서 불편을 감수해야 할 때가 있어요. awawausb 같은 확장은 그 틈에서 피어난 일종의 민간 처방전인 셈이에요.
한국 개발자에게 어떤 쓸모가 있을까
하드웨어를 다루는 한국의 메이커, 임베디드 개발자, IoT 제품 팀에게는 이게 꽤 실용적인 이야기가 될 수 있어요. 예를 들어 아두이노나 라즈베리파이 피코(Pi Pico) 같은 보드에 펌웨어를 웹에서 바로 플래싱(flashing)하는 툴을 만든다고 해봐요. 지금까지는 "크롬 전용"이라는 딱지를 붙여야 했죠. 그런데 awawausb가 안정화되면 파이어폭스 사용자도 지원 대상에 넣을 수 있어요.
그리고 보안 관점에서도 배울 게 있어요. Native Messaging Host라는 다리 구조를 잘 이해해두면, 브라우저 샌드박스를 벗어나야 하는 온갖 내부 도구 개발에 응용할 수 있거든요. 사내 하드웨어 검사 도구, 바코드 스캐너 연동, 전자서명 토큰 처리 같은 영역에서 꽤 쓸모가 있어요. 물론 이걸 만들 때는 어떤 웹사이트가 이 브릿지에 접근할 수 있는지 화이트리스트로 엄격히 관리하는 설계가 필수예요. 안 그러면 사용자 컴퓨터를 열어놓는 꼴이 될 수 있으니까요.
마무리
한 줄로 요약하자면, 브라우저가 안 해주면 확장이라도 해낸다는 거예요. awawausb는 파이어폭스의 보수적인 철학과 사용자의 현실적인 필요 사이를 메워주는 영리한 우회로예요. 여러분은 브라우저가 운영체제처럼 하드웨어를 전부 껴안아야 한다고 생각하세요, 아니면 모질라의 보수적 태도에 더 공감하세요?
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공