
"삭제한 메시지"가 정말 삭제된 게 아니었어요
Signal이라고 하면 보안 메신저의 대명사잖아요. 종단간 암호화(End-to-End Encryption)를 적용해서 메시지를 보낸 사람과 받는 사람만 내용을 볼 수 있고, Signal 서버조차 내용을 못 읽는 구조로 유명하죠. 그런데 FBI가 iPhone의 알림 시스템에 남아 있는 데이터를 이용해서, 사용자가 이미 삭제한 Signal 메시지를 복원하는 데 성공했다는 사실이 알려졌어요. 보안에 관심 있는 개발자라면 꼭 알아둬야 할 이야기예요.
어떻게 가능했을까: 푸시 알림의 구조적 문제
이 문제를 이해하려면 먼저 iOS의 푸시 알림이 어떻게 동작하는지 알아야 해요. 앱이 알림을 보내려면 Apple Push Notification Service(APNs)를 거쳐야 하는데요, 이 과정에서 알림 내용이 iOS 시스템 레벨에 잠시 저장돼요. 문제는 이 데이터가 앱 자체의 영역이 아니라 iOS의 시스템 영역에 남는다는 거예요.
Signal 앱 안에서 메시지를 삭제하면, Signal 앱의 데이터베이스에서는 확실히 지워져요. 하지만 그 메시지가 도착할 때 iOS가 알림을 위해 저장해 둔 데이터는 Signal이 직접 관리할 수 없는 영역에 있거든요. 쉽게 비유하면, 편지를 받아서 읽고 찢어서 버렸는데, 우체부가 배달 기록부에 편지 내용을 메모해 둔 것과 비슷해요. 편지를 아무리 잘 파기해도 우체부의 메모장까지는 손이 닿지 않는 거죠.
FBI는 포렌식 도구를 사용해서 이 시스템 레벨의 알림 데이터에 접근했어요. iPhone이 잠금 해제된 상태이거나, 특정 조건에서 포렌식 추출이 가능한 경우에 이 데이터를 끌어낼 수 있었던 거예요. 종단간 암호화가 전송 중인 메시지를 보호하는 데는 완벽하지만, 기기에 도착한 후 OS 레벨에서 생기는 데이터 잔존(data remnant) 문제까지는 커버하지 못한다는 한계가 드러난 거죠.
이건 Signal만의 문제가 아니에요
여기서 중요한 건, 이 취약점이 Signal의 암호화 자체가 뚫린 게 아니라는 점이에요. Signal의 프로토콜은 여전히 견고해요. 문제는 iOS 플랫폼의 알림 시스템이라는 Signal 바깥의 레이어에서 발생한 거예요. 그리고 이건 푸시 알림을 사용하는 모든 메신저 앱에 잠재적으로 해당되는 문제이기도 해요.
WhatsApp, Telegram, KakaoTalk 등 푸시 알림으로 메시지 미리보기를 보여주는 앱이라면 비슷한 경로로 데이터가 남을 가능성이 있어요. 다만 각 앱이 알림에 얼마나 많은 정보를 포함시키느냐에 따라 위험도가 달라지겠죠. Signal은 최근 버전에서 알림에 메시지 내용을 포함하지 않는 옵션을 제공하고 있는데, 이 설정을 켜면 이번에 발견된 경로로는 메시지 내용이 유출되지 않아요.
개발자가 알아야 할 기술적 포인트
이 사건이 개발자에게 던지는 메시지는 명확해요. 앱 레벨의 보안만으로는 충분하지 않다는 거예요. 특히 iOS와 Android 같은 모바일 플랫폼에서는 OS가 제공하는 서비스(알림, 클립보드, 자동 백업 등)를 통해 민감한 데이터가 앱의 통제 밖으로 빠져나갈 수 있어요.
구체적으로 주의해야 할 영역이 몇 가지 있어요. 먼저 푸시 알림 페이로드에는 민감한 정보를 최소한으로만 담아야 해요. 알림에 메시지 전문을 넣는 대신, "새 메시지가 있습니다" 정도만 표시하고 앱을 열었을 때 복호화해서 보여주는 방식이 훨씬 안전하죠. 다음으로 iCloud 백업인데요, iOS에서 iCloud 백업이 활성화되어 있으면 앱 데이터가 Apple 서버에 올라갈 수 있어요. 보안이 중요한 앱이라면 특정 데이터를 백업에서 제외하는 처리가 필요해요. 마지막으로 클립보드도 마찬가지예요. 사용자가 메시지를 복사하면 클립보드에 평문이 남게 되는데, 다른 앱이 이 내용을 읽을 수도 있거든요.
이런 맥락에서 Apple이 2022년에 도입한 "고급 데이터 보호(Advanced Data Protection)" 기능이나, Android 15에서 강화된 앱 간 데이터 격리 정책 같은 OS 레벨의 개선이 계속되고 있어요. 하지만 모든 사용자가 최신 OS를 쓰는 건 아니니까, 앱 개발자가 방어적으로 코딩하는 게 중요해요.
한국 개발자에게 주는 시사점
국내에서도 금융 앱, 헬스케어 앱, 기업용 메신저 등 민감한 데이터를 다루는 앱을 개발하는 분들이 많잖아요. 이번 사례는 보안 아키텍처를 설계할 때 "우리 앱 안에서의 데이터 흐름"뿐만 아니라 "OS와 상호작용하는 모든 지점"을 위협 모델에 포함시켜야 한다는 걸 잘 보여줘요.
특히 개인정보보호법이 강화되고 있는 추세에서, 알림을 통해 개인정보가 노출될 수 있다는 건 컴플라이언스 관점에서도 체크해야 할 사안이에요. 푸시 알림 설계를 할 때 "이 알림 내용이 기기 어딘가에 평문으로 남을 수 있다"는 전제 하에 페이로드를 설계하는 습관이 필요하겠죠.
실무적으로는 Notification Service Extension(iOS)이나 FirebaseMessagingService(Android)를 활용해서, 알림이 표시되기 전에 앱 내에서 복호화하고 민감한 데이터를 메모리에서만 처리하는 패턴을 적용해 볼 수 있어요.
핵심 정리
종단간 암호화는 전송 중인 데이터를 보호하지만, 기기에 도착한 후 OS 레벨에서 발생하는 데이터 잔존까지 막아주지는 않아요. 앱 개발자라면 알림, 백업, 클립보드 등 OS와 접촉하는 모든 경계면을 보안 위협 모델에 포함시켜야 합니다.
여러분이 개발하고 있는 앱에서 푸시 알림에 어떤 정보를 담고 있는지 한번 점검해 보시는 건 어떨까요?
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공