= ''' Informações Técnicas sobre Applet - Breve Explicação ''' =
{{{
#!html
}}}
= ''IMPORTANTE'' = #novas_caracteristicas
{{{
#!html
}}}
Baixando o módulo do Jabberit Messenger na parte de Downloads e instalando no Expresso, o applet já está assinado com os dados da CELEPAR . Caso queira assinar com os dados da sua empresa, leia e execute os procedimentos abaixo.
{{{
#!html
}}}
== ''' ASSINATURA E VERIFICAÇÃO ''' ==
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.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.
A habilidade de assinar e verificar arquivos são uma importante parte da arquitetura de segurança da plataforma Java. Uma vez que o browser verificou que uma applet possui uma origem confiável, pode-se relaxar as políticas de segurança permitindo que a applet realize operações que anteriormente não seriam permitidas. Na versão 1.1 de Java, uma applet considerada confiável (ou seja, assinada) possuía os mesmos privilégios que uma aplicação local Java. A partir da versão 1.2, uma applet assinada possui apenas a liberdade definida no arquivo policy.
== ''' HASH E O ARQUIVO ASSINADO ''' ==
Quando um arquivo JAR é assinado, para cada arquivo dentro do JAR é criada uma entrada com o seu hash no arquivo manifest. Por exemplo:
Name: test/classes/ClassOne.class
SHA1-Digest: TD1GZt8G11dXY2p4olSZPc5Rj64=
As entradas hash são como resumos dos arquivos no momento que eles foram assinados. O resumo de um arquivo só irá mudar caso o arquivo que o originou se modifique. Quando um arquivo JAR é assinado automaticamente é gerado um arquivo de assinaturas .SF. A seguir está um exemplo:
Signature-Version: 1.0
SHA1-Digest-Manifest: h1yS+K9T7DyHtZrtI+LxvgqaMYM=
Created-By: SignatureFile JDK 1.2
Name: test/classes/ClassOne.class
SHA1-Digest: fcav7ShIG6i86xPepmitOVo4vWY=
Name: test/classes/ClassTwo.class
SHA1-Digest: xrQem9snnPhLySDiZyclMlsFdtM=
Name: test/images/ImageOne.gif
SHA1-Digest: kdHbE7kL9ZHLgK7akHttYV4XIa0=
Name: test/images/ImageTwo.gif
SHA1-Digest: mF0D5zpk68R4oaxEqoS9Q7nhm60=
Como se pode ver o arquivo de assinaturas possui entradas similares as existentes no manifest. Contudo, as entradas hash do arquivo manifest são geradas a partir dos próprios arquivos, enquanto que as do arquivo de assinaturas são criadas a partir das entradas existentes no manifest. Além disso, a primeira entrada existente entre as assinaturas é um hash de todo o arquivo de manifest.
Assim, ao se verificar a assinatura de um arquivo, primeiro se recalcula os resumos de todos os seus arquivos e se compara com os existentes no arquivo de manifest. A seguir são recalculados os resumos de todas as entradas do manifest e comparados com os resumos existentes no arquivo de assinaturas.
== ''' Como Assinar um Applet ''' ==
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 cujas opções são:
Keytool -genkey {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} {-dname dname} {-keypass keypass} {-validity valDays} {-storetype storetype} {-keystore keystore} {-storepass storepass} {-v} {-Jjavaoption}
* alias - Nome pelo qual as chaves serão reconhecidas e armazenadas no keystore (banco de chaves). Ex: mykey
* keyalg - Algoritmo de criptografia utilizado para a criação das chaves. Este argumento é opcional, se nada for especificado o algoritmo utilizado será o DSA
* keysize - Tamanho da chave que será gerada. O algoritmo DSA suporta tamanhos de 512 a 1024 bits, sendo o tamanho necessariamente múltiplo de 64. Para qualquer algoritmo o tamanho default é 1024.
* sigalg - Algoritmo de criptografia utilizado para assinar o JAR. Este argumento é opcional, se nada for especificado o algoritmo utilizado será o DSA.
* dname - Nome da entidade que gerará o par de chaves Ex:
cn="Expresso Livre", o="CELEPAR", ou="DISER", c="BR"
* keypass - Senha utilizada para a proteção da chave no keystore.
* validity - Número de dias que o certificado deve ser válido.
* storetype - Permite definir a forma de armazenamento e o formato dos dados do keystore. Por default o formato é JKS (tipo proprietário da implementação de keystore fornecido pela Sun).
* keystore - Keystore onde as chaves serão armazenadas. Se nada for especificado serão armazenadas no User.Home\.keystore (em geral c:\windows\.keystore), se não existir este será criado.
* storepass - Senha protetora do keystore.
* v - Mostra o certificado em forma legível
''' Exemplo : '''
#keytool -genkey -dname "cn=,ou=,o=,c=" -alias -keystore -storepass -validity 1460
E para assinar um applet, utilize o comando jarsigner.
''' Exemplo : '''
#jarsigner -keystore -storepass .
== ''' Download do Módulo com Applets Não Assinado ''' ==
Para baixar este módulo sem estar assinado [http://trac.expressolivre.org/attachment/wiki/jabberit/applet/jabberit_messenger_applet_NAO_assinado.zip clique aqui].
== ''' Arquivos que devem ser Assinados ''' ==
* applet.jar
* plugins/filetransfer.jar
* plugins/xhtml.jar
----
- Página inicial do [wiki:jabberit_messenger Wiki Jabberit Messenger]
- Página Anterior [wiki:jabberit_messenger Jabberit Messenger]