Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150

    Decriptare con javascript un file criptato con PHP

    Guardando su google penso sia una delle domande che "turbano" assai (me soprattutto).
    Il problema è questo.
    Supponiamo di avere un programma php con tanti bei file che risiedono su un server (DOC, PDF, JPG etc)
    Supponiamo di volerli aprire da un client qualsiasi.
    Vogliamo però essere sicuri che solo immettendo una password di decrittazione (simmetrica) il contenuto sia fruibile.

    Servirebbe quindi un javascript in grado di decodificare (es. AES) un file che viene preventivamente criptato da php.

    Ho letto di caterve di soluzioni diverse, librerie javascript e chi più ne ha ne metta, ma francamente una risposta, "secca", del tipo
    - si fa cosìcosìcosì ancora non l'ho trovata

    HELP

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Premesso che non proprio chiarissimo cosa vuoi fare, se è proteggere una directory (cartella) sul server al volo hai due possibilità:
    - Blocchi la cartella tramite password dal panello di controllo admin del sito (per dettagli vedi hosting)
    - Usare .htaccess per impostare password "dinamiche" in determinate directory (per dettagli vedi form php)
    Se non è questo quello che cerchi provaci ancora "sam", anche se ho forti dubbi che il forum corretto si javascript
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Sono ottimista che il forum corretto sia questo, e pensavo di aver spiegato bene.
    Riformulo.

    Dato un file X presente su un web server, e quindi accessibile mediante il protocollo http per essere scaricato in locale da un client, supponiamo che il file X sia codificato con AES e password pippo.

    A me serve che lato client (quindi javascript) il file X venga decodificato con la password che viene chiesta all'utente sull'hard disk dell'utente (e poi visualizzato)

    Quello che serve è una libreria JAVASCRIPT che sia compatibile con una qualsiasi libreria PHP.

    Questo è un esempio (senza risposta effettiva)
    http://stackoverflow.com/questions/3...es-phps-mcrypt

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Ok, come non detto ho frainteso attendi commenti più autorevoli
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Non penso che si possa fare. Una volta scaricato il file è comunque nell'hard disk dell'utente, e con javascript non ci puoi far più nulla. Forse un'opzione che si potrebbe investigare sarebbe scaricare il file via AJAX come byte Array e poi applicare l'algoritmo di decrittazione sui byte, ma mi dà l'idea che il gioco non vale la candela.

    Perché non fai una cosa tipo zippare il file con password lato PHP e poi quando l'utente lo apre dal proprio filesystem la password viene richiesta?

    Oppure un'altra valida alternativa potrebbe essere la seguente, e ti dà lo stesso livello di sicurezza, anzi maggiore: fai tutto su https, quindi tutto viaggia crittato, quando l'utente vuole scaricare il file lato client mostri un form per la password, la password viene inserita e spedita in forma crittata al server, il quale la prende, fa l'hash, la confronta con l'hash contenuto in un database, se la password è corretta ritorna il file, che a sua volta viaggia su https e quindi crittato, altrimenti ritorna 403 forbidden. Mi pare il modo migliore.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  6. #6
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da mxa
    Non penso che si possa fare. Una volta scaricato il file è comunque nell'hard disk dell'utente, e con javascript non ci puoi far più nulla.
    E' proprio in questa fase (lo scaricamento) che avviene la decrittazione, spedendo un filettone JSON. O almeno così ho capito da qui
    http://crypto.stanford.edu/sjcl/
    Forse un'opzione che si potrebbe investigare sarebbe scaricare il file via AJAX come byte Array e poi applicare l'algoritmo di decrittazione sui byte, ma mi dà l'idea che il gioco non vale la candela.
    Bhè se si riuscisse sarei contento
    Perché non fai una cosa tipo zippare il file con password lato PHP e poi quando l'utente lo apre dal proprio filesystem la password viene richiesta?
    Perchè non sempre c'è un-unzippatore lato client. Se potessi metterci un eseguibile avrei risolto tanti problemi, ma non posso, solo browser.

    Oppure un'altra valida alternativa potrebbe essere la seguente, e ti dà lo stesso livello di sicurezza, anzi maggiore: fai tutto su https, quindi tutto viaggia crittato, quando l'utente vuole scaricare il file lato client mostri un form per la password, la password viene inserita e spedita in forma crittata al server, il quale la prende, fa l'hash, la confronta con l'hash contenuto in un database, se la password è corretta ritorna il file, che a sua volta viaggia su https e quindi crittato, altrimenti ritorna 403 forbidden. Mi pare il modo migliore.
    I dati sono davvero sensibili, quindi non mi sentirei di farli transitare, anche su https, in "chiaro".
    Anche perchè... son troppo niubbo e non saprei come fare

  7. #7
    Originariamente inviato da lanciafiamme
    E' proprio in questa fase (lo scaricamento) che avviene la decrittazione, spedendo un filettone JSON. O almeno così ho capito da qui
    http://crypto.stanford.edu/sjcl/
    quello sembra più un progetto di ricerca, non so se lo userei in produzione. Inoltre a occhio opera su stringhe, non so come si comporti con della roba binaria. Inoltre essendo javascript non so quanto bene possa funzionare con diciamo 2-3MB di roba.
    Bhè se si riuscisse sarei contento
    buon lavoro
    Perchè non sempre c'è un-unzippatore lato client. Se potessi metterci un eseguibile avrei risolto tanti problemi, ma non posso, solo browser.
    Ok, ha senso.

    I dati sono davvero sensibili, quindi non mi sentirei di farli transitare, anche su https, in "chiaro".
    Anche perchè... son troppo niubbo e non saprei come fare
    Il fatto che i dati siano davvero sensibili è una ragione in più per affidarti a https. In https i dati non viaggiano in chiaro, sono crittati dal server e decrittati dal client e viceversa, con una crittografia simmetrica dopo che browser e server hanno completato un handshake usando crittografia asimmetrica per scambiarsi la chiave. A me questo sembra sicuro. E soprattutto meno affetto da bug e possibili problemi di performance di qualcosa che 4 ragazzini di Stanford hanno implementato per una classe di computer science. Senza nulla togliere a loro.

    Se questi dati sono super sensibili e tu sei niubbo, forse dovresti considerare di affidarti a un professionista e fare le cose come vanno fatte, IMHO.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  8. #8
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da mxa
    quello sembra più un progetto di ricerca, non so se lo userei in produzione. Inoltre a occhio opera su stringhe, non so come si comporti con della roba binaria.
    Pensavo di usare codifiche MIME, di librerie ne ho trovate a bizzeffe
    Inoltre essendo javascript non so quanto bene possa funzionare con diciamo 2-3MB di roba.
    Questo in effetti lo ignoro
    Il fatto che i dati siano davvero sensibili è una ragione in più per affidarti a https. In https i dati non viaggiano in chiaro, sono crittati dal server e decrittati dal client (...)
    Non è la soluzione migliore, per i motivi che ho cercato di spiegare.
    Un "buco" qualsiasi determinerebbe l'esposizione di dati davvero sensibili
    E soprattutto meno affetto da bug e possibili problemi di performance di qualcosa che 4 ragazzini di Stanford hanno implementato per una classe di computer science. Senza nulla togliere a loro.
    Riguardo ai bug non sono così preoccupato, nel senso che se il file si cripta col programma X e si decripta con Y ritengo di poter stare ragionevolmente sicuro che sia "ben" criptato
    Se questi dati sono super sensibili e tu sei niubbo, forse dovresti considerare di affidarti a un professionista e fare le cose come vanno fatte, IMHO.
    Se ne trovi qualcuno che lavora gratis... subito

    ---
    Vabbè provo a fare una domanda per un passo alla volta: esiste un metodo non troppo complicato per far leggere byte per byte un file via http (da un client javascript) facendolo memorizzare sul computer locale?

    Praticamente che so www.pippo.it/dati/filettone.jpg e trovarmelo in c:\filettone.jpg (attenzione, con un ciclo del tipo "leggi un byte alla volta e scrivi)

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se ho ben capito devi far viaggiare un file criptato verso il client, ma poi che ne devi fare di questo file? salvarlo?
    riepilogando:

    - hai un file sul server, lo leggi con php, lo cripti al volo con php, lo invii al client

    - sul client lo ricevi e lo devi salvare sul pc locale dopo averlo decriptato

    Giusto? non si puo' fare:

    - hai difficolta' a ricevere una grande mole di dati in ajax, considerando che per ricevere "bytes" e non stringhe dovresti ulteriormente codificarli/decodificarli in BASE64

    - hai difficolta' in termini di risorse (ram e tempo di elaborazione) a gestire grosse moli di dati

    - hai difficolta' a nascondere realmente i dati che passano: se sul client devi decodificarli il client deve necessariamente essere a conoscenza delle funzioni da utilizzare ma sopratutto (udite, udite!) deve conoscere la password. E se la conosce il il client e' un segreto di pulcinella

    Non so per quale motivo tu sia costretto ad utilizzare la combinazione server-web -> browser per fare queste operazioni, ma se proprio devi l'unica soluzione e' utilizzare un protocollo protetto (https://) oppure servirsi di un corriere espresso fidato
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da br1
    Se ho ben capito devi far viaggiare un file criptato verso il client, ma poi che ne devi fare di questo file? salvarlo?
    riepilogando:

    - hai un file sul server, lo leggi con php, lo cripti al volo con php, lo invii al client
    In realtà no, il file è già criptato.
    PHP fa l'interrogazione su un database mysql, mostra un elenco di file all'utente il quale ne sceglie uno (fino a qui bene o male son riuscito, anche se non funziona con nginx su windows ed ho dovuto usare apache)
    - sul client lo ricevi e lo devi salvare sul pc locale dopo averlo decriptato

    Giusto? non si puo' fare:

    - hai difficolta' a ricevere una grande mole di dati in ajax, considerando che per ricevere "bytes" e non stringhe dovresti ulteriormente codificarli/decodificarli in BASE64
    Ho un libriccino su ajax, ma sono circa a metà del primo manuale php
    Per la codifica da quanto ho capito non è un gran dramma, ci sono funzioni sia php che javascript apposite
    - hai difficolta' in termini di risorse (ram e tempo di elaborazione) a gestire grosse moli di dati
    Qui proprio non so nulla
    - hai difficolta' a nascondere realmente i dati che passano: se sul client devi decodificarli il client deve necessariamente essere a conoscenza delle funzioni da utilizzare
    Non è importante, vorrei usare AES, perchè su wikipedia lo spacciano per molto sicuro
    ma sopratutto (udite, udite!) deve conoscere la password. E se la conosce il il client e' un segreto di pulcinella
    La password la CHIEDE all'utente (il client)
    Non so per quale motivo tu sia costretto ad utilizzare la combinazione server-web -> browser per fare queste operazioni, ma se proprio devi l'unica soluzione e' utilizzare un protocollo protetto (https://) oppure servirsi di un corriere espresso fidato
    Il motivo è presto detto
    1) non so usare https (già di per sè sufficiente)
    2) il corriere fosse per me lo userei, ma vogliono usare l'accrocchio pure con malefici tablet (aaaarrggggggg)
    3) se per qualche motivo (esempio: mia incapacità) il server web viene "bucato", i dati sono GIA' criptati. Un po' come un truecrypt dei poveri. Indi per cui, senza conoscere la password, il danno sarebbe minimo e, d'altronde, questo mi consentirebbe di usare che so aruba o un qualche server web "demmerda" (nel senso economico) invece di dover tenere un server in azienda coi supercosti di connessione.

    Sono aperto evidentemente a qualsiasi suggerimento\guida per https

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