formations/diiage/C3-2_Sécurité_SI/20180302_Évaluation/tp.md

4.3 KiB
Raw Blame History

Évaluation - TP

Objectifs

  1. Implémenter un micro-projet dans un temps donné
  2. Respecter les consignes
  3. S'organiser pour respecter les contraintes de temps et réaliser le contrat
  4. Appliquer les concepts et principes découverts lors des sessions précédentes

Sujet

Concevoir et implémenter en NodeJS une version numérique des "dead drops".

Réaliser le modèle de menace de cette application.

Fonctionnement de l'application

Un utilisateur anonyme transfère un fichier via une URL HTTP sur un serveur.

Le serveur chiffre à la volée le fichier avec une clé publique et l'enregistre sur le disque du serveur dans un répertoire.

Un utilisateur connaissant la clé privée associée à la clé publique peut utiliser un script pour déchiffrer un fichier voulu en entrant interactivement sa phrase de passe (Exemple d'utilisation: node decrypt.js <chemin_fichier>).

Contraintes concernant l'implémentation

  • Vous devez réaliser votre implémentation en NodeJS (version LTS 8.9.4)
  • Vous ne pouvez utiliser que les modules express, express-fileupload et la librairie standard (notamment le module crypto).
  • Le code doit être commenté.

Rédaction du modèle de menace

Vous devrez réaliser un modèle de menace de l'application en vous basant sur les informations disponibles sur le site de l'OWASP.

Notamment, vous devrez identifier:

  • les dépendances externes nécessaires au bon fonctionnement de votre application
  • les points d'entrée
  • les "assets"
  • les niveaux de confiances

Un diagramme de flux de données ainsi qu'une liste des différentes menaces (en utilisant la catégorisation STRIDE) devront être également réalisés.

Éléments attendus

  • Un répertoire nommé projet comprenant les sources de votre application, notamment:
    • Un fichier server.js comprenant le code source de votre serveur HTTP/chiffrement des fichiers.
    • Un fichier decrypt.js qui comprendra le code source du script permettant de déchiffrer un fichier donné.
    • Le fichier package.json qui sera utilisé pour définir/installer les dépendances.
    • Un fichier README décrivant la procédure d'installation et d'utilisation de votre implémentation.
  • Un fichier PDF nommé modele_de_menace.pdf comprenant votre modèle de menace, le diagramme de flux de données ainsi que la liste des menaces que vous avez identifié.

Votre TP est à téléverser sur la plateforme de partage dans le répertoire défini par l'intervenant avant la fin de la journée (l'horodatage de création du fichier sur l'application fera foi). Il ne devra pas être modifié après cette journée.

L'archive (zip ou tar.gz, à votre convenance) comprenant vos fichiers devra respecter le format suivant:

[prenom]_[nom]_evaluation.[extension]

Grille de notation

Critère Description Points maximum
Respect des consignes Les consignes sont respectées. 3
Implémentation L'implémentation fournie est fonctionnelle. 6
Documentation Le code est commenté. Le fichier README est clair et exhaustif. 3
Modèle de menace Le modèle de menace est clair, les différents points d'inventaire sont couverts. Le diagramme de flux de données est complet et couvre l'ensemble de l'application. La catégorisation des menaces comporte au moins 3 menaces et sont correctement catégorisées et décrites par rapport au modèle STRIDE. 6
Orthographe et vocabulaire Les règles dorthographe et le choix du vocabulaire est correct (l'usage d'anglicismes ne sera pas pénalisé). 2
Tests unitaires Vous avez implémenté des tests unitaires viables (i.e. qui vérifie véritablement le bon fonctionnement de votre code) dans votre implémentation. Les modalités d'exécution de vos tests sont décrites dans votre README. 3 (points bonus)

Le total de vos points ne peut excéder 20.