Segredos do Windows Codificação não é criptografia

Raymond Chen

Informações sobre o uso menu Iniciar é codificado — uma palavra que eu selecionar cuidadosamente assim como não para enganar — no registro. Embora a codificação seja sobre como alterar a forma de dados, criptografia sugere que a recuperação de texto sem formatação destina a ser difícil: pois não o é. Criptografia também sugere que o algoritmo de codificação deve para ser resistentes a ataques: pois não o é.

As informações de uso são codificadas para que ele não ativar durante as pesquisas F3 por meio do Registro para SomeAppName.exe. Essas pesquisas acontecer quando pessoas executarem a escrita à mão "uninstall verificação"ferramentas que scour de unidade de disco rígido e no registro. Se as informações de uso foram registradas em texto sem formatação, essas ferramentas poderiam encontrar a entrada no banco de dados de uso e, em seguida, desinstalar uma suposta relatório como incompleta. No entanto, desinstalar programas não deve excluir essa chave do Registro. Eles não criá-la;eles não é necessário excluí-lo. Na verdade, as informações de uso deve outlive a desinstalação. Dessa forma, se um usuário desinstala e, em seguida, Reinstala um programa, iniciar menu pode dizer, "Bem-vindo fazer! Aqui está o ponto high-ranking no iniciar menu. "

Codificação também serve como um sinal para programadores: "Não é esperado cair com isso." Se os programadores deseja cair com ele, eles precisam aplicar o algoritmo de decodificação (extremamente simples, mas ainda não-nulo) antes de prosseguir. Isso faz atualizações, exclusões e outros tipos de mexam esses valores do Registro impossíveis fazer inadvertidamente ao redor. Quando você inicia pounding fora um algoritmo de decodificação de dados em uma chave do Registro não documentadas, você obviamente definiu sobre como fazer isso intencionalmente. Espera-se em algum momento uma voz de cabeça informa, "Talvez eu estou não deve estar fazendo isso."

Em outras palavras, a codificação serve como um "não Trespassing"sinal. Ela não impede que pessoas inserir sua propriedade, mas torna limpa que sua presença é indesejável e remove suas "Mas não sei!"defesa.

A codificação tem nada a fazer com segurança. As informações são armazenadas na seção do usuário, portanto, acesso já está restrito aos usuário (e os administradores). Sem informações confidenciais, como senhas, obtém armazenadas lá. A codificação é apenas uma bomba de velocidade para dar aos desenvolvedores de aplicativos que tentam violar os valores do Registro, se insuficiente ignorância ou descuido, outra oportunidade de perceber que as informações não não realmente para eles.

Obviamente, saliências velocidade não parar os programadores de escrever as funções para codificar e decodificar os dados mesmo assim. Com um exemplo descobri, se um usuário reconfigurado o programa, em seguida, o programa seria por sua vez manipular os dados de uso — e isso não era parte de uma desinstalação;ele aconteceu durante o tempo de execução. Em outras palavras, os programadores intencionalmente propus a manipular os dados de uso e assim alterar o posicionamento do programa no menu Iniciar.

Descobrir o algoritmo de decodificação é causar dificilmente para bragging — não é tão difícil fazer. E Além disso, o algoritmo de decodificação pode não ser que você engenharia reversa de qualquer forma, como também em uso pode ser outra chave de registro (igualmente não documentado) para alterar o algoritmo de codificação. O programa que mencionei no exemplo não leva este ruga extra em conta. Se a codificação não foi definida como seu valor padrão, a ferramenta encontrou dados de uso que é percebida como corrompido. Ainda Felizmente o código não tenta "reparar"que!

Um dos critérios para a codificação é que ele deve ser extremamente rápida assim como não para diminuir as decisões sobre o que acontece no menu Iniciar. Você não quer que 80 por cento do tempo de inicialização do menu Iniciar gasto em alguma função de criptografia.

O algoritmo de codificação permaneceu inalterado desde que foi introduzido no Windows 2000, para que as informações devem ser transportadas ao atualizar para Windows XP e Windows Vista.

No entanto, Os desenvolvedores de menu Iniciar do Windows 7 alterar temporariamente o algoritmo de codificação. Isso coincidiu com decisões para alterar o formato das informações de uso do aplicativo e não para transportar através de antigo informações de uso de versões anteriores do Windows. Alterando o algoritmo codificação feito antigo partir novos dados mais fácil fazer a distinção. Essa alteração temporária disparado um flurry de misinterpretations entre Windows watchers, que pressupõe-se ao ver uma nova codificação que os desenvolvedores do menu Iniciar foram "corrigir"fraco "criptografia"com uma "criptografia" fraca diferente — exceto isso nunca foi criptografia em primeiro lugar. Com o lançamento final, o algoritmo de codificação original estará novamente no local. Afinal, a codificação original é o que executa o contrato implícito social.

Raymond Chen's Web site, The Old New Thing, and identically titled book (Addison-Wesley 2007) deal with Windows history and Win32 programming. Às vezes, ele codifica informações através da conversão para o alemão (incorretamente).