Proposition de recherche - Cégep de Sainte-Foy

publicité
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
Téléchargement