Assinatura de Applet

O modelo de segurança implementado pela plataforma Java, na sua proposição inicial, é centrada sobre o conceito de sandbox (caixa de areia). De acordo com o modelo sandbox, um código remoto (applet) não é confiável e pode acessar recursos limitados, fornecidos dentro do sandbox, uma área do Servidor Web dedicado àquele applet. A idéia de sandbox foi desenvolvida no sentido de garantir que mesmo que um usuário carregue um applet malicioso, esse não pode danificar a máquina local, por exemplo, apagar um arquivo do seu disco local.Porém existem applets que são de confiança e necessitam sair do sandbox para fornecer um determinado serviço. Existem varias maneiras para resolver este problema, uma delas é a assinatura do applet. O JDK 1.1.x introduziu o conceito de applet assinado. Neste modelo estendido, um applet assinado digitalmente é tratado como código local confiável (aplicação standalone) se a assinatura é reconhecida como confiável pelo sistema que recebeu o applet. Entretanto no JDK 1.2.x, o applet assinado terá liberdades conforme especificado por um arquivo de política (policy file). Utilizou-se neste trabalho para o processo de assinatura e verificação do Applet Cliente a versão JDK 1.2.1.

Assinatura digital é utilizada quando se necessita da certeza da origem de uma mensagem como se fosse uma assinatura escrita no papel. Para assinar um applet, o desenvolvedor empacota todo o código Java e arquivos relacionados dentro de um arquivo JAR (Java ARchive), que é um formato de arquivo de compactação de propósito geral, usado para compactar os componentes de uma aplicação Java. A plataforma Java assina e verifica arquivos JAR usando um par de chaves (chave pública e chave privada). A chave privada funciona como uma “caneta” eletrônica que assina o arquivo (ver Figura 1). Como o próprio nome sugere, esta chave só é conhecida pelo assinante do applet. O processo de verificação da assinatura pode ser feito por qualquer pessoa que possua a chave pública correspondente a chave que assinou o arquivo.

postapplet1.jpg

Figura 1 – Processo de assinatura

A chave pública é distribuída dentro de um certificado que é uma declaração assinada por uma entidade idônea, chamada Autoridade de Certificação (Certification Authority- CA), que confirma que a chave pública que está no mesmo é confiável. Existem várias Autoridades de Certificação, por exemplo, a VeriSign, Thawte, Entrust e Certisign (empresa brasileira). Toda CA requer um emissor para validar a sua identidade, até mesmo a de mais alto nível. Para estes casos, existem os certificados auto-assinados (self-signed), onde o emissor do certificado é o próprio sujeito.Os browsers Netscape e Internet Explorer (IE) não usam a codificação de assinatura do JDK. Existem basicamente três tipos diferentes de assinatura de applets, para o IE, para o Netscape, e para o plug-in Java da Sun. Este último fornece aos browsers citados acima a capacidade de utilizar applets assinados através da Java Security API do kit JDK.Algumas ferramentas necessárias para a assinatura, seguindo o padrão da Sun, encontram-se no JDK 1.2, são elas:

  • Jar (JAR Creation Tool)

  • Keytool (Key and Certificate Management Tool)

  • Jarsigner (JAR Signing and Verification Tool)

  • PolicyTool (Policy File Creation and Management Tool)

Para uma melhor compreensão, encontra-se descritos a seguir os passos utilizados no processo de assinatura e verificação do AppletClient.

Quais são os passos para assinar um Applet?

Os passos para assinar um Applet estão representados na Figura 2:

postapplet2.jpg

Figura 2 – Diagrama de blocos do processo de assinatura por parte do desenvolvedor

1. Criar o arquivo .jar

Deve-se criar um arquivo JAR contendo o(s) arquivo(s) .class da Applet e todas as classes que serão utilizadas e que farão uso de recursos fora do sandbox conforme indicado no item 1 da Figura 2. É importante ressaltar que a ferramenta jarsigner somente assinará arquivos JAR criados pelo JDK, ou arquivos ZIP.Uma ferramenta utilizada para criação deste arquivo é o jar do JDK. Para criar um JAR contendo o arquivo MeuApplet.class, com o nome MeuJar.jar basta fazer:jar cvf MeuJar.jar MeuApplet.class

Você também pode utilizar o Eclipse ou MyEclipse para criar arquivos tipo .jar, onde o processo é bem simples: basta clicar com o botão direito do mouse sobre o arquivo que deseja empacotar em .jar e escolher a opção exportar.

2. Gerar o par de chaves (pública e privada) Este passo deve ser executado se ainda não houver um par de chaves a ser usado no processo de assinatura (ver item 2 da Figura 2). Para criar o par de chaves utiliza-se a ferramenta keytool do JDK. Simplificando, você pode fazer o seguinte:

keytool -genkey -dname “cn=d377, ou=desenvolvimento, o=FelipeThomas, l=Fortaleza, c=BR” -alias key -keystore C:\Felipe -storepass 123456 -validity 180

onde:

dname: Nome da entidade que gerará o par de chaves. Siglas:

CN = nome comum

OU = unidade organizacional (departamento, divisão)

O = nome da organização

L = nome da localidade (cidade)

S = estado, C = código do país.

Keypass: Senha utilizada para a proteção da chave no keystore.

Validity: Número de dias que o certificado deve ser válido.

keystore: local da sua máquina onde as chaves serão armazenadas.

Storepass: Senha protetora do keystore.

Quando as chaves são geradas (comando –genkey) um certificado auto-assinado é criado. Caso deseje-se trocar este certificado por um certificado reconhecido por uma empresa confiável, deve-se fazer um pedido de certificado de assinatura (CSR CerticateSigning Request), e o resultado desta solicitação deve ser importado para o keystore.

3. Assinar o arquivo JAR

Deve-se assinar o arquivo JAR com a chave privada, para isto utiliza-se a ferramenta jarsigner do JDK, conforme esquematizado no item 3 da Figura 2. Antes de continuar certifique-se de que o arquivo que você assinará, esteja no mesmo diretório do arquivo que foi criado com as chaves. Isto facilitará seu trabalho. Para tal feito pode-se fazer o seguinte:

jarsigner -keystore C:\Felipe -storepass 123456 –signedjar NomeDoJarDepoisDeAssinado.jar NomeDoJarAntesDeAssinar.jar key

onde:

keystore: URL do keystore onde a chave está armazenada.

storepass: Senha protetora do keystore.

signedjar: Especifica o nome e o local de armazenamento do arquivo JAR assinado. Por default, o arquivo assinado irá sobrescrever o não assinado.

Estes passos são suficientes para que você consiga “liberar” teu applet para funcionar seguramente no seu browser. Alguns browsers não necessitam destas assinaturas, mas outras requerem. Sendo assim, é importante saber como proceder quando precisar assinar um applet.

Espero mais uma vez ter colaborado com seus conhecimento e auxiliado nas suas necessidades.

Obrigado e até o próximo.

You can leave a response, or trackback from your own site.

One Response to “Assinatura de Applet”

  1. Excelente artigo, Felipe! Parabéns!!!

Leave a Reply

You must be logged in to post a comment.

Subscribe to RSS Feed Me siga no Twitter!