Spelling suggestions: "subject:"analyse dess programmes"" "subject:"analyse deus programmes""
1 |
Vers l’établissement du flux d’information sûr dans les applications Web côté client / Enforcing secure information flow in client-side Web applicationsFragoso Femenin dos Santos, José 08 December 2014 (has links)
Nous nous intéressons à la mise en œuvre des politiques de confidentialité et d'intégrité des données dans le contexte des applications Web côté client. Étant donné que la plupart des applications Web est développée en JavaScript, on propose des mécanismes statiques, dynamiques et hybrides pour sécuriser le flux d'information en Core JavaScript - un fragment de JavaScript qui retient ses caractéristiques fondamentales. Nous étudions en particulier: une sémantique à dispositif de contrôle afin de garantir dynamiquement le respect des politiques de sécurité en Core JavaScript aussi bien qu'un compilateur qui instrumente un programme avec le dispositif de contrôle proposé, un système de types qui vérifie statiquement si un programme respecte une politique de sécurité donnée, un système de types hybride qui combine des techniques d'analyse statique à des techniques d'analyse dynamique afin d'accepter des programmes surs que sa version purement statique est obligée de rejeter. La plupart des programmes JavaScript s'exécute dans un navigateur Web dans le contexte d'une page Web. Ces programmes interagissent avec la page dans laquelle ils sont inclus parmi des APIs externes fournies par le navigateur. Souvent, l'exécution d'une API externe dépasse le périmètre de l'interprète du langage. Ainsi, une analyse réaliste des programmes JavaScript côté client doit considérer l'invocation potentielle des APIs externes. Pour cela, on présente une méthodologie générale qui permet d'étendre des dispositifs de contrôle de sécurité afin qu'ils prennent en compte l'invocation potentielle des APIs externes et on applique cette méthodologie à un fragment important de l'API DOM Core Level 1. / In this thesis, we address the issue of enforcing confidentiality and integrity policies in the context of client-side Web applications. Since most Web applications are developed in the JavaScript programming language, we study static, dynamic, and hybrid enforcement mechanisms for securing information flow in Core JavaScript --- a fragment of JavaScript that retains its defining features. Specifically, we propose: a monitored semantics for dynamically enforcing secure information flow in Core JavaScript as well as a source-to-source transformation that inlines the proposed monitor, a type system that statically checks whether or not a program abides by a given information flow policy, and a hybrid type system that combines static and dynamic analyses in order to accept more secure programs than its fully static counterpart. Most JavaScript programs are designed to be executed in a browser in the context of a Web page. These programs often interact with the Web page in which they are included via a large number of external APIs provided by the browser. The execution of these APIs usually takes place outside the perimeter of the language. Hence, any realistic analysis of client-side JavaScript must take into account possible interactions with external APIs. To this end, we present a general methodology for extending security monitors to take into account the possible invocation of arbitrary APIs and we apply this methodology to a representative fragment of the DOM Core Level 1 API that captures DOM-specific information flows.
|
2 |
Preuves de Propriétés de Classes de Programmes par Dérivation Systématique de Jeux de TestNicolas, Valérie-Anne 21 December 1998 (has links) (PDF)
Le problème abordé dans cette thèse concerne la productionautomatique de données de test permettant de prouver des propriétés de programmes. Nous nous situons ainsi à mi-chemin entre le domaine du test et celui de la vérification de programmes. Les travaux dans le domaine du test ont conduit à des outils semi-automatiques d'utilisation simple, mais qui reposent sur des hypothèses difficilement vérifiables en pratique. Dans le domaine de la vérification, des outils basés sur des méthodes formelles ont été développés, mais ils nécessitent un utilisateur expert dans les techniques de preuve utilisées par l'outil. Cette situation est due aux problèmes d'indécidabilité engendrés par la puissance des formalismes traités. La thèse que nous présentons est qu'il est possible de développer des méthodes formelles automatiques pour prouver des propriétés de programmes, à condition de considérer des formalismes restreints. Notre principale contribution est une nouvelle approche pour la vérification de programmes, intégrant les techniques de test et d'analyse statique. Nous proposons une méthode formelle de génération de jeux de test finis complets permettant de prouver qu'un programme vérifie une propriété donnée. Cette méthode utilise le texte du programme et de la propriété, qui doivent appartenir à certaines classes de programmes (ou de propriétés). Ces classes sont représentées par des hiérarchies de schémas, qui peuvent être vues comme modélisant des hypothèses de test. Tout programme appartenant à un de nos schémas et passant le jeu de test avec succès vérifie la propriété testée. Pour une propriété donnée, notre méthode est complètement automatique et ne nécessite donc aucune compétence particulière de l'utilisateur. Nous avons implanté cette méthode dans un prototype (traitant un langage fonctionnel restreint), pour le cas de propriétés s'exprimant en termes de longueurs de listes.
|
3 |
Raisonnement automatisé pour la logique de séparation avec des définitions inductives / Automated reasoning in separation logic with inductive definitionsSerban, Cristina 31 May 2018 (has links)
La contribution principale de cette thèse est un système de preuve correct et complet pour les implications entre les prédicats inductifs, fréquemment rencontrées lors de la vérification des programmes qui utilisent des structures de données récursives allouées dynamiquement. Nous introduisons un système de preuve généralisé pour la logique du premier ordre et nous l'adaptons à la logique de séparation, car ceci est un cadre qui répond aux plusieurs difficultés posées par le raisonnement sur les tas alloués dynamiquement. La correction et la complétude sont assurées par quatre restrictions sémantiques et nous proposons également un semi-algorithme de recherche de preuves qui devient une procédure de décision pour le problème d'implication lorsque les restrictions sémantiques sont respectées.Ce raisonnement d'ordre supérieur sur les implications nécessite des procédures de décision de premier ordre pour la logique sous-jacente lors de l'application des règles d'inférence et lors de la recherche des preuves. Ainsi, nous fournissons deux procédures de décision pour la logique de séparation, en considérant le fragment sans quantificateurs et le fragment quantifié de façon Exists*Forall*, qui ont été intégrées dans le solveur SMT open source CVC4.Finalement, nous présentons une implémentation de notre système de preuve pour la logique de séparation, qui utilise ces procédures de décision. Étant donné des prédicats inductifs et une requête d'implication, un avertissement est émis lorsqu'une ou plusieurs restrictions sémantiques sont violées. Si l'implication est valide, la sortie est une preuve. Sinon, un ou plusieurs contre-exemples sont fournis. / The main contribution of this thesis is a sound and complete proof system for entailments between inductive predicates, which are frequently encountered when verifying programs that work with dynamically allocated recursive data structures. We introduce a generalized proof system for first-order logic, and then adapt it to separation logic, a framework that addresses many of the difficulties posed by reasoning about dynamically allocated heaps. Soundness and completeness are ensured through four semantic restrictions and we also propose a proof-search semi-algorithm that becomes a decision procedure for the entailment problem when the semantic restrictions hold.This higher-order reasoning about entailments requires first-order decision procedures for the underlying logic when applying inference rules and during proof search. Thus, we provide two decision procedures for separation logic, considering the quantifier-free and the Exists*Forall*-quantified fragments, which were integrated in the open-source, DPLL(T)-based SMT solver CVC4.Finally, we also give an implementation of our proof system for separation logic, which uses these decision procedures. Given some inductive predicate definitions and an entailment query as input, a warning is issued when one or more semantic restrictions are violated. If the entailment is found to be valid, the output is a proof. Otherwise, one or more counterexamples are provided.
|
4 |
Rétro ingénierie des modèles d’objets dynamiques pour JavaScriptBoudraa, Dalil 05 1900 (has links)
La compréhension des objets dans les programmes orientés objet est une tâche impor-
tante à la compréhension du code. JavaScript (JS) est un langage orienté-objet dyna-
mique, et son dynamisme rend la compréhension du code source très difficile. Dans ce
mémoire, nous nous intéressons à l’analyse des objets pour les programmes JS. Notre
approche construit de façon automatique un graphe d’objets inspiré du diagramme de
classes d’UML à partir d’une exécution concrète d’un programme JS. Le graphe résul-
tant montre la structure des objets ainsi que les interactions entre eux.
Notre approche utilise une transformation du code source afin de produire cette in-
formation au cours de l’exécution. Cette transformation permet de recueillir de l’infor-
mation complète au sujet des objets crées ainsi que d’intercepter toutes les modifications
de ces objets. À partir de cette information, nous appliquons plusieurs abstractions qui
visent à produire une représentation des objets plus compacte et intuitive. Cette approche
est implémentée dans l’outil JSTI.
Afin d’évaluer l’utilité de l’approche, nous avons mesuré sa performance ainsi que le
degré de réduction dû aux abstractions. Nous avons utilisé les dix programmes de réfé-
rence de V8 pour cette comparaison. Les résultats montrent que JSTI est assez efficace
pour être utilisé en pratique, avec un ralentissement moyen de 14x. De plus, pour 9 des 10
programmes, les graphes sont suffisamment compacts pour être visualisés. Nous avons
aussi validé l’approche de façon qualitative en inspectant manuellement les graphes gé-
nérés. Ces graphes correspondent généralement très bien au résultat attendu.
Mots clés: Analyse de programmes, analyse dynamique, JavaScript, profilage. / Understanding of objects in object-oriented programs is an important task for understanding the code. JavaScript (JS) is a dynamic object-oriented language, Its dynamic nature makes understanding its source code very difficult. In this thesis, we focus on object analysis in JS programs to automatically produce a graph of objects inspired by UML class diagrams from an execution trace. The resulting graph shows the structure of the objects as well as their interconnections. Our approach uses a source-to-source transformation of the original code in order to collect information at runtime. This transformation makes it possible to collect complete information with respect to object creations and property updates. From this information, we perform multiple abstractions that aim to generate a more compact and intuitive representation of objects. This approach has been implemented in the JSTI prototype.
To evaluate our approach, we measured its performance and the graph compression achieved by our abstractions. We used the ten V8 benchmarks for this purpose. Results show that JSTI is efficient enough to be used in practice, with an average slowdown of around 14x. Moreover, for 9 out of the 10 studied programs, the generated object graphs are sufficiently small to be visualized directly by developers. We have also performed a qualitative validation of the approach by manually inspecting the generated graphs. We have found that the graphs generated by JSTI generally correspond very closely to the expected results.
Keywords: Program analysis, dynamic analysis, JavaScript, profiling.
|
5 |
USAGES DE LA GEOMETRIE DYNAMIQUE PAR DES ENSEIGNANTS DE COLLEGE. DES POTENTIALITES A LA MISE EN ŒUVRE: QUELLES MOTIVATIONS, QUELLES PRATIQUES ?Caliskan-Dedeoglu, Nuray 26 October 2006 (has links) (PDF)
Notre travail de thèse vise à étudier des utilisations réelles des TICE dans les classes par des enseignants, grâce à une méthodologie basée sur l'observation de séances ordinaires.<br />Nous partons du constat d'écart entre, d'une part, les potentialités des TICE soulignées par la recherche et la volonté institutionnelle d'insérer les TICE, et d'autre part, la réalité de la faible intégration de la technologie dans les classes. Nous considérons cet écart comme l'effet des contraintes d'utilisation des TICE mentionnée dans de nombreux travaux en didactique des mathématiques. L'hypothèse est que l'enseignant, qui prend la décision d'utiliser les TICE, est motivé par des potentialités de la technologie présentes dans ses représentations et qu'il effectue des choix ayant une certaine conscience des contraintes de leur utilisation. Nous cherchons à étudier des rapports entre ces potentialités et celles qui sont exprimées dans la recherche et les instructions officielles, et leur actualisation dans la pratique en classe. Nous nous intéressons plus spécifiquement aux usages de la géométrie dynamique dans des classes du collège (élèves de 12-15 ans), car les potentialités de la géométrie dynamique font l'objet de nombreux travaux et écrits, et les instructions officielles en France insistent sur leurs apports possibles à l'enseignement à ce niveau. <br />Dans la thèse, nous présentons l'analyse des séances illustrant deux types d'usages rencontrés chez trois enseignants. Dans le but de caractériser plus finement le fonctionnement de ces enseignants dans sa complexité, nous interprétons l'analyse des séances à l'aide d'un modèle théorique.
|
6 |
Rétro ingénierie des modèles d’objets dynamiques pour JavaScriptBoudraa, Dalil 05 1900 (has links)
La compréhension des objets dans les programmes orientés objet est une tâche impor-
tante à la compréhension du code. JavaScript (JS) est un langage orienté-objet dyna-
mique, et son dynamisme rend la compréhension du code source très difficile. Dans ce
mémoire, nous nous intéressons à l’analyse des objets pour les programmes JS. Notre
approche construit de façon automatique un graphe d’objets inspiré du diagramme de
classes d’UML à partir d’une exécution concrète d’un programme JS. Le graphe résul-
tant montre la structure des objets ainsi que les interactions entre eux.
Notre approche utilise une transformation du code source afin de produire cette in-
formation au cours de l’exécution. Cette transformation permet de recueillir de l’infor-
mation complète au sujet des objets crées ainsi que d’intercepter toutes les modifications
de ces objets. À partir de cette information, nous appliquons plusieurs abstractions qui
visent à produire une représentation des objets plus compacte et intuitive. Cette approche
est implémentée dans l’outil JSTI.
Afin d’évaluer l’utilité de l’approche, nous avons mesuré sa performance ainsi que le
degré de réduction dû aux abstractions. Nous avons utilisé les dix programmes de réfé-
rence de V8 pour cette comparaison. Les résultats montrent que JSTI est assez efficace
pour être utilisé en pratique, avec un ralentissement moyen de 14x. De plus, pour 9 des 10
programmes, les graphes sont suffisamment compacts pour être visualisés. Nous avons
aussi validé l’approche de façon qualitative en inspectant manuellement les graphes gé-
nérés. Ces graphes correspondent généralement très bien au résultat attendu.
Mots clés: Analyse de programmes, analyse dynamique, JavaScript, profilage. / Understanding of objects in object-oriented programs is an important task for understanding the code. JavaScript (JS) is a dynamic object-oriented language, Its dynamic nature makes understanding its source code very difficult. In this thesis, we focus on object analysis in JS programs to automatically produce a graph of objects inspired by UML class diagrams from an execution trace. The resulting graph shows the structure of the objects as well as their interconnections. Our approach uses a source-to-source transformation of the original code in order to collect information at runtime. This transformation makes it possible to collect complete information with respect to object creations and property updates. From this information, we perform multiple abstractions that aim to generate a more compact and intuitive representation of objects. This approach has been implemented in the JSTI prototype.
To evaluate our approach, we measured its performance and the graph compression achieved by our abstractions. We used the ten V8 benchmarks for this purpose. Results show that JSTI is efficient enough to be used in practice, with an average slowdown of around 14x. Moreover, for 9 out of the 10 studied programs, the generated object graphs are sufficiently small to be visualized directly by developers. We have also performed a qualitative validation of the approach by manually inspecting the generated graphs. We have found that the graphs generated by JSTI generally correspond very closely to the expected results.
Keywords: Program analysis, dynamic analysis, JavaScript, profiling.
|
7 |
From qualitative to quantitative program analysis : permissive enforcement of secure information flow / Approches qualitatives et quantitatives d'analyse de programmes : mise en oeuvre permissive de flux d’information sécurisésAssaf, Mounir 06 May 2015 (has links)
De nos jours, les ordinateurs sont omniprésents. Tous ces ordinateurs stockent et manipulent de l'information, parfois sensible, d'où l'intérêt de protéger et de confiner la dissémination de cette information. Les mécanismes de contrôle de flux d'information permettent justement d'analyser des programmes manipulant de l'information sensible, afin de prévenir les fuites d'information. Les contributions de cette thèse incluent des techniques d'analyse de programmes pour le contrôle de flux d'information tant qualitatif que quantitatif. Les techniques d'analyse qualitatives permettent la détection et la prévention des fuites d'information. Les techniques quantitatives permettent d'estimer ces fuites afin de décider si elles sont négligeables. / Computers have become widespread nowadays. All these computers store and process information. Often, some of this information is sensitive; hence the need to confine and control its dissemination. An important field in computer science, that is concerned about analysing programs in order to confine and control the release of sensitive information, is the information flow control field. The contributions of this thesis include program analysis techniques for qualitative and quantitative information flow control. Qualitative techniques aim at detecting and preventing information leaks. Quantitative techniques go beyong the detection of information leaks, by estimating the leakage in order to decide whether it is negligeable.
|
Page generated in 0.0924 seconds