关于 iOS 8+ 和 64-bit 设备的 1970 问题

2016-02-17 10:42:55 +08:00
 iF2007

关于最近很热的 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 过程。
欢迎一起探讨

2216 次点击
所在节点    iOS
6 条回复
typcn
2016-02-17 10:46:34 +08:00
/t/256452#reply13

我是这样想的
iF2007
2016-02-17 10:53:51 +08:00
@typcn 「例如数字证书的过期时间,而这个证书验证程序用了 unsigned int 来表示时间,于是这个变量就溢出到了一个奇怪的值,这个证书被判定为过期,系统拒绝了开机。」
证书不是有有效的起始时间和废止时间么,感觉应该是小于起始时间所以证书无效。另外没想明白 32-bit 设备为什么不被影响
IgniteWhite
2016-02-17 13:11:07 +08:00
这是科普热?
iF2007
2016-02-17 13:15:09 +08:00
@IgniteWhite 只是自己的理解,跟大家一起讨论讨论
IgniteWhite
2016-02-17 13:16:11 +08:00
@iF2007 我是不懂的,坐等各位科普
LTanN
2016-02-17 14:01:54 +08:00
OS X  会有这个问题吗?同为 Unix 核
(鼠标怎么移到了 设置 - 时间)
可以回到 1969.1.2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/257014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX