[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:06.80,0:00:07.90,Default,,0000,0000,0000,,Bonjour alors moi c'est Mathieu Dialogue: 0,0:00:10.95,0:00:17.08,Default,,0000,0000,0000,,et je vais vous parler des mots de passe parce que je trouve qu'à Sud Web Dialogue: 0,0:00:17.08,0:00:22.96,Default,,0000,0000,0000,,comme à Paris Web finalement, il y a beaucoup trop de sujets front Dialogue: 0,0:00:22.96,0:00:29.37,Default,,0000,0000,0000,,Donc c'est un sujet qui devrait concerner tout le monde en fait parce que Dialogue: 0,0:00:29.37,0:00:32.68,Default,,0000,0000,0000,,quel que soit votre rôle dans un projet web Dialogue: 0,0:00:32.68,0:00:37.48,Default,,0000,0000,0000,,vous êtes généralement les premiers utilisateurs du site et vous devriez vous souciez de Dialogue: 0,0:00:37.48,0:00:43.76,Default,,0000,0000,0000,,comment vos développeurs, si vous êtes pas développeur ont stocké le mot de passe Dialogue: 0,0:00:43.76,0:00:48.16,Default,,0000,0000,0000,,que probablement vous réutilisez de toute façon ailleurs ou pas Dialogue: 0,0:00:48.16,0:00:50.64,Default,,0000,0000,0000,,si vous faites les choses très bien mais Dialogue: 0,0:00:50.64,0:00:52.48,Default,,0000,0000,0000,,j'en connais pas mal Dialogue: 0,0:00:52.48,0:00:55.60,Default,,0000,0000,0000,,qui réutilisent les mêmes mots de passe Dialogue: 0,0:00:55.60,0:00:58.89,Default,,0000,0000,0000,,Donc le principe de base quand on parle de sécurité des mots de passe Dialogue: 0,0:00:58.89,0:01:01.20,Default,,0000,0000,0000,,c'est de se dire que l'attaquant il a eu accès à votre base de données Dialogue: 0,0:01:01.20,0:01:04.08,Default,,0000,0000,0000,,ll a tout le système à sa disposition Dialogue: 0,0:01:04.08,0:01:08.62,Default,,0000,0000,0000,,Ensuite le principe de départ c'est de se dire comme je viens de dire Dialogue: 0,0:01:08.62,0:01:10.92,Default,,0000,0000,0000,,que nos utilisateurs ils réutilisent les mêmes mots de passe partout Dialogue: 0,0:01:10.92,0:01:14.84,Default,,0000,0000,0000,,et qu'on veut quand même les protéger un petit peu Dialogue: 0,0:01:14.84,0:01:17.72,Default,,0000,0000,0000,,Donc conclusion, on peut pas vraiment arrêter Dialogue: 0,0:01:17.72,0:01:20.60,Default,,0000,0000,0000,,l'attaquant qui a déjà eu accès à votre serveur Dialogue: 0,0:01:20.60,0:01:23.44,Default,,0000,0000,0000,,mais on peut essayer de le ralentir Dialogue: 0,0:01:23.44,0:01:28.16,Default,,0000,0000,0000,,Tout le principe du stockage de mot de passe c'est ça. Dialogue: 0,0:01:28.16,0:01:33.04,Default,,0000,0000,0000,,Donc là je vais grosso modo expliquer les différentes méthodes qu'il ne faut pas appliquer Dialogue: 0,0:01:33.04,0:01:35.12,Default,,0000,0000,0000,,pour stocker les mots de passe Dialogue: 0,0:01:35.12,0:01:37.56,Default,,0000,0000,0000,,du plus simple au plus compliqué Dialogue: 0,0:01:37.56,0:01:41.84,Default,,0000,0000,0000,,et on verra que même les méthodes compliquées sont pas forcément adaptées Dialogue: 0,0:01:41.84,0:01:45.30,Default,,0000,0000,0000,,Donc la première c'est juste le stockage en clair, c'est simple il faut pas le faire Dialogue: 0,0:01:45.30,0:01:48.56,Default,,0000,0000,0000,,J'espère que tous les développeurs sont au courant Dialogue: 0,0:01:48.56,0:01:50.92,Default,,0000,0000,0000,,N'importe qui avec un accès à la base de données peut voir les mots de passe directement Dialogue: 0,0:01:50.92,0:01:52.64,Default,,0000,0000,0000,,y compris vos propres développeurs et administrateurs Dialogue: 0,0:01:52.64,0:01:55.68,Default,,0000,0000,0000,,ce qui pose quand même un grave problème de vie privée Dialogue: 0,0:01:55.68,0:02:01.40,Default,,0000,0000,0000,,surtout si vous avez un site avec beaucoup d'utilisateurs, des profils très complets, etc. Dialogue: 0,0:02:01.40,0:02:06.92,Default,,0000,0000,0000,,Deuxième méthode : stockage chiffré ou crypté si on veut faire du franglais Dialogue: 0,0:02:06.92,0:02:11.92,Default,,0000,0000,0000,,C'est pas mieux non plus car vous avez forcément une clef de decryptage du mot du passe Dialogue: 0,0:02:11.92,0:02:15.68,Default,,0000,0000,0000,,qui est forcément stockée à un endroit où on considère que l'attaquant y a eu accès Dialogue: 0,0:02:15.68,0:02:23.12,Default,,0000,0000,0000,,donc c'est pareil, c'est à proscrire aussi. Dialogue: 0,0:02:23.12,0:02:26.48,Default,,0000,0000,0000,,Alors là on commence à rentrer dans les trucs compliqués et j'ai fait plein de texte Dialogue: 0,0:02:26.48,0:02:30.88,Default,,0000,0000,0000,,surtout pour ceux qui sont pas là et qui n'ont pas la chance d'être ici Dialogue: 0,0:02:30.88,0:02:33.80,Default,,0000,0000,0000,,et qui pourront après regarder les slides Dialogue: 0,0:02:33.80,0:02:37.48,Default,,0000,0000,0000,,Grosso modo c'est utiliser des algos qui sont fait pour faire des signatures Dialogue: 0,0:02:37.48,0:02:40.20,Default,,0000,0000,0000,,donc MD5, SHA-1, etc. Dialogue: 0,0:02:40.20,0:02:46.08,Default,,0000,0000,0000,,Ça donne une illusion de sécurité parce qu'on a l'impression que on a plus le truc en clair Dialogue: 0,0:02:46.08,0:02:50.72,Default,,0000,0000,0000,,mais en fait c'est des algos qui sont fait pour être calculés très rapidement Dialogue: 0,0:02:50.72,0:02:56.48,Default,,0000,0000,0000,,et vu que la puissance des machines qu'on a augmente à une vitesse folle Dialogue: 0,0:02:56.48,0:02:59.28,Default,,0000,0000,0000,,au final c'est qu'une illusion de sécurité Dialogue: 0,0:02:59.28,0:03:01.72,Default,,0000,0000,0000,,ça devient "craquable" très très rapidement, très très facilement Dialogue: 0,0:03:01.72,0:03:04.56,Default,,0000,0000,0000,,donc là j'ai donné des exemples de chiffres, mais ils seront plus valable demain Dialogue: 0,0:03:04.56,0:03:08.56,Default,,0000,0000,0000,,donc ça sert à rien, mais c'est juste pour vous donner une idée Dialogue: 0,0:03:08.56,0:03:17.24,Default,,0000,0000,0000,,La méthode quatre qu'il faut pas faire et là ça commence à rentrer dans le troll Dialogue: 0,0:03:17.24,0:03:20.55,Default,,0000,0000,0000,,c'est ce que à peu près tout le monde qui pense faire les choses bien fait Dialogue: 0,0:03:20.55,0:03:24.28,Default,,0000,0000,0000,,c'est à dire utiliser les mêmes algos de hash mais avec ce qu'on appelle un salt Dialogue: 0,0:03:24.28,0:03:32.00,Default,,0000,0000,0000,,qu'est un espèce de petit bout qu'on rajoute en plus avant généralement ce qu'on veut stocker Dialogue: 0,0:03:32.00,0:03:34.28,Default,,0000,0000,0000,,donc le mot de passe Dialogue: 0,0:03:34.28,0:03:37.66,Default,,0000,0000,0000,,c'est déjà beaucoup mieux mais vous êtes en train de réinventer la roue Dialogue: 0,0:03:37.66,0:03:42.40,Default,,0000,0000,0000,,quand vous faîtes ça en système de stockage de données sécurisées Dialogue: 0,0:03:42.40,0:03:44.92,Default,,0000,0000,0000,,il existe des méthodes qu'on va voir dans la slide d'après Dialogue: 0,0:03:44.92,0:03:47.24,Default,,0000,0000,0000,,et ça reste vulnérable aux attaques de brute force au final Dialogue: 0,0:03:47.24,0:03:52.92,Default,,0000,0000,0000,,ce que ça empêche c'est un truc que j'ai vaguement abordé dans la slide d'avant sans vous le dire Dialogue: 0,0:03:52.92,0:03:59.58,Default,,0000,0000,0000,,c'était les rainbow tables, mais ça devient juste un détail tellement les ordinateurs de nos jours Dialogue: 0,0:03:59.58,0:04:02.08,Default,,0000,0000,0000,,sont super puissants quoi. Dialogue: 0,0:04:02.08,0:04:04.28,Default,,0000,0000,0000,,Donc on peut faire encore mieux que ça, même si c'est déjà pas mal Dialogue: 0,0:04:04.28,0:04:08.04,Default,,0000,0000,0000,,si vous êtes là, c'est déjà sympa hein Dialogue: 0,0:04:08.04,0:04:13.84,Default,,0000,0000,0000,,Donc le truc sympa c'est de garder le principe du salt,vous en mettez un par mot de passe Dialogue: 0,0:04:13.84,0:04:21.74,Default,,0000,0000,0000,,comme ça vous empêchez l'attaquant de pouvoir recalculer avec un même salt Dialogue: 0,0:04:21.74,0:04:25.82,Default,,0000,0000,0000,,Et vous utilisez des implémentations spécifiques dont le but est de ralentir la génération Dialogue: 0,0:04:25.82,0:04:29.76,Default,,0000,0000,0000,,C'est à dire qu'au lieu d'avoir un truc, une empreinte du mot de passe Dialogue: 0,0:04:29.76,0:04:32.96,Default,,0000,0000,0000,,qui se génère en 0,000x secondes Dialogue: 0,0:04:32.96,0:04:36.64,Default,,0000,0000,0000,,vous avez un truc qui se génère en 500ms voire 1s Dialogue: 0,0:04:36.64,0:04:40.04,Default,,0000,0000,0000,,En fait vous pouvez choisir avec ces types d'algorithmes Dialogue: 0,0:04:40.04,0:04:44.40,Default,,0000,0000,0000,,la vitesse que vous voulez, donc vous choisissez ça avec un iteration count Dialogue: 0,0:04:44.40,0:04:47.92,Default,,0000,0000,0000,,et vous vous choisissez ça, enfin ça dépend de l'algo mais vous choisissez un nombre Dialogue: 0,0:04:47.92,0:04:51.28,Default,,0000,0000,0000,,qui vous semble correct pour ralentir suffisamment Dialogue: 0,0:04:51.28,0:04:57.08,Default,,0000,0000,0000,,et vous avez vaguement une garantie que ça va être suffisamment compliqué à calculer Dialogue: 0,0:04:57.08,0:04:59.20,Default,,0000,0000,0000,,pour que ça soit pas automatisable par un attaquant Dialogue: 0,0:04:59.20,0:05:02.74,Default,,0000,0000,0000,,Donc au pire il va prendre des années à calculer un mot de passe Dialogue: 0,0:05:02.74,0:05:04.67,Default,,0000,0000,0000,,et vous êtes tranquilles. Dialogue: 0,0:05:04.67,0:05:09.12,Default,,0000,0000,0000,,Et le raffinement ultime c'est scrypt Dialogue: 0,0:05:09.12,0:05:13.96,Default,,0000,0000,0000,,c'est une version encore améliorée de ça qui en plus d'être coûteuse en temps CPU Dialogue: 0,0:05:13.96,0:05:17.04,Default,,0000,0000,0000,,elle est aussi coûteuse en mémoire car il commence à y avoir Dialogue: 0,0:05:17.04,0:05:26.04,Default,,0000,0000,0000,,du hardware spécifique pour calculer même des algos genre bcrypt, etc. Dialogue: 0,0:05:26.04,0:05:30.24,Default,,0000,0000,0000,,et donc au final le seul moyen qui nous reste pour lutter contre ça Dialogue: 0,0:05:30.24,0:05:34.32,Default,,0000,0000,0000,,c'est en plus d'être coûteux en CPU, d'être coûteux aussi en mémoire Dialogue: 0,0:05:34.32,0:05:37.44,Default,,0000,0000,0000,,pour empêcher ces matériels spécifiques de fonctionner Dialogue: 0,0:05:37.44,0:05:40.36,Default,,0000,0000,0000,,Là on entre dans un raffinement vraiment extrême Dialogue: 0,0:05:40.36,0:05:44.00,Default,,0000,0000,0000,,et pour l'instant y'a suffisament peu d'implémentations contrairement aux 3 autres que j'ai cité Dialogue: 0,0:05:44.00,0:05:46.12,Default,,0000,0000,0000,,qui sont les gros trucs Dialogue: 0,0:05:46.12,0:05:47.80,Default,,0000,0000,0000,,Y'a relativement peu d'implémentations Dialogue: 0,0:05:47.80,0:05:52.66,Default,,0000,0000,0000,,Juste sachez que tous ces algos, ils se retrouvent dans des Operating System Dialogue: 0,0:05:52.66,0:05:56.92,Default,,0000,0000,0000,,par exemple Linux utilse SHA-512 je pense Dialogue: 0,0:05:56.92,0:05:59.36,Default,,0000,0000,0000,,FreeBSD ... non OpenBSD ils utilisent scrypt Dialogue: 0,0:05:59.36,0:06:04.90,Default,,0000,0000,0000,,non OpenBSD utilise bcrypt et je sais plus qui veut utiliser scrypt Dialogue: 0,0:06:04.90,0:06:07.08,Default,,0000,0000,0000,,si c'est openBSD ou un autre mais bref Dialogue: 0,0:06:07.08,0:06:11.08,Default,,0000,0000,0000,,c'est des trucs qui sont éprouvés, qui sont fait pour stocker des mots de passe Dialogue: 0,0:06:11.08,0:06:13.08,Default,,0000,0000,0000,,et c'est comme ça qu'ils sont utilisés. Dialogue: 0,0:06:13.08,0:06:17.92,Default,,0000,0000,0000,,Donc ils sont beaucoup plus fiables que faire votre truc à la main avec un salt ou je ne sais quoi Dialogue: 0,0:06:17.92,0:06:23.32,Default,,0000,0000,0000,,Et voilà j'ai plus le temps mais bonus n'oubliez pas d'éduquer vos utilisateurs Dialogue: 0,0:06:23.32,0:06:27.20,Default,,0000,0000,0000,,Parce que s'ils n'utilisaient pas les mêmes mots de passe partout, on aurait pas les mêmes problèmes Dialogue: 0,0:06:27.20,0:06:31.48,Default,,0000,0000,0000,,Incitez les si possibles à utiliser des mots de passe longs avec des caractères spéciaux, etc, etc. Dialogue: 0,0:06:31.48,0:06:36.57,Default,,0000,0000,0000,,et ne cédez pas aux sirènes du "mais c'est plus facile d'avoir le mot de pase en clair pour l'utilisateur" Dialogue: 0,0:06:36.57,0:06:39.84,Default,,0000,0000,0000,,c'est pas vrai, ça donne l'impression que c'est plus facile mais en fait Dialogue: 0,0:06:39.84,0:06:43.00,Default,,0000,0000,0000,,quand il se fera piquer son mot de passe à cause de vous Dialogue: 0,0:06:43.00,0:06:46.76,Default,,0000,0000,0000,,c'est vous qu'il ira venir voir et il ira emmerder votre support Dialogue: 0,0:06:46.76,0:06:48.96,Default,,0000,0000,0000,,voilà et faîtes du HTTPS.