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.