Desenvolvendo apps que respeitam a privacidade

Um guia com princípios básicos de privacidade a partir de algumas novidades do iOS 14

Izabella Melo
CocoaHeads Recife
8 min readJul 9, 2020

--

Nos últimos anos, todo dia ouvimos notícias sobre alguma violação de privacidade por parte de grandes aplicativos de celular. Só nesse ano, o FaceApp ressurgiu com políticas preocupantes, o iFood sofreu com bugs que expuseram informações de usuários, o Tiktok foi acusado de roubar dados da área de transferência dos usuários e o Facebook de ativar a câmera de celulares sem permissão.

Para os usuários de iPhone, a boa notícia é que a Apple vem investindo mais forte a cada ano na privacidade dos seus clientes e trazendo inúmeras novidades em cada nova versão do iOS. Para os desenvolvedores, se adequar as novas políticas é imprescindível, já que previne bugs e cria uma relação de confiança com seus usuários.

Os 4 pilares

Durante a WWDC20, a Apple apresentou quatro pilares que você deve se atentar para desenvolver um aplicativo confiável em termos de privacidade:

  • Processamento no dispositivo
  • Minimização de dados
  • Segurança
  • Transparência e controle
os pilares, da esquerda para direita, processamento no dispositivo, minimização de dados, segurança e transparência e control

Vamos falar mais sobre cada um deles.

Processamento no dispositivo

Durante a WWDC, ficamos sabendo que recursos como o Ditado e o reconhecimento de rostos do HomeKit serão processados 100% localmente. Isso significa que os celulares atuais são capazes de fazer quase qualquer coisa e que é preciso uma desculpa muito boa para enviar dados do seu aplicativo para serem processados remotamente.

O processamento remoto retira do usuário a capacidade de controlar quem terá acesso aqueles dados e como eles serão usados. Além disso, acarreta trabalho extra no desenvolvimento de soluções de segurança para, por exemplo, evitar vazamentos que podem ser punidos de acordo com a nova LGPD.

Para desenvolvedores iOS que precisam desesperadamente enviar dados para treinar modelos de Machine Learning nos seus servidores, a Apple trouxe novas formas de fazer isso com CoreML em dois vídeos: Use model deployment and security with Core ML e Get models on device using Core ML Converters.

Minimização de dados

Esse é um ponto que vem sendo bastante discutido desde o surgimento da LGPD, que o trata no seguinte artigo:

Art. 6º As atividades de tratamento de dados pessoais deverão observar a boa-fé e os seguintes princípios:

III — necessidade: limitação do tratamento ao mínimo necessário para a realização de suas finalidades, com abrangência dos dados pertinentes, proporcionais e não excessivos em relação às finalidades do tratamento de dados;

Em palavras menos formais: colete apenas os dados que você precisa para fornecer o seu serviço.

Pedir a aprovação do usuário para acessar cada tipo de dado do celular era algo que já existia há algum tempo, inclusive vale lembrar que é uma boa prática de desenvolvimento pedir acesso aos dados apenas quando for necessários. Ou seja, pedir acesso à câmera quando o usuário quiser tirar uma foto e não jogar dezenas popups de solicitação na cara da pessoa assim que ela abrir o seu app pela primeira vez sem explicar para que precisa disso.

Além dessas já conhecidas solicitações, o iOS 14 trouxe novidades em três áreas:

1. Fotos: ao contrário do que acontecia até o iOS 13, o usuário não precisará mais fornecer acesso a toda a sua galeria de foto. O novo iOS permite que os usuários selecionem fotos específicas para que o app tenha acesso. Quer saber como lidar com essa mudança? Tem vídeo da WWDC pra isso: Handle the Limited Photos Library in your app.

Novo popup de acesso às fotos com a opção de “Selecionar fotos”

Mas a melhor parte do iOS 14 no quesito fotos é o PHPicker. O substituto do UIImagePickerController permite a seleção de imagens para o seu app sem a necessidade de pedir acesso ao usuário e possui recursos como pesquisa, seleção de múltiplas imagens e zoom. O PHPicker roda por cima do app e o desenvolvedor não terá acesso diretamente ao seu conteúdo, apenas ao que for escolhido pelo usuário. Em Meet the new Photos picker a Apple fala um pouco mais sobre essa nova API.

imagem do novo PHPicker
PHPicker

2. Localização: o novo iOS também dá possibilidade de um usuário escolher compartilhar apenas a sua localização aproximada com um aplicativo. Com isso, caso um app não precise necessariamente da localização exata de um usuário para funcionar, os desenvolvedores podem pedir a localização aproximada por default adicionando ao Info.plist

As duas talks da WWDC20 sobre como lidar com essas novas features são: What’s new in location e Design for location privacy.

3. Contatos: o teclado agora possui como feature um autocomplete ligado diretamente ao banco de contatos do celular, sem a necessidade de pedir acesso a todos os contatos. Para ativar isso, os desenvolvedores podem adicionar o tipo de conteúdo do textfield

O resultado é mais ou menos esse e informações adicionais podem ser vistas em AutoFill everywhere.

Teclado mostrando opção de autocompletar com o contato que a pessoa estava digitando

Segurança

A principal mudança de segurança que o iOS 14 trouxe foi o suporte ao DNS encriptado. Já falei aqui em outro artigo sobre a importância de manter conexões encriptadas na internet, infelizmente conexões de DNS ainda são, em sua maioria, texto puro navegando pelas redes. Hoje em dia, se alguém tem acesso aos pacotes que trafegam na sua conexão de celular enquanto você usa o Facebook, por exemplo, é mais ou menos isso que a pessoa vê:

imagem de um pacote DNS com o nome "facebook" em texto puro sem encriptação

Essa falta de encriptação nos pacotes DNS torna possível descobrir facilmente quais aplicativos uma pessoa está usando, os sites que ela visita e, em alguns casos, até modificar as requisições e levar os usuários até um site falso.

É por isso que o suporte a dois novos protocolos: DNS over TLS (DoT) e DNS over HTTPS (DoH) é tão importante. Para ativar essa nova feature no seu app, basta que o seu servidor DNS tenha suporte a pelo menos um desses novos protocolos. Você pode checar os servidores DNS públicos que possuem suporte em DNS Privacy e saber mais sobre como usar esse recurso em Enable Encrypted DNS.

Transparência

O apelo à politicas de privacidade mais transparentes e fáceis de entender é algo antigo, abordado também na LGPD.

Art. 6º As atividades de tratamento de dados pessoais deverão observar a boa-fé e os seguintes princípios:

VI — transparência: garantia, aos titulares, de informações claras, precisas e facilmente acessíveis sobre a realização do tratamento e os respectivos agentes de tratamento, observados os segredos comercial e industrial;

A transparência no uso dos dados é de total importância na construção de uma política de confiança entre empresa e usuário. Nessa área, a Apple trouxe mudanças que devem forçar uma mudança de atitude de grande parte das empresas:

1. App Store: Que todos os aplicativos disponíveis na App Store devem possuir uma política de privacidade todo mundo sabe, mas ninguém deve parar para ler um documento de dezenas de páginas antes de baixar um aplicativo. É por isso que, a partir de agora, os usuários terão cards com informações sobre os dados coletados por um app ainda dentro da loja de aplicativos.

cards com novas informações de dados acessados pelo aplicativo e como os dados serão usados

O desenvolvedor deve precisar responder algumas perguntas como quais dados são coletados e como eles são usados. Vale prestar atenção que isso inclui dados coletados por terceiros, como analytics ou anúncios. Se está no seu app a responsabilidade é sua.

2. Área de transferência: O iOS 14 avisará ao usuário sempre que sua área de transferência for acessada com uma mensagem mais ou menos parecida com essa:

novo aviso que aparecerá nos iphones com ios 14 que mostra os aplicativos que acessaram a área de transferência

A medida visa coibir apps que acessam essa área sem permissão dos usuários e foi a responsável pela acusação que falamos no início em relação ao Tiktok, como pode ser visto no vídeo abaixo:

Segundo a empresa, o problema seria causado primeiramente por um SDK do Google Ads desatualizado e posteriormente por um recurso anti-spam presente no app. Se é verdade ou não, é obrigação dos desenvolvedores se certificarem que seus aplicativos não possuam esse tipo de prática.

2. Câmera e microfone: Inspirados pela LED já presente em muitos computadores, incluindo o MacBook, que informa quando a câmera do dispositivo está ligada, o novo iOS promete indicar o uso da câmera e/ou do microfone por meio de uma bolinha laranja na parte superior da tela. No Control Center, será informado também qual é o app e o que ele está acessando.

pequena bolinha laranja em cima do indicador de sinal do iphone que indica que o microfone e/ou camera estão ligados

Controle

O iOS 14 também vai trazer mais controle. A partir de agora, se seu aplicativo utiliza protocolos de rede local para interagir com outros dispositivos, você deve solicitar permissão. Para saber as melhores práticas para isso: Support local network privacy in your app.

E a principal mudança nesse quesito, causadora de polêmicas entre anunciantes, é a necessidade de pedir autorização do usuário para trackear suas atividades e gostos. Todo mundo que já passou por alguma situação tipo pesquisar "iPhone" no Google e começar a receber enxurradas de anúncios sobre isso sabe do que estamos falando. A solicitação deve vir com uma descrição clara sobre para que esses dados serão usados. Como por exemplo na imagem abaixo onde vemos "Seus dados serão usados para entregar anúncios personalizados para você".

novo popup de solicitação para realizar o track de usuário

Para evitar que seu app realize o track de usuários, o SKAdNetwork promete ficar mais poderoso e fazer isso de forma totalmente confiável. Para saber mais dessa novidade: What’s new with in-app purchase.

Esse post foi baseado na talk Build trust through better privacy da WWDC20. Gostou? Deixa suas palminhas e comentários! Até a próxima ;)

--

--

Izabella Melo
CocoaHeads Recife

Brasileira, recifense, estudante de Engenharia da Computação na UFPE, desenvolvedora iOS e pesquisadora em privacidade de dispositivos iOS