Considerações sobre dados confidenciais em conjuntos de dados de aprendizado de máquina

Ao desenvolver um programa de aprendizado de máquina (ML, na sigla em inglês), é importante encontrar um equilíbrio entre o tipo de acesso que as pessoas da sua empresa terão aos dados e as implicações de segurança resultantes. Você quer extrair insights contidos no conjunto de dados brutos para orientar o treinamento do ML, mesmo que o acesso aos dados confidenciais seja limitado. Para alcançar ambos os objetivos, é importante treinar sistemas de ML em um subconjunto dos dados brutos ou, então, no conjunto de dados inteiro após aplicar parcialmente uma certa quantidade de técnicas de agregação ou ofuscação.

Por exemplo, talvez você queira que os engenheiros de dados treinem um modelo de ML para ponderar o feedback dos clientes sobre um produto, mas não quer que eles saibam quem enviou o feedback. No entanto, digamos que algumas informações, como endereço de entrega e histórico de compras, são essenciais para treinamento do modelo de ML. Após os engenheiros receberem os dados, eles precisarão fazer consultas para explorar os dados. Portanto, é importante proteger campos de dados confidenciais antes de disponibilizá-los. Esse tipo de dilema também é comum no treinamento de modelos de ML que envolvem mecanismo de recomendação. Para criar um modelo que retorna resultados específicos para cada usuário, normalmente é necessário acessar dados específicos do usuário.

Felizmente, existem técnicas que você pode usar para remover alguns dados confidenciais de conjuntos de dados sem prejudicar o treinamento eficaz de modelos de ML. Neste artigo, pretendemos destacar algumas estratégias para identificar e proteger informações confidenciais, bem como processos que ajudarão a resolver suas possíveis preocupações de segurança com relação aos dados de ML.

Como gerenciar informações confidenciais

Informações confidenciais são todos os dados que você e seus consultores jurídicos querem proteger com medidas de segurança adicionais, como acesso restrito ou criptografia. Por exemplo, campos como nome, endereço de e-mail, informações de faturamento ou outros dados que permitam a engenheiros de dados ou pessoas mal-intencionadas deduzir indiretamente informações privadas, muitas vezes são considerados como confidenciais.

Padrões como a HIPAA e o PCI-DSS especificam um conjunto de práticas recomendadas para proteger os dados confidenciais e, ao mesmo tempo, informar aos clientes sobre como os dados confidenciais deles devem ser gerenciados. Essas certificações permitem aos clientes tomar decisões embasadas sobre a segurança de informações particulares.

Processar dados confidenciais em conjuntos de dados de machine learning pode ser uma tarefa difícil pelos seguintes motivos:

  • Grande parte do esquema de segurança baseado em papéis é direcionado pelo conceito de propriedade. Isso significa que um usuário pode ver e/ou editar os próprios dados, mas não tem acesso aos dados que não pertencem a ele. O conceito de propriedade cai por terra com os conjuntos de dados de ML, que são um agregado de dados de vários usuários. Basicamente, os engenheiros de dados precisam receber acesso para visualizar o conjunto de dados inteiro e usá-lo de maneira eficaz.
  • Frequentemente, adota-se como medida preventiva criptografar ou reduzir a resolução de campos confidenciais. No entanto, isso nem sempre é suficiente em um conjunto de dados de ML. O próprio conjunto de dados agregados geralmente fornece meios para quebrar a criptografia por meio de ataques de análise de frequência.
  • A tokenização, supressão ou remoção aleatória dos campos confidenciais no conjunto de dados pode prejudicar o treinamento eficaz do modelo de ML ao obscurecer dados necessários. O resultado é um desempenho insatisfatório nas predições.

Muitas vezes, as organizações desenvolvem ferramentas e um conjunto de práticas recomendadas para encontrar o equilíbrio adequado entre segurança e utilidade. Para proteger os dados confidenciais em conjuntos de dados de ML, tenha sempre em mente as três metas a seguir, que discutiremos no restante deste documento:

  • Identificar dados confidenciais no conjunto de dados com um alto nível de confiabilidade.
  • Proteger os dados confidenciais sem prejudicar o projeto. Isso é feito por meio da remoção, mascaramento ou simplificação dos dados considerados confidenciais.
  • Criar um plano de governança e uma documentação sobre práticas recomendadas. Assim, engenheiros de dados e clientes tomam as decisões apropriadas quanto aos dados confidenciais. Isso principalmente nos casos em que os dados não podem ser mascarados, removidos ou identificados com confiança.

Discutiremos essas três metas mais detalhadamente nas seções abaixo. Elas têm como foco cenários em que os conjuntos de dados precisam ser mantidos privados dentro da empresa. Este artigo não abrange os cenários em que os conjuntos de dados devem ser compartilhados publicamente.

Como identificar dados confidenciais

Os dados confidenciais podem existir no ambiente em diversos tipos de cenários. As seções a seguir abrangem cinco dos cenários mais comuns e os métodos atuais que você pode usar para identificar dados confidenciais.

Dados confidenciais em colunas

Os dados sensíveis podem estar restritos a colunas específicas em conjuntos de dados estruturados. Por exemplo, você pode ter um conjunto de colunas contendo nome, sobrenome e endereço de correspondência de um usuário. Nesse caso, identifique quais colunas contêm dados confidenciais, decida como protegê-los e documente suas escolhas.

Dados confidenciais em conjuntos de dados baseados em texto e não estruturados

Os dados confidenciais podem fazer parte de um conjunto de dados baseados em texto e não estruturados que, muitas vezes, podem ser detectados com padrões conhecidos. Por exemplo, é possível detectar com confiança os números de cartão de crédito em transcrições de bate-papo usando um padrão comum de expressão regular desse tipo de dado. É possível minimizar os erros de detecção de expressões regulares, que resultam em classificações incorretas, usando ferramentas mais complexas, como a API Cloud Data Loss Prevention (API DLP).

Dados confidenciais em dados não estruturados de formato livre

Os dados confidenciais podem existir em dados não estruturados de formato livre, como relatórios de texto, gravações de áudio, fotografias ou recibos digitalizados. Esses tipos de conjuntos de dados dificultam muito a identificação dos dados confidenciais. No entanto, há muitas ferramentas disponíveis que podem facilitar essa tarefa.

  • Em documentos de texto livre, use um sistema de processamento de linguagem natural como a API Cloud Natural Language para identificar entidades, endereços de e-mail e outros dados confidenciais.
  • Em gravações de áudio, use um serviço de conversão de voz em texto como a API Cloud Speech e, em seguida, aplique o processador de linguagem natural.
  • Em imagens, use um serviço de detecção de texto como a API Cloud Vision para gerar um texto bruto e isolar o local dele dentro da imagem. A API Vision fornece as coordenadas do local de alguns itens-alvo dentro de imagens. Use essas informações, por exemplo, para mascarar todos os rostos das pessoas que estão em uma fila nas imagens antes de treinar um modelo de machine learning para estimar o tempo de espera médio dos clientes.
  • Em vídeos, analise cada vídeo em frames individuais e os trate como arquivos de imagem. Se preferir, use uma ferramenta de processamento de vídeo como a API Cloud Video Intelligence com a API Cloud Speech para processar o áudio.

Essas técnicas ainda estão sujeitas à revisão e aprovação da consultoria jurídica. Além disso, elas dependem da capacidade dos sistemas de processar textos livres, transcrever áudios, entender imagens e segmentar vídeos para identificar possíveis dados confidenciais. As APIs do Google listadas acima, bem como o Cloud DLP, são ferramentas poderosas que podem ser incorporadas ao canal de pré-processamento. No entanto, esses métodos automatizados não são perfeitos. Portanto, o ideal é também pensar em uma política de governança para lidar com todas as informações confidenciais que restarem após o refinamento.

Dados confidenciais em uma combinação de campos

Os dados confidenciais podem existir como uma combinação de campos ou se manifestar a partir de uma tendência em um campo protegido ao longo do tempo. Por exemplo, uma prática padrão para reduzir a probabilidade de identificar um usuário é desfocar os dois últimos dígitos do CEP, reduzindo-o. No entanto, uma combinação do CEP reduzido do endereço profissional com o CEP reduzido do endereço residencial pode ser o suficiente para identificar usuários com combinações incomuns de endereço profissional e residencial. Da mesma forma, uma tendência de endereços residenciais com CEP reduzido ao longo do tempo pode ser o suficiente para identificar um indivíduo que se mudou várias vezes.

Identificar se um conjunto de dados está verdadeiramente protegido contra um ataque de análise de frequência requer conhecimentos estatísticos. Qualquer cenário dependente de especialistas humanos apresenta desafios de escalonabilidade. Além disso, esses tipos de cenário podem exigir, paradoxalmente, que um mesmo engenheiro de dados refine e inspecione os dados brutos para encontrar possíveis problemas. Idealmente, deve-se criar maneiras automatizadas de identificar e quantificar esse risco, uma tarefa não abordada por este artigo.

Independentemente disso, você deve trabalhar com os consultores jurídicos e engenheiros de dados para avaliar o quanto sua empresa está exposta a riscos nesses cenários.

Dados confidenciais em conteúdo não estruturado

Às vezes, existem dados sensíveis em um conteúdo não estruturado devido a informações contextuais incorporadas. Por exemplo, uma transcrição de bate-papo pode incluir a frase "Liguei ontem do meu escritório. Tive que ir ao lobby do décimo oitavo andar, perto do Cafe Deluxe Espresso, porque no quarto andar o sinal de celular é ruim".

Com base no contexto e no escopo dos dados de treinamento, bem como no parecer da consultoria jurídica, talvez seja necessário filtrar alguns aspectos desse conteúdo. Devido à natureza desestruturada e ao grande conjunto de combinações complexas de frases que poderiam permitir inferências semelhantes, esse é um cenário difícil de abordar com ferramentas programáticas. No entanto, vale a pena pensar em um plano de governança mais rígido para o acesso a um conjunto inteiro de dados nãos estruturados.

Para fins de desenvolvimento de modelos, muitas vezes é eficaz disponibilizar uma pequena amostra dos dados que foram refinados e analisados por uma pessoa confiável. Assim, você poderá usar restrições de segurança e automação de software para processar o conjunto de dados inteiro, por meio do processo de treinamento do modelo de produção.

Como proteger dados confidenciais

Após identificar os dados confidenciais, determine como protegê-los.

Como remover dados confidenciais

Se seu projeto não requer o uso de informações específicas de usuários, as exclua do conjunto de dados antes de fornecê-lo aos engenheiros de dados que criarão o modelo de ML. No entanto, como discutido anteriormente, em alguns casos, a remoção dos dados confidenciais reduz significativamente o valor do conjunto de dados. Nesses casos, mascare os dados confidenciais usando uma ou mais das técnicas discutidas na seção "Como mascarar dados confidenciais".

Dependendo da estrutura do conjunto de dados, remover os dados confidenciais requer abordagens diferentes:

  • Quando os dados estão restritos a colunas específicas em conjuntos de dados estruturados, crie um tipo de visualização que não dê acesso às colunas em questão. Os engenheiros de dados não podem ver os dados, mas eles são "dinâmicos" e não precisam de intervenção humana para serem decodificados ao longo de um treinamento contínuo.
  • Quando os dados confidenciais fazem parte de conteúdo não estruturado, mas podem ser identificados com o uso de padrões conhecidos, é possível automaticamente removê-los e substituí-los por uma string genérica. É assim que o Cloud DLP soluciona esse desafio.
  • Quando há dados confidenciais em imagens, vídeos, áudio ou dados de formato livre não estruturados, é possível expandir a funcionalidade das ferramentas já implantadas para identificá-los e, em seguida, mascará-los ou removê-los.
  • Quando há dados confidenciais por conta de uma combinação de campos, e você já incorporou ferramentas automatizadas ou etapas de análise manual de dados para quantificar o risco apresentados por cada coluna, os engenheiros de dados podem tomar decisões embasadas sobre manter ou remover uma coluna relevante.

Como mascarar dados confidenciais

Quando não é possível remover os campos com dados confidenciais, talvez os engenheiros de dados possam treinar modelos eficazes com os dados em um formato mascarado. Se os engenheiros de dados determinarem que alguns ou todos os campos com dados confidenciais podem ser mascarados sem prejudicar o treinamento de ML, você poderá usar várias técnicas para ocultá-los.

  • A abordagem mais comum é usar uma criptografia de substituição, que inclui a substituição de todas as ocorrências de um identificador de texto simples pelo valor em hash e/ ou criptografado. Geralmente, é aceito como prática recomendada usar um hash criptográfico forte como o SHA-256 ou um algoritmo de criptografia forte como o AES-256 para armazenar todos os campos confidenciais. Lembre-se de que usar sal na criptografia não criará valores repetíveis e prejudicará o treinamento de ML.

  • A tokenização é uma técnica de mascaramento que substitui um valor fictício não relacionado por valores reais armazenados em cada campo confidencial. O mapeamento entre o valor fictício e o real é criptografado/colocado em hash em um banco de dados completamente diferente e supostamente mais seguro. É importante ressaltar que esse método funcionará nos conjuntos de dados de ML somente se o mesmo valor de token for reutilizado no lugar de valores idênticos. Nesse caso, essa técnica é semelhante ao uso de criptografia de substituição e é vulnerável a ataques de análise de frequência. A principal diferença é que a tokenização adiciona mais uma camada de proteção ao enviar os valores criptografados a um banco de dados separado.

  • Outro método para proteger dados com várias colunas é usar a análise de componentes principais (PCA, na sigla em inglês) ou outras técnicas de redução de dimensão para combinar vários recursos e realizar o treinamento de ML apenas nos vetores de PCA resultantes. Por exemplo, é possível condensar os dados de três campos diferentes, idade, fumante (representado por 1 ou 0) e peso, em uma única coluna de PCA que usa a seguinte equação: 1,5idade+30fumante+0,2*peso. Alguém que tem 20 anos de idade, é fumante e pesa 65 kg gera um valor de 73. Esse mesmo valor é gerado por alguém que tem 30 anos, não fuma e pesa 140 kg.

    Esse método é bastante consistente porque, mesmo que alguém consiga identificar indivíduos únicos de alguma forma, é difícil determinar sem a explicação da fórmula do vetor de PCA o que os torna únicos. No entanto, todo o processamento por ACP reduz a distribuição de dados e troca a precisão pela segurança.

Conforme mencionado anteriormente, às vezes é possível violar uma criptografia de substituição usando um conhecimento a priori da frequência em que identificadores diferentes ocorrem "naturalmente" e derivando inferências da verdadeira ocorrência de vários identificadores criptografados. Por exemplo, é possível usar a distribuição de nomes em um conjunto público de dados referentes a nomes de bebê para inferir o conjunto provável de nomes de um determinado identificador criptografado. Considerando que pessoas mal-intencionadas podem ter acesso ao conjunto de dados completo, a criptografia, a aplicação de hash e a tokenização são técnicas vulneráveis a ataques de análise de frequência. As técnicas de generalização e quantificação usam um mapeamento de muitos para um ao fazer a substituição. Além disso, a inferência correspondente é ligeiramente mais fraca, mas ainda assim é vulnerável a um ataque de análise de frequência. Como os conjuntos de dados de aprendizado de máquina têm muitas variáveis correspondentes, um ataque de análise de frequência pode usar probabilidades conjuntas de ocorrência, o que pode facilitar muito a quebra da criptografia.

Portanto, todos os métodos de mascaramento devem ser combinados com um mecanismo eficaz de auditoria e governança para restringir o acesso a todos os conjuntos de dados de aprendizado de máquina que podem conter dados confidenciais. Isso inclui conjuntos de dados em que todos os campos confidenciais foram suprimidos, criptografados, quantificados ou generalizados.

Simplificação de dados confidenciais

A simplificação é outra técnica usada para diminuir a precisão ou a granularidade dos dados para dificultar a identificação dos dados confidenciais no conjunto de dados, com benefícios comparáveis ao treinamento do modelo com dados pré-simplificados. Essa abordagem é adequada principalmente para os campos a seguir:

  • Locais: a densidade populacional varia em todo o planeta, e não há uma resposta fácil para o arredondamento de coordenadas de local. Por exemplo, valores decimais de latitude e longitude que podem ser arredondados com precisão de um único dígito (como -90,3, aproximadamente dentro de 10 km) talvez sejam suficientes para identificar residentes de áreas rurais com grandes fazendas. Quando o arredondamento não é suficiente para as coordenadas, é possível usar identificadores de local, como cidade, estado ou CEP. Esses identificadores abrangem áreas muito maiores e, portanto, dificultam a distinção de um único indivíduo. Escolha um tamanho de bucket suficientemente grande para ofuscar adequadamente as características únicas de qualquer linha.
  • CEP: nos EUA, o CEP têm um formato de 5+4 e identifica uma residência. No entanto, ele pode ser simplificado para incluir somente os três primeiros dígitos ("zip3"). Isso limita a capacidade de identificar um usuário específico, já que muitos outros usuários são incluídos no mesmo bucket. Novamente, é bom quantificar o risco porque conjuntos de dados extremamente grandes são vulneráveis aos ataques cada vez mais sofisticados.
  • Quantidades numéricas: é possível agrupar números por classes para dificultar a identificação de indivíduos. Por exemplo, a data exata de aniversário, muitas vezes, não é necessária, mas somente a década ou o mês que o usuário nasceu. Portanto, idade, aniversário e campos numéricos similares podem ser simplificados com a substituição de intervalos.
  • Endereços IP: muitas vezes, os endereços IP fazem parte do fluxo de trabalho do machine learning que inclui registros de aplicativos. Assim, frequentemente, eles são tratados como endereços físicos em termos de confidencialidade. Uma boa técnica de simplificação é zerar o último octeto de endereços IPv4 (os últimos 80 bits no caso de IPv6). Isso é semelhante a arredondar os valores de latitude/longitude ou reduzir um endereço a um CEP, trocando a precisão geográfica por mais proteção. Simplifique os endereços IP o mais cedo possível no pipeline. Talvez você consiga até modificar seu software de geração de registros para mascarar ou suprimir endereços IP antes de gravá-los em disco.

Como estabelecer uma política de governança

Se os conjuntos de dados tiverem qualquer quantidade de dados confidenciais, é recomendável entrar em contato com seus consultores jurídicos para estabelecer uma política de governança e elaborar a documentação sobre práticas recomendadas. Os detalhes da política ficam a seu critério. Há muitos recursos disponíveis, como o documento Práticas recomendadas para manutenção da conformidade do PCI DSS do PCI Security Standards Council e os requisitos de técnicas de segurança ISO/IEC 27001:2013. É possível consultá-los aqui. A lista a seguir também contém uma série de conceitos comuns a serem levados em consideração para estabelecer a estrutura da sua política:

  • Estabeleça um local seguro para a documentação de governança.
  • Exclua chaves de criptografia, funções de hash ou outras ferramentas da sua documentação.
  • Documente todas as fontes conhecidas de dados confidenciais de entrada.
  • Documente todos os locais conhecidos em que são armazenados dados confidenciais, além dos tipos de dados presentes. Inclua todas as medidas de mitigação para protegê-los.
  • Documente os locais conhecidos de dados confidenciais em que a aplicação das medidas de mitigação é difícil, inconsistente ou impossível. Isso inclui situações em que há a suspeita de possível ocorrência de ataques de análise de frequência.
  • Estabeleça um processo para verificar e identificar continuamente novas fontes de dados confidenciais.
  • Documente os papéis e, possivelmente, os nomes de funcionários individuais que receberam acesso temporário ou permanente a dados confidenciais. Inclua informações como o motivo do acesso.
  • Documente os processos usados pelos funcionários para solicitar acesso a dados confidenciais. Especifique onde eles podem acessar dados confidenciais, se, como e onde eles podem copiá-los e quaisquer outras restrições associadas ao acesso.
  • Estabeleça um processo para analisar regularmente quem tem acesso a que dados confidenciais e determinar se esse acesso ainda é necessário. Descreva o que fazer quando os funcionários deixam a empresa ou mudam de papel como parte do processo de desativação de usuários.
  • Estabeleça um processo para comunicar as políticas, aplicá-las e revisá-las regularmente.

A seguir