Proposition de recherche (Sécurité : C++ vs Java) Document présenté à : M. Dominique Gouthier Dans le cadre du cours : Nouvelles technologies (420-620-SF) Étudiants : David Dastous St-Hilaire Simon Ducas-Desrosiers Cégep de Sainte-Foy, département d’informatique Mardi le 16 janvier 2007 Proposition de recherche Page 2 de 5 Table des matières 1. 2. 3. 4. 5. 6. Sujet de la recherche ............................................................................................................ 3 Enjeu, objectifs...................................................................................................................... 3 Méthode d’expérimentation............................................................................................... 4 Ressources requises ............................................................................................................. 4 Limites ................................................................................................................................... 5 Échéancier ............................................................................................................................. 5 Cégep de Sainte-Foy, département d’informatique 7 février 2007 Proposition de recherche Page 3 de 5 1. Sujet de la recherche Nous sommes curieux de savoir quel langage de programmation est le plus sécuritaire, pour de futurs projets. Donc, notre sujet de recherche est la sécurité des langages de programmation C++ et Java. Nous allons comparer les avantages et désavantages d’un langage relativement à l’autre pour voir lequel est le plus sécuritaire. Aussi, nous allons voir si les programmes créés en C++ sont plus sécuritaires que ceux en Java. Le but de la recherche est de découvrir lequel est le plus sécuritaire afin de produire dans le futur des programmes plus sécuritaires qu'actuellement, aussi afin de nous instruire sur cette réalité. Aujourd’hui, les entreprises recherchent la sécurité dans leurs programmes plutôt que la performance, car les ordinateurs deviennent plus puissants et la sécurité contre les pirates est de plus en plus utile. Les entreprises utilisent le C++ pour les jeux, les applications locales et les applications qui contiennent un environnement 3D, d’un autre coté Java est plus utilisée pour les applications locales et les applications web. Nous connaissons les deux langages assez bien, mais nous ne savons pas lequel est le plus sécuritaire, nous avons peu d’information sur le sujet de la sécurité en ce moment. 2. Enjeu, objectifs Cette recherche devra permettre d’approfondir quelques notions de sécurité touchant deux des langages de programmation les plus couramment utilisés sur le marché. Le choix du sujet est basé principalement sur le fait que ces deux langages sont d’actualité; le C++ est très présent dans le monde des jeux vidéo, et le Java est le langage privilégié par de nombreux programmeurs Web. Bien que les domaines d’application courants soient quelque peu différents, il est important que la sécurité des applications développées puisse être assurée en tout temps, autant lors de l’exécution que pour un utilisateur mal intentionné désirant décompiler le programme ou faire ressortir des failles de sécurité. Nous espérons que ce travail de recherche nous amènera à mieux cerner les points forts et faibles de ces deux langages de programmation, mais également nous aidera à mieux pouvoir cerner les points à analyser lors de l’apprentissage de n’importe quel autre langage de programmation, en matière de sécurité. De plus, ce travail pourra être très utile autant aux nouveaux arrivants dans le monde de la programmation, désirant se documenter de façon plus précise sur la sécurité, qu’aux programmeurs expérimentés, ayant peut-être déjà envisagé l’utilisation d’un autre langage de programmation pour leurs applications courantes et n’étant pas trop à l’aise avec les questions entourant la sécurité. Enfin, ce travail pourrait à la limite être utilisé par certains analystes travaillant au développement de nouvelles idées ou améliorations pour des langages de programmation existants. Cégep de Sainte-Foy, département d’informatique 7 février 2007 Proposition de recherche Page 4 de 5 3. Méthode d’expérimentation Bien que la recherche doive relever un bon nombre de points théoriques sur les capacités et les limites des deux langages de programmation étudiés, une preuve des concepts étudiés devra être faite. L’utilisation de deux prototypes concurrents est parfaitement désignée dans le cadre de notre recherche. Les deux prototypes devront effectuer les mêmes tâches, soit tester les limites d’un langage de programmation dans un contexte de sécurité bien précis. Il s’agira ainsi de deux applications développées en C++ et en Java qui seront exécutées en parallèle, et qui présenteront différents points de tests dont ceux-ci : • • • • • Allocation de mémoire et tentatives d’accès concurrentiels; Accessibilité des données dans une application multithreads; Accès aux ressources du système d’exploitation; Utilisation de classes et partage d’information de manière incorrecte; Ressources visibles et encryptés lors de la décompilation (sera testée à l’aide de logiciels tierce partie). Dans un premier temps, une étude théorique devra être menée afin de déceler un maximum de failles de sécurité possibles. Une fois cette liste établie, il faudra nous renseigner sur la façon de tester concrètement ces failles. Tout problème pouvant être reproduit de façon régulière sera ainsi noté et codé dans les deux langages de programmation, et ajouté aux deux prototypes. Enfin, une étude finale fera le comparatif des résultats obtenus et présentera une analyse détaillée, qui est le but de cette recherche. 4. Ressources requises Lors de la recherche nous utiliserons les ressources suivantes : Matérielles : • Ordinateur; • Clavier; • Souris; • Clé USB; • Modem; Logicielles : • Windows XP professionnel • Internet Explorer • Java (JDK, JVM), NetBeans • C++, Visual Studio 2005 Cégep de Sainte-Foy, département d’informatique 7 février 2007 Proposition de recherche Page 5 de 5 Informationnelles : • http://msdn2.microsoft.com/en-us/library/k3a3hzw7(vs.80).aspx : Le site aide les développeurs à s’améliorer dans leur programmation. Site de référence à Microsoft. • http://www.hotscripts.com/Detailed/11680.html : Site avec des exemples de code qui permettent de voir comment faire. • http://java.sun.com/sfaq/ : Aide général pour les développeurs de Java. Site de référence à Sun. • http://www.cs.princeton.edu/sip/faq/java-faq.php3 : Site général sur la sécurité du langage java. 5. Limites Afin de limiter le temps de la recherche et de pouvoir remettre le travail à l’échéance donnée, nous allons poser des limites à notre recherche. Nous n’allons pas utiliser d’autre langage que C++ et Java. Nous n’allons pas utiliser d’interface graphique dans nos programmes, mais seulement une console. Nous utiliserons pour développer NetBeans et Visual Studio 2005, car nous voulons limiter les essais, dans la même manière, nous utiliserons un seul programme pour décompiler chaque langage. De plus, nous allons seulement créer un programme en chaque langage pour tester la sécurité. Nous regarderons chaque faille de sécurité, mais sans trop nous attarder sur chacune d’entre elles, car il serait trop long de développer toutes les failles que nous trouverons. 6. Échéancier Date 17 Janvier 2007 22 Janvier 2007 7 Février 2007 15 Février 2007 16 Février 2007 Activités Proposition de recherche Devis du Protocol expérimental Outils d’expérimentation Publication Web Présentations orales Cégep de Sainte-Foy, département d’informatique 7 février 2007