Personalizza le preferenze di consenso

Utilizziamo i cookie per aiutarti a navigare in maniera efficiente e a svolgere determinate funzioni. Troverai informazioni dettagliate su tutti i cookie sotto ogni categoria di consensi sottostanti. I cookie categorizzatati come “Necessari” vengono memorizzati sul tuo browser in quanto essenziali per consentire le funzionalità di base del sito.... 

Sempre attivi

I cookie necessari sono fondamentali per le funzioni di base del sito Web e il sito Web non funzionerà nel modo previsto senza di essi. Questi cookie non memorizzano dati identificativi personali.

I cookie funzionali aiutano a svolgere determinate funzionalità come la condivisione del contenuto del sito Web su piattaforme di social media, la raccolta di feedback e altre funzionalità di terze parti.

I cookie analitici vengono utilizzati per comprendere come i visitatori interagiscono con il sito Web. Questi cookie aiutano a fornire informazioni sulle metriche di numero di visitatori, frequenza di rimbalzo, fonte di traffico, ecc.

I cookie per le prestazioni vengono utilizzati per comprendere e analizzare gli indici di prestazione chiave del sito Web che aiutano a fornire ai visitatori un'esperienza utente migliore.

Nessun cookie da visualizzare.

I cookie pubblicitari vengono utilizzati per fornire ai visitatori annunci pubblicitari personalizzati in base alle pagine visitate in precedenza e per analizzare l'efficacia della campagna pubblicitaria.

Nessun cookie da visualizzare.

Novità

Crittografia Apple: sicurezza al centro del sistema 

La crittografia Apple offre uno dei sistemi più avanzati per la protezione dei dati personali, ma per una sicurezza completa è necessario attivare la Protezione Avanzata dei Dati e mantenere aggiornati i dispositivi.

Coppia di chiavi crittografiche

Indice dei contenuti

  • End-to-end encryption in iMessage: protezione dei messaggi 
  • FaceTime: chiamate e videochiamate sicure 
  • iCloud e Advanced Data Protection: sicurezza totale dei dati 
  • Le critiche alla crittografia Apple 

Apple ha adottato un approccio rigoroso alla sicurezza dei dati, integrando la crittografia in tutti i suoi servizi principali. L’end-to-end encryption assicura che solo il mittente e il destinatario possano leggere i messaggi o accedere ai contenuti protetti. Questo significa che, anche se qualcuno intercettasse i dati, non potrebbe decifrarli senza la chiave corretta. 

I sistemi Apple utilizzano chiavi univoche generate sui dispositivi degli utenti, evitando che i dati siano accessibili a terze parti, inclusa la stessa Apple.

Questo approccio ha ricevuto elogi per la protezione della privacy, ma anche critiche da parte delle forze dell’ordine, che lo vedono come un ostacolo alle indagini. 

End-to-end encryption in iMessage: protezione dei messaggi 

Come funziona la crittografia end-to-end in iMessage? 

iMessage utilizza una crittografia end-to-end basata su AES-256 e su un sistema di chiavi asimmetriche per garantire che solo il mittente e il destinatario possano leggere i messaggi. Questo sistema si basa sull’uso di una coppia di chiavi crittografiche

  • una chiave pubblica, condivisa con gli altri utenti per crittografare i messaggi in uscita;
  • una chiave privata, conservata esclusivamente sul dispositivo del destinatario, utilizzata per decifrare i messaggi ricevuti. 

Quando un messaggio viene inviato tramite iMessage, il dispositivo del mittente utilizza la chiave pubblica del destinatario per crittografarlo. Solo il destinatario, con la propria chiave privata, può decifrare il contenuto.

Questo sistema garantisce che neanche Apple possa accedere ai messaggi, poiché non possiede le chiavi private degli utenti. 

Esempio di crittografia con AES-256 

Per comprendere meglio il funzionamento della crittografia in iMessage, ecco un esempio pratico di come un messaggio potrebbe essere crittografato utilizzando AES-256 in Python: 

from Crypto.Cipher import AES 

import os 

import base64 

# Genera una chiave AES-256 casuale 

def generate_key(): 

    return os.urandom(32)  # 256-bit key 

# Crittografa il messaggio con AES-256 

def encrypt_message(message, key): 

    cipher = AES.new(key, AES.MODE_GCM)  # AES in modalità Galois/Counter Mode 

    nonce = cipher.nonce  # Genera un nonce casuale 

    ciphertext, tag = cipher.encrypt_and_digest(message.encode('utf-8')) 

    return base64.b64encode(nonce + tag + ciphertext).decode('utf-8') 

# Decodifica il messaggio crittografato 

def decrypt_message(encrypted_message, key): 

    encrypted_data = base64.b64decode(encrypted_message) 

    nonce = encrypted_data[:16] 

    tag = encrypted_data[16:32] 

    ciphertext = encrypted_data[32:] 

    cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) 

    decrypted_message = cipher.decrypt_and_verify(ciphertext, tag) 

    return decrypted_message.decode('utf-8') 

# Esempio di utilizzo 

key = generate_key() 

message = "Questo è un messaggio sicuro su iMessage." 

encrypted_message = encrypt_message(message, key) 

decrypted_message = decrypt_message(encrypted_message, key) 

print("Messaggio originale:", message) 

print("Messaggio crittografato:", encrypted_message) 

print("Messaggio decifrato:", decrypted_message)

Come funziona il codice? 

  1. Generazione della chiave
    Il codice crea una chiave AES-256 casuale (32 byte). 
  1. Crittografia del messaggio
  • viene utilizzato AES-GCM (Galois/Counter Mode), che offre protezione contro la modifica dei dati;
  • il messaggio viene crittografato con un nonce (numero casuale) per garantire che ogni messaggio abbia un output unico;
  • il testo cifrato viene codificato in Base64 per facilitarne la trasmissione. 
  1. Decrittazione
  • il destinatario usa la stessa chiave AES per recuperare il messaggio originale;
  • il sistema verifica l’integrità del messaggio tramite il tag di autenticazione

Questo metodo è simile a quello utilizzato in iMessage, ma con la differenza che Apple impiega anche un sistema di chiavi pubbliche e private per garantire una maggiore sicurezza nelle comunicazioni tra dispositivi. 

Crittografia asimmetrica e sincronizzazione tra dispositivi 

Uno degli aspetti unici di iMessage è la sua capacità di sincronizzare i messaggi tra diversi dispositivi Apple, mantenendo comunque la crittografia end-to-end. Per fare ciò, Apple utilizza un sistema asimmetrico basato su RSA e Curve25519 per gestire la distribuzione delle chiavi. 

Ogni dispositivo associato a un Apple ID possiede: 

  • una chiave pubblica registrata sui server Apple;
  • una chiave privata archiviata solo sul dispositivo. 

Quando un utente invia un messaggio a un destinatario che ha più dispositivi collegati (ad esempio, iPhone, iPad e Mac), il messaggio viene crittografato più volte con le chiavi pubbliche di ogni dispositivo, in modo che solo i dispositivi registrati possano leggerlo. 

Ecco un’implementazione semplificata della crittografia asimmetrica con RSA in Python: 

from Crypto.PublicKey import RSA 

from Crypto.Cipher import PKCS1_OAEP 

import base64 

# Generazione delle chiavi pubblica e privata 

def generate_rsa_keys(): 

    key = RSA.generate(2048) 

    private_key = key.export_key() 

    public_key = key.publickey().export_key() 

    return private_key, public_key 

# Crittografia con la chiave pubblica 

def encrypt_with_public_key(message, public_key): 

    rsa_key = RSA.import_key(public_key) 

    cipher = PKCS1_OAEP.new(rsa_key) 

    encrypted_message = cipher.encrypt(message.encode('utf-8')) 

    return base64.b64encode(encrypted_message).decode('utf-8') 

# Decrittografia con la chiave privata 

def decrypt_with_private_key(encrypted_message, private_key): 

    encrypted_data = base64.b64decode(encrypted_message) 

    rsa_key = RSA.import_key(private_key) 

    cipher = PKCS1_OAEP.new(rsa_key) 

    decrypted_message = cipher.decrypt(encrypted_data) 

    return decrypted_message.decode('utf-8') 

# Esempio di utilizzo 

private_key, public_key = generate_rsa_keys() 

message = "Questo è un messaggio crittografato con RSA." 

encrypted_message = encrypt_with_public_key(message, public_key) 

decrypted_message = decrypt_with_private_key(encrypted_message, private_key) 

print("Messaggio originale:", message) 

print("Messaggio crittografato:", encrypted_message) 

print("Messaggio decifrato:", decrypted_message)

Come funziona? 

  • Generazione delle chiavi
    Il codice crea una coppia di chiavi RSA-2048
  • Crittografia del messaggio
    Il messaggio viene crittografato con la chiave pubblica del destinatario. 
  • Decrittazione
    Solo il destinatario, con la propria chiave privata, può decifrare il messaggio. 

Backup iCloud e Advanced Data Protection 

Di default, i messaggi su iMessage vengono archiviati in iCloud per consentire il ripristino su nuovi dispositivi. Tuttavia, se il backup iCloud non è protetto dall’Advanced Data Protection, Apple potrebbe accedervi in caso di richiesta legale. 

Quando l’Advanced Data Protection è attivo, la crittografia end-to-end si estende anche ai backup, rendendoli accessibili solo all’utente. Questo significa che, in caso di perdita della chiave di recupero, non sarà possibile ripristinare i dati. 

FaceTime: chiamate e videochiamate sicure 

Come funziona la crittografia in FaceTime? 

Le chiamate su FaceTime utilizzano un sistema di crittografia end-to-end per proteggere i contenuti audio e video da eventuali intercettazioni. A differenza della messaggistica testuale di iMessage, che utilizza AES-256, FaceTime impiega una combinazione di: 

  • AES-GCM (Galois/Counter Mode) per la crittografia del flusso audio/video;
  • Curve25519 per la generazione delle chiavi di crittografia;
  • DTLS-SRTP (Datagram Transport Layer Security – Secure Real-time Transport Protocol) per proteggere il trasporto dei dati in tempo reale. 

Questo sistema garantisce che solo i dispositivi coinvolti nella chiamata possano decodificare il flusso audio/video, impedendo a terzi, inclusa Apple, di accedere ai contenuti della conversazione. 

Trasmissione peer-to-peer e crittografia in FaceTime 

Un aspetto distintivo di FaceTime è che le chiamate non passano attraverso server centrali ma vengono trasmesse direttamente tra i dispositivi, utilizzando una connessione peer-to-peer ogni volta che è possibile. 

Ciò riduce drasticamente la possibilità di intercettazioni da parte di terzi, perché: 

  • i dati non sono memorizzati su server Apple;
  • il flusso audio/video è crittografato end-to-end tra i dispositivi;
  • anche nelle chiamate di gruppo, Apple gestisce solo la segnalazione della connessione, senza accesso ai contenuti trasmessi. 

Esempio di crittografia con AES-GCM per una chiamata FaceTime 

Per comprendere meglio il funzionamento della crittografia FaceTime, ecco un esempio di crittografia del flusso audio/video con AES-GCM in Python: 

from Crypto.Cipher import AES 

import os 

import base64 

# Genera una chiave AES-256 casuale per la chiamata 

def generate_key(): 

    return os.urandom(32)  # 256-bit key 

# Crittografa i pacchetti audio/video con AES-GCM 

def encrypt_audio_video(data, key): 

    cipher = AES.new(key, AES.MODE_GCM) 

    nonce = cipher.nonce 

    ciphertext, tag = cipher.encrypt_and_digest(data) 

    return base64.b64encode(nonce + tag + ciphertext).decode('utf-8') 

# Decrittografa i pacchetti audio/video ricevuti 

def decrypt_audio_video(encrypted_data, key): 

    encrypted_data = base64.b64decode(encrypted_data) 

    nonce = encrypted_data[:16] 

    tag = encrypted_data[16:32] 

    ciphertext = encrypted_data[32:] 

    cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) 

    decrypted_data = cipher.decrypt_and_verify(ciphertext, tag) 

    return decrypted_data 

# Simulazione di trasmissione audio/video crittografata 

key = generate_key() 

audio_video_data = b"Flusso audio/video in diretta su FaceTime." 

encrypted_data = encrypt_audio_video(audio_video_data, key) 

decrypted_data = decrypt_audio_video(encrypted_data, key) 

print("Dati originali:", audio_video_data) 

print("Dati crittografati:", encrypted_data) 

print("Dati decifrati:", decrypted_data)

Come funziona il codice? 

  1. Generazione della chiave
    Viene creata una chiave casuale AES-256 per la crittografia del flusso. 
  1. Crittografia del flusso audio/video
  • Si usa AES-GCM, che fornisce protezione contro la modifica dei dati. 
  • Viene generato un nonce per garantire l’unicità di ogni crittografia. 
  1. Decrittografia
  • Il destinatario usa la stessa chiave AES per decifrare il flusso. 
  • Il tag di autenticazione garantisce che i dati non siano stati manomessi. 

Protezione nelle chiamate di gruppo 

FaceTime supporta anche chiamate di gruppo fino a 32 partecipanti, e la crittografia è progettata per mantenere la sicurezza anche in queste situazioni. 

  • Ogni dispositivo genera una chiave crittografica unica per ogni partecipante. 
  • La chiave pubblica di ciascun dispositivo è condivisa con gli altri partecipanti. 
  • Il flusso audio/video viene crittografato separatamente per ogni destinatario. 

Esempio
Semplificato di scambio di chiavi crittografiche con Curve25519 per una chiamata di gruppo FaceTime. 

from cryptography.hazmat.primitives.asymmetric import x25519 

# Generazione delle chiavi pubbliche e private per i partecipanti alla chiamata 

def generate_key_pair(): 

    private_key = x25519.X25519PrivateKey.generate() 

    public_key = private_key.public_key() 

    return private_key, public_key 

# Simulazione di una chiave condivisa tra due dispositivi FaceTime 

private_key_alice, public_key_alice = generate_key_pair() 

private_key_bob, public_key_bob = generate_key_pair() 

# Creazione di una chiave segreta condivisa per la crittografia della chiamata 

shared_secret_alice = private_key_alice.exchange(public_key_bob) 

shared_secret_bob = private_key_bob.exchange(public_key_alice) 

print("Chiave condivisa di Alice:", shared_secret_alice) 

print("Chiave condivisa di Bob:", shared_secret_bob) 

print("Le chiavi coincidono:", shared_secret_alice == shared_secret_bob)

Come funziona? 

  • Ogni dispositivo genera una coppia di chiavi (privata e pubblica);
  • Le chiavi pubbliche vengono scambiate tra i partecipanti alla chiamata;
  • Ogni dispositivo calcola una chiave segreta condivisa, usata per crittografare i dati;
  • Il flusso audio/video viene crittografato con AES-GCM usando la chiave condivisa. 

FaceTime e sicurezza dei metadati 

Anche se Apple non può accedere ai contenuti delle chiamate FaceTime, alcuni metadati vengono comunque raccolti, come: 

  • numero di telefono o Apple ID dei partecipanti;
  • durata della chiamata;
  • indirizzo IP, che potrebbe rivelare la posizione approssimativa. 

Questi dati sono utilizzati per motivi di diagnostica e miglioramento del servizio, ma non vengono archiviati a lungo termine né utilizzati per identificare gli utenti. 

Sicurezza totale dei dati 

iCloud e Advanced Data Protection: sicurezza totale dei dati 

Apple ha introdotto l’Advanced Data Protection per garantire una crittografia end-to-end a un numero maggiore di dati archiviati su iCloud. Questo sistema impedisce persino ad Apple di accedere ai file archiviati dagli utenti, aumentando il livello di sicurezza per: 

  • Backup iCloud 
  • Foto e video 
  • Note e promemoria 
  • Portachiavi iCloud 
  • Messaggi archiviati 

Senza l’Advanced Data Protection, alcuni dati su iCloud potrebbero essere accessibili a Apple in caso di richiesta legale, ma attivando questa funzione si garantisce che solo l’utente possa decifrare i propri file. 

Le critiche alla crittografia Apple 

Nonostante la sua efficacia, l’end-to-end encryption di Apple è stata spesso oggetto di controversie. Le forze dell’ordine sostengono che la crittografia impedisce l’accesso a prove cruciali nelle indagini su criminalità organizzata e terrorismo.

Apple, invece, difende la sua posizione, sottolineando che la privacy degli utenti è un diritto fondamentale e che non dovrebbe essere compromessa da backdoor governative. 

Conclusione 

La crittografia Apple rappresenta uno dei sistemi più avanzati per la protezione dei dati personali. Grazie all’end-to-end encryption in iMessage, FaceTime e iCloud, gli utenti possono comunicare e archiviare dati con un livello di sicurezza elevato.

Tuttavia, per garantire la massima protezione, è essenziale attivare l’Advanced Data Protection e mantenere sempre aggiornati i dispositivi. 


Domande e risposte

  1. Cosa significa end-to-end encryption? 
    L’end-to-end encryption è un sistema che garantisce che solo il mittente e il destinatario possano leggere i dati trasmessi, senza possibilità di accesso da parte di terzi. 
  1. Apple può accedere ai miei messaggi su iMessage? 
    No, i messaggi iMessage sono criptati end-to-end, quindi solo il mittente e il destinatario possono leggerli. 
  1. Le chiamate FaceTime sono davvero sicure? 
    Sì, le chiamate FaceTime sono protette da crittografia end-to-end, impedendo qualsiasi intercettazione. 
  1. iCloud protegge tutti i miei dati con crittografia end-to-end? 
    Solo se attivi l’Advanced Data Protection, che estende la protezione a backup, foto, note e altri dati sensibili. 
  1. Posso disattivare la crittografia di iMessage o FaceTime? 
    No, la crittografia è integrata nel sistema e non può essere disattivata dagli utenti. 
  1. Apple potrebbe creare una backdoor per le forze dell’ordine? 
    Apple ha sempre dichiarato di essere contraria alle backdoor, in quanto comprometterebbero la sicurezza di tutti gli utenti. 
  1. Come posso verificare se la crittografia di iCloud è attiva? 
    Puoi controllare nelle impostazioni di iCloud se l’Advanced Data Protection è attivato. 
  1. Le notifiche di iMessage sono crittografate? 
    No, il contenuto delle notifiche potrebbe essere visibile se non disabiliti l’anteprima dalle impostazioni. 
  1. Cosa succede se perdo il mio dispositivo con crittografia attiva? 
    I dati rimangono protetti, ma è importante avere un backup sicuro per evitarne la perdita definitiva. 
  1. Altri servizi di messaggistica sono sicuri come iMessage? 
    Servizi come Signal e WhatsApp offrono crittografia end-to-end, ma con modelli di gestione delle chiavi differenti. 
To top