Use um site como o link para gerar chaves públicas e privadas do PGP. Peça à pessoa de RH que lhe envie sua chave pública. Com sua chave pública criptografando seu SSN, envie-o para a pessoa do RH, que poderá descriptografá-lo com sua chave privada.
Estou me candidatando a um emprego e eles me pediram para enviar meu SSN para eles por e-mail. Me chame de paranóico, mas isso não é bom para mim.
Então, estou procurando uma forma simples de criptografia de chave pública que uma pessoa de RH não técnica possa gerar uma chave pública, enviá-la para mim, criptografar meu SSN, enviá-lo e, em seguida, a pessoa de RH poderia descriptografar usando sua chave privada.
Talvez algo como este link , mas neste site, a criptografia não funciona sem a chave privada (base e módulo ... são provavelmente regenerados)
Use um site como o link para gerar chaves públicas e privadas do PGP. Peça à pessoa de RH que lhe envie sua chave pública. Com sua chave pública criptografando seu SSN, envie-o para a pessoa do RH, que poderá descriptografá-lo com sua chave privada.
What's the simplest way to perform public key encryption?
Mais simples para quem? Eu acho que você quer dizer para a pessoa do departamento de RH. O protocolo mais fácil que vejo que pode ser implementado para que eles precisem acessar o site duas vezes sem nenhuma ação adicional da parte deles.
Você precisaria criar um site não-estático em seu servidor pessoal, no qual tenha certeza razoável de que o provedor do servidor não está procurando no disco rígido do servidor.
Vamos ver os passos (os detalhes da implementação estão entrelaçados com o protocolo):
Gere dois URLs enigmáticos no seu servidor e envie o primeiro URL para a pessoa do RH (destinatário a partir de agora). Você pede ao destinatário para ligar para você assim que clicar no URL.
O destinatário clica no URL e várias coisas acontecem:
O servidor verifica se esse URL foi solicitado antes e mostrará um erro, se foi. Nesse caso, esse processo deve ser iniciado novamente.
Se esta for a primeira vez que o URL é chamado, o JavaScript gera um par de chaves (public + private).
A chave pública é enviada para o servidor e armazenada nela, e a chave privada é armazenada no localStorage no navegador de destinatários.
Além disso, o navegador de destinatários gera uma cadeia aleatória (chamada de token), armazena-a no localStorage e a envia ao servidor em que ela está armazenada.
Agora, o destinatário liga para você. Nesse momento, você pergunta se houve um erro. Se não houver, você precisará abrir a segunda URL criptografada gerada na etapa 1. Essa URL criptografada está vinculada às informações recebidas do destinatário na etapa 2 e contém um formulário no qual você pode digitar seu SSN.
O SSN é criptografado com a chave pública armazenada e o texto cifrado é publicado em um terceiro URL criptográfico baseado no token da etapa 2.
Você pede ao destinatário que clique no link novamente e receba uma página de erro, mas essa página de erro é ocultada rapidamente, pois há valores adicionais no localStorage, o que significa que é uma solicitação legítima. O navegador do destinatário faz o seguinte:
Ele busca o token do localStorage e consulta o texto cifrado.
Ele obtém a chave privada do localStorage e descriptografa o texto cifrado.
Exibe o SSN.
Este protocolo resolve o problema de que o SSN nunca é armazenado em texto não criptografado no servidor e, se alguém clicasse no link antes ou depois do destinatário pretendido, ele não veria nada. Embora isso possa ainda ser vulnerável à interceptação SSL por um host mal-intencionado e há pontos de entrada para engenharia social.
Você pode melhorar isso usando long-polling ou web sockets se não quiser que o destinatário clique na URL uma segunda vez.
Se você quer dizer mais simples para você, então você precisa comprometer a segurança ou ir pessoalmente ao escritório deles.
Você não deve usar o JSEncrypt para isso. Seria difícil integrá-lo aqui. Você deve optar por falsificar (fornece RSA e tudo ao seu redor) ou sjcl (fornece criptografia ElGamal por meio do KEM, que precisaria ser implementada junto com o AES-GCM; portanto, também não é realmente fácil).