본문으로 건너뛰기
Reincubate

Technology, security analysis

계속 살아 있기: 백그라운드 추적과 NHS COVID-19 앱

Aidan Fitzpatrick게시일: 2020년 5월 6일업데이트: 2024년 7월 31일
이 페이지에서
Cover image for: 계속 살아 있기: 백그라운드 추적과 NHS COVID-19 앱
  • NHS COVID-19 앱은 호주의 COVIDSafe 앱과 달리 iOS 기기의 백그라운드에서 실행될 때 올바르게 작동하는 것으로 보입니다
  • 이 앱은 증상이 있는 사용자에게 참조 코드를 제공해 허위 신고를 막습니다. 이 코드는 조치가 이루어지기 전에 공식 검사 결과와 연결됩니다
  • NHS COVID-19는 의료진에게 PPE를 착용하는 동안 기기의 Bluetooth를 끄라고 안내하며, “your interactions at work should not be captured when you are wearing PPE”라고 설명합니다
  • 업데이트 5월 7일 09:25 BST: 아래에 “앱은 백그라운드에서 어떻게 효과적으로 작동할 수 있을까요?” 섹션을 추가했습니다. Android 기기와 통신할 때 앱이 어떻게 계속 살아 있는지, 그리고 iOS 기기 간 통신의 몇 가지 과제와 기법을 설명합니다
  • 업데이트 5월 7일 11:45 BST: 아래에 “앱이 개인 데이터를 수집하고 내 신원을 드러내나요?” 섹션을 추가했습니다.

앱이 화면에 표시되지 않을 때 접촉자 추적이 마주하는 과제

앱이 사용자 기기의 전면에 있지 않을 때 앱을 “살아 있게” 유지하는 방법은 개발자에게 선택지가 많지 않습니다. Apple은 앱이 사용자의 프라이버시를 침해하거나 배터리를 과도하게 소모하지 않도록 이런 선택지를 세심하게 관리합니다. 특히 앱이 포커스를 가지고 있는지(즉, 화면에 표시되는지), 아니면 백그라운드에서 실행 중인지를 구분합니다. iOS의 최근 업데이트는 백그라운드 상태에서 개발자가 데이터에 접근할 수 있는 능력을 제한했습니다. 예를 들어 백그라운드 수집을 이렇게 효과적으로 제한할 수 있게 되기 전에는 Uber가 사용자가 택시에 타고 있지 않을 때도 사용자의 이동을 추적할 수 있었습니다.

앱이 백그라운드에서 의미 있게 실행되려면, 앱 게시자가 App Store에 제출할 때 “Background Modes” 항목을 지정해 Apple의 허가를 받아야 합니다. 이 백그라운드 모드는 한 기기에서 다른 기기로 비디오를 전송하거나, 위치 업데이트를 수집하거나, 전화 역할을 하거나, Bluetooth를 사용할 때로 한정됩니다. 예를 들어 이런 모드 덕분에 휴대폰이 백그라운드에서 AirPlay를 실행하고, Spotify를 계속 띄워 두지 않아도 음악을 재생하고, WhatsApp으로 누군가에게 전화를 건 뒤 백그라운드로 보내고, Strava로 달리기를 기록할 수 있습니다.

NHS COVID-19 앱

NHS COVID-19 앱

하지만 이런 모드는 제한적이며, 앱이 백그라운드에서 위치에 접근하도록 허용할지 묻는 iPhone 알림은 사용자에게 익숙할 것입니다. 사용자가 이 권한을 허용하더라도, 휴대폰이 그 선택이 맞는지 계속 확인을 요청할 수 있습니다.

접촉자 추적 앱은 Bluetooth 저전력(BLE)을 사용해 만들어지는데, 간단히 말해 BLE는 기기들이 서로를 인식할 수 있게 해 줍니다. 이론상 Apple의 “Uses Bluetooth LE accessories”와 “Acts as a Bluetooth LE accessory” 모드가 이 용도에 이상적이며, 백그라운드에서 BLE를 사용할 수 있게 해 줍니다. 그러나 이 모드를 사용하는 백그라운드 앱은 이미 통신 중인 BLE 기기(예: Bluetooth 스마트 도어락)와는 계속 통신할 수 있지만, 이전에 본 적 없는 기기를 확인하기 위한 브로드캐스트 주기는 제어할 수 없습니다. 백그라운드에서는 이 때문에 새 기기의 신호를 찾고, 그 기기와 의미 있게 통신하고, 특히 Apple이 아닌 기기를 식별하기가 더 어려워집니다. 이는 백그라운드에서 계속 실행되어야 하는 접촉자 추적 앱에 상당한 걸림돌이 됩니다.

Apple의 서비스 관련 문서를 인용하면 다음과 같습니다.

All service UUIDs ... can be discovered only by an iOS device that is explicitly scanning for them. ...and for apps that are advertising are in the background, the frequency at which your peripheral device sends advertising packets may decrease

추적을 위한 우회책과 대안적 접근

물론 이것은 개발자에게 새로운 과제가 아닙니다. 개발자들은 오래전부터 앱이 백그라운드 상태를 유지하면서 제한 속에서 추적 데이터를 수집하는 방법을 찾으려 해 왔습니다. 이 문제를 해결하려고 오픈 소스 AltBeacons 같은 프레임워크가 등장했지만, 기기가 새로운 기기를 끊임없이 찾아야 하는 접촉자 추적에는 적합하지 않습니다. 호주의 국가 COVIDSafe 앱을 살펴본 ABC의 보도에서 드러났듯이, 현실적인 해결책은 아직 없습니다. 일시적으로 유용할 수 있는 몇 가지 편법이 있습니다. 예를 들어 앱을 오디오 플레이어로 등록해 음악을 재생하게 만드는 식입니다. 하지만 이런 편법은 Apple이 달가워하지 않고, 사용자에게 불편을 주며, App Store 심사를 통과하는 경우도 드뭅니다.

한편 Apple은 현재 베타로 제공 중인 iOS 13.5 출시를 준비해 왔습니다. Apple은 이런 방식의 추적에 유리하도록 자사 시스템을 변경할 수 있습니다. 13.5에는 마스크를 쓴 사용자를 위한 FaceID 지원(또는 적어도 암호를 더 빠르게 입력하는 경로) 같은 눈에 띄는 기능 몇 가지와, 접촉자 추적 앱이 필요로 하는 바로 그 기능을 제공하는 ExposureNotification 프레임워크 같은 눈에 덜 띄는 기능이 도입됩니다. 물론 이것이 완벽한 시스템이 되지는 않을 것입니다. iPhone 6(2015년)처럼 iOS 13을 실행할 수 없는 기기도 있어서 모든 사용자가 이를 활용할 수는 없기 때문입니다. Apple의 시스템은 전 세계 표준 식별자를 사용하지만, 이를 도입하는 각 나라는 별개의 국가 데이터베이스를 사용합니다. 따라서 한 나라의 감염된 유럽인이 다른 유럽 국가의 시민에게 노출되더라도 접촉자 추적으로는 이를 알 수 없습니다.

Apple의 COVID-19 ExposureNotification는 여기에서 필요한 기능에 대한 해결책을 제공하지만 단서가 있습니다. 가장 중요한 점은, 다른 사람들이 이 기술을 오용하지 못하도록 Apple 자사의 앱만 이를 사용할 수 있다고 Apple이 밝혔다는 것입니다.

그렇다면 NHS는 COVID-19 앱으로 이를 어떻게 해내고 있을까요?

그렇다면 영국 NHS COVID-19는 어떻게 백그라운드 상태에서도 “잠들지”(기술적으로는 “일시 중단되지”) 않고 새로운 기기를 효과적으로 추적해 무력화되지 않을 수 있을까요? “NHS COVID-19” 앱 1.0.1b341 버전을 테스트한 결과, 이 앱은 실제로 백그라운드에서 효과적으로 통신하는 것을 확인할 수 있습니다. keepalive와 알림을 활용한 일련의 기발한 우회책으로 이를 구현하는 것으로 보입니다. 앱을 강제 종료하면 백그라운드 추적이 멈추지만, 휴대폰의 전원을 껐다가 다시 켜면 백그라운드에서 계속 올바르게 통신합니다. 이 우회책이 Apple의 규정에 어긋날 수도, 아닐 수도 있지만, 현재까지는 공개된 바가 없으며 Apple은 지금까지 확인한 앱 빌드를 승인했습니다.

저희는 이 문제를 계속 조사하고 있으며, 상황이 진행되는 대로 더 자세한 내용을 게시하겠습니다.

NHS COVID-19 앱은 민감한 데이터를 저장하나요?

아니요. 이 앱은 매우 잘 만들어진 것으로 보이며, 합리적인 보안 관행을 따르고 불필요한 데이터는 저장하지 않습니다. 앱을 설치할 때마다 생성되는 linkingId를 중심으로 동작합니다. 이 ID는 앱 설치를 넘어 유지되므로, 앱을 삭제했다가 다시 설치해도 식별자는 초기화되지 않습니다.

iPhone Backup Extractor로 uk.nhs.nhsx.sonar 경로 아래의 앱 데이터를 살펴보면, Google Firebase와 연동된 일련의 파일과 나머지 앱 데이터를 담은 작은 Plist(설정 파일) 모음이 있는 것을 볼 수 있습니다.

백업에 들어 있는 NHS COVID-19 앱의 파일 살펴보기

백업에 들어 있는 NHS COVID-19 앱의 파일 살펴보기

사용자가 COVID-19에 걸렸다고 거짓으로 직접 신고할 수 있나요?

사용자가 증상을 신고하면 앱은 검사를 예약하기 위해 전화할 번호와 참조 코드를 제공합니다. 검사 결과가 사용자의 참조 코드와 연결되는 방식입니다. 사용자가 증상을 거짓으로 신고하더라도, NHS가 사용자의 코드에 맞춰 검사 결과를 업데이트하지 않으면 확인은 이루어지지 않습니다.

앱이 위치 권한을 요청하나요?

아니요, 요청하지 않습니다.

NHS는 Google API 사용에 관해 대중을 오도했나요?

아니요. NHS COVID-19 앱은 데이터 저장과 관리를 위해 Google의 업계 표준 Firebase API와 깊이 통합되어 있습니다. (NHS는 Google이나 Apple의 접촉자 추적 프레임워크를 사용하고 있지 않습니다. 무엇보다 이 프레임워크는 iOS 13.5가 출시되기 전에는 제공되지 않습니다.)

앱은 어떤 서비스와 통신하나요?

Android 앱과 마찬가지로, 모든 주요 통신은 *.covid19.nhs.uk 아래에 호스팅된 NHS의 COVID19 API로 연결됩니다. 앱은 Microsoft의 AppCenter 서비스를 사용하는 과정에서 몇 가지 다른 요청도 보내지만, 중요하거나 민감한 것은 없습니다.

NHS 직원이 이 앱을 사용하면 오탐이 발생하지 않을까요?

이 앱은 의료진에게 PPE를 착용하는 동안 기기의 Bluetooth를 끄라고 안내하며, “your interactions at work should not be captured when you are wearing personal protective equipment”라고 밝힙니다.

NHS COVID-19 앱의 PPE Bluetooth 안내 메시지

NHS COVID-19 앱의 PPE Bluetooth 안내 메시지


NHS의 COVID-19 앱을 더 깊이 들여다볼 수 있어 기뻤습니다. 앱의 기능을 두고 추측이 많았지만, 저희가 확인한 것은 잘 만들어지고 안전한 앱입니다. 백그라운드 추적은 작동하는 것으로 보이지만, 이것이 앞으로도 효과적일지는 여전히 전적으로 Apple의 통제에 달려 있습니다. 그 결과 COVID-19에 대한 영국의 대응이 효과적일지도 이제 Apple의 통제에 달려 있습니다.

독자 노선을 택할지 Apple의 프레임워크를 사용할지는 쉽지 않은 선택이었을 것입니다. Apple의 방식을 따랐다면 논란이 덜했을 것입니다. 하지만 iOS 13.5는 아직 출시되지 않았고 영국 앱은 내일 베타로 출시되며, 이후 업데이트에서 영국이 Apple의 방식을 따르는 쪽으로 옮겨 가는 것을 막을 수단은 없습니다. 그런 관점에서 보면, 먼저 와이트섬에서 시범 운영을 하지 않을 이유가 있을까요?


앱은 백그라운드에서 어떻게 효과적으로 작동할 수 있을까요?

앱이 계속 살아 있는 구체적인 방식에 관해 받은 질문에 답하기 위해 5월 7일 09:25 BST에 이 답변을 추가했습니다. NHSX는 더 나은 결과를 위해 몇 가지 영리한 기법을 사용했습니다.

The Sun은 어젯밤 이 앱이 비공개 Bluetooth API를 사용한다고 보도했지만, 저희는 그런 흔적을 보지 못했고 The Sun도 이후 기사를 수정해 그 주장을 철회했습니다. NHS COVID-19 앱은 iOS의 공개 Bluetooth API를 사용하며 특별한 권한을 활용하는 것으로 보이지 않습니다. 대신 몇 가지 영리한 기법이 쓰입니다.

첫 번째 기법은 일시 중단된 앱에 대한 iOS의 Bluetooth 동작에 대응한 것입니다. 저희는 Apple이 앱이 일시 중단된 상태에서 새로운 기기를 스캔하는 방식을 바꾼다는 점을 확인했습니다. 일시 중단된 앱은 이전에 본 적 없는 기기를 제대로 인식하지 못합니다. 위에서 썼듯이 “새 기기의 신호를 찾고, 그 기기와 의미 있게 통신하고, 특히 Apple이 아닌 기기를 식별하기가 더 어렵습니다”.

NHSX는 Apple이 아닌 기기의 과제에 반대편에서 접근했습니다. iOS가 이 부분에서 하는 일에 영향을 줄 수 없다는 것을 깨닫고, Android 앱에 iOS 기기의 백그라운드 앱이 보내는 제한적이고 Apple 고유의 메시지를 인식하는 영리한 기능을 만든 것입니다. 이렇게 하면 Android 기기는 iOS 기기와 대화하는 데 필요한 정보를 얻어, iOS 기기를 다시 깨워 통신 가능한 상태로 만들 수 있습니다.

Android가 없는 경우는 상황이 조금 다릅니다. NHS COVID-19 앱이 백그라운드에 일정 시간 방치되면 조용해질 수 있는 임계점이 있으며, 기기 로그에 그 사례가 나타납니다. 이 경우 앱은 백그라운드로 밀려났지만 한 시간 반이 넘도록 계속 스캔(기술적으로는 “브로드캐스트”)할 수 있습니다. Bluetooth를 사용하는 다른 앱을 비롯해 휴대폰에서 일어나는 다른 이벤트가 이 시간을 늘릴 수 있습니다.

Session uk.nhs.nhsx.sonar-peripheral-11919-319 can advertise in background for 6240 seconds

따라서 “이 앱은 X 시간이 지나면 iOS 기기 간 통신에서 효과가 없어진다”고 말할 수는 없습니다. 앱이 살아 있을 수 있는 시간에는 넉넉하고 가변적인 구간이 있으며, 이 구간이 늘어나도록 하는 합리적인 요인이 여럿 있습니다. 다른 Bluetooth 사용, Android 기기의 존재, 알림의 효과 등이 그 예입니다.

iOS가 백그라운드 앱을 완전히 일시 중단하려는 드문 상황도 있습니다. 예를 들어 시스템의 메모리가 부족해질 때입니다. 이런 일이 생기면 서비스의 안정성에 영향이 있습니다. 앱은 사용자에게 앱을 다시 열어 달라는 푸시 알림을 보내 이 문제를 해결하려 하지만, 기기의 상태에 따라 항상 통하지는 않습니다. 저희 테스트에서는 앱을 실행한 iOS 기기들이 밤새도록 백그라운드 서비스를 계속 유지했습니다.


앱이 개인 데이터를 수집하고 내 신원을 드러내나요?

앱의 데이터 수집과 전송에 관해 받은 질문에 답하기 위해 5월 7일 11:45 BST에 이 답변을 추가했습니다

iOS 앱이 수집하는 데이터는 정말로 아주 적습니다. 핵심은 사용자의 linkingId입니다. 이것이 한 사람과 연결될 수 있는 경우는 사용자가 증상을 신고하고 그 ID를 사용해 NHS에 검사를 예약했을 때뿐입니다.

양성 검사 결과가 ID에 대응해 기록되는 것이 사실상 추적 경보를 울리는 계기입니다. 그렇다면 NHS가 검사 시점에 수집한 개인의 세부 정보를 그 ID 와 함께 중앙에 저장하는지가 문제입니다. 이는 앱이 작동하는 데 필요하지 않으며 앱에 본질적으로 포함된 것도 아닙니다. 앞서 썼듯이 앱은 사용자 우편번호의 앞 몇 자리(사용자가 설정할 때 직접 입력하며 검증되지 않음)를 넘어서는 위치 데이터에는 접근할 수 없습니다.

따라서 여기서 문제는 앱이 무엇을 저장하느냐가 아니라, NHS가 검사를 예약할 때 어떤 정보를 요청하고 그 정보가 어떻게 저장되느냐입니다.

사용자가 증상을 신고하고 검사를 예약하지 않았다면(또는 ID를 제공하지 않고 검사를 예약했다면), 두 종류의 정보가 연결될 방법은 전혀 없습니다. 물론 이런 극단적인 시나리오에서는 사용자가 COVID-19에 걸렸을 때 앱이 알림을 보내는 것도 불가능해집니다.

저희는 이 문제를 계속 조사하고 있으며, 상황이 진행되는 대로 더 자세한 내용을 게시하겠습니다.


작성자 소개

Aidan Fitzpatrick

창립자 겸 CEO

Aidan은 세계 최초의 iOS 데이터 복구 도구를 개발한 후, 2008년에 Reincubate를 설립했습니다. 이후 그는 AMD, Qualcomm, HP와 같은 기업들과 협력하여 Camo 앱 생태계를 필두로 비디오 소프트웨어를 위한 의미 있는 머신러닝 기능을 개척하며, 회사를 세계 최고의 ISV 중 하나로 성장시켰습니다. Aidan의 리더십 아래 Reincubate는 영국 최고의 비즈니스 상을 네 차례 수상했고, The Sunday Times의 100대 기술 기업 리스트에 이름을 올렸으며, Apple 디자인 어워드와 App Store 후보 지명으로 업계의 인정을 받았습니다. 그의 연구와 기법은 모바일 포렌식 관련 학술 논문에서 자주 인용되며, Google, Microsoft, Snap과 같은 기업이 주최하는 행사에 연사로 초청받은 바 있습니다.


댓글 (1)

richard atterbury 2020년 5월 9일

I am on IOW. The app does require Location Services. Very surprised as every description, including yours, says that it does not

Reincubate 지원팀의 답변 2020년 5월 9일

Hi Richard, thanks for your comment! The way the app gets access to Bluetooth on Android is confusing; its request for access makes it appear it's also requesting location access. We detail what's [going on with that here](https://reincubate.com/blog/nhs-covid-19-background-tracing-details/) — in short, it's a limitation of Android that appears misleading.


관련 콘텐츠


인기 게시글

King's Award for Enterprise 로고

King's Award for Enterprise: Reincubate는 영국 최고의 공식 비즈니스 영예를 네 차례 수상했으며, 가장 최근에는 지난 3년간의 뛰어난 성장을 인정받았습니다.

사용자 및 파트너와의 관계는 우리의 가치와 우리가 만드는 제품의 핵심입니다. 리뷰을(를) 통해 그들의 이야기를 들어보세요.

Centre for Assessment의 ISO 27001 인증, UKAS 공인

© 2008-2026 Reincubate Ltd. 모든 권리 보유. 잉글랜드 및 웨일스 등록 번호 5189175, VAT 번호 GB151788978. Camo®, Streamlight® 및 Reincubate®는 등록 상표입니다. 특허 출원 중.

도움말