skip to main | skip to sidebar
13 commenti

Non impostate la data del vostro iPhone all’1/1/1970

L’articolo è stato aggiornato dopo la pubblicazione iniziale. Ultimo aggiornamento: 2016/02/19 8:15.

Durante la puntata precedente del Disinformatico radiofonico su ReteTre è arrivata in diretta la segnalazione di un ascoltatore, Benat, che diceva che stava circolando un messaggio che invitava i proprietari di iPhone a impostare la data dell’1/1/1970 e riavviarlo per ricevere un “uovo di Pasqua” ma era in realtà un inganno piuttosto pesante: chi seguiva quest’invito si trovava con lo smartphone completamente bloccato e impossibile da riavviare o ripristinare. L’unico rimedio era riportarlo a un negozio per l’assistenza tecnica. Durante la diretta non c’è stato tempo di verificare la segnalazione, per cui ho promesso di parlarne nella puntata successiva e di scriverne qui.

L’inganno è reale, quindi non impostate il vostro iPhone al primo gennaio 1970: se è un modello 5s o superiore, dopo un riavvio si bloccherà completamente. La stessa avvertenza vale per gli iPad Air e iPad Mini 2 e per gli iPod touch di sesta generazione. Apple raccomanda di non impostare date di maggio 1970 o precedenti e dice che un aggiornamento software imminente permetterà di prevenire il problema.

L’unico modo noto finora per sbloccare un dispositivo bloccato in questa maniera è lasciare che la sua batteria si scarichi completamente, oppure aprirlo (cosa non facile) e scollegare la batteria.

Lo scherzo è nato presso 4chan, famoso (o famigerato) luogo online di raduno di internauti che hanno una propensione per le provocazioni, le trasgressioni e gli scherzi di dubbio gusto.

Ma perché gli iCosi hanno questo strano comportamento? E come mai ce l’hanno soltanto certi modelli? La spiegazione esatta è per ora ignota, ma è presumibilmente legata a due fatti indiscussi: il primo è che tutti i dispositivi colpiti hanno processori a 64 bit e il secondo è che l’1/1/1970 non è una data a caso ma è il giorno d’inizio della cosiddetta epoca Unix, ossia è la data dalla quale i sistemi operativi basati su Unix (come appunto iOS) iniziano per convenzione a contare il tempo, rappresentandolo come il numero di secondi trascorso da allora (per la precisione dalle 0:00:00 dell’1/1/1970).

In attesa di eventuali chiarimenti da Apple, la teoria prevalente sul problema di data degli iCosi è quindi che le loro versioni a 64 bit sbagliano a gestire i calcoli del tempo quando la data è vicina allo zero dell'epoca Unix. Tom Scott ipotizza che ci sia di mezzo un integer underflow: una sorta di millennium bug legato alla gestione delle date in Unix. Comunque stiano le cose, lasciate stare la data del vostro dispositivo: il tempo è una cosa seria.


Fonti aggiuntive: Gizmodo, Catb.org, Apple, Ars Technica.
Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (13)
Più probabilmente, il problema è banale (in termini di complessità).
la mezzanotte del 1/1/1970 vale 0 secondi.
Ci sarà (l'ho visto in alcuni sistemi operativi su cui lavoro) un controllo a ciclo stretto che verifica all'accensione se la data è valida usando "data maggiore di zero", solo che l'inizializzazione restituisce effettivamente 0, e quindi non uscendone più blocca la procedura di avvio del sistema.
Con l'azzeramento della batteria, l'orologio interno si resetta alla data di creazione del telefono, quindi un valore diverso da zero che permette l'accensione.
Basati su UNIX...quindi anche Linux potrebbe bloccarsi, se impostato alla data fatidica.
Non che ce ne sia bisogno, di solito la retrodatazione veniva fatta per prolungare il periodo di prova dei programmi proprietari.
Posso permettermi una facile ironia? "l'iPhone è l'unico prodotto che ha la data di scadenza anteriore a quella di acquisto" :)
"Un sistema operativo che usa un processore a 64 bit può rappresentare internamente, al livello più elementare, il numero di secondi dall’inizio dell’epoca Unix fino al 4 dicembre dell’anno 292.277.026.596"

Ehm. No.

La dimensione di una variabile integer (come la timestamp unix) su un processore a 64 bit e' sempre 32 bit. Se vuoi una variabile a 64 bit, la definisci esplicitamente a 64 bit, e sara' a 64 bit sia che tu compili per una CPU a 32 bit sia per una a 64 (semplicemente, il codice di alto livello verra' compilato in diverse istruzioni macchina). L'unico tipo di dato che cambia automaticamente dimensione tra CPU a 32 e 64 bit sono i puntatori, che non c'entrano un tubo con le date.

Se ad Apple hanno deciso di gestire date in 64 bit per prevenire rogne nel 2038 (2^31 secondi dall'1/1/1970 - 1 bit viene usato per il segno), e' sicuro che sono a 64 bit anche sui dispositivi a 32 bit. Questo e' comunque altamente improbabile, in quanto sarebbe in violazione dello standard POSIX, che prescribe di usare un intero a 32 bit con segno. In altre parole avrebbero dovuto affrontare una valanga di problemi d'interfacciamento, oggi, per portarsi avanti con del lavoro richiesto tra 20 anni.

Quel che invece puo' essere ragionevolmente successo e' che ci siano grosse porzioni di codice maldestramente duplicate durante il progetto che aggiunse supporto ai processori a 64 bit. Duplicazione necessaria per motivi che non c'entrano niente con la data, ma che accidentalmente (per mancanza di competenze e/o tempo da parte dei programmatori) hanno preso _anche_ qualche funzione di gestione della data. A quel punto i poveri tapini che sono arrivati dopo si sono trovati a dover mantenere due o piu' copie dello stesso codice, e a un certo punto hanno introdotto un baco solo in una di esse. The end.
Apple ha appena rilasciato un fix per gli apparecchi interessati: https://support.apple.com/en-us/HT205628
Simone,

il link che riporti parla dell'errore 53 che colpisce gli iCosi con TouchID modificato. Secondo quello che dice Apple lì, non c'entra con il problema della data.
il 19 gennaio 2038 sarà un martedì, giusto per completezza di informazione ;)
Sembra che anche impostando la data del 19 gennaio 2038 l'iCoso diventi un fermaporta:

https://discussions.apple.com/thread/7464393?start=0&tstart=0
crusaderky,

Mi ero basato sulla spiegazione di Tom Scott, che di solito è attendibile:

https://www.youtube.com/watch?v=MVI87HzfskQ

Ma da quello che dici mi sono sbagliato. Ho cassato l'intero paragrafo.
Anche Android è Linux based, ma non succede. :)
https://twitter.com/MarcoAlici/status/700610358394941440
Scusate se dico una castroneria, ma l'iphone non ha una specie di avvio speciale da richiamare con una combinazione di tasti (tipo home + volume su) che permetta di cambiare la data dal... bios? (o suo equivalente iphoniano).
Apple: siamo alla frutta.
No ballotto,
secondo me è alla frutta, o meglio alle caramelle (per bambini cretini) chi pensa solo per un attimo a mettere indietro l'orologio del tempo, particolarmente se la promessa di un non_so _chi è quella di ricevere un uovo di Pasqua.

Non dico altro. Punto.
@Claudio
il fatto e' che e' intollerabile che un oggetto si blocchi totalmente se ci sono particolari valori della data di sistema.
Poi il fatto che non ci si debba fidare e' un altro discorso, ma il baco c'e' (o c'era) ed e' (o era) grosso