Il modulo Cloud Storage di C.E.R.T.O. Desktop acquisisce file e cartelle da Google Drive, Dropbox e OneDrive con piena validità forense. L'autenticazione avviene tramite OAuth 2.0 in una finestra browser isolata, senza esporre le credenziali dell'utente. Ogni file viene scaricato con calcolo simultaneo di 4 hash crittografici e verifica incrociata con l'hash del provider (MD5 per Google, content-hash per Dropbox, SHA-256 per OneDrive). Il fascicolo include lo snapshot pre-download dello stato del cloud, la cronologia delle revisioni, i permessi di condivisione e la marca temporale RFC 3161. Al termine, i token OAuth vengono automaticamente revocati.
Costo: 1 slot per MB scaricato (arrotondato per eccesso, minimo 1 slot) — vedi pacchetti slot
Tre provider, un flusso forense unificato
Il modulo supporta i tre principali servizi di cloud storage con un flusso forense identico. Le differenze di API tra i provider sono gestite internamente: l'utente seleziona il servizio, si autentica e avvia l'acquisizione.
Google Drive
Scope: drive.readonly, drive.metadata.readonly
Hash provider: MD5
Google Docs: esportazione automatica in PDF (Documenti, Presentazioni), XLSX (Fogli), PNG (Disegni)
Revoca token: supportata
Dropbox
Scope: implicito (accesso completo in lettura)
Hash provider: content-hash (SHA-256 a blocchi da 4 MiB)
Paginazione: cursor-based con list_folder/continue
Revoca token: supportata
OneDrive
Scope: Files.Read.All, User.Read, offline_access
Hash provider: SHA-256 (fallback SHA-1)
Enumerazione: Delta query per scan completo dell'account
Revoca token: non supportata dal provider

Cosa acquisisce il modulo cloud
L'acquisizione produce un fascicolo forense che documenta non solo i file scaricati, ma anche lo stato del cloud prima del download, la cronologia delle revisioni di ogni file, i permessi di condivisione e l'intero audit trail delle chiamate API.
| Elemento acquisito | Dettagli |
|---|---|
| File originali | Download binario di ogni file con preservazione della struttura delle cartelle cloud. Per i Google Docs nativi: esportazione automatica in formato binario (PDF, XLSX, PNG). |
| Hash crittografici (x4) | MD5, SHA-1, SHA-256 e SHA-512 calcolati simultaneamente durante lo streaming del download, senza overhead aggiuntivo. |
| Verifica hash provider | Confronto dell'hash calcolato localmente con quello fornito dal provider (MD5 per Google, content-hash per Dropbox, SHA-256 per OneDrive). Esito match/mismatch documentato per ogni file. |
| Metadati per file | JSON per ogni file: percorso cloud, dimensione, data creazione e modifica, MIME type, owner, hash locali e hash provider, esito verifica, flag Google Docs. |
| Cronologia revisioni | Per ogni file: elenco di tutte le revisioni precedenti con data, autore, dimensione e hash. Dimostra la storia delle modifiche del documento. |
| Permessi di condivisione | Per ogni file: elenco utenti/gruppi con accesso, ruolo (owner/writer/reader), link condivisi, scadenze. Documenta chi aveva accesso al momento dell'acquisizione. |
| Cloud snapshot | Scansione ricorsiva completa della cartella cloud prima del download: tutti i file e le directory con dimensioni, date, MIME type e hash del provider. |
| Audit trail API | Log di ogni chiamata API al provider: metodo HTTP, URL, status code, durata in millisecondi e timestamp ISO 8601. |
| Contesto di sistema | Sincronizzazione NTP (offset documentato), IP pubblico del client, informazioni OAuth (provider, account, scope — nessuna credenziale). |
| Report forense | Documento TXT e PDF con inventario completo, verifica hash provider, revisioni, permessi, catena di custodia e guida alla lettura delle evidenze. |
| Marca temporale RFC 3161 | Firma temporale sul report tramite FreeTSA (base) o InfoCert eIDAS (qualificata). File .tsr e certificato CA inclusi per verifica offline. |
Il processo di acquisizione in 12 fasi
L'acquisizione è completamente automatizzata. L'utente sceglie il provider, si autentica tramite OAuth, seleziona le cartelle e il sistema esegue tutte le fasi con monitoraggio del progresso, velocità di download e tempo stimato residuo.
- Autenticazione OAuth — apertura di una finestra browser isolata (partizione privata, senza cookie) per il login al provider. Scambio dell'authorization code per access_token e refresh_token
- Sincronizzazione e contesto — query NTP (Google, Cloudflare, pool.ntp.org) per documentare l'offset dell'orologio, rilevamento IP pubblico
- Cloud snapshot — scansione ricorsiva completa della cartella selezionata: tutti i file e directory con dimensioni, date, MIME type e hash del provider. Salvataggio in JSON strutturato
- Enumerazione e selezione — calcolo dei file da scaricare in base alla modalità scelta (ricorsiva completa, cartella singola o selezione manuale). Stima del costo in slot (1 slot/MB)
- Download binario con hash — per ogni file: download in streaming con calcolo simultaneo di MD5, SHA-1, SHA-256, SHA-512. Per Google Docs: esportazione automatica in formato binario
- Verifica hash provider — confronto dell'hash locale con quello restituito dall'API del provider. Segnalazione di eventuali discrepanze
- Cattura revisioni — per ogni file: interrogazione delle API per ottenere la cronologia completa delle revisioni (data, autore, dimensione, hash)
- Cattura permessi — per ogni file: interrogazione delle API per documentare utenti con accesso, ruoli, link condivisi e scadenze
- Salvataggio metadati — per ogni file: creazione del JSON di metadati con percorso cloud, hash, verifica provider, revisioni, permessi, timestamp download
- Generazione report e hash — report forense TXT e PDF con guida alla lettura, manifest SHA-256 di tutti i file prodotti, script di verifica integrità cross-platform
- Marca temporale e archiviazione — firma RFC 3161 sul report, creazione archivio ZIP del fascicolo, registrazione sul server con archiviazione certificata per 5 anni
- Revoca token OAuth — revoca automatica dei token di accesso al provider (Google e Dropbox). Conferma documentata nel report

Autenticazione OAuth in finestra isolata
L'autenticazione avviene tramite il flusso standard OAuth 2.0 Authorization Code in una finestra browser completamente isolata: partizione privata (nessun cookie o cache condivisa), scope di sola lettura, nessuna credenziale transitata dall'applicazione.
Flusso OAuth
- Apertura finestra isolata con l'URL di autorizzazione del provider
- L'utente effettua il login e concede i permessi di sola lettura
- Il provider restituisce un authorization code al callback locale
- Il code viene scambiato per access_token e refresh_token
- Validazione dei token e recupero delle informazioni account
Rubrica sessioni
I token di accesso possono essere salvati nella rubrica sessioni con cifratura locale. Questo consente di riprendere un'acquisizione futura senza ripetere il login OAuth.
- Token cifrati e salvati localmente
- Refresh automatico se il token è scaduto
- Selezione rapida per account e provider
- Revoca token al termine di ogni acquisizione
Revoca post-acquisizione: al termine dell'acquisizione, i token OAuth vengono automaticamente revocati presso il provider (Google e Dropbox). Questo garantisce che l'accesso sia limitato alla durata dell'acquisizione. La revoca viene documentata nel report forense.

Snapshot pre-download e navigazione cartelle
Prima di scaricare qualsiasi file, il sistema esegue una scansione ricorsiva della cartella cloud e ne documenta l'intero contenuto. Questo snapshot ha un valore forense autonomo: dimostra quali file e directory erano presenti sull'account al momento dell'acquisizione.
Lo snapshot (cloud-snapshot.json) documenta per ogni elemento:
- ID univoco del file/cartella nel cloud
- Percorso completo ricostruito (per Google Drive: risoluzione della gerarchia parent-child)
- Tipo (file o directory), dimensione, MIME type
- Data di creazione e ultima modifica
- Hash del provider (se disponibile dall'API di listing)
- Account, provider e timestamp della cattura
Tre modalità di acquisizione:
- Ricorsiva completa — download di tutti i file dalla cartella selezionata e da tutte le sottocartelle
- Cartella singola — solo i file presenti in una specifica cartella, senza ricorsione
- Selezione manuale — l'utente sceglie singoli file o cartelle da acquisire
Download con hash e verifica provider
Ogni file viene scaricato in streaming con calcolo simultaneo di 4 hash crittografici. La caratteristica distintiva di questo modulo è la verifica incrociata con l'hash fornito dal provider cloud, che dimostra che il file scaricato corrisponde esattamente a quello presente sul server del provider.
| Provider | Algoritmo hash del provider | Metodo di verifica |
|---|---|---|
| Google Drive | MD5 (md5Checksum) | Confronto MD5 locale vs md5Checksum dall'API. Non disponibile per Google Docs nativi (esportati). |
| Dropbox | Content-hash (SHA-256 a blocchi da 4 MiB) | Il file viene suddiviso in blocchi da 4 MiB, ciascuno hashato SHA-256, poi gli hash concatenati vengono ri-hashati. Algoritmo proprietario Dropbox. |
| OneDrive | SHA-256 (fallback SHA-1) | Confronto SHA-256 locale vs hash dall'API Graph. Fallback a SHA-1 se SHA-256 non disponibile. |
Google Docs nativi: i documenti nativi di Google (Documenti, Fogli, Presentazioni, Disegni) non sono file binari e non hanno un hash MD5 sul provider. Il sistema li esporta automaticamente in formato binario (PDF, XLSX, PNG) prima del download e calcola gli hash sulla versione esportata.

Revisioni e permessi di condivisione
Il modulo cattura due categorie di metadati che non hanno equivalenti nelle acquisizioni di file locali o FTP: la cronologia delle revisioni e i permessi di condivisione. Questi dati sono particolarmente rilevanti in contesti legali dove è necessario dimostrare chi ha avuto accesso a un documento e quando è stato modificato.
Cronologia revisioni
Per ogni file viene interrogata l'API del provider per ottenere l'elenco completo delle revisioni precedenti:
- ID della revisione
- Data e ora della modifica
- Utente che ha effettuato la modifica
- Dimensione del file in quella revisione
- Hash del file (se disponibile)
- Numero totale di revisioni salvate nel metadato
Permessi di condivisione
Per ogni file viene documentato l'elenco degli utenti e dei link con accesso al momento dell'acquisizione:
- Tipo di accesso: utente, gruppo, dominio, chiunque
- Ruolo: owner, writer, reader
- Email dell'utente (se disponibile)
- Link condivisi con livello di accesso
- Data di scadenza del permesso (se impostata)
Il fascicolo forense prodotto
Ogni acquisizione genera un archivio ZIP contenente tutti gli artefatti forensi. La struttura è autocontenuta e verificabile offline.
├── files/ — file scaricati (struttura cloud preservata)
│ ├── cartella-1/
│ │ ├── documento.pdf
│ │ └── presentazione.pdf — (esportato da Google Slides)
│ └── cartella-2/
│ └── foglio.xlsx — (esportato da Google Sheets)
├── metadata/ — JSON con metadati, hash, revisioni e permessi
│ ├── cartella-1/
│ │ ├── documento.pdf.json
│ │ └── presentazione.pdf.json
│ └── cartella-2/
│ └── foglio.xlsx.json
├── rapporto-acquisizione.txt — report forense completo
├── rapporto-acquisizione.pdf — report PDF con guida alla lettura
├── rapporto-acquisizione.tsr — marca temporale RFC 3161
├── file-manifest.json — inventario file con hash e verifica provider
├── {id}-hashes.json — manifest SHA-256 di tutti i file del fascicolo
├── cloud-snapshot.json — stato cloud pre-download
├── api-log.json — audit trail di tutte le chiamate API
├── oauth-info.json — provider, account, scope (nessuna credenziale)
├── acquisizione-log.txt — log cronologico operazioni
├── timestamp-info.json — metadati marca temporale
├── tsr-verifica.txt — istruzioni verifica timestamp
├── freetsa-cacert.pem — CA per verifica offline (se FreeTSA)
├── verifica-integrita.sh — script verifica per macOS/Linux
└── verifica-integrita.bat — script verifica per Windows
Contenuto del report forense (PDF)
Il documento rapporto-acquisizione.pdf include:
- Informazioni provider e account (email, nome, scope OAuth)
- Sincronizzazione NTP con offset documentato
- Dettagli sulla verifica hash del provider (algoritmo utilizzato, risultati match/mismatch per file)
- Snapshot pre-download con conteggi e dimensioni
- Inventario completo con hash (x4), verifica provider, conteggio revisioni e permessi per ogni file
- Eventuali errori con dettaglio del file e del messaggio di errore
- Conferma della revoca dei token OAuth
- Guida alla lettura delle evidenze in 9 sezioni: struttura del fascicolo, hash e verifica, hash specifici per provider, marca temporale, sicurezza del trasporto, revoca token, snapshot, sincronizzazione NTP

Integrità, marca temporale e revoca token
Il fascicolo è protetto da più livelli di verifica dell'integrità e da meccanismi specifici per il cloud.
Hash locali (x4)
MD5, SHA-1, SHA-256 e SHA-512 calcolati in streaming durante il download.
Verifica provider
Hash locale confrontato con hash del provider cloud. Risultato documentato per ogni file.
Manifest globale
SHA-256 di tutti i file del fascicolo. Il manifest stesso viene hashato e riportato nel report.
Marca temporale
RFC 3161 tramite FreeTSA o InfoCert eIDAS. File .tsr e CA inclusi per verifica offline.
Revoca token: al termine dell'acquisizione, C.E.R.T.O. revoca automaticamente i token OAuth presso il provider (Google e Dropbox). Questo chiude l'accesso all'account cloud, garantendo che l'applicazione non possa più accedere ai file. Per OneDrive, che non espone un endpoint di revoca, il token scade naturalmente secondo la policy di Microsoft. La revoca viene documentata nel report forense.
Il fascicolo include script verifica-integrita.sh (macOS/Linux) e verifica-integrita.bat (Windows) per ricalcolare automaticamente tutti gli hash e verificare la marca temporale.
Resilienza: in caso di token scaduto durante il download, il sistema esegue automaticamente il refresh tramite il refresh_token e riprende l'acquisizione. Se un singolo file fallisce, l'errore viene registrato e l'acquisizione prosegue con i file successivi. Lo stato finale indica COMPLETATA (nessun errore), PARZIALE (alcuni errori) o FALLITA.
Acquisisci file cloud con valore forense
Scarica C.E.R.T.O. Desktop, connettiti a Google Drive, Dropbox o OneDrive e ottieni un fascicolo forense completo. 1 slot per MB scaricato.