No Lock Challenge, a resposta certa não está na página que o jogador abre, e o que o cadeado esconde também não. A resposta do jogador vai para o nosso servidor, o servidor decide, e só uma resposta certa traz a revelação de volta. Veja como funciona, o que isso impede e onde para.
Como as respostas são verificadas
O criador define a resposta
No editor, o criador escolhe o código, a palavra, o padrão ou o lugar que abre o cadeado, e o conteúdo que ele esconde.
O servidor guarda a resposta como hash
Uma resposta digitada ou tocada vira um hash bcrypt antes de ser salva. Um hash prova que uma resposta está certa sem poder ser lido. Uma posição GPS, um número aceito com margem e uma palavra a adivinhar não podem ser conferidos com um hash: ficam no servidor como parâmetros e nunca são enviados para a página.
O jogador envia uma resposta
A página do jogador traz o cadeado, a pergunta e a dica, não a resposta. O que o jogador digita ou toca é enviado ao servidor.
O servidor compara e envia a recompensa
O servidor compara a resposta com o hash ou com os próprios parâmetros. Uma resposta errada recebe a mensagem de erro do criador. Só uma resposta certa traz de volta o conteúdo escondido: o texto, o link, a imagem ou a página.
O que isso impede
- Ler a resposta no código-fonte. A resposta certa não está no HTML nem nos scripts que o navegador recebe: as ferramentas de desenvolvedor não revelam nada.
- Abrir a revelação sem resolver. O conteúdo escondido é montado no servidor depois de uma resposta certa. Antes disso, ele não está na página.
- Testar todos os códigos. Cada cadeado aceita no máximo 30 respostas por minuto de um mesmo endereço IP, e 120 por minuto somando todos os endereços. O criador também pode definir um número máximo de tentativas, limitar o número de jogadores ou fechar o cadeado depois da primeira resolução.
Qual resposta é verificada e como
- Respostas escritas, códigos numéricos, padrões, setas, cores, interruptores e logins ficam guardados como hash bcrypt e são comparados no servidor. Uma resposta escrita ignora maiúsculas e acentos, a menos que o criador peça o contrário.
- Uma posição GPS, um número aceito com margem e uma palavra a adivinhar são verificados com parâmetros guardados no servidor. A página recebe só o que o jogador precisa para jogar, como a distância que conta como perto o bastante ou o número de linhas do tabuleiro.
- Uma senha de acesso pedida antes do início do jogo também fica guardada como hash bcrypt.
- Para que o editor possa mostrar de novo a resposta ao criador, uma segunda cópia é criptografada (AES-256-GCM) com uma chave mantida pelo servidor. Nenhuma página de jogador a lê.
O que a página contém, e a única exceção
A página do jogador contém o que o jogador deve ler: a pergunta, a dica, os títulos das etapas e as mensagens que o criador escreveu para uma resposta errada e para uma resolução. Não é ali que vai o segredo.
A única exceção é o cadeado musical que pede para repetir uma melodia. As notas são enviadas ao navegador, porque os jogadores precisam ouvi-las: nesse cadeado, alguém que saiba onde procurar consegue ler a resposta na página. Um cadeado musical em que é preciso adivinhar a música guarda o título como hash bcrypt, como qualquer resposta escrita.
Os limites, com honestidade
- Uma resposta compartilhada continua compartilhada. O servidor confere a resposta, não a pessoa: um jogador que passa o código adiante permite que outros abram o cadeado. Limitar os jogadores, fechar depois da primeira resolução, uma senha de acesso ou datas de abertura e fechamento reduzem até onde ela chega.
- É preciso conexão. A resposta é verificada no servidor, então um jogador sem rede não consegue abrir o cadeado. Um wifi de visitantes basta.
- A melodia para repetir, como explicado acima.
O que é registrado sobre os jogadores
- Os jogadores nunca criam conta.
- Um identificador aleatório fica guardado em um cookie, para que as tentativas de um mesmo jogador contem como uma única sessão.
- Para cada resposta: se estava certa, o endereço IP e o identificador do navegador (user agent). Para cada sessão: o número de tentativas e de dicas, o tempo gasto, o dispositivo, a página de origem e o idioma. O criador vê isso como estatísticas.
- Um endereço de email ou um nome só quando o criador pede um na revelação. Ele vai só para esse criador, e o Lock Challenge nunca envia publicidade para ele.
- As páginas de jogador são noindex: um cadeado e o título dele não aparecem nos buscadores.
Mais detalhes na política de privacidade.
Perguntas
- Um jogador consegue achar a resposta no código-fonte da página?
- Não, exceto em um cadeado musical que pede para repetir uma melodia, cujas notas estão na página. Respostas digitadas ou tocadas ficam guardadas como hash bcrypt e são comparadas no servidor, e o GPS, o número e a palavra a adivinhar são verificados com parâmetros que a página nunca recebe.
- O conteúdo escondido está na página antes de o cadeado ser resolvido?
- Não. O servidor só devolve a revelação depois de uma resposta certa. Quando o criador exige um endereço de email ou um nome, a revelação também espera até que ele seja informado.
- Dá para testar todos os códigos até acertar?
- Cada cadeado aceita no máximo 30 respostas por minuto de um mesmo endereço IP e 120 por minuto somando todos os endereços. O criador também pode definir um número máximo de tentativas para o cadeado.
- O jogador precisa de conta?
- Não. Os jogadores abrem um link ou escaneiam um QR code. Eles precisam de conexão com a internet, porque a resposta é verificada no servidor.