Causa de desbordamiento de enteros de tiempo de Unix Epoch? [cerrado]

1

Al establecer la hora en los iDevices de 64 bits al 1 de enero de 1970 (tiempo de Unix Epoch 0) y al reiniciarlo, el iDevice se bloquea debido a un subdesbordamiento de enteros. Mi pregunta es sobre qué operación realmente causa el bloqueo:

Método 1: Llamó a alguien en el tiempo de Época 1455403324, este número se guarda para los cálculos de la marca de tiempo para ver cuánto tiempo hace que realizó la llamada. Ahora cambia la hora a 1/1/1970. Han transcurrido 5 minutos y su tiempo de Época ahora es 300, pero se está ejecutando un cálculo de marca de tiempo para su última llamada y la ecuación es 300 (hora actual) - 1455403324 (hora de la última llamada), que es un valor negativo, lo que provoca el desbordamiento de enteros (suponiendo el entero de la marca de tiempo no está firmado, lo que no tendría sentido si no fuera así porque, al igual que la suposición con el valor del tiempo de época real, ¿cómo es posible que alguien haya llamado otra x minutos en el futuro?)?

Método 2: Como alguien dijo antes, "En algunas zonas horarias, establecer la fecha en 1 de enero de 1970 configurará el reloj interno en un número menor que cero, ya que la hora se almacena en GMT (como el número de segundos desde la medianoche en esa fecha) y luego el desplazamiento se aplica antes de la visualización ", escrito por enlace . "En otras zonas horarias, el ajuste del reloj dará como resultado un valor de tiempo positivo. La mejor suposición es que esto se activa al tener un valor de tiempo inferior a cero".

¿Son ambos válidos o uno u otro?

    
pregunta Vikaton 14.02.2016 - 02:42

2 respuestas

1

Casi seguro de que no se debe a un desbordamiento de enteros, sino a una firma basada en el tiempo que se utiliza en los mecanismos de seguridad de iOS, como el SEP.

    
respondido por el Max 14.02.2016 - 05:29
1

Esta no es la causa de tu problema. iOS funciona con algo llamado codeigning. Apple escribe y compila su código, luego lo firma criptográficamente para probar su autenticidad. Esto se hace con certificados. Los certificados suelen tener dos valores de fecha.

  • El que suele tropezar al utilizar Internet es la fecha de finalización . Si su tiempo ha pasado esa fecha, el certificado ya no es válido y lo que esté intentando verificar no se verificará.
  • La otra es la fecha de inicio que le indica a la computadora cuando el certificado comienza su período de validez.

El iPhone y su versión actual de iOS no existen desde 1970. Cuando arranca el dispositivo, realiza una verificación de integridad del sistema, utilizando esos certificados. Si establece la fecha del sistema en un punto en el tiempo antes de la fecha de inicio del certificado con el que está firmado el sistema, simplemente no puede pasar la verificación.

Vea este intercambio de twitter: enlace

  

@JZdziarski : algo de lo que la gente no se da cuenta es que iOS / OS X debe tener un tiempo válido para que los certificados de firma de código sean válidos.
@Ghostlyrics : @JZdziarski No veo cómo esto es un problema, ya que hace NTP (o similar) de forma predeterminada.
@JZdziarski : @Ghostlyrics porque si los certificados de Apple no son " t válido, ntp no se puede ejecutar.

    
respondido por el GhostLyrics 14.02.2016 - 12:33

Lea otras preguntas en las etiquetas