关于最近很热的 1970 问题,关于为什么触发开机白苹果有几个问题想和大家探讨一下:
- 开机白苹果是重启造成的,如果单纯修改时间不重启,似乎没有看到说 Kernel 或 App 会出现崩溃等问题。因此一些文章里分析说是 App 中消息的时间比系统时间晚从而触发“ bug ”,我觉得这种说法不对。另外例如北京( GMT+8 )只能将时间设置到 1970-01-01 08:00:00 ,这是不会直接造成 underflow 的。
- 如果设备闲置很久,已经没有电了,系统会回到一个固定的时间(具体哪天我没注意,但我的 iPod touch 4 (iOS 6.1.6) 吃灰很久以后,充电开机后时间会重置到某一天的 12 点)。这样能否不移除电池而解决 1970 的问题?
- 32-bit 的设备为什么没有问题?
我自己的理解是由于 boot 要经过一系列利用证书进行签名验证的过程,由于时间修改导致 Apple 嵌入的证书失效从而无法验签,进而无法完成 boot 过程。
欢迎一起探讨
2
iF2007 OP @typcn 「例如数字证书的过期时间,而这个证书验证程序用了 unsigned int 来表示时间,于是这个变量就溢出到了一个奇怪的值,这个证书被判定为过期,系统拒绝了开机。」
证书不是有有效的起始时间和废止时间么,感觉应该是小于起始时间所以证书无效。另外没想明白 32-bit 设备为什么不被影响 |
3
IgniteWhite 2016-02-17 13:11:07 +08:00
这是科普热?
|
4
iF2007 OP @IgniteWhite 只是自己的理解,跟大家一起讨论讨论
|
5
IgniteWhite 2016-02-17 13:16:11 +08:00
@iF2007 我是不懂的,坐等各位科普
|
6
LTanN 2016-02-17 14:01:54 +08:00
OS X 会有这个问题吗?同为 Unix 核
(鼠标怎么移到了 设置 - 时间) 可以回到 1969.1.2 |