Sto costruendo un sito web sul quale voglio rendere molto facile agli utenti la creazione di pagine anonime e successivamente la possibilità di tornare e modificare quelle pagine. Un modo per farlo è distribuire i biglietti riservati che derivano dall'ID della pagina a quegli utenti quando creano la pagina. Più tardi sarei in grado di ricavare l'ID della pagina dal ticket e consentire a un utente in possesso del ticket di modificare quella pagina.
Naturalmente questo deve essere sicuro, quindi : 1) le terze parti non dovrebbero essere in grado di ricavare l'ID della pagina da un determinato ticket, e ancora più importante: 2) terze parti non dovrebbero essere in grado di prevedere il biglietto per un dato ID di pagina.
Potrei ovviamente farlo facilmente generando casualmente i ticket e archiviandoli in un database, tuttavia vorrei provare a fare questo senza dover memorizzare i ticket.
In altre parole, sto cercando qualcosa di simile a questo:
- Sia A un ID pagina pubblico univoco.
- Sia S una specie di chiave master immutabile o altro segreto che possiedo e non me ne frega.
- Usando S, trasforma A in B, in modo tale che in seguito possa trasformare B in A, ma qualcuno che non è in possesso di S non può.
- Non dovrebbe essere possibile, o essere molto difficile, derivare S anche se hai una vasta collezione di coppie A-B.
Esiste un tale processo? Una cosa che ho pensato è un semplice XOR, tuttavia sarebbe facile craccare con solo alcuni esempi di coppie A-B. Non posso usare un hash, perché sono intenzionalmente irreversibili; Non posso derivare A da B se B è un hash di A.