Quem assinou digitamente?[resolvido]

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?

Obrigado.

Continuo com a dúvida?

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.

É por ai o caminho?

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…

É verdade.

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=Andre.flu]É verdade.

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.