ID sicuri e QR

2

Supponiamo che io voglia offrire agli utenti del mio sito l'opzione di pagare un servizio e usarlo in seguito.

Sto pensando di generare un ID univoco per il servizio a pagamento. Voglio essere in grado di fidarmi dell'ID per decidere se l'utente ha pagato il servizio o meno, ma non voglio memorizzare nulla sui server perché l'ID dovrebbe avere tutte le informazioni di cui ho bisogno.

Quanto dovrebbe durare l'ID per garantire che nessuno sarebbe in grado di crearne uno senza pagare?

Esistono best practice per generare questo ID?

Pensi che sarebbe possibile memorizzare l'ID su un QR? Sembra che il QR diventi troppo grande quando si tenta di memorizzare, ad esempio, 1024 caratteri.

    
posta Marco Altieri 11.02.2017 - 14:03
fonte

1 risposta

3

Ci sono due possibilità:

  1. Devi solo assicurarti che il tuo server abbia generato il token

Il modo più semplice che vedo è che il token fornisca all'utente una concatenazione dell'ID (che potrebbe essere un semplice ID incrementale) e un HMAC di questo ID. Data una chiave HMAC di lunghezza appropriata (almeno 128 bit), l'utente non sarebbe in grado di generare un token valido.

La lunghezza HMAC stessa dipende dall'algoritmo scelto. Codificato in base64, un HMAC-SHA1 occupa 28 caratteri, un HMAC-SHA256 accetta 44 caratteri. Ciò ti lascia abbastanza spazio per il tuo ID anche se codifichi il token in un codice QR.

  1. Inoltre, non vuoi che l'utente conosca il contenuto del token

Suggerirei di crittografare il contenuto del token utilizzando la crittografia autenticata . Ad esempio, potresti utilizzare AES-GCM o AES-EAX. Utilizzando una chiave di lunghezza sufficiente, l'utente non sarebbe in grado di conoscere il contenuto del token né essere in grado di modificarlo senza che il tuo server se ne accorga.

Questo aggiungerà un leggero sovraccarico ai dati, ma non ho familiarità con gli algoritmi. Stimo circa 50-100 byte una volta codificata Base64, che lascia comunque un po 'di spazio per i tuoi dati in un codice QR.

    
risposta data 11.02.2017 - 19:12
fonte

Leggi altre domande sui tag