Sur Lock Challenge, la bonne réponse n'est pas dans la page que le joueur ouvre, et ce que cache le cadenas non plus. La réponse du joueur part vers notre serveur, le serveur tranche, et seule une bonne réponse fait revenir la révélation. Voici comment ça marche, ce que ça empêche, et où ça s'arrête.
Comment les réponses sont vérifiées
Le créateur fixe la réponse
Dans l'éditeur, le créateur choisit le code, le mot, le schéma ou le lieu qui ouvre le cadenas, et le contenu qu'il cache.
Le serveur la stocke en hachage
Une réponse tapée ou touchée est transformée en hachage bcrypt avant d'être enregistrée. Un hachage prouve qu'une réponse est juste sans pouvoir être relu. Une position GPS, un nombre accepté avec une marge et un mot à deviner ne se vérifient pas avec un hachage : ils restent sur le serveur sous forme de paramètres et ne sont jamais envoyés à la page.
Le joueur envoie une réponse
La page du joueur contient le cadenas, la question et l'indice, pas la réponse. Ce que le joueur tape ou touche est envoyé au serveur.
Le serveur compare, puis envoie la récompense
Le serveur compare la réponse au hachage ou à ses propres paramètres. Une mauvaise réponse reçoit le message d'erreur du créateur. Seule une bonne réponse fait revenir le contenu caché : le texte, le lien, l'image ou la page.
Ce que ça empêche
- Lire la réponse dans le code source. La bonne réponse n'est ni dans le HTML ni dans les scripts que reçoit le navigateur : les outils de développement ne révèlent rien.
- Ouvrir la révélation sans résoudre. Le contenu caché est assemblé sur le serveur après une bonne réponse. Avant, il n'est pas dans la page.
- Essayer tous les codes. Chaque cadenas accepte au plus 30 réponses par minute depuis une même adresse IP, et 120 par minute toutes adresses confondues. Le créateur peut aussi fixer un nombre maximal de tentatives, plafonner le nombre de joueurs ou fermer le cadenas après la première résolution.
Quelle réponse est vérifiée comment
- Les réponses écrites, codes numériques, schémas, flèches, couleurs, interrupteurs et identifiants sont stockés en hachage bcrypt et comparés sur le serveur. Une réponse écrite ignore les majuscules et les accents, sauf si le créateur en décide autrement.
- Une position GPS, un nombre accepté avec une marge et un mot à deviner sont vérifiés sur des paramètres gardés côté serveur. La page ne reçoit que ce qu'il faut pour jouer, comme la distance jugée assez proche ou le nombre de lignes de la grille.
- Un mot de passe d'accès demandé avant le début du jeu est lui aussi stocké en hachage bcrypt.
- Pour que l'éditeur puisse réafficher sa réponse au créateur, une seconde copie est chiffrée (AES-256-GCM) avec une clé détenue par le serveur. Aucune page joueur ne la lit.
Ce que la page contient, et la seule exception
La page du joueur contient ce qu'il doit lire : la question, l'indice, les titres des étapes, et les messages écrits par le créateur pour une mauvaise réponse et pour une résolution. Ce n'est pas là qu'il faut mettre le secret.
La seule exception est le cadenas musical qui demande de rejouer une mélodie. Ses notes sont envoyées au navigateur, parce que les joueurs doivent les entendre : sur ce cadenas, quelqu'un qui sait où chercher peut lire la réponse dans la page. Un cadenas musical où il faut nommer l'air garde le titre en hachage bcrypt, comme n'importe quelle réponse écrite.
Les limites, honnêtement
- Une réponse partagée reste partagée. Le serveur vérifie la réponse, pas la personne : un joueur qui fait passer le code permet à d'autres d'ouvrir le cadenas. Plafonner les joueurs, fermer après la première résolution, un mot de passe d'accès ou des dates d'ouverture et de fermeture limitent sa diffusion.
- Il faut une connexion. La réponse est vérifiée sur le serveur : sans réseau, le joueur ne peut pas ouvrir le cadenas. Un wifi invité suffit.
- La mélodie à rejouer, comme expliqué plus haut.
Ce qui est enregistré sur les joueurs
- Les joueurs ne créent jamais de compte.
- Un identifiant aléatoire est gardé dans un cookie, pour que les tentatives d'un même joueur comptent comme une seule session.
- Pour chaque réponse : si elle était juste, l'adresse IP et l'identifiant du navigateur (user agent). Pour chaque session : le nombre de tentatives et d'indices, le temps passé, l'appareil, la page d'origine et la langue. Le créateur les voit sous forme de statistiques.
- Une adresse email ou un nom seulement si le créateur en demande un à la révélation. Il va à ce créateur seul, et Lock Challenge n'y envoie jamais de prospection.
- Les pages joueur sont en noindex : un cadenas et son titre n'apparaissent pas dans les moteurs de recherche.
Plus de détails dans la politique de confidentialité.
Questions
- Un joueur peut-il trouver la réponse dans le code source de la page ?
- Non, sauf sur un cadenas musical qui demande de rejouer une mélodie, dont les notes sont dans la page. Les réponses tapées ou touchées sont stockées en hachage bcrypt et comparées sur le serveur, et le GPS, le nombre et le mot à deviner sont vérifiés sur des paramètres que la page ne reçoit jamais.
- Le contenu caché est-il dans la page avant que le cadenas soit résolu ?
- Non. Le serveur ne renvoie la révélation qu'après une bonne réponse. Quand le créateur exige une adresse email ou un nom, la révélation attend aussi qu'il soit donné.
- Peut-on essayer tous les codes jusqu'à tomber sur le bon ?
- Chaque cadenas accepte au plus 30 réponses par minute depuis une même adresse IP, et 120 par minute toutes adresses confondues. Le créateur peut aussi fixer un nombre maximal de tentatives pour le cadenas.
- Le joueur a-t-il besoin d'un compte ?
- Non. Les joueurs ouvrent un lien ou scannent un QR code. Il leur faut une connexion internet, car la réponse est vérifiée sur le serveur.