7 research outputs found

    Lightweight verification of control flow policies on Java bytecode

    Get PDF
    This paper presents the enforcement of control flow policies for Java bytecode devoted to open and constrained devices. On-device enforcement of security policies mostly relies on run-time monitoring or inline checking code, which is not appropriate for strongly constrained devices such as mobile phones and smart-cards. We present a proof-carrying code approach with on-device lightweight verification of control flow policies statically at loading- time. Our approach is suitable for evolving, open and constrained Java-based systems as it is compositional, to avoid re-verification of already verified bytecode upon loading of new bytecode, and it is regressive, to cleanly support bytecode unloading.Ce rapport présente l'application de politiques de flot de contrôle sur du bytecode Java pour les petits systèmes ouverts. La plupart du temps, l'application de ce type de politiques de sécurité est réalisée par l'observation du système ou l'insertion de code pour assuré en assurer le respect, ce qui n'est pas approprié pour les petits systèmes fortement contraints tels que les téléphones mobiles ou les cartes à puce. Nous présentons une méthode basée sur le proof-carrying code pour faire appliquer ce type de politiques avec une vérification embarquée réalisée au chargement. Notre approche est bien adaptée aux petits systèmes ouverts évolutifs car elle est compositionnelle, pour éviter la revérification du code déjà chargé, et régressive, afin de traiter proprement le déchargement de code déjà installé et vérifié

    Lightweight verification of control flow policies on Java bytecode

    Get PDF
    This paper presents the enforcement of control flow policies for Java bytecode devoted to open and constrained devices. On-device enforcement of security policies mostly relies on run-time monitoring or inline checking code, which is not appropriate for strongly constrained devices such as mobile phones and smart-cards. We present a proof-carrying code approach with on-device lightweight verification of control flow policies statically at loading- time. Our approach is suitable for evolving, open and constrained Java-based systems as it is compositional, to avoid re-verification of already verified bytecode upon loading of new bytecode, and it is regressive, to cleanly support bytecode unloading.Ce rapport présente l'application de politiques de flot de contrôle sur du bytecode Java pour les petits systèmes ouverts. La plupart du temps, l'application de ce type de politiques de sécurité est réalisée par l'observation du système ou l'insertion de code pour assuré en assurer le respect, ce qui n'est pas approprié pour les petits systèmes fortement contraints tels que les téléphones mobiles ou les cartes à puce. Nous présentons une méthode basée sur le proof-carrying code pour faire appliquer ce type de politiques avec une vérification embarquée réalisée au chargement. Notre approche est bien adaptée aux petits systèmes ouverts évolutifs car elle est compositionnelle, pour éviter la revérification du code déjà chargé, et régressive, afin de traiter proprement le déchargement de code déjà installé et vérifié

    Linguagem intermédia tipificada para concorrência em memória partilhada

    Get PDF
    Dissertação para obtenção do Grau de Mestre em Engenharia InformáticaO objectivo da dissertação consiste em implementar um compilador, e o sistema de suporte à execução, para uma linguagem de programação com mecanismos primitivos de controlo de concorrência em memória partilhada. A utilização de concorrência nos sistemas de software actuais é essencial, desde os servidores aplicacionais mais poderosos que disponibilizam serviços a múltiplos clientes simultaneamente, até aos “simples” interfaces gráficos de utilização comum. As linguagens ditas general purpose, as mais utilizadas para a implementação destes sistemas, como a linguagens Java e C#, suportam a utilização de vários fios de execução através de classes de biblioteca. O suporte específico da linguagem para controlar acessos concorrentes a zonas de memória partilhada restringe-se apenas à utilização dos objectos como monitores, o que torna difícil a implementação de mecanismos de verificação estática ao nível do sistema de tipos. Nesta dissertação pretende-se implementar uma linguagem de programação que integra mecanismos de concorrência de forma nativa, tornando possível a construção de programas concorrentes de forma mais estruturada e modular. É proposta uma linguagem concreta implementada a partir de uma linguagem core desenvolvida no grupo de investigação onde se insere este trabalho. Também é desenvolvido um compilador, a respectiva máquina virtual de pilha e uma linguagem intermédia tipificada, com um modelo de objectos análogo ao da JVM/CLR, mas com suporte nativo para concorrência. A definição de uma linguagem intermédia tipificada, onde constarão instruções para a criação de múltiplos fios de execução e controlo de concorrência, visa suportar e antever o desenvolvimento de um sistema de tipos comportamental que permita detectar estaticamente as interferências entre os múltiplos fios de execução, ao nível de abstracção mais baixo, e que também espelhe as propriedades do sistema de tipos da linguagem fonte.Fundação para a Ciência e Tecnologia do MCTES - projecto PTDC/EIACCO/104583/200

    A Machine-Checked, Type-Safe Model of Java Concurrency : Language, Virtual Machine, Memory Model, and Verified Compiler

    Get PDF
    The Java programming language provides safety and security guarantees such as type safety and its security architecture. They distinguish it from other mainstream programming languages like C and C++. In this work, we develop a machine-checked model of concurrent Java and the Java memory model and investigate the impact of concurrency on these guarantees. From the formal model, we automatically obtain an executable verified compiler to bytecode and a validated virtual machine

    CONCURRENCY—PRACTICE AND EXPERIENCE Concurrency: Pract. Exper. 2001; 13:1 Prepared using cpeauth.cls [Version: 2000/05/12 v2.0] Verified lightweight bytecode verification

    No full text
    Eva and Kristoffer Rose proposed a (sparse) annotation of Java Virtual Machine code with types to enable a one-pass verification of welltypedness. We have formalized a variant of their proposal in the theorem prover Isabelle/HOL and proved soundness and completeness
    corecore