Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    E' vero non ci avevo pensato. Ho bisogno lo stesso di una parola segreta, altrimenti un qualche barone potrebbe crearsi gli hash che vuole. Ok, benissimo.

    Per quanto riguarda la classifica cumulativa:

    Mandare il time stamp.
    Sorgono alcuni problemi però: il server non deve fare il confronto del timestamp con la sua ora, perchè possono non coincidere. Perciò devo madare il timestamp in un parametro GET separato. Magari lo mando hashato.
    Nel DB mi tengo una tabella che funge da log, coi seguenti campi: [oraHash],[ID],[punteggio]
    Mi arriva nella pagina PHP l'hash del timestamp, più l'hash per mandare in segreto tutto, nome utente, punteggio. Verifico che l'hash del timestamp non sia presente dentro la tabella del log dei punteggi con uno stesso punteggio. E lì, il gioco è fatto..

    Vi sembra una buona idea? Certo non è a prova di qualsiasi barone, ma credo che l'utente si debba sbattere abbastanza se vuole barare.

    Se avete in mente altre idee, vi prego, esponetele pure.. Più sicurezza c'è, meglio è.

  2. #12
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    Intendo così:

    classifica.php?nome=gay&punti=123&k1=a557c5a7575ad 76ad57ad&k2=765s76s76c78c67sc6sd76

    k1= md5($nome.$password.$parolasegreta.$punteggio)

    k2= md5($timestamp)

    Il fatto è che k2 è riproducibile senza problemi. Io posso barare lo stesso così...

    Originariamente inviato da mamo139
    per risolvere il problema della classifica cumulativa l'unico modo che ora mi viene in mente è che il client exe scarichi da una pagina del tuo sito di cui poi crea il link un codice che vale una volta sola (generato e salvato sul server quando il client lo richiede) da aggiungere di volta in volta al posto della $key...
    md5($nomeutente.$passwordutente.$punteggio.$codice monouso);
    e l'invio rimane invariato blabla.php?nome=pontino&punti=66&key=...
    usato il codice una volta viene disattivato sul server....
    Scusa, ma non ho capito bene cosa intendi: prima che l'exe mandi il link a classifica.php, va a leggere il codice monouso facendo richiesta a codice.php, magari con i parametri nomeutente e password hashata assieme a una parola segreta. Il codice monouso appena viene letto, va inserito nel DB, nella riga dell'utente. poi subito dopo va a fare il collegamento a classifica.php con la key = md5(nome.password.punteggio.codicemonouso.parolase greta) Classifica.php controlla se effettivamente combacia il codice monouso, poi elimina il codice monouso dalla riga dell'utente nel database. Così che se io sono un furbastro e ripeto il link uguale tale e quale, il codice monouso non esiste più e perciò non succede niente.
    Sembra proprio un buon metodo, devo solo trovare il modo di saper leggere una pagina dall'exe. A questo punto mi dovrei sentire quasi sicuro, salvo reverse dell'exe, ma io preparerò tanti bei scherzetti a coloro che tentano di cracckare il programma.

    Aspetto che posti il metodo matematico, così vediamo quale mi conviene.

  3. #13
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Originariamente inviato da pontino
    Intendo così:

    classifica.php?nome=gay&punti=123&k1=a557c5a7575ad 76ad57ad&k2=765s76s76c78c67sc6sd76

    k1= md5($nome.$password.$parolasegreta.$punteggio)

    k2= md5($timestamp)

    Il fatto è che k2 è riproducibile senza problemi. Io posso barare lo stesso così...

    Attendo il famoso metodo matematico.
    Puoi risolvere diversamente:
    Richiedi questa pagina, con il timestamp in chiaro
    (ts e k sono valori a casaccio, non reali)
    Codice PHP:
    classifica.php?nome=leo&punti=150&ts=19012901929&k=ae675ae67b67431b612

    //ts = time()
    //k = md5($nome.$password.$parolasegreta.$punteggio.$timestamp); 
    In questo modo sul server puoi verificare l'hash avendo tutti i campi
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  4. #14
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    dunque: avete presente i seriali dei programmi?? ecco la mia idea è quella di costruire un semplice genaratore di codici i quali verranno controllati di volta in volta...

    lasciando segreto l'algoritmo che li genera (e di conseguenza anche quello che li controlla ) ecco che abbiamo i codici usa e getta che ci servono e che nn devono essere precedentemente comunicati dal server (anche se questa per me era la cosa piu sicura)

    l'algoritmo che genera il codice seriale deve contenere alcune caratteristiche...
    possiamo considerare un insieme finito di numeri (finito semplicemente perche vogliamo che abbiano tutti la stessa lunghezza) aventi tutti le stesse caratteristiche:
    per fare un esempio stupido tutti i numeri di 20 cifre divisi a doppiette le cui doppiette pari sono numeri primi mentre quelle dispari sono divisibili per 3

    in questo caso (anche se la logica umana riesce facilmente ad individuare il meccanismo che è facile da complicare molto, anche prendendo i numeri non a cifre ma a gruppi di cifre) le probabilità che venda azzeccato per caso il codice sono nel caso di un numero a 20 cifre decimali:

    (8^5*6^5)/10^20 = meno di una su un miliardo, piu probabile vincere al superenalotto che indovinare per caso...

    nel contempo tutti i numeri validi sono rappresentati da una serie numerica...
    prendiamo di volta in volta l'elemento di questa serie corrispondente ad un numero casuale che va da 0 al numero complessivo di numeri disponibili (che nel mio esempio sono piu di due milioni, ma se generi numeri casuali con piu cifre sono molte di piu...)

    mi rendo conto che possa essere un po difficile entrare nell'ottica, ma a me piace fare le cose così: fare le cose facili non gratifica...


    comunque se non ti vuoi incamminare verso la strada del codice seriale puoi fare l'md5 inserendo come parametro ulteriore il timestamp e poi passarlo anche come parametro visibile... in modo che il server possa ricostruire l'md5, vedere se è gia stato usato e poi archiviarlo...
    se non vuoi usare il timestamp puoi usare un numero casuale compreso in un intervallo molto grande, va benissimo ugualmente, l'importante è la presenza di un valore casuale o che varii in continuazione...

  5. #15
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    @leo15:
    E vero! non ci avevo pensato! Scusami, è la prima volta che mi addentro nel mondo della segretezza, e in più è la prima volta che faccio applicazioni che interagiscono online.. Sono un po' inesperto :P
    Ora provo a implementare il tuo metodo, e se a qualcuno viene in mente come poter barare con questo metodo, lo dica pure.

    Per me, e per quello che ho pensato, sembra inattaccabile (salvo reverse dell'applicazione e/o sfortunate collisioni)

    @mamo139: hai postato insieme a me, ora leggo il tuo post.

  6. #16
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da pontino
    salvo reverse dell'applicazione e/o sfortunate collisioni
    non solo reverse, basta aprire l'applicazione con un editor esadecimale, ma secondo me raggiungi comunque un ottimo livello di segretezza...

  7. #17
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    no mamo139, perchè la mia parola segreta non si vedrà neanche quando mi metto a programmare, perciò con un comune editor esadecimale si possono vedere solo istruzioni e niente che assomigli ad una parola segreta.

    Comunque ho quasi capito cosa intendi, ma se con l'andare del tempo i seriali già usati aumentano a dismisura? Io con l'applicazione ho una funzione: y=F(x)
    x è randomico. invio y e x nella classifica.php e gli altri dati
    classifica.php archivia y e aggiunge il punteggio dopo aver controllato se F(x)=y e se y non è già stato archiviato

    Se per caso dovesse succedere che dopo qualche giorno, l'utente gioca di nuovo, e l'applicazione prende in modo random di nuovo una stessa x già utilizzata da qualcun altro?

    Adesso che ci penso, la y viene archiviata e collegata al nome utente e al punteggio. Perciò una collisione può verificarsi solo se la X è uguale a XPRECEDENTE e punteggio sia uguale a PUNTEGGIOPRECEDENTE e nome utente sia uguale a nome utente.
    UHM la probabilità diventa mooooooooooooooooolto bassa.

    Però con il timestamp non esiste modo di collidere a parte collisioni dell'Md5 stesso, oppure che l'utente rivinca con lo stesso punteggio e setti l'orologio allo stesso orario precedente..

    Ho appena capito che la sicurezza assoluta non esiste. E anche che mi sta venendo mal ditesta..
    ora devo pensarci: md5 del timestamp oppure generazione di chiavi? Questo è il dilemma.

  8. #18
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da pontino
    no mamo139, perchè la mia parola segreta non si vedrà neanche quando mi metto a programmare, perciò con un comune editor esadecimale si possono vedere solo istruzioni e niente che assomigli ad una parola segreta.

    Comunque ho quasi capito cosa intendi, ma se con l'andare del tempo i seriali già usati aumentano a dismisura? Io con l'applicazione ho una funzione: y=F(x)
    x è randomico. invio y e x nella classifica.php e gli altri dati
    classifica.php archivia y e aggiunge il punteggio dopo aver controllato se F(x)=y e se y non è già stato archiviato

    Se per caso dovesse succedere che dopo qualche giorno, l'utente gioca di nuovo, e l'applicazione prende in modo random di nuovo una stessa x già utilizzata da qualcun altro?

    Adesso che ci penso, la y viene archiviata e collegata al nome utente e al punteggio. Perciò una collisione può verificarsi solo se la X è uguale a XPRECEDENTE e punteggio sia uguale a PUNTEGGIOPRECEDENTE e nome utente sia uguale a nome utente.
    UHM la probabilità diventa mooooooooooooooooolto bassa.

    Però con il timestamp non esiste modo di collidere a parte collisioni dell'Md5 stesso, oppure che l'utente rivinca con lo stesso punteggio e setti l'orologio allo stesso orario precedente..

    Ho appena capito che la sicurezza assoluta non esiste. E anche che mi sta venendo mal ditesta..
    ora devo pensarci: md5 del timestamp oppure generazione di chiavi? Questo è il dilemma.
    la sicurezza assoluta non esiste, hai detto bene...
    comunque collisioni ci sono in entrambi i casi, se fai tu le chiavi puoi calcolare la probabilità, con l'md5 io non la so calcolare... comunque per me sono due sistemi validi entrambi... quindi se stai facendo questa cosa per divertimento fai quella che ti diverti di piu a fare, se stai facendo per semplice lavoro fai con l'md5 che è piu veloce da fare

  9. #19
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    Beh per lavoro credo che userò quella md5, che è veloce e semplice.. Ho appena trovato l'algoritmo md5 giusto giusto per la mia applicazione.

    Comunque visto che programmo giochi anche per passione nel mio tempo libero, svilupperò anche quello delle chiavi.. Mi voglio fare un algoritmo cattivissimo! Magari posterò qualche evoluzione su questo progetto, in caso servisse a qualcun altro.

    Risolto l'arcano mistero!


    Comunque intanto posterò, magari in programmazione, un modo per nascondere la parola segreta, nell'applicazione. Li mi posso dare alla pazza gioia.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.