CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JS] Sécurité avec RTCMultiConnection ?

Cenobyte41
Cenobyte41
Niveau 6
15 novembre 2014 à 18:43:26

Hello, j'ai actuellement déjà fait un projet avec cette libs où les permissions était pas très importantes... Mais j'ai plusieurs idées, où un système de permission pourrait être important.

Le site de la libs: http://www.rtcmulticonnection.org/docs/

En gros, cette libs c'est du javascript executé coté client, et utilisant le WebRTC pour connecter des utilisateurs en P2P. Et il y a un principe de sessions grâce à cette libs, et de client "host" (le premier à ouvrir la session est hôte, vu que rien ne passe par un serveur).

Alors dans un premier temps, dans mon premier projet, la sécurité était chez chaque client (filtrage des messages dans du JS avant de l'afficher à l'écran afin d'éviter du XSS ou autres injections, vue que tout allait de client à client).

Dans mes futurs projets, j'aurais besoin de différencier un peer "admin" d'un peer "visiteur", sachant qu'ils executent tous les deux du code coté client...

Et que la library à des trucs qui me gêne comme:
http://www.rtcmulticonnecnnection.org/docs/isInitiator/
C'est à la fois un getter et un setter, ce qui veux dire qu'une version modifier de mon JS pourrait se considérer voir faire considérer comme hôte alors qu'il ne devrait pas non ? Est ce que vous pouvez me dire comment être safe vis à vis de ça ?

Ensuite, j'avais une idée pour qu'un initiateur de session ai un niveau de permission distinct, et vraiment safe pour diriger ce qui se passe dans sa session, mais je ne parvient pas à trouver une façon de faire ça...

J'ai pensé à un chiffrement asymétrique avec une clé privé enregistrer sur le PC de l'admin et la clé publique en valeur extra ? ça parait safe, mais sachant que tous n'est qu'en P2P, mes fonctions d'administration restent coté client, jamais coté serveur, du coup comment prouver à un peers visiteur que les modifs appliqué par un peers "admin" viennent bel et bien d'un peers "admin", il pourrait passer à coté de cette vérification...

J'ai beau y réfléchir, je ne trouve pas d'idée pour réaliser une administration décentraliser via WebRTC vraiment safe >_<' , vous auriez des suggestions ? :question:

Cenobyte41
Cenobyte41
Niveau 6
15 novembre 2014 à 18:49:35

(j'ai aussi vu des exemples de connection "moderator" dans les exemples du github de la libs, mais j'avais limite eu l'impression que c'était juste un code à part qui se dit modérateur, j'ai du mal à comprendre réellement la sécurité du truc...)

Pseudo supprimé
Pseudo supprimé 15 novembre 2014 à 18:55:57

Bah c'est pas compliqué : soit tu as une autorité qui valide le statut de tes utilisateurs, soit tu te bases sur l'indice de confiance de tes pairs (risqué, tu peux faire émerger de la confiance factice s'il n'y a pas d'autorité centrale). Par conséquent, à moins d'avoir des pairs de confiance (ce qui ne remet pas en cause l'aspect décentralisé), tu n'as pas de garantie. Il y a toute une littérature sur le calcul de confiance des pairs, si tu le souhaites. C'est un domaine très vaste et avec pas mal d'enjeux, comme tu t'en rends compte :D

Cenobyte41
Cenobyte41
Niveau 6
15 novembre 2014 à 19:06:34

Hmmm, du coup:

-Soit on pourrait dire que la session créer génère un couple de clé privé/publique type RSA coté client, et que le serveur à juste à conserver par rapport à la session la clé publique et que quand quelqu'un souhaite être admin, il envoi au serveur sa clé, et si il y a correspondance avec la clé publique, ça l'identifie pour les autres peers comme un admin...

Mais cette méthode impose de demander plus au serveur que de bêtement signaler "x peers dans y session" et d'envoyer un signal simple, il doit alors se charger d'approuver des identifications, ça me parait aussi moins décentralisé du coup.

-Soit, ton autre suggestion serait un système de confiance entre les peers, mais j'ai peur que ça ne soit pas encore à ma portée un tel système, ... Je vois ça un peu comme le Bitcoin et son système de "blockchain" approuvant mathématiquement les transactions... Mais je ne me vois pas encore inventer un tel système (de plus le blockchain du Bitcoin à le soucis qu'il doit être intégralement récupérer chez chacun, et je sais que ça fait vite défiler des Go de données dans le disque dur... Pas vraiment adapté à un usage en navigateur et son cache je pense...), j'ai du mal après à cerné comment serait calculer la confiance dans un système plus éphémère que celui du Bitcoin, et si il y a peu de monde l'utilisant, c'est nécessairement peu fiable non ?

Cenobyte41
Cenobyte41
Niveau 6
15 novembre 2014 à 19:14:10

(bon en y pensant, y a sûrement moyen de faire un bête mot de passe dans une bdd SQL et d'effectuer des requetes vers cette dernière pour identifier le peers admin, mais à tout les coups j'ai l'impression que ça détruit le coté décentraliser...)

Enfaite, ma première application était un chat en extension Chrome totalement chiffré, et où j'avais fait des options permettant à n'importe qui d'utiliser son propre serveur de signal au lieu de celui par défaut, car je pense que du vrai décentraliser aurait besoin de ne pas dépendre de mon propre serveur et de pouvoir fonctionner sur n'importe quel serveur de signal... Mais si je commence à lui demander plus de chose, je serais obliger de faire une version modifier ou spécial des serveurs comme ça existant...
(là j'en ai juste utilisé un bête qui crée des sessions sur demande et connecte les gens dedans...)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment