요약
Signal 포크 Molly가 3개월째 업데이트되지 않아 공식 Signal에서 고친 취약점이 남아 있습니다.
PieFed 커뮤니티 이용자 beep이 올린 경고 글입니다. 포크(원본 코드에서 갈라져 따로 개발하는 프로그램)인 Molly의 최신 버전이 7월 31일에 나온 v8.19.2-4에 멈춰 있다고 알렸습니다.
왜 중요한가
- Molly 이용자는 공식 앱에서 이미 막힌 위험을 그대로 안고 있습니다.
- 이 위험은 통화가 끝난 줄 알았을 때 소리가 새어 나갈 수 있는 문제여서 사생활과 바로 이어집니다.
핵심 내용
- 글쓴이는 업데이트가 정상화될 때까지 Molly를 지우고 공식 Signal을 쓰라고 권했습니다.
- 대표 사례는 10월에 공개된 버그로, 통화를 끊은 뒤에도 소리나 영상이 계속 전달될 수 있습니다.
- 이 버그는 Signal 8.27에서 고쳐졌지만 Molly에는 아직 반영되지 않았습니다.
- 원글 댓글에서는 대안으로 Signal-FOSS가 거론됐습니다.
HN 반응
- UnifiedPush(Google 없이 알림을 받는 방식)를 공식 앱에도 넣으라는 요구에, 남과 다른 설정은 오히려 눈에 띈다는 반론이 맞섰습니다.
- 공식 앱의 휴대폰 두 대 연결 지원으로 Molly를 쓸 이유가 줄었다는 이용자도, 수정을 담은 자체 포크 Polly를 내놓은 이용자도 있었습니다.
오늘 알게 된 사실: 이제 공식 Signal 앱도 계정 하나를 기기 두 대에 나눠 쓸 수 있네요.
제가 Signal 대신 Molly를 쓴 가장 큰 이유가 이거였거든요.
https://aboutsignal.com/news/signal-allows-iphones-to-be-linked-as-secondary-devices-beta/
솔직히 저는 이것 때문에 Signal을 아예 안 썼어요... WhatsApp도 마찬가지로 모바일과 데스크톱 연동이 정말 짜증 나고요 :/
왜 XMPP처럼 휴대폰 없이도 기기와 계정을 여러 개 쓸 수 있는 걸 못 쓰는 걸까요? 아, 알겠네요. 멍청한 폐쇄형 생태계와 빅테크가 그걸 싫어하니까요... 걔네가 힘을 잡기 전에 이메일이 살아남은 것도 기적이에요 :/
종단간 암호화만 제대로 구현하는 것도 충분히 어렵습니다. 여기에 다중 기기까지 얹으면 더 어려워집니다.
그러니 이건 대화를 더 안전하게 지키려고 일부러 택한 트레이드오프입니다. Signal은 전반적으로 프라이버시에 타협이 없고, 메타데이터가 자기들 손에 들어오지 않게 하는 데도 철저합니다.
사람마다 다르고 결국 위협 모델에 달린 문제예요... 평문 이메일로 오가는 정보량도 어마어마하잖아요.
XMPP에는 OMEMO가 있는데, 다중 기기를 지원하고 요즘은 그럭저럭 잘 돌아가요. 그래도 저는 더 단순한 OX(PGP)가 좋아요. 완전 순방향 비밀성(perfect forward secrecy)은 대다수 사람에게 과하다고 봐요.
키를 도난당할 수 있는 곳이 그만큼 늘어난다는 뜻일 뿐입니다.
그럼 아예 대화를 하지 마세요. 그러면 아무도 통신을 훔쳐 가지 못할 테니까요.
Matrix를 쓰고 나머지는 전부 라즈베리 파이에서 Matrix로 게이트웨이를 연결해 쓰면 되죠.
다른 컴퓨터에 그냥 연결만 하면 키가 전부 들여다보이는 저장 방식의 기기가 대화용으로 충분히 안전하다고 생각하신다면, 그걸 쓰셔도 됩니다. 굳이 Signal을 쓰실 필요가 없습니다.
사람들이 Signal을 쓰는 이유는 버스나 기차에서 휴대폰이나 노트북을 몇 분 자리에 두고 와도 보안이 뚫리지 않기를 바라기 때문입니다. 어느 날 노트북이 바이러스에 감염돼 계정이 전부 털렸다고 가정하고 디지털 신원을 처음부터 다시 만들어야 하는 상황도 원하지 않고요.
그건 대개 기기 보안 문제예요... 노트북도 저장소를 암호화하면 아무 문제 없고요... Signal이나 모바일을 무슨 성배처럼 떠받드는 건 이상해요.
게다가 기차를 놓칠 확률이 컴퓨터를 잃어버릴 확률보다 훨씬 높잖아요(제 노트북은 집 밖으로 거의 나가지도 않아요).
말씀하신 상황이라면 그 휴대폰이나 노트북에 있는 건 Signal을 포함해서 전부 뚫리는 것 아닌가요?
노트북은 그렇습니다. 그래서 노트북은 주 기기가 아니고, 연결을 해제하면 그 기기는 더 이상 메시지에 접근할 수 없습니다.
휴대폰은 아닙니다. Signal 관련 키에 접근하려면 Secure Enclave를 뚫을 수 있는 제로데이가 몇 개는 있어야 합니다.
누군가 읽을 수 있고 사칭까지 할 수 있는 상태라면 그 계정은 이미 뚫린 겁니다. 접근을 해제할 수 있다고 해서 '뚫릴 수 없다'는 뜻은 아니고, '피해를 더 쉽게 줄일 수 있다'는 뜻일 뿐입니다. 여기서 진짜 방어선은 접근을 물리적으로 제한하는 것과 OS 수준의 데이터 암호화인데, 이건 XMPP 기반이든 Signal이든 어떤 소프트웨어에나 똑같이 통하고(혹은 똑같이 안 통하고) 있습니다.
컴퓨터에도 TPM 칩이 있다는 건 아시죠?
저도 정확히 이 이유로 Matrix 서버를 직접 구축했습니다. 이제는 너무 늦었네요. Signal로는 절대 돌아가지 않을 겁니다.
그 글은 아이폰만 언급하는데, 아이폰에서는 어차피 Molly를 쓸 수 없었잖아요.
그런데 안드로이드도 지원하는 것 같아요. https://aboutsignal.com/news/signal-allows-android-phones-to-be-linked-as-secondary-devices/
드디어 추가해서 정말 기쁘네요!
그 스레드에서 누군가 여기 [1]에서 받은 Signal APK를 설치하면 "업데이트가 안 된다"고 하는데, 사실이 아닙니다. Signal은 스스로 업데이트하고, 업데이트하라는 알림이 옵니다. 업데이트를 무작위로 미루기로 악명 높은 Play 스토어보다 더 일찍 오는 경우도 많습니다.
[1] https://signal.org/android/apk/
맞아요, 업데이트 알림은 와요(한번은 한밤중에 그 알림 때문에 잠이 깬 적도 있어요). 그런데 제가 마지막으로 확인했을 때는 자동으로 업데이트되지는 않았어요. Obtainium을 쓰면 되긴 하는데, 더 큰 문제는 웹소켓이 배터리를 엄청나게 먹는다는 거예요.
Signal이 "새 버전이 있습니다. 눌러서 업데이트하세요"라는 알림을 보내긴 하는데, 눌러도 저는 한 번도 아무 반응이 없었어요. 업데이트가 나올 때마다 웹사이트에서 APK를 다시 받아야 해요.
GrapheneOS를 쓰신다면 패키지 쓰기/설치 권한을 허용해 줘야 합니다.
네. GrapheneOS에 Signal을 APK 파일로 직접 설치했는데, 앱을 열기만 하면 업데이트가 설치됩니다. 백그라운드에서 자동으로 업데이트되지는 않아요. 그래도 잘 돌아갑니다.
혹시 관심 있는 분이 계실까 해서 말씀드리는데, 저는 Molly를 최소한으로 줄인 포크 Polly를 직접 운영하고 있습니다.
방금 수정 사항을 담은 임시 릴리스를 냈습니다.
https://github.com/lone-cloud/polly/releases/tag/v8.19.2-6
여전히 Signal 8.19.2 기반입니다. 빌드는 arm64 전용이고 Android 14 이상에서만 됩니다.
홍보를 조금 하자면, 알림 게이트웨이와 선택적으로 짝지어 쓸 수 있는 UnifiedPush 배포자 앱도 직접 만들어 관리하고 있습니다. https://git.lonecloud.dev/lone-cloud/prism-android Prism을 만든 동기는 Proton Mail 이메일 알림을 UP로 받기 위해서였는데, 그러려면 직접 호스팅하는 Prism 서버가 필요합니다.
가끔 Signal이 평범한 일반 사용자가 아닌 사람들을 싫어하는 것 같다는 느낌이 들어요. Molly에서는 완벽하게 돌아가는 Unified Push를 일반 클라이언트에도 얼마든지 넣을 수 있잖아요. 구글 없는 버전을 F-Droid용으로, 혹은 구글과 엮이기 싫은 사람들을 위해 내놓는 것도 쉬울 거고요. 그런데 그냥 안 해요. 닉네임이 도입되기까지 몇 년이 걸린 것도 그렇고, 전화번호 없이 가입하는 것도 최근에야 가능해졌는데 그마저 Google Play 스토어를 통해서만 되죠.
튀지 말라는 겁니다.
"사용자마다 다른 알림 서비스를 고를 수 있다"고 하면 프라이버시가 강화되는 게 아니라 튀게 됩니다.
"사용자 그룹마다 자기 서버를 둘 수 있다"고 해도 프라이버시가 강화되는 게 아니라 튀게 됩니다.
그러니 "평범한 일반 사용자"용이라는 말은, 그런 사람들 사이에서 굳이 튀려 하면 문제가 된다는 뜻에서는 맞습니다.
Signal은 군중이 본래 지니는 위장 효과를 활용하고 있고, 일단 튀려고 하는 순간 그 효과는 사라지며 되돌릴 수 없습니다.
기기에 미리 깔려 있는 구글 서비스를 쓰면 스마트폰이 사실상 스파이웨어가 됩니다. 대부분의 스마트폰에 기본 탑재된 표준 안드로이드에서는 구글 서비스가 시스템 권한으로 돌아가면서 위치 정보를 포함한 온갖 데이터를 수집할 수 있습니다. Signal이 이것만 지원한다면 구글 의존도를 더 키우고, 구글의 스파이웨어가 들어 있지 않은 안드로이드 버전을 쓰려는 사람들을 막는 셈입니다.
그럼 그렇게 쓰지 마세요.
GApps 없는 순정 LineageOS나 GrapheneOS를 설치하고, https://signal.org/android/apk/ 에서 Signal을 설치하면 됩니다.
요점은 구글 서비스가 없으면 배터리가 너무 닳아서 쓸 수가 없다는 거예요. Meta는 WhatsApp에서 구글 서비스 없이도 알림을 받을 수 있게 배터리 효율이 좋은 웹소켓 구현을 제대로 해냈는데, Signal의 구현은 형편없어요.
과장된 얘기입니다. 저는 구글 서비스를 전혀 설치하지 않은 LineageOS에서 최소 다섯 대의 폰으로 몇 년째 그렇게 Signal을 쓰고 있습니다. 지금은 Motorola G84를 쓰는데, 적당히 쓰면서 이틀에 한 번 충전합니다. Signal은 가족과 연락하는 주된 수단이고요.
그래도 G84는 전작을 보면 기본적으로 배터리가 아주 좋은 폰이잖아요. 부하가 조금 더 걸려도 버틸 수 있어요. 사양이 낮은 폰이면 더 힘들 거예요.
저는 거의 10년 동안 구글 서비스 없이 LineageOS나 GrapheneOS에서 Signal을 썼고, 배터리 수명은 늘 만족스러웠습니다. 보통 쓰면 이틀 정도 갑니다.
PinePhone을 사 본 적이 있어서, 배터리 최적화가 정말 안 된 게 어떤 건지는 확실히 압니다, ㅋㅋ.
제 Pixel에서는 한 번도 문제가 된 적이 없었어요. Pixel에 Google Play 서비스 없이 Graphene을 쓰니 기본 상태보다 배터리가 더 오래 갔어요.