Se si desidera tra­sfe­ri­re dati tra due computer si hanno a di­spo­si­zio­ne vari strumenti e tecniche. Ma con il gran numero di programmi client e di pro­to­col­li se­le­zio­na­bi­li è difficile, so­prat­tut­to per i prin­ci­pian­ti o gli utenti meno esperti, trovare la soluzione giusta per il tra­sfe­ri­men­to pia­ni­fi­ca­to dei dati. In par­ti­co­la­re, quando devono essere inviati dati sensibili, è ne­ces­sa­rio più di un semplice tra­sfe­ri­men­to da A verso B. In questo caso vengono ef­fet­ti­va­men­te con­si­de­ra­ti solo i metodi che offrono una sicurezza adeguata.

Uno di questi metodi è il tra­sfe­ri­men­to dei dati tramite il pro­to­col­lo Secure Copy (SCP), ap­po­si­ta­men­te pro­get­ta­to per il tra­sfe­ri­men­to sicuro di in­for­ma­zio­ni digitali. Questo articolo rivela cos’è il pro­to­col­lo SCP e come funziona esat­ta­men­te.

Cos’è SCP?

Il pro­to­col­lo Secure Copy (SCP), sovente de­no­mi­na­to solo Secure Copy, è un pro­to­col­lo per i sistemi in­for­ma­ti­ci che ga­ran­ti­sce il tra­sfe­ri­men­to sicuro di dati tra un computer locale (local host) e uno remoto (remote host) o in al­ter­na­ti­va tra due computer remoti. Si basa sui comandi rcp (remote copy), pub­bli­ca­ti già nel 1982 come parte dei “comandi Berkeley r“ dall’Uni­ver­si­tà della Ca­li­for­nia (Berkeley), che con­sen­to­no il controllo del tra­sfe­ri­men­to di dati tramite la riga di comando.

SCP prevede sia un sistema di au­ten­ti­ca­zio­ne tra due host che una crit­to­gra­fia della tra­smis­sio­ne. In questo modo il pro­to­col­lo ga­ran­ti­sce non solo la sicurezza ma anche l’au­ten­ti­ci­tà dei dati tra­sfe­ri­ti. Per entrambi i mec­ca­ni­smi di pro­te­zio­ne il pro­to­col­lo SCP utilizza SSH (Secure Shell), impiegato anche nei pro­to­col­li di tra­smis­sio­ne al­ter­na­ti­vi come FTP (o SFTP). La porta TCP destinata al tra­sfe­ri­men­to tramite SCP è la porta standard SSH 22.

Secure Copy è mul­ti­piat­ta­for­ma: esistono im­ple­men­ta­zio­ni e programmi per tutti i comuni sistemi Windows, macOS e Linux come pure per Android e iOS.

Come funziona la tra­smis­sio­ne con il pro­to­col­lo SCP?

Secure Copy pre­sup­po­ne un’au­ten­ti­ca­zio­ne dei due host in­te­res­sa­ti. Prima che il tra­sfe­ri­men­to possa aver luogo tramite il pro­to­col­lo, occorre in­nan­zi­tut­to stabilire una con­nes­sio­ne SSH dal sistema locale al sistema di de­sti­na­zio­ne remoto. Per questo è ne­ces­sa­rio disporre dei dati di accesso SSH o di una chiave au­to­riz­za­ta per l’au­ten­ti­ca­zio­ne con chiave pubblica.

N.B.

Se si deve uti­liz­za­re SCP per il tra­sfe­ri­men­to di file tra due PC remoti, è ne­ces­sa­ria una con­nes­sio­ne SSH dal sistema locale che esegue il client SCP al PC remoto, che in questo caso deve fungere da host sorgente.

Non appena viene stabilita la con­nes­sio­ne SSH tra i due host, il client SCP avvia un processo di Secure Copy, per il quale sono di­spo­ni­bi­li due diverse modalità:

  • Modalità sorgente: una richiesta SCP nella modalità sorgente legge i file sul sistema di de­sti­na­zio­ne e li rimanda al client.
  • Modalità sink: se nelle richieste ef­fet­tua­te tramite il pro­to­col­lo SCP sul lato client viene uti­liz­za­ta la modalità sink, questa segnala al sistema remoto che si tratta di dati in entrata, che devono essere scritti sul sistema.

In genere i client SCP uti­liz­za­no l’in­di­ca­to­re -f (per l’inglese from ”da“), per attivare la modalità sorgente. Se deve essere avviata la modalità sink per inoltrare dati all’host di de­sti­na­zio­ne, viene invece uti­liz­za­to l’in­di­ca­to­re -t (per l’inglese to “a“).

N.B.

L’in­te­ra­zio­ne tra Secure Copy e Secure Shell può essere in­ter­rot­ta da eventuali messaggi di benvenuto ri­sul­tan­ti dal corretto accesso SSH. SCP non è preparato per tali messaggi di testo e li in­ter­pre­ta come un messaggio di errore bloccando quindi la tra­smis­sio­ne.

Dove e come viene uti­liz­za­to SCP?

Secure Copy è sup­por­ta­to da tutti i sistemi operativi comuni e offre con l’aggiunta di SSH un ec­cel­len­te pacchetto di sicurezza. Grazie alla com­bi­na­zio­ne di au­ten­ti­ca­zio­ne e crit­to­gra­fia è alla pari del popolare SFTP, che utilizza anche i mec­ca­ni­smi di pro­te­zio­ne di Secure Shell. Poiché SCP si distingue dalla versione FTP protetta anche in termini di velocità di tra­smis­sio­ne, il pro­to­col­lo è un’al­ter­na­ti­va di prima classe se i file devono essere tra­sfe­ri­ti in modo rapido e sicuro su un server web o se i dati sensibili devono essere di­stri­bui­ti in una rete locale (ad esempio in una rete aziendale).

N.B.

Nel 2019 il National Institute of Standards and Tech­no­lo­gy degli Stati Uniti ha pub­bli­ca­to un rapporto di sicurezza ufficiale, che rivela punti deboli in varie ap­pli­ca­zio­ni SCP. Al riguardo si tratta in par­ti­co­la­re del rischio po­ten­zia­le di un attacco man in the middle nell’ambito della tra­smis­sio­ne SCP, che consente agli hacker di so­vra­scri­ve­re file nella directory di de­sti­na­zio­ne o di in­tro­dur­re malware. I client in­te­res­sa­ti includono tra l’altro Putty PSCP, OpenSSH e WinSCP.

Oltre ai suddetti client, che è possibile scaricare e uti­liz­za­re gra­tui­ta­men­te dal web, MacOS, Windows e Linux hanno anche un client di Secure Copy integrato standard, chiamato “scp”. Il percorso tramite il prompt dei comandi o il terminale è quindi la soluzione più rapida e semplice per il tra­sfe­ri­men­to di dati tramite il pro­to­col­lo SCP, come il­lu­stra­no le due seguenti voci di esempio:

scp filesorgente test@host:directory/filedidestinazione

Con questo comando il ri­spet­ti­vo file sorgente viene copiato nella directory spe­ci­fi­ca­ta sull’host di de­sti­na­zio­ne, a cui l’utente deve essere connesso con il nome "test" tramite SSH. Se un file deve essere tra­sfe­ri­to da un sistema esterno all’utente SCP locale, il comando è il seguente:

scp test@host:directory/filesorgente filedidestinazione

I più im­por­tan­ti comandi SCP in sintesi

La sintassi di base dei comandi della riga di comando per il controllo del client SCP nativo in Windows e negli altri sistemi operativi è emersa chia­ra­men­te negli esempi pre­ce­den­ti. Tuttavia entrambi gli esempi di codice mostrano solo un semplice processo di copia senza opzioni ag­giun­ti­ve, che lo strumento scp ha si­cu­ra­men­te da offrire. Se devono far parte di un comando, queste opzioni precedono le in­for­ma­zio­ni su file e host, di modo che la struttura sin­tat­ti­ca completa si presenta come segue:

scp [opzione(i)] [filesorgente] [utente@host:directory/filedidestinazione]
scp [opzione(i)] [utente@host:directory/filesorgente] [filedidestinazione]

La seguente tabella riepiloga infine le opzioni più im­por­tan­ti per adattare le query di Secure Copy con scp:

Opzione scp Funzione
-1 Imposta l’utilizzo della versione 1 del pro­to­col­lo SCP
-2 Imposta l’utilizzo della versione 2 del pro­to­col­lo SCP
-C Attiva la com­pres­sio­ne GZIP sulla con­nes­sio­ne crit­to­gra­fa­ta SSH
-B Avvia la sessione senza richiesta di password
-l limit Imposta un limite di larghezza di banda per il tra­sfe­ri­men­to di file (Kb/s)
-o ssh_option Consente di definire opzioni SSH spe­ci­fi­che come la crit­to­gra­fia
-P port Specifica la porta sul lato del sistema remoto, at­tra­ver­so cui deve essere eseguita la con­nes­sio­ne
-p Conserva le meta in­for­ma­zio­ni del file originale (come tempi di modifica e accesso)
-q Nasconde la barra di avan­za­men­to durante il tra­sfe­ri­men­to
-r Copia l’intera directory in modo ricorsivo, ovvero in­clu­den­do tutte le sot­to­di­rec­to­ry
-S program Specifica il programma da uti­liz­za­re per la con­nes­sio­ne crit­to­gra­fa­ta (il programma deve com­pren­de­re le opzioni SSH)
Vai al menu prin­ci­pa­le