Fiz uma aplicação que assina um documento, gerar a assinatura e a chave publica.
Guardo a chave publica e a assinatura e toda vez que o usuário realiza download do documento verifico que ele não foi alterado.
Mas como saber quem foi que assinou o documento? tenho esta informação na assinatura ou na chave publica?
Ou não tenho esta informação?
Mas a principio vou registar para o usuário a sua chave publica, assim quando ele realizar a assinatura uso a sua chave publica cadastrada para validar o documento e por consequencia valido se foi ele que assinou o documento.
Para isto que serve Certificados Digitais. O certificado além da chave pública, contém informações do “dono” do certificado.
Você pode usar certificados “oficiais” (emitidos por Certificate Authority - CA) ou criar sua própria infra-estrutura (chamado do PKI).
A sua idéia de criar uma “cadastro” de usuário e associar a chave é o principio de uma PKI. O certificado é só um formato padrão para armazenamento e distribuição de chave pública.
Entendi, então o caminho que estou fazendo esta correto.
Mas se o certificado de mau usuário estiver registrado em um CA como faço para verificar neste CA, ele tem algum tipo de webservice ou algo assim para validação?
[quote=Andre.flu]Entendi, então o caminho que estou fazendo esta correto.
Mas se o certificado de mau usuário estiver registrado em um CA como faço para verificar neste CA, ele tem algum tipo de webservice ou algo assim para validação?
[/quote]
O que existe em uma CA é o conceito de “revocation list”. Não sei se as CAs mantém algum serviço on-line para consulta disto e se isto é “aberto”. Teria que entrar em contato com alguma CA (ou verificar em site) se elas mantém isto. O problema é que são várias CAs…
Mas então a informação de quem esta fazendo esta no certificado e não na chave publica, esta informação só terei no ato da assinatura e não depois de assinado.
Para ter depois de assinado só associando na minha aplicação a chave publica ao usuário.
Mas então a informação de quem esta fazendo esta no certificado e não na chave publica, esta informação só terei no ato da assinatura e não depois de assinado.
Para ter depois de assinado só associando na minha aplicação a chave publica ao usuário.
Obrigado pelos esclarecimentos.[/quote]
Eu sei que alguns formatos de assinatura (tipo XML Signature), além da própria assinatura, “carregam” dados sobre o “certificado que assinou”. Em alguns casos o ideal é até “anexar” o certificado a assinatura. O programa de verificação é que teria que ter a capaciadade de verificar se o certificado é válido (data, emitente, emissor, etc). Isto pode ser feito usando “certificados root”, CRL (Certificate Revocation List), etc.