0.56. Générer un nombre aléatoire ne peut pas être confié à un ordinateur. Quel que soit son travail la valeur aléatoire est complètement prédictible car est produite par un algorithme. Par contre, il est possible de créer un générateur aléatoire indépendant de l'ordinateur. Il suffit d'alimenter un transistore entre la base et le collecteur avec l'émetteur en l'air. Le résultat est la production d'un bruit blanc. Il suffit ensuite de filtrer ce bruit blanc avec un signal qui s'y superpose. La valeur du signal carré (porteuse) représente 1 quand il est bien rempli par le bruit blanc, zéro quand il n'est pas assez rempli. Ensuite il suffit de compter les signaux par paquet de 8 pour en faire un octet.
En fait, pour créer un nombre complètement aléatoire, il faudrait un composant électronique sur la carte mère qui capterait le "bruit" environnemental. Un peu comme les mouchetis sur les tv avant la tnt lorsqu'on ne captait pas de chaine. Ca serait complètement aléatoire !.
Je me souviens d'un article sur la façon dont Cloudflare générait ses nombres aléatoires en se basant sur des photos prises à intervalles réguliers de l'état d'un mur entier de lampes à lave, de doubles pendules ou encore de la désintégration d'une boulette d'uranium.
Quand il s'agit de manipuler des données sécurisées, Il est évident qu'il faut utiliser des fonctions de chiffrement avancé que dispose le langage qu'on utilise au lieu d'utiliser la fonction classique random. Cette dernière peut-être utilisée pour des animations et des rendus sans enjeux sécuritaire (expérience UX)
C'est pas la fonction qui est dangereuse, c'est les développeurs qui sont incompétents. C'est même écrit dans la doc officielle que c'est du *pseudo*-aléatoire : "The Math.random() method returns a **pseudo-random** number". N'importe qui qui fait du dev de façon un peu sérieuse sait que le pseudo-aléatoire n'a rien à voir avec un "aléatoire cryptographique"...
Bonne vidéo, mais il y a de plus en plus de fautes de frappe ou d'orthographe sur tes vidéos, ça ne fait pas très pro, il faudrait prendre plus de temps pour se relire
Ah cool, merci ! Je vais le partager avec des gens car je n'arrivais pas à leur expliquer de pourquoi faut utiliser des random cryptographique plutôt que le joujou random 😅
Tant que tu utilise le nombre avant pour générer le nombre suivant c'est mort... Il faut n'utilise que le seed melangé et ne pas réinjecter le nombre retourner... Par exemple le nombre avant le mod... Avec un seed avec suffisamment de bit (256 min)...
Je ne comprends pas pourquoi il est impossible de créer un générateur de nombres aléatoires si on utilise les multiples capteurs présents sur un ordinateur, en introduisant une ou plusieurs nouvelles graines dans l'algorithme principal à chaque nouveau nombre généré. Est-ce que je n'ai pas compris le problème?
Je ne comprends pas bien, le risque n'existe que pour des programmes écrits par des personnes particulièrement incompétentes. Pour les langages de programmation dignes de ce nom, Ils me semblait que les fonctions de génération de nombres aléatoires utilisaient l'heure machine, et plus particulièrement exploitaient les valeurs des microsecondes, rendant ainsi impossible de prévoir la valeur quasi-aléatoire obtenue. Un scolaire bricoleur qui joue avec des petits processeurs Arduino 8 bits est même capable de faire cela en 10 minutes !
Moi l'idée qui me vient en tête c'est de créer plusieurs générateurs de nombres différents (en centaine) et t'en appelles un à chaque fois de façon différente aléatoirement à l'appel, comme ca on élargie le déterminisme même si ca reste déterministe.
@@samuel310597 oui, mais le but serait de toujours changé de générateurs. Duc oup ca élargit le champs des possibles. Mais effectivement ca ne sort pas du cadre déterministes
Merci pour ton travail. Mais du coup ne peut-on pas déjà simplement faire un nombre d'appel aléatoire à Math.random() ? Car si on a une série de 5 aléatoires (donc en partant du seed, l'occurence 1, puis 2, puis 3, puis 4, puis 5)... tu peux deviner le 6ème. Mais si on double chaque appel (on trash le premier retour), on aura alors les occurences 2, 4, 6, 8 et 10 de ta chaine pseudo aléatoire avec la seed... donc on pourra plus deviner avec la méthode conventionnelle (sauf à savoir l'astuce)... et si encore mieux, si on fait un Math.floor(Math.random()*10) (pour avoir un entier entre 0 et 9)... et on "boucle" le Math.random() pour "trash" et récupérer que le dernier, ça commence à être chaud à péter non ?
Ton nombre d'appel aléatoire est lui même soumis à du pseudo aléatoire, et de façon générale faire de la cybersécurité par l'obscurantisme (faire des étapes intermédiaires en espérant que le hacker ne comprenne pas) ça marche pas trop et ça se casse très vite (reverse, bruteforce et j'en passe)
@@Impact_t ou alors on démarre la série par une racine aléatoire en fonction de différentes entrées ou état du système (mouvement souris, tension et utilisation des CPU et GPU,...)
Y a des cons qui génère les nombres aléatoires côté client ? Ou isolé leurs avec un seed par connections ? Où on utilise une lib système qui utilise l'activité de la.machine pour mélanger le seed ?
Ca depend de ou tu place la limite de hasard tout est predictible avec suffisamment d'informations le trucs c'est juste de faire en sorte de devoir connaître trop d'informations pour le rendre predictible humainement parlant
Super contenu, comme toujours! Un peu hors sujet, mais je voulais demander: Mon portefeuille OKX contient des USDT et j'ai la phrase de récupération. (alarm fetch churn bridge exercise tape speak race clerk couch crater letter). Comment puis-je les transférer vers Binance?
0.56. Générer un nombre aléatoire ne peut pas être confié à un ordinateur. Quel que soit son travail la valeur aléatoire est complètement prédictible car est produite par un algorithme.
Par contre, il est possible de créer un générateur aléatoire indépendant de l'ordinateur.
Il suffit d'alimenter un transistore entre la base et le collecteur avec l'émetteur en l'air.
Le résultat est la production d'un bruit blanc. Il suffit ensuite de filtrer ce bruit blanc avec un signal qui s'y superpose. La valeur du signal carré (porteuse) représente 1 quand il est bien rempli par le bruit blanc, zéro quand il n'est pas assez rempli.
Ensuite il suffit de compter les signaux par paquet de 8 pour en faire un octet.
On peut aussi utiliser les propriétés aléatoires de la mécanique quantique
Ce n'est pas la fonction qui est dangereuse, mais de l'utiliser pour ce pour quoi elle n'est pas prévue.
Très juste.
En fait, pour créer un nombre complètement aléatoire, il faudrait un composant électronique sur la carte mère qui capterait le "bruit" environnemental. Un peu comme les mouchetis sur les tv avant la tnt lorsqu'on ne captait pas de chaine. Ca serait complètement aléatoire !.
Je me souviens d'un article sur la façon dont Cloudflare générait ses nombres aléatoires en se basant sur des photos prises à intervalles réguliers de l'état d'un mur entier de lampes à lave, de doubles pendules ou encore de la désintégration d'une boulette d'uranium.
@@NiamorH Tu troll c'est pas possible 😂😂
@@mwlulud2995 non il ne troll pas cherche cloudflare lava lamp
@@mwlulud2995 ruclips.net/video/1cUUfMeOijg/видео.html
@@mwlulud2995 ruclips.net/video/lydhprdvVmc/видео.html
Quand il s'agit de manipuler des données sécurisées, Il est évident qu'il faut utiliser des fonctions de chiffrement avancé que dispose le langage qu'on utilise au lieu d'utiliser la fonction classique random. Cette dernière peut-être utilisée pour des animations et des rendus sans enjeux sécuritaire (expérience UX)
Hyper intéressant, merci. Comment tant de dev ont-ils pu se faire ainsi avoir ?
Super, merci !
Je relaie !
C'est pas la fonction qui est dangereuse, c'est les développeurs qui sont incompétents. C'est même écrit dans la doc officielle que c'est du *pseudo*-aléatoire : "The Math.random() method returns a **pseudo-random** number". N'importe qui qui fait du dev de façon un peu sérieuse sait que le pseudo-aléatoire n'a rien à voir avec un "aléatoire cryptographique"...
Bonne vidéo, mais il y a de plus en plus de fautes de frappe ou d'orthographe sur tes vidéos, ça ne fait pas très pro, il faudrait prendre plus de temps pour se relire
Hors sujet
Je m'en suis même pas aperçu, c'est une vidéo informative pas un séminaire
Mdr on s’en fou des fautes! Big pouce sa7bi pour tes vidéos
La quantité et leur visibilité est gênante
C'est important pour toi ? 😑
Sur certains navigateurs, il n'est point question de F12 pour afficher la console mais Ctrl + Maj + i
Intéressant, merci😊
Très intéressant, merci.
Ok mais maintenant imagine un nombre aléatoire avec 5 seed différent en input
Ah cool, merci !
Je vais le partager avec des gens car je n'arrivais pas à leur expliquer de pourquoi faut utiliser des random cryptographique plutôt que le joujou random 😅
Tant que tu utilise le nombre avant pour générer le nombre suivant c'est mort... Il faut n'utilise que le seed melangé et ne pas réinjecter le nombre retourner... Par exemple le nombre avant le mod... Avec un seed avec suffisamment de bit (256 min)...
Salut où est le lien du github ? Il n'est pas dans la description
Très intéressant
La vidéo me fait pensé à celle de micode sur le mec qui a créé le script pour le loto aux États Unis, trop chaud
Tres bonne vidéo apres en pratique les randoms sont souvent arrondi (coté serveur) donc c'est assez compliqué de les avoir pour le client
Je ne comprends pas pourquoi il est impossible de créer un générateur de nombres aléatoires si on utilise les multiples capteurs présents sur un ordinateur, en introduisant une ou plusieurs nouvelles graines dans l'algorithme principal à chaque nouveau nombre généré.
Est-ce que je n'ai pas compris le problème?
Enfaite un generateur de nombre vraiment vraiment aléatoire est impossible on peut que simuler l aléatoire en cachant l algorithme
si un signal physique comme les bruits ambiants détectés par le micro est utilisé alors ce sera vraiment aléatoire.
Je ne comprends pas bien, le risque n'existe que pour des programmes écrits par des personnes particulièrement incompétentes. Pour les langages de programmation dignes de ce nom, Ils me semblait que les fonctions de génération de nombres aléatoires utilisaient l'heure machine, et plus particulièrement exploitaient les valeurs des microsecondes, rendant ainsi impossible de prévoir la valeur quasi-aléatoire obtenue. Un scolaire bricoleur qui joue avec des petits processeurs Arduino 8 bits est même capable de faire cela en 10 minutes !
Intéressant merci !
Un grand merci 🙏
Toujours cool tes vidéos, merci. Allez pour pinailler: si tu pouvais dire _bibliothèque_ Open SSL et _bibliothèque_ BitcoinJS 😬
Oulaaaaaa tu deviens excellent !!!
Effectue simplement une opération mathématique avec un modulo et c'est réglé. Ou simplement se baser sur des phénomènes physique (Ex : résistance).
Moi l'idée qui me vient en tête c'est de créer plusieurs générateurs de nombres différents (en centaine) et t'en appelles un à chaque fois de façon différente aléatoirement à l'appel, comme ca on élargie le déterminisme même si ca reste déterministe.
Du coup ça reste encore déterministe vu que tu utilises un nombre aléatoire pour appeler tes générateurs
@@samuel310597 oui, mais le but serait de toujours changé de générateurs. Duc oup ca élargit le champs des possibles. Mais effectivement ca ne sort pas du cadre déterministes
J'ai eu la même idée que toi! Faut séparer la logique de la génération du nombre et l'appel à un nombre aléatoire
@@alexandrerodriguez8723 du coup il y a besoin de plusieurs logique de génération de nombre non ?
Video très propre comme d'hab
Qui ici peut m'expliquer les slover sat utiliser pour casser le sha256?
*prévisible et non *prédictible
Il et ou le github ??
PwnFunction/v8-randomness-predictor
En réalité le vrai hasard n'existe pas et meme à l'échelle de l'univers.
Si en mecanique quantique. En tout cas, dans l'état de nos connaissances, il y a de l'aléatoire dans l'infiniment petit
Merci pour ton travail. Mais du coup ne peut-on pas déjà simplement faire un nombre d'appel aléatoire à Math.random() ? Car si on a une série de 5 aléatoires (donc en partant du seed, l'occurence 1, puis 2, puis 3, puis 4, puis 5)... tu peux deviner le 6ème. Mais si on double chaque appel (on trash le premier retour), on aura alors les occurences 2, 4, 6, 8 et 10 de ta chaine pseudo aléatoire avec la seed... donc on pourra plus deviner avec la méthode conventionnelle (sauf à savoir l'astuce)... et si encore mieux, si on fait un Math.floor(Math.random()*10) (pour avoir un entier entre 0 et 9)... et on "boucle" le Math.random() pour "trash" et récupérer que le dernier, ça commence à être chaud à péter non ?
Ton nombre d'appel aléatoire est lui même soumis à du pseudo aléatoire, et de façon générale faire de la cybersécurité par l'obscurantisme (faire des étapes intermédiaires en espérant que le hacker ne comprenne pas) ça marche pas trop et ça se casse très vite (reverse, bruteforce et j'en passe)
@@Impact_t ou alors on démarre la série par une racine aléatoire en fonction de différentes entrées ou état du système (mouvement souris, tension et utilisation des CPU et GPU,...)
@@FlyBy2507 C'est ce qui est utilisé (entre autres) par le /dev/urandom sur Linux
mais comment fonctionne les csprng ?
Je pense qu'il y a plusieurs facons différentes
Y a des cons qui génère les nombres aléatoires côté client ? Ou isolé leurs avec un seed par connections ? Où on utilise une lib système qui utilise l'activité de la.machine pour mélanger le seed ?
Piton the french programming language.
Dangereuse même.
Sinon, le déterminisme n'empêche pas le hasard hein.
Ca depend de ou tu place la limite de hasard tout est predictible avec suffisamment d'informations le trucs c'est juste de faire en sorte de devoir connaître trop d'informations pour le rendre predictible humainement parlant
Super contenu, comme toujours! Un peu hors sujet, mais je voulais demander: Mon portefeuille OKX contient des USDT et j'ai la phrase de récupération. (alarm fetch churn bridge exercise tape speak race clerk couch crater letter). Comment puis-je les transférer vers Binance?
Ptdrrr
lets go