Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292

    Decriptare/Validare una firma

    Ciao ragazzi,
    avrei una domanda da farvi, sto sviluppando delle API in soap xml, e per mettere un po di sicurezza nelle richieste tra client e server ho aggiunto come parametro obbligatorio (da parte del client), l'invio di una firma che deve cambiare per ogni richiesta.

    La funzione per creare la firma è questa:

    Codice PHP:
    function creaFirma($secretKey)
    {
        
    $salt mt_rand();
        
    $signature hash_hmac('sha256'$salt$secretKeytrue);
        
    $encodedSignature base64_encode($signature);
        
    $encodedSignature urlencode($encodedSignature);
        return 
    $encodedSignature;

    La secretKey è una stringa che fornisco al client.

    La mia domanda è come faccio a decriptare questa firma nel lato server? Se non è possibile, come faccio a validarla?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, potresti oltre che darla al cliente la secretkey conservarla in un db...che al momento dello scambio delle chiavi controlla se esiste e se corrisponde con la persona che si vuole loggare

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    La secretKey la conservo già nel DB, e faccio già il controllo della secretKey per ogni richiesta. Il problema non è questo, ma quello di poter validare la firma.

    Come faccio a validare la firma, visto che il salt è sempre diverso?

  4. #4
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ma scusami, cosa intendi per validazione?La validazione della secretkey non la ottieni già quando la conservi nel db?è da quel momento in poi che per te diventa una secretkey valida, quando la associ all'id del tuo cliente.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Allora, forse non mi sono spiegato bene.
    La secretKey è una stringa generata precedentemente ed è in formato md5.

    grazie alla secretKey mi vado a generare una firma che l'algoritmo è quello che ho pstato nella discussione generale, ovvero:

    Codice PHP:
    function creaFirma($secretKey)
    {
        
    $salt mt_rand();
        
    $signature hash_hmac('sha256'$salt$secretKeytrue);
        
    $encodedSignature base64_encode($signature);
        
    $encodedSignature urlencode($encodedSignature);
        return 
    $encodedSignature;

    per ogni richiesta che il client fa al server, deve inviare: apiKey, secretKey e signature (la firma generata dalla funzione creaFirma).

    quando questi parametri arrivano al server faccio una validazione dell'apiKey e della secretKey, ma della signature (generata dalla funzione creaFirma) come devo farla visto che il salt è sempre casuale?

  6. #6
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Scusami tu, non avevo compreso io il problema fino in fondo cmq potresti validarla cercando, al momento dell'invio al server, all'interno della signature la tua secretkey, dato che la validazione è già venuta nella creazione della signature tramite chiave segreta.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    e come posso fare se il salt è random? Quando arriva al server ho già la stringa criptata, quindi anche se volessi "riprodulra" conoscendo la secretKey non potrei farlo perché il salt non sarà mai uguale.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    up

  9. #9
    se usi un algoritmo che non ha l'inverso, non lo decodificherai mai e non potrai mai validarlo... fatti mandare solo la secretKey e verifica che sia quella nel db... altrimenti cercati in rete un algoritmo decriptabile o che abbia l'inverso... oppure non usare funzioni random per il salt, ma che ne so il salt potrebbe essere la 1°/4°/6°/9°/2° char della secreteKey... insomma, vedi te
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    purtroppo l'algoritmo deve essere quello, anche perché il salt random mi garantisce che la firma è sempre diversa per ogni richiesta. Anche se non si può decriptare sarebbe sufficiente poterlo validare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.