- O app NHS COVID-19 parece funcionar corretamente quando executado em segundo plano em dispositivos iOS, ao contrário do app australiano COVIDSafe
- O app impede relatos falsos fornecendo um código de referência aos usuários com sintomas: esse código é então associado aos resultados formais dos testes antes de qualquer providência ser tomada
- O NHS COVID-19 orienta os profissionais de saúde a desativar o Bluetooth do dispositivo enquanto usam EPI, explicando “your interactions at work should not be captured when you are wearing PPE”
- Atualização às 09h25 BST de 7 de maio: adicionamos abaixo uma seção “Como exatamente o app consegue continuar eficaz em segundo plano?”, que explica como o app consegue se manter ativo ao se comunicar com dispositivos Android e aborda alguns dos desafios e técnicas da comunicação entre iOS e iOS
- Atualização às 11h45 BST de 7 de maio: adicionamos abaixo uma seção “O app coleta dados pessoais e revela a minha identidade?”.
Desafios do rastreamento de contatos quando um app não está visível na tela
Os desenvolvedores de apps têm poucas opções para manter os apps “ativos” quando eles não estão em primeiro plano no dispositivo do usuário. A Apple gerencia essas opções com cuidado para garantir que os apps não invadam a privacidade do usuário nem consumam a bateria de forma indevida. Em particular, ela distingue se um app tem foco, ou seja, está visível na tela, ou se está em execução em segundo plano. Atualizações recentes do iOS limitaram a capacidade dos desenvolvedores de acessar dados em segundo plano: por exemplo, antes de ser possível limitar a coleta em segundo plano de forma tão eficaz, o Uber conseguia rastrear os movimentos de um usuário mesmo quando ele não estava em um táxi.
Para ser executado de forma significativa em segundo plano, o editor de um app precisa obter permissão da Apple quando o envia à App Store, marcando-o com um conjunto de “Background Modes”. Esses modos de segundo plano são limitados ao uso na transmissão de vídeo de um dispositivo para outro, na coleta de atualizações de localização, na atuação como telefone ou no uso de Bluetooth. Por exemplo, são esses modos que permitem que o seu telefone execute o AirPlay em segundo plano, toque música sem o Spotify estar sempre visível, ligue para alguém pelo WhatsApp e depois o deixe em segundo plano ou acompanhe a sua corrida no Strava.

O app NHS COVID-19
Esses modos, porém, são limitados, e talvez você conheça as notificações do iPhone que perguntam se os apps devem ter permissão para acessar a sua localização em segundo plano. Mesmo quando o usuário concede essas permissões, o telefone pode continuar pedindo confirmação de que isso é mesmo o certo.
Os apps de rastreamento de contatos são criados com Bluetooth de baixo consumo de energia (BLE), que, em poucas palavras, permite que os dispositivos se reconheçam. Em teoria, os modos “Uses Bluetooth LE accessories” e “Acts as a Bluetooth LE accessory” da Apple são ideais para isso e permitem usar o BLE em segundo plano. No entanto, embora um app em segundo plano que use esses modos consiga continuar se comunicando com os dispositivos BLE com os quais já está em comunicação (como uma fechadura inteligente Bluetooth), ele não consegue controlar a taxa de transmissão para consultar dispositivos que ainda não viu. Em segundo plano, isso dificulta procurar sinais de novos dispositivos, comunicar-se com eles de forma significativa e, em especial, identificar dispositivos que não são da Apple. Isso atrapalha bastante os apps de rastreamento de contatos, que precisam ser executados continuamente em segundo plano.
Para citar a documentação da Apple sobre o serviço:
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
Soluções alternativas e outras abordagens de rastreamento
É claro que esse não é um desafio novo para os desenvolvedores: eles há muito tempo tentam encontrar métodos para que os apps permaneçam em segundo plano e consigam coletar, apesar das restrições, dados de rastreamento. Surgiram frameworks como o AltBeacons, de código aberto, para enfrentar isso, mas eles não são viáveis para o rastreamento de contatos, em que um dispositivo precisa procurar novos dispositivos o tempo todo. Como a ABC constatou na Austrália ao examinar o app nacional COVIDSafe, não houve uma solução prática para isso. Existem algumas brechas que podem ser úteis temporariamente, como registrar o app como player de áudio e fazê-lo tocar música, mas essas e outras brechas do tipo são malvistas pela Apple, tendem a incomodar os usuários e raramente passam na aprovação da App Store.
Enquanto isso, a Apple vem se preparando para lançar o iOS 13.5, que atualmente está disponível em beta. A Apple pode fazer mudanças no seu próprio sistema que favorecem esse tipo de rastreamento. O 13.5 trará vários recursos mais óbvios, como o suporte ao Face ID para usuários que usam máscara, ou pelo menos um caminho mais rápido para digitar o código, e alguns menos óbvios, como o framework ExposureNotification, que oferece exatamente o que os apps de rastreamento de contatos precisam. Isso não resultará no sistema perfeito, é claro: nem todos os usuários poderão aproveitá-lo, pois dispositivos como o iPhone 6 (2015) não conseguem executar o iOS 13. Embora o sistema da Apple use um identificador-padrão global, cada país que o implementa usa um banco de dados nacional isolado. Assim, se um europeu infectado de um país for exposto a um cidadão de outro país europeu, eles não descobrirão isso pelo rastreamento de contatos.
O ExposureNotification da Apple para a COVID-19 oferece uma solução para o que é necessário aqui, mas com ressalvas. A mais significativa é que a Apple indicou que somente o app dela poderá usá-lo, para impedir o uso indevido da tecnologia por terceiros.
Então, como o NHS faz isso com o app COVID-19 dele?
Como, então, o app britânico NHS COVID-19 consegue rastrear novos dispositivos de forma eficaz em segundo plano, sem “adormecer” (tecnicamente, “ser suspenso”) e, assim, perder a eficácia? Nos nossos testes com a versão 1.0.1b341 do app “NHS COVID-19”, vemos que ele de fato se comunica de forma eficaz em segundo plano. Parece que isso é feito com uma série de soluções alternativas engenhosas que usam keepalives e notificações.
Forçar o encerramento do app interrompe o rastreamento em segundo plano; porém, se o telefone for desligado e ligado de novo, ele continua a se comunicar corretamente em segundo plano. Essa solução alternativa pode ou não violar as regras da Apple, mas, até agora, ela não foi divulgada, e a Apple aprovou as builds do app que viu até o momento.
Continuamos a investigar o assunto e publicaremos mais detalhes à medida que as coisas evoluírem.
O app NHS COVID-19 armazena dados sensíveis?
Não. O app parece muito bem construído, usa boas práticas de segurança e não armazena dados desnecessários. Ele gira em torno de um linkingId gerado para cada instalação do app. Esse ID persiste entre instalações do app, então desinstalá-lo e reinstalá-lo não redefine o identificador.
Ao examinar os dados do app com o iPhone Backup Extractor no caminho uk.nhs.nhsx.sonar, vemos uma série de arquivos ligados ao Google Firebase e um conjunto de pequenos Plists (arquivos de configuração) para o restante dos dados do app.

Examinando os arquivos do app NHS COVID-19 em um backup
Os usuários podem se declarar falsamente com COVID-19?
Se um usuário relata sintomas, o app fornece um número para ligar e agendar um teste, junto com um código de referência. A ideia é que o resultado do teste seja então associado ao código de referência do usuário. Se um usuário relatasse sintomas falsamente, a confirmação não aconteceria sem que o NHS atualizasse o resultado do teste para corresponder ao código do usuário.
O app solicita permissões de localização?
Não, não solicita.
O NHS enganou o público sobre o uso das APIs do Google?
Não. O app NHS COVID-19 é profundamente integrado à API Firebase do Google, padrão do setor, para armazenamento e gerenciamento de dados. (O NHS não usa o framework de rastreamento de contatos do Google nem o da Apple; entre outros motivos, ele só estará disponível com o lançamento do iOS 13.5.)
Com quais serviços o app se comunica?
Assim como no app para Android, toda a comunicação relevante passa pela API COVID19 do NHS, hospedada em *.covid19.nhs.uk. O app faz algumas outras requisições por usar o serviço AppCenter da Microsoft, mas nenhuma relevante ou sensível.
Se os profissionais do NHS usarem o app, isso não levará a falsos positivos?
O app orienta os profissionais de saúde a desativar o Bluetooth dos dispositivos enquanto usam EPI, informando: “your interactions at work should not be captured when you are wearing personal protective equipment”.

O aviso sobre Bluetooth e EPI do app NHS COVID-19
Foi um prazer examinar mais a fundo o app NHS COVID-19. Embora tenha havido muita especulação sobre o seu funcionamento, o que vimos é um app bem construído e seguro. O rastreamento em segundo plano parece funcionar, embora continue muito nas mãos da Apple decidir se isso continuará eficaz. Como consequência, a eficácia da resposta britânica à COVID-19 também está agora nas mãos da Apple.
A escolha de seguir sozinho ou usar o framework da Apple deve ter sido difícil. Seguir a liderança da Apple provavelmente teria sido uma escolha menos controversa. No entanto, o iOS 13.5 ainda não foi lançado, enquanto o app britânico é lançado em beta amanhã, e nada impede o Reino Unido de passar a seguir a Apple em atualizações posteriores. Visto por esse ângulo, por que não lançar primeiro um teste na Ilha de Wight?
Como exatamente o app consegue continuar eficaz em segundo plano?
Adicionamos esta resposta às 09h25 BST de 7 de maio para responder às perguntas que recebemos sobre os detalhes de como o app se mantém ativo. O NHSX usou algumas técnicas inteligentes para obter melhores resultados nesse ponto.
O The Sun noticiou ontem à noite que o app usa APIs de Bluetooth privadas, mas não vimos nenhum sinal disso, e o jornal já alterou a matéria para retirar essa afirmação. O app NHS COVID-19 usa APIs de Bluetooth públicas dentro do iOS e não parece aproveitar nenhum privilégio especial. Em vez disso, há algumas técnicas engenhosas.
A primeira técnica responde ao comportamento do Bluetooth do iOS para apps suspensos. Observamos que a Apple muda a forma como um app pode procurar novos dispositivos quando está suspenso. Apps suspensos não conseguem reconhecer corretamente dispositivos que ainda não viram. Como escrevemos acima, fica “mais difícil procurar sinais de novos dispositivos, comunicar-se com eles de forma significativa e, em especial, identificar dispositivos que não são da Apple”.
O NHSX abordou o desafio dos dispositivos que não são da Apple pelo lado oposto: ao perceber que não podia influenciar o que o iOS fazia nesse aspecto, a equipe criou recursos engenhosos no app para Android para reconhecer as mensagens restritas, específicas da Apple, que um app em segundo plano em um dispositivo iOS enviaria. Isso dá ao dispositivo Android informações suficientes para conversar com o dispositivo iOS, despertando-o para um estado em que eles possam se comunicar.
A situação sem o Android é um pouco diferente: existe um limite a partir do qual o app NHS COVID-19 pode ficar em silêncio quando fica em segundo plano por um período, e os registros do dispositivo mostram exemplos disso. Nesse caso, o app foi enviado para segundo plano, mas conseguirá continuar a procurar (tecnicamente, “transmitir”) por mais de uma hora e meia. Outros eventos no telefone, incluindo outros apps que usam Bluetooth, podem estender esse tempo.
Session uk.nhs.nhsx.sonar-peripheral-11919-319 can advertise in background for 6240 seconds
Como consequência, não é possível dizer que “o app ficará ineficaz na comunicação entre iOS e iOS depois de X tempo”: o app dispõe de uma janela variável e generosa para continuar ativo, e vários fatores razoáveis podem fazer essa janela ser estendida, entre eles outros usos do Bluetooth, a presença de dispositivos Android e a eficácia das notificações.
Há algumas situações menos comuns em que o iOS pode tentar suspender completamente um app em segundo plano, por exemplo quando o sistema está com pouca memória. Quando isso acontece, a confiabilidade do serviço é afetada. O app tenta resolver isso acionando uma notificação push que pede aos usuários que reabram o app, mas nem sempre isso funciona, dependendo do estado do dispositivo. Nos nossos testes, os dispositivos iOS em que executamos o app continuaram mantendo o serviço em segundo plano durante a noite.
O app coleta dados pessoais e revela a minha identidade?
Adicionamos esta resposta às 11h45 BST de 7 de maio, para responder às perguntas que recebemos sobre a coleta e a transmissão de dados pelo app
O app para iOS captura pouquíssimos dados: tudo gira em torno do linkingId do usuário. Isso só poderia ser associado a uma pessoa se ela relatasse sintomas e agendasse um teste com o NHS usando esse ID.
Um resultado de teste positivo codificado em relação a um ID é, na prática, o que dispara o alarme de rastreamento. A questão, então, é se o NHS armazenaria de forma centralizada os dados de uma pessoa coletados no momento do teste junto com esse ID. Isso não seria necessário para o app funcionar e não é intrínseco ao app. Como escrevemos antes, o app não tem acesso a dados de localização além dos primeiros dígitos do código postal do usuário (que são informados pelo usuário na configuração e não são validados).
A questão aqui, portanto, não é o que o app armazena: é quais informações o NHS solicita ao agendar um teste e como essas informações são armazenadas.
Se um usuário relatasse sintomas e não agendasse um teste (ou agendasse um teste sem informar o seu ID), não haveria absolutamente nenhuma forma de vincular os dois tipos de informação. É claro que, nesse cenário extremo, isso também impediria o app de dar o alerta caso o usuário estivesse com COVID-19.
Continuamos a investigar o assunto e publicaremos mais detalhes à medida que as coisas evoluírem.






