in Architettura Software, Informatica

Github accesso e firma in sicurezza

Quando lavori su GitHub, non stai solo spostando file; stai comunicando con un server remoto e certificando la paternità del tuo lavoro. Ecco a cosa servono nello specifico:

Chiave SSH (Secure Shell)

A cosa serve: Identificazione e Trasporto sicuro.

La chiave SSH serve a dimostrare a GitHub che tu hai il permesso di accedere a un repository, scaricare il codice o caricarne di nuovo senza dover digitare username e password ogni volta.

  • Il meccanismo: Funziona con una coppia di chiavi: una privata (che resta sul tuo PC e non devi dare a nessuno) e una pubblica (che carichi su GitHub).
  • Vantaggio principale: Sostituisce l’uso del Token (PAT) per le operazioni di git push e pull. È estremamente difficile da forzare rispetto a una password tradizionale.

Chiave GPG (GNU Privacy Guard)

A cosa serve: Integrità e Autenticità (Firma dei Commit).

Se SSH dice “chi può entrare”, GPG dice “chi ha scritto davvero questo pezzo di codice”. Senza GPG, chiunque potrebbe configurare il proprio terminale con la tua email e far finta di aver scritto un commit a tuo nome.

  • Il “Bollino Verde”: Quando firmi un commit con la tua chiave GPG, su GitHub apparirà accanto al tuo nome l’etichetta verde “Verified”.
  • Protezione: Garantisce che il codice non sia stato alterato da quando lo hai inviato e conferma che sei stato proprio tu a scriverlo, prevenendo il furto d’identità digitale all’interno del progetto.

Tabella Comparativa

CaratteristicaChiave SSHChiave GPG
Scopo principaleAccesso e AutenticazioneIntegrità e Firma del codice
Cosa faTi permette di fare push e pullAggiunge il badge “Verified” ai commit
SicurezzaProtegge la connessione tra PC e ServerProtegge l’identità dell’autore del codice
Frequenza d’usoIndispensabile per comoditàFortemente raccomandata per progetti seri

In sintesi

  • Usa SSH per smettere di inserire password e rendere sicura la connessione.
  • Usa GPG per mettere la tua firma digitale “anti-contraffazione” su ogni riga di codice che scrivi.

Vuoi che ti mostri i comandi rapidi per generarle e configurarle sul tuo sistema operativo?

Perché queste chiavi sono fondamentali per un developer:

  • Chiave SSH (Secure Shell): Serve per l’autenticazione. Invece di inserire username e password (o token) ogni volta che fai un push o un pull, GitHub usa questa chiave per riconoscerti istantaneamente. È come un badge digitale che dice: “Sono proprio io”.
  • Chiave GPG (GNU Privacy Guard): Serve per la verifica. Mentre SSH dice chi sei, GPG firma i tuoi commit per garantire che il codice non sia stato alterato da terzi. Su GitHub, i commit firmati mostrano il distintivo verde “Verified”, aumentando la fiducia nel tuo lavoro.

Creare la chiave SSH

Su Linux / Su Windows (PowerShell o Git Bash)

Il comando è lo stesso per entrambi gli ambienti. GitHub consiglia l’algoritmo Ed25519, più sicuro e performante.

  1. Apri il terminale e digita:Bashssh-keygen -t ed25519 -C "tua_email@esempio.com"
  2. Premi Invio per salvare nella cartella di default.
  3. Inserisci una passphrase (consigliato per extra sicurezza).

Aggiungere la chiave a GitHub:

  1. Copia il contenuto della chiave pubblica:
    • Linux: cat ~/.ssh/id_ed25519.pub
    • Windows: Get-Content C:\Users\TUO_UTENTE\.ssh\id_ed25519.pub
  2. Vai su GitHub -> Settings -> SSH and GPG keys -> New SSH Key e incolla il contenuto.

Creare la chiave GPG

Su Linux

  1. Genera la chiave:Bashgpg --full-generate-key
  2. Scegli l’opzione (1) RSA and RSA (o segui i default).
  3. Imposta la dimensione a 4096 bit.
  4. Inserisci i tuoi dati (devono corrispondere all’email di GitHub).

Su Windows

  1. Scarica e installa Gpg4win.
  2. Apri il prompt dei comandi o PowerShell e usa lo stesso comando:Bashgpg --full-generate-key

Aggiungere la chiave a GitHub:

  1. Trova l’ID della tua chiave:Bashgpg --list-secret-keys --keyid-format=LONG (L’ID è la stringa dopo rsa4096/ nella riga sec).
  2. Esporta la chiave pubblica:Bashgpg --armor --export TUO_ID_CHIAVE
  3. Copia tutto (incluso -----BEGIN PGP PUBLIC KEY BLOCK-----) e incollalo in GitHub sotto New GPG Key.

Configurazione finale (Git)

Ora devi dire a Git di usare queste chiavi per i tuoi commit futuri:

Bash

# Imposta la firma automatica
git config --global user.signingkey TUO_ID_CHIAVE
git config --global commit.gpgsign true

Se sei su Windows e preferisci un’interfaccia grafica per gestire le chiavi GPG, usa Kleopatra (incluso in Gpg4win), è molto intuitivo per importare ed esportare certificati.