- Quando um app pede permissões, o sistema operacional não deveria permitir apenas respostas de sim/não; ele deveria adicionar a opção de "fornecer dados falsos" a todas as categorias de permissão
- Se pedir contatos, fornecer contatos falsos gerados; se pedir acesso ao microfone, sons ambientes aleatórios; se pedir localização, coordenadas de uma pequena ilha de 5×5 m
- Ao bloquear o acesso, o app pode recusar com um "então não dá para usar", mas ao fornecer dados falsos, a punição recai apenas sobre o serviço que pediu dados desnecessários
- Como o boicote exige um grande sacrifício pessoal do usuário, mas causa pouco impacto às empresas, a posição defendida é que a conformidade maliciosa (malicious compliance) é mais eficaz do que o boicote
- Isso leva à questão do controle do usuário: o usuário deveria poder controlar apps e o software do sistema como administrador do dispositivo que possui
Proposta central — opção de dados falsos por permissão
- O sistema operacional deveria oferecer, além de sim/não para pedidos de permissão, a opção "sim, mas fornecendo dados falsos" em todas as categorias
- Pedido de contatos → fornecer contatos falsos gerados aleatoriamente
- Pedido de microfone → fornecer ruído ambiente aleatório (
random ambiance) - Pedido de localização → responder que está em uma pequena ilha de 5×5 m
- Se um serviço pedir dados de que não precisa, o efeito é punir esse banco de dados ao preenchê-lo com informações inúteis
- Diferentemente de bloquear o acesso, os dados falsos impedem que o app reaja com "indisponível para uso", ao mesmo tempo em que neutralizam a coleta desnecessária de dados
Argumento de superioridade em relação ao boicote
- Boicotar um app necessário é uma troca desfavorável: o usuário faz um sacrifício pessoal considerável, enquanto o bilionário do outro lado mal sente o impacto
- É uma estrutura em que quem luta é quem mais tem a perder, o que desfavorece o usuário
- A posição defendida é que a injeção de dados falsos dá mais poder ao usuário
- Usa-se a expressão "conformidade maliciosa (malicious compliance)" como algo mais divertido do que o boicote
Meios já existentes mencionados na discussão
-
Falsificação de localização (
location spoofing)- No passado, a falsificação de localização só era possível como configuração global, e era difícil escolher por app
- Nas opções de desenvolvedor do Android, ao definir um app específico como app de localização simulada (
mock location), isso se aplica globalmente - O Firefox tem extensões para falsificar geolocalização e vários outros dados, mas seria mais útil se funcionasse no celular
- Houve casos de uso indevido no Pokémon GO com dados falsos de localização, confirmando que isso é tecnicamente possível
-
XPrivacyLua
- Em dispositivos com root, fazia exatamente o que o usuário queria, mas exigia Magisk (modificação do sistema)
- Atualmente está sem manutenção e não é compatível com todos os dispositivos
-
Recursos nativos de permissões do Android
- O Android já permite escolher por app o acesso a informações ou configurar para perguntar sempre
- Ainda assim, isso é apenas uma forma de bloqueio, e não de fornecimento de dados falsos
Ideias e casos de expansão
-
Poluição de dados com IA
- Foi sugerido inutilizar mineradores de dados fornecendo-lhes informações sem sentido de forma recursiva
- Também surgiu a ideia de poluir até mesmo conteúdo para treinamento de IA com dados gerados por IA
-
Reação ao rastreamento publicitário
- Foi citado o AdNauseam (um fork do uBlock Origin), que bloqueia anúncios e ao mesmo tempo clica em todos eles para inutilizar os dados de segmentação
- Avalia-se que, em tentativas anteriores, o consumo de recursos era alto
-
Perturbação de perfis de rastreamento no navegador
- Existem serviços que percorrem rapidamente vários sites com navegador e cookies para perturbar fingerprinting e rastreamento
- É possível escolher padrões aleatórios ou baseados em perfis, por exemplo: "navegar como um hippie equatoriano de 70 anos"
- Foi citado o caso do TrackThis, criado pela Mozilla
Limites e preocupações levantados
- Se você inserir uma data de nascimento aleatória, pode acabar recebendo parabéns em uma data qualquer, mas surge o problema de não saber qual data foi usada em uma pergunta de segurança
- Como complemento, argumenta-se que o sistema operacional deveria poder mostrar ao usuário os seus próprios valores de dados falsos
- Cerca de 10 anos atrás, isso foi avaliado como uma ideia de startup, mas não se encontrou um advogado capaz de torná-la juridicamente defensável
- A previsão é que o Google quase certamente não implementaria isso, porque os desenvolvedores comerciais temeriam muito a ideia
- Aponta-se que a causa fundamental é que nem Google nem Apple querem que o usuário tenha controle
1 comentários
Comentários do Hacker News
Sou a favor da ideia de “dados falsos”, mas os apps também deveriam ser obrigados a lidar com isso de forma elegante mesmo quando o usuário nega acesso aos dados reais
Quando eu desenvolvia para iOS antigamente, a política da Apple dizia que você não podia punir o usuário nem encerrar o app com
exit()por ele negar uma permissão, e o app tinha que continuar funcionandoHá ainda mais tempo, nem sequer se podia exigir uma “conta” para executar o app. Lembro que, mais de 10 anos atrás, a empresa introduziu a exigência obrigatória de conta e foi justamente rejeitada pela App Store. Hoje em dia, vendo cada vez mais apps que exigem conta, parece que essa posição foi flexibilizada
Apps bancários, jogos online, o app atual do Twitter, ou apps como Dropbox/Nextcloud, como poderiam funcionar sem conta?
É verdade que em muitos apps exigir conta é uma manobra de marketing, mas não parece que uma regra geral dessas possa funcionar
Facebook/Meta é um lixo
Se for para mostrar minha posição no mapa ou buscar estabelecimentos próximos, dá para fornecer dados falsos
Mas se for um app de teste de velocidade da internet que mapeia velocidades por operadora, ou um app em que os usuários reportam o clima local para melhorar a previsão, acho razoável que ele possa dizer “ou me dê a localização exata, ou não me dê nada; eu não quero localização falsa”
A plataforma teria que decidir se daria exceções para apps que recebem dados contribuídos por usuários e que afetam outras pessoas
A Apple parece ter encontrado um meio-termo bem bom nisso. Não é necessário permitir “localização exata” para um app, e no caso de fotos também dá para mostrar ao app apenas as imagens escolhidas pelo usuário por meio do seletor de imagens fornecido pelo sistema
Isso vale até quando você só quer ver fotos que já estão salvas na nuvem
Isso equivale a propor uma solução organizacional para um problema técnico, então é difícil fazer funcionar; a única solução prática é dados falsos. Para o app, tem que parecer que a permissão foi concedida, mesmo que na realidade não tenha sido
Em Android com root, o XPrivacy já conseguia fazer isso há 7 anos, e existem alternativas mais modernas também. Mas faz tanto tempo que não faço root no celular que não posso garantir: https://github.com/M66B/XPrivacy
Claro, isso não é o caminho principal, e eu concordo que deveria vir embutido por padrão. Mas tanto Android quanto iOS permitem absurdos como apps com restrição regional ou bloqueio de captura de tela para conteúdo com DRM, então não vai ser fácil
O celular é um dispositivo de entrega de conteúdo do fabricante, e o usuário fica à mercê deles
O GrapheneOS não se dava muito bem com apps bancários, o Google quebrou várias vezes o root via Magisk no Android Beta, e em algum momento eu simplesmente parei de me importar
Talvez o GrapheneOS ou projetos parecidos consigam oferecer esse tipo de recurso
Era tão ruim que eu nunca apertava “negar” de cara, sempre começava com “negar temporariamente”. Se o app funcionasse, eu negava em definitivo; se travasse, precisava descobrir o conjunto mínimo de permissões que tinha que liberar
É uma função importante para as app stores, porque um app pode não oferecer uma boa experiência em todos os países, pode não estar localizado em todos os idiomas, pode não haver moderadores para conteúdo naquele idioma, pode haver exigências legais locais, ou as licenças de distribuição de conteúdo protegido por direitos autorais podem se limitar a países específicos
A prevenção de captura de tela em conteúdo com DRM é um recurso solicitado pelos desenvolvedores por causa de exigências legais das licenças de conteúdo, como filmes. Os estúdios não querem que as pessoas transmitam ou gravem filmes, então as plataformas de apps precisam de um jeito de exibir esse conteúdo com segurança
“Se alguém faz uma pergunta que não tem o direito de fazer, você não tem obrigação de dizer a verdade”
— Leonard Schiffman
Fonte: “Blend me in: Privacy-Preserving Input Generalization for Personalized Online Services” https://drive.google.com/file/d/10OmoqMmHFcb7PsQtaU_GW4aCAJe...
Há um problema com a ideia de que, ao pedir permissões, o sistema operacional deveria oferecer não só “sim/não”, mas também “sim, mas forneça dados falsos ao app”
Muitos usuários nem sabem como encaminhar um e-mail
Imagine a confusão se essas pessoas escolhessem dados falsos ao usar a navegação do Google Maps sem entender o que isso significa
Google Maps: “Vire à direita”
Motorista numa estrada à beira-mar: “Beleza”
Carro: splash
Basta esconder a função de falsificação de dados nas configurações avançadas, explicá-la claramente em linguagem simples antes de ativá-la e deixar óbvio na tela que o app está recebendo informações alternativas por causa de um recurso de privacidade ativado pelo próprio usuário, e que isso pode ser desativado facilmente
Ainda haverá quem ative por engano, mas isso pode trazer muito valor para muitos outros usuários
De qualquer forma, é um problema que se resolve sozinho
Parece melhor que o sistema operacional ofereça “sim”, “não” e “personalizar”. Ao escolher “personalizar”, pode haver mensagens de aviso dentro desse menu, se necessário, mas não se deve impedir o usuário de ajustar como quiser
O Apple Maps não teria esse problema. Dá para baixar mapas no dispositivo, então ele pode funcionar offline sem conexão de dados
Surpreende que ninguém no comentário mais votado tenha mencionado que, no iOS, não dá para distinguir se a permissão foi concedida ou não
Por exemplo, quando um app pede acesso às fotos, ele sempre recebe um array. Se a permissão for negada, esse array vem vazio, então não dá para saber se a biblioteca do usuário está realmente vazia ou se o acesso foi negado. É simples e elegante
Claro, no caso de fotos quase todo mundo tem pelo menos algumas, então dá para usar heurísticas. Mas em outros tipos, como dados de saúde, isso não é tão óbvio
Para notificações push existe UNAuthorizationStatus: https://developer.apple.com/documentation/usernotifications/...
Para dados de saúde existe HKAuthorizationStatus: https://developer.apple.com/documentation/healthkit/hkauthor...
Para contatos existe CNAuthorizationStatus: https://developer.apple.com/documentation/contacts/cnauthori...
Para fotos existe PHAuthorizationStatus: https://developer.apple.com/documentation/photokit/phauthori...
Fotos são um caso especial, porque o usuário pode escolher entre negar acesso, acesso limitado ou acesso total. Dá para saber se o acesso foi negado, mas não dá para distinguir entre acesso limitado e acesso total
E, se a pasta de fotos estiver vazia, isso quase certamente significa que não há permissão. É muito raro alguém nunca ter tirado uma foto
Por exemplo, se o usuário permitir acesso à localização, o objeto de localização entregue ao app obviamente terá informações relevantes. Se o sistema operacional passar um objeto de localização vazio, isso não deixaria claro que a permissão foi negada, ou ele fica escondido atrás de algum erro
Acho que “fornecer dados falsos” é a abordagem errada. A melhor abordagem deveria ser fornecer dados de uma fonte alternativa, e essa fonte alternativa deveria poder ser qualquer outro programa
A fonte alternativa pode ser dados vazios, dados aleatórios, dados falsos mas consistentes, dados de um arquivo alternativo (por exemplo, uma lista de contatos separada ou fotos de um arquivo no lugar da câmera), dados transformados (por exemplo, inverter as fotos da câmera de cabeça para baixo), filtragem, registro, perguntar ao usuário sobre cada dado individualmente, fornecer códigos de erro em vez de dados e permitir que o usuário defina o código de erro, e qualquer outra coisa que o usuário quiser. Isso deveria incluir até o acesso à data/hora atual
Isso aumenta o controle do usuário e também é útil para testes e acessibilidade
Uma das minhas ideias de design de sistema operacional é permissões por proxy. Incluir permissões por proxy na segurança baseada em permissões, usar isso para toda entrada e saída, poder usar isso no shell de comando de uma forma melhor do que pipes UNIX, e também de outras formas. Incluindo data/hora. Fora Yield e Quit, nenhuma chamada de sistema poderia ser usada sem uma chave de permissão
É muito difícil para desenvolvedores de apps lidar bem com permissões indisponíveis, e como isso amplia e dificulta muito o escopo de testes para um grupo relativamente pequeno de usuários, a maioria dos apps comerciais pequenos provavelmente nem tentaria tratar isso direito
Permitir a permissão, mas fornecer uma fonte alternativa de dados, é o mais fácil tanto para desenvolvedores quanto para usuários
Claro, também pode facilitar fraudes. Por exemplo, bancos passariam a usar procedimentos de registro de dispositivo mais complexos
Não há necessidade de tornar isso hostil. A regra simples é: “não também é uma opção, exceto quando realmente não for”
Se não for uma opção, isso precisa estar muito claro e provavelmente deve ser demonstrado no processo de revisão do app; caso contrário, o app deveria ser rejeitado
Por exemplo, se TikTok/Instagram pedirem permissões de câmera e microfone, não é uma opção para ambas, porque nenhuma das duas é essencial para usar o app. Se parte do app puder ser usada sem uma determinada permissão, é responsabilidade do app ser projetado para funcionar assim. Se a câmera ou o microfone estiverem desativados, basta desabilitar condicionalmente apenas os recursos que exigem essa permissão
Em termos mais simples, o ônus está em quem faz o pedido. Se não estiver claro ou se estiver tentando ser esperto, a resposta é não. Pode soar rígido, mas os desenvolvedores de apps podem evitar completamente essa etapa extra tornando as permissões opcionais
Se o foco fosse obrigar isso, não haveria necessidade de uma pequena corrida armamentista, e essa também seria a melhor escolha para as pessoas
Os únicos que podem impor isso aqui são as lojas de apps do Google/Apple/Microsoft. É difícil ter certeza de que eles têm incentivo suficiente para aplicar isso de forma consistente e amigável ao usuário. Se tivessem, provavelmente já teriam feito isso
Os celulares da Samsung têm botões de alternância para acesso à câmera e ao microfone
Ao desligar, aparece esta mensagem:
Em vez de “uma opção de ‘sim, mas fornecer dados falsos ao app’ para todas as categorias”, o ideal seria configuração por app
Você pode não querer dar dados de localização para quase nenhum app, mas pode querer concedê-los ao Google Maps e a apps de chamada de emergência. O mesmo vale para contatos e dados pessoais
No entanto, apps assim enfrentariam forte resistência do Google e de outras empresas que lucram com o perfilamento de usuários
Por exemplo, em um app você deveria poder fornecer dados reais para uma permissão, dados falsos ou dados personalizados/inseridos manualmente para outra, e negar uma terceira permissão
Também pode haver casos em que você queira alterar temporariamente essas configurações para teste ou para algo como ver temporariamente o clima de outro lugar em um app de clima com localização atual e depois voltar para sua localização real
Se um app precisa dos meus dados para melhorar a minha experiência, e só a minha experiência, então, ao receber dados falsos, apenas a minha experiência deveria piorar. Isso não deveria importar para o desenvolvedor ou para o dono do app
Mas, se o objetivo for minerar meus dados, como na maioria dos casos, então dados falsos funcionariam bem para atrapalhar isso
Claro, em casos como o WhatsApp isso não ajuda muito. As pessoas sincronizam de bom grado toda a lista de contatos com Facebook/Meta em troca de uma experiência de mensagens um pouco melhor
Pelo menos no celular, o app e o serviço mal ficam utilizáveis antes de sincronizar os contatos