como funciona a criptografia de pdf
Como funciona a proteção por senha de um PDF
Um PDF pode carregar duas senhas, e só uma delas criptografa alguma coisa. A outra é um pedido que se confia que os leitores honrem — e é exatamente por isso que ela pode ser retirada.
01
Uma chave, duas portas
Quando um PDF é criptografado, uma chave de criptografia de arquivo aleatória é gerada. Essa chave é o que protege o conteúdo de verdade, e ela nunca é guardada dentro do arquivo.
O que é guardado são duas cópias criptografadas dela, nas entradas `/O` e `/U` do dicionário de criptografia. A senha de usuário abre uma; a senha de proprietário abre a outra. Forneça qualquer uma das duas e você chega à mesma chave do arquivo — que é o detalhe crucial que quase ninguém conhece, e a fonte de quase toda a confusão sobre o que proteção significa aqui.
Os bits de permissão — pode imprimir, pode copiar, pode modificar — são guardados no dicionário de criptografia como um inteiro simples. Não são impostos por criptografia. São uma declaração de intenção que um leitor conforme concorda em respeitar.
02
Por que remover uma senha de proprietário não é quebrar nada
Quase todo PDF que restringe impressão ou cópia não tem senha de usuário nenhuma. O arquivo abre na hora em qualquer leitor porque a senha de usuário é a cadeia vazia — e a cadeia vazia deriva a chave do arquivo.
Então uma ferramenta que remove restrições não está atacando a criptografia. Ela descriptografa o arquivo exatamente como o seu leitor faz, com a senha vazia, e escreve uma cópia sem os sinalizadores de permissão ligados. O conteúdo nunca esteve escondido de quem o abrisse; o arquivo apenas pedia aos leitores que não permitissem certas ações.
Isso é uma decisão de projeto deliberada, e não uma falha, e a especificação é franca a respeito. Permissões existem para expressar intenção a software cooperativo. Qualquer programa disposto a ignorar os sinalizadores — e qualquer programa capaz de exibir a página pode, já que ele já descriptografou o conteúdo para renderizar — passa ao largo delas.
- Senha de usuário
- Criptografia de verdade. Sem ela os fluxos são texto cifrado e nada consegue renderizar o arquivo. Não é removível sem a senha.
- Senha de proprietário
- Define os sinalizadores de permissão. O conteúdo já é descriptografável com a senha de usuário vazia, então remover é uma reescrita, não um ataque.
- As duas definidas
- Você precisa da senha de usuário só para abrir. Uma vez aberto, as restrições são tão removíveis quanto sempre foram.
- Nenhuma
- Não há dicionário de criptografia. Não há nada a remover.
03
O que é criptografado de verdade, e como
Não o arquivo inteiro. A estrutura de objetos, a árvore de páginas e a tabela de referências cruzadas continuam legíveis — um leitor precisa navegar pelo documento antes de conseguir descriptografar qualquer coisa. O que é criptografado é o conteúdo: os dados dos fluxos e as cadeias.
Cada objeto ganha a própria chave, derivada de aplicar um resumo à chave do arquivo junto com o número e a geração daquele objeto. É por isso que duas imagens idênticas no mesmo arquivo criptografam para bytes diferentes, e é por isso também que um objeto criptografado não pode ser renumerado — o número faz parte da chave dele. Ferramentas de juntar e dividir precisam descriptografar antes de copiar qualquer coisa.
04
Os algoritmos, e quais ainda significam alguma coisa
O gestor de segurança foi revisado várias vezes, e a versão que um arquivo carrega determina quanto vale a senha dele.
- RC4 de 40 bits (PDF 1.1)
- Praticamente nenhuma proteção. O espaço de chaves é pequeno o bastante para ser varrido inteiro em hardware comum.
- RC4 de 128 bits (PDF 1.4)
- Chave mais longa, mas o RC4 já não é considerado sólido e a derivação de chave são poucas rodadas de MD5 — barato de atacar chutando senhas.
- AES-128 (PDF 1.6)
- Uma cifra sólida. A fraqueza que resta é a derivação de chave rápida.
- AES-256, revisão 6 (PDF 2.0)
- O padrão atual. Derivação de chave deliberadamente cara, então chutar senhas é lento. Aqui uma senha forte é forte de verdade.
05
O que isso significa para como você usa
Se o documento não pode ser lido pela pessoa errada, defina uma senha de usuário, use um nível de criptografia moderno e mande a senha por um canal diferente do documento. Uma senha enviada por e-mail no mesmo thread do arquivo não protege de nada.
Se você só quer desencorajar cópia ou impressão casual, uma senha de proprietário faz isso e nada além. É um aviso de cortesia com força real entre software cooperativo e nenhuma força fora disso. Tratar aquilo como segurança é o erro que vale evitar — quem estiver motivado o bastante para querer o texto pode selecioná-lo num leitor que ignore os sinalizadores, ou rodar OCR sobre uma captura de tela.
E quando um documento de fato não pode ser editado, em vez de não poder ser lido, achatar costuma ser o instrumento melhor. Ele funde as anotações e os campos de formulário na página, então não sobra nada com que interagir, e não depende de ninguém honrar um sinalizador.