Armazenar chaves PGP no Active Directory / Exchange?

2

Estou procurando implementar um plug-in transparente para o Outlook que não precisaria de nenhuma configuração. Eu estava pensando em talvez usar o Active Directory / Exchange para armazenar a chave pública de cada usuário e ser capaz de recuperá-lo da mesma maneira que o Outlook recupera as informações do usuário.

Eu gostaria de evitar depender de um servidor de chaves externas ou ter que adicionar mais infraestrutura para veicular chaves.

É possível armazenar chaves PGP dessa maneira? Qual seria a maneira mais fácil de armazená-los para recuperá-los de um plug-in do Outlook?

    
por Aki 03.07.2014 / 05:24

1 resposta

5

Sim, é possível. Mas a única maneira boa que posso pensar em fazê-lo usando o Active Directory é modificar o esquema do AD. Modificar o esquema do AD é uma daquelas coisas que os administradores evitam fazer porque, basicamente, é irreversível (por "irreversível", sem uma restauração autoritativa) e dois, fazendo alterações irreversíveis em um Active Directory de produção, assustam muitos administradores. Se você estivesse criando um aplicativo ou plug-in, teria que considerar que seu software não seria usado por tantas organizações se fosse necessário modificar o esquema do AD.

Mas modificar o esquema do AD não é ruim em si, desde que tenhamos uma boa razão para fazê-lo. Instalar o Microsoft Exchange, por exemplo, estende o esquema do AD. Muito.

Sabemos que o Active Directory é bastante capaz e adequado para armazenar esse tipo de dados (as chaves públicas do usuário), porque ele já armazena as chaves públicas X509 para os usuários, se você usar uma PKI. Mas eu definitivamente não tentaria comandar um desses atributos existentes como X509-Cert ou User-Cert ou thumbnailPhoto para colocar seus próprios dados personalizados nele. Isso causaria problemas se a sua organização quisesse usar uma PKI ou outros produtos que supunham que esses atributos do AD continham o tipo real de dados que eles foram projetados para armazenar.

Existem muitos atributos de usuário existentes nos quais você pode inserir seus dados se os dados forem uma string muito pequena ... description, employeeID , telexNumber , etc. Mas não há muitos atributos adequados para armazenar um kilobyte ou mais de dados. E esses geralmente já são falados por.

No entanto, você pode dar uma olhada aqui e ver se você pode encontrar um atributo que já existe em cada conta de usuário que pode ser capaz de manter chaves públicas PGP e não interferir com outras aplicações:

Provavelmente melhor que você crie o seu próprio.

Primeiro, abra o Editor do Registro no seu mestre de esquema e edite:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
    Schema Update Allowed (DWORD) 0x00000001

Você não precisa reiniciar nem reiniciar o AD DS.

Em seguida, registre o snap-in de gerenciamento de esquema do AD:

regsvr32 schmmgmt.dll

Abra o MMC e adicione o snap-in do esquema do Active Directory.

VocêprecisaatribuirumOIDdeobjetoX500aonovoatributobaseadonoOIDdoseudomínio.VocêpodeusaressescriptparagerarumnovoX500OIDparaseunovoatributodeesquema:

  • link

Observequeéumaboaideiaprefixartodososseusatributosrelacionadoscomumprefixoidêntico,como"MyApp". Por exemplo, todos os atributos específicos do Active Directory têm um prefixo como "msDS" e os atributos específicos da Replicação DFS terão um prefixo "msDFSR", etc. Todos os futuros atributos adicionados relevantes para esse software usarão o mesmo prefixo e o mesmo prefixo. mesmo prefixo OID.

Você provavelmente não deseja indexar esse atributo, pois a pesquisa por um usuário que tenha uma chave pública específica de PGP não parece uma pesquisa comum para mim. (Você só indexa as coisas se quiser usá-las como termos de pesquisa.) Ou talvez queira replicar para o catálogo global se tiver vários domínios em sua floresta. Esteja ciente de que isso pode fazer com que seus índices e tráfego de replicação de GC aumentem substancialmente se você tiver um domínio grande.

Em seguida, você deseja atribuir o novo atributo à classe Person:

Agora, se você verificar a guia Editor de atributos em seus usuários, verá que eles têm um novo atributo para você editar e consultar.

Algumas tarefas de acompanhamento para você:

  • Edite a segurança padrão no atributo para que apenas os proprietários da conta (e talvez administradores de domínio) possam atualizar o atributo em sua própria conta e em mais ninguém. Dessa forma, você pode fazer com que seu plug-in do Outlook carregue automaticamente a chave pública PGP para o usuário, supondo que o cliente Outlook esteja sendo executado no contexto de segurança.

  • Use uma sintaxe diferente para o seu atributo. A sintaxe Unicode String que eu usei no meu exemplo é uma porcaria de algo como uma chave PGP, mas eu estava com preguiça de voltar e repetir tudo só para você. :)

por 03.07.2014 / 23:35