Segurança Básica em Java No início … A questão que introduziu a noção de segurança em Java, era o modelo de distribuição de programas Java: “carregar na rede um código de algum lugar e executá-lo em outro, dentro de um ambiente computacional”. No início … O modelo de segurança para a Internet ! Premissa básica A segurança Java foi originalmente e fundamentalmente projetada para proteger as informações (em arquivos) em um computador, … Premissa básica …para que essas não fossem acessadas ou modificadas (como a introdução de um vírus ou um cavalo de Tróia), enquanto permitindo que o programa Java fosse executado. O que é um programa seguro De uma forma genérica, diz-se que um programa Java é seguro ou possui segurança, quando esse possui as seguintes características: O que é um programa seguro Segurança quanto a programas maliciosos: isto é, os não são permitidos a programas, causar danos aos dados numa máquina e a seu usuário. O que é um programa seguro Não intrusivo: programas não devem poder obter informações privadas do computador onde ele é executado ou de outras máquinas na sua rede. Outras questões Mas, as considerações de segurança em uma rede privada não são as mesmas que a da Internet. O que é um programa seguro Autenticação: a identificação das partes envolvidas em um programa é verificada. O que é um programa seguro Criptografia: dados enviados e recebidos são cifrados. O que é um programa seguro Auditoria: são mantidos registros de “log” para as operações sensíveis ou importantes. Bem-definido: uma definição de segurança bem definida é seguida. O que é um programa seguro Verificação: regras de operações devem ser especificadas e verificadas. Agir corretamente: programas devem agir de acordo com as suas definições. Não se desviando delas. O que é um programa seguro Certificação: programas devem possuir certificados que indicam que certas medidas de segurança estão sendo tomadas. Idéia do modelo de segurança A abstração de uma “caixa de areia”. Fornecer um ambiente seguro para que uma criança possa brincar. Idéia do modelo de segurança Os brinquedos, na caixa de areia, são os recursos de lazer que a criança tem em mãos. A criança não pode brincar com brinquedos fora da caixa de areia. Idéia do modelo de segurança A caixa de areia é responsável por proteger diversos brinquedos fora da caixa e o faz em diversos níveis. Programas Java Aplicativos ou Applets Arquivos de classe locais Arquivos de classe remotos Arquivos de classe assinados Arquivos de classe de APIs A execução de um programa Java seguro Elementos da Plataforma Java: Carregador de Classes. Verificador de Byte-Codes. Gerenciador de Segurança. Controlador de acesso. Pacote de segurança. Banco de dados de Chaves Técnicas de Execução Segura JavaRunner Launcher Launcher Requer o uso de uma classe especial, a classe Launcher no pacote sun.misc.Launcher Para executar um aplicativo sob controle do Launcher: >java sun.misc.Launcher Cat/etc/passwd JavaRunner Executa uma aplicação sob a proteção de uma outra aplicação que chamamos de JavaRunner. Estabelece os parâmetros para a caixa de areia Java (o carregador de classe, o gerenciador de segurança) antes de chamar a aplicação que será executada sob sua proteção. JavaRunners Appletviewer que executa applets, localmente. O navegador que executa applets advindas remotamente. A plataforma de agentes móveis que cria o ambiente de execução para os agentes. Analogia Caixa de Areia é o ambiente de execução restrito. Criança é o programa Java (um arquivo). Brinquedos na caixa de areia são os elementos da plataforma Java usados pelo programa. Brinquedos fora da caixa de areia são recursos que a criança não pode usar. Quando se permite que um programa seja colocado em seu computador, é desejado um ambiente onde o programa possa atuar, porém, restringindo a área de atuação dentro de determinados limites. Idéia do modelo de segurança Pode-se permitir que o programa tenha acesso a determinados recursos de um sistema, mas com a certeza de que o programa esteja restrito a certos recursos, dentro do ambiente do computador.