A segurança na plataforma Java é implementada em várias bibliotecas.
Java Cryptography Extension (JCE)
Java Secure Sockets Extension (JSSE)
Java Authentication and Authorization Service (JAAS)
A JCE é a biblioteca de criptografia que contém as implementações de algoritmos criptográficos: Cifras simétricas (chave secreta), Cifras assimétricas (chave pública e privada), Resumos.
Os pacotes principais são: java.security , javax.crypto.
Suporta vários algoritmos através de Providers. No código, praticamente todos os objectos JCE são criados com: getInstance("algorithm name", "provider name"), permitindo à aplicação pedir uma implementação de um algoritmo.
Os principais objectos JCE são: Cipher (métodos: init, update, doFinal), Key, KeyGenerator, KeyPair, PublicKey, PrivateKey, KeyPairGenerator, MessageDigest. Existem outros objectos que realizam operações compostas: Signature, SignedObject, SealedObject, CipherStream.
Os Java Security Providers são bibliotecas que implementam algoritmos de criptografia. O Sun Provider incluído com a Java Standard Edition implementa vários algoritmos: AES, SHA1, entre outros. Outro exemplo de provider é o Bouncy Castle que contém implementações alternativas, incluindo o algoritmo RSA.
A JSSE é a biblioteca de sockets que abstraem a utilização de criptografia na comunicação para garantir integridade, cifra e autenticação. É utilizada sobretudo para comunicação na Internet, constituindo uma camada adicional na pilha de protocolos de rede, entre o nível de transporte e o nível da aplicação.
O Secure Sockets Layer (SSL), actualmente designado por Transport Layer Security (TLS), é utilizado normalmente no HTTPS (HTTP sobre SSL). É uma forma simples de criar canais seguros entre cliente e servidor, com autenticação do servidor, sendo a autenticação do cliente é opcional.
Os pacotes são: javax.net.ssl , javax.security.net.
A JAAS tem uma arquitectura Pluggable para autenticação, independente de tecnologias específicas. Permite o controlo de acessos dos utilizadores a recursos (autorização) e tem segurança centrada no utilizador (user-centric). A JAAS está integrada com Java Naming and Directory Interface (JNDI), Windows NT, Solaris Login, Kerberos.
O pacote principal é: javax.security.auth
© Docentes de Sistemas Distribuídos, DEI, IST, UL