安卓手机里熵值大小对安卓7.1流畅度对比6.0有影响吗

用 Android 的人看中了 Android 的什么? - 知乎2253被浏览326603分享邀请回答732248 条评论分享收藏感谢收起7835 条评论分享收藏感谢收起查看更多回答71 个回答被折叠()&img src=&/v2-757ecfb6663b_b.jpg& data-rawwidth=&500& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/v2-757ecfb6663b_r.jpg&&&p&对于手机信号的强弱,大多数人认为就是看手机上面所显示的格子数。&br&&/p&&br&&p&&img src=&/v2-f264e8d2f5eccec0d1edd25e8b5ab875_b.jpg& data-rawwidth=&741& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&741& data-original=&/v2-f264e8d2f5eccec0d1edd25e8b5ab875_r.jpg&&&img src=&/v2-68acd5cdbcd4c8_b.jpg& data-rawwidth=&702& data-rawheight=&135& class=&origin_image zh-lightbox-thumb& width=&702& data-original=&/v2-68acd5cdbcd4c8_r.jpg&&但各位肯定经常遇到这种情况:一起坐电梯,人家手机信号仅有1格,你的还有3格,但来电铃声响起后,人家拿起手机就能聊得热火朝天,你只能不断喂~喂~,而那边则是无尽的沉默。&/p&&p&造成这个现象的原因很多,但其中一个关键就是你觉得格子数就代表了信号的绝对强弱,不同的手机是可以比较的。&/p&&p&事实上,根据专家的说法,我们应该这么理解信号格:&/p&&blockquote&&p&信号格的原理:手机向网络报告检测到的信号情况,网络将为手机选择下一步通信时使用的技术、频段、通道等。&/p&&p&信号格的单位:信号格表示信号强度,但手机信号格是没有标准的衡量单位。手机如何向基站“报告”相关信息,以及针对特定信号强度显示的信号格数取决于厂商。&/p&&p&信号格的意义:信号格并不总是根据信号强度计算出来的。比如iPhone还考虑了网络负荷因素,而且给予了较高的权重。&/p&&/blockquote&&p&总结来说就是,同样强信号显示3格还是4格是手机厂商决定的,而且多数手机厂商还会将影响通信的其他因素计算到信号格。&/p&&p&&img src=&/v2-757ecfb6663b_b.jpg& data-rawwidth=&500& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/v2-757ecfb6663b_r.jpg&&■图/海洛创意&/p&&p&那么,看信号强弱的正确方法是什么?真的不能和小伙伴比比谁的信号比诺基亚还强吗?当然有办法——&/p&&h3&iPhone手机&/h3&&p&想临时查看表示信号强度的数字,可在拨号键盘上输入*#*,然后按下【呼叫】按钮,iOS内置应用Field Test就被启动了,同时左上角出现了信号强度的精确值。&/p&&p&&img src=&/v2-ed_b.jpg& data-rawwidth=&394& data-rawheight=&322& class=&content_image& width=&394&&&img src=&/v2-6736dbab7bb02bbc699fd6_b.jpg& data-rawwidth=&368& data-rawheight=&510& class=&content_image& width=&368&&想让信号强度一直以数字形式显示,只需要再进行以下3步:&/p&&p&①按住iPhone的开关键(即顶部电源键),直到出现”滑动来关机”滑块&/p&&p&②最后按住Home键,直到关机滑块消失,机子将回到主屏幕界面,&/p&&p&③此时iPhone屏幕左上角将会一直都显示此信号强度数值,你还可以点击它,在数字和信号格之间进行切换。&/p&&h3&安卓手机&/h3&&p&安卓手机可以临时查看这个数字,但无法一直显示。不过,查看的方式有两种:&/p&&p&①进入【设置】,然后在最下面的菜单项中找到【关于手机】,点击进入。接着找到并进入【状态消息】,进入后再点击【SIM卡状态】,这时就可以看到“信号强度”,如图示,里面显示为:-103dBm 37asu。&/p&&p&&img src=&/v2-17cac0f7d3fed1d1ea8a58d_b.jpg& data-rawwidth=&750& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-17cac0f7d3fed1d1ea8a58d_r.jpg&&②也可以像iPhone那样,在拨打电话的页面输入*#*#4636#*#*进入到手机测试模式(输入后自动跳转,不需按拨号键),然后再点击【手机信息】,在里面你也可以看到这两个数值。&/p&&h2&&img src=&/v2-c694a3aa15060ecf0a7d52_b.jpg& data-rawwidth=&665& data-rawheight=&665& class=&origin_image zh-lightbox-thumb& width=&665& data-original=&/v2-c694a3aa15060ecf0a7d52_r.jpg&&知道数字怎么用&/h2&&p&手机通用的信号强度的单位是dBm(毫瓦分贝)。iPhone手机显示的数字就是以这个为单位的,当它显示为-82时,就是意为-82dBm。安卓手机显示了两个数字,但都是注明单位的,前一个数字就是以dBm为单位的。&/p&&p&由于dBm是通过对数计算出来的,所以dBm一般都是负数。但总的来说,这个数值越大(考虑正负号),表明信号越好——也就是说-90dBm比-100dBm信号好,-55dBm比-62dBm信号好,以此类推。&/p&&p&一般认为,如果dBm数值在-80至-50之间,那么信号还算良好,基本能正常通话与上网。-90dbm以下就比较低了,很可能出现通话时掉话的现象——&/p&&blockquote&&p&-40至-50之间为在基站附近;&/p&&p&-50至-60之间信号属于非常好;&/p&&p&-60至-70之间信号属于良好;&/p&&p&-70至-80之间属于信号稍弱;&/p&&p&-80至-90之间属于信号弱;&/p&&p&-90以下为基本能通讯状态。&/p&&p&-100的话,建议晚上睡觉还是开飞行模式吧,不然耗电又辐射大!&/p&&/blockquote&&p&有了数字显示的信号强度,手机的相关使用也就更准确了:&/p&&p&①-50dBm乃至-40dBm以上的信号强度是很少见的,一般在基站的数米范围之类才有。如果你确定没有附近没有基站,而手机信号确达到这个强度,那说明跟前肯定有人在用伪基站或信号放大器之类的仪器,这时接到的电话和短信就要多留一份心;&/p&&p&②众所周知,手机接收到的信号越弱,它在通话时发出的辐射也就越强。因此,当信号强度低于-80时(比如乘地铁时),用户最好手动选择运营商的2G、3G、4G网络(一般2G比3G强,3G比4G强),让信号强度稳定在-80以上,这种情况下使用手机发出的辐射最小。&/p&&p&■周到君设置首选网络为2G后,信号强度马上提升了一大截。&/p&&p&③据说,根据中国移动的布网规范要求,在接收状态下,城市大于等于-90dBm;乡村大于等于-94dBm时,此处无线信号强度才满足覆盖要求。反过来,如果某个地方几部不同的手机的信号强度都在规定范围之下,那么你就可以向运营商投诉,让他们加强该地区的基站建设,说不定还能获得一笔奖金。&/p&&p&最后,周到君再提醒一下:这个显示出的dBm只能反映手机在某地区的信号接收强度,这和手机的信号接收能力以及该地区信号发射强度(也就是覆盖强度)都是有着密切关系的。也就是说,单个手机测出的dBm是-55也好,是-102也罢,只能反映手机在该地区该点上的信号强度,是完全无法反映运营商是否给力的问题,更无法直接说明手机的信号接收能力好不好。&/p&&p&相反,如果在同一地点(譬如头顶上同时有联通和移动两台基站),同一设备,不同的运营商SIM卡,来比较dBm,才有可能得出哪个运营商更给力这样的说法,类似的,只有同一地点,同一运营商的SIM卡,不同的设备,来比较dBm,才有可能得出哪个设备接收能力更弱的结论。&/p&
对于手机信号的强弱,大多数人认为就是看手机上面所显示的格子数。 但各位肯定经常遇到这种情况:一起坐电梯,人家手机信号仅有1格,你的还有3格,但来电铃声响起后,人家拿起手机就能聊得热火朝天,你只能不断喂~喂~,而那边则是无尽的沉默。造成这个现象…
&img src=&/v2-09fabd6510100cdd21b91342_b.png& data-rawwidth=&1184& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1184& data-original=&/v2-09fabd6510100cdd21b91342_r.png&&如题图所示,更新后就直接显示Android 8.0.0,会不会有钦定的感觉?&p&现在持续运行于后台的app会被更明确的标出(注意和 VPN 的提示是两回事):&/p&&p&&img src=&/v2-511e8d10ed79c1140dcde1e0b560908a_b.png& data-rawwidth=&1440& data-rawheight=&1065& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-511e8d10ed79c1140dcde1e0b560908a_r.png&&&br&进入settings界面,剩余电量会显示在Battery下面。DP2也有,但通常需要进入Battery查看细节后,在settings界面才会有显示。&/p&&img src=&/v2-eda0ad6f07bcbdb2eef021e_b.png& data-rawwidth=&1440& data-rawheight=&2560& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-eda0ad6f07bcbdb2eef021e_r.png&&&p&&br&8.0新的Battery界面,和DP2大致一样。不要惊呼只有1个半小时的亮屏时间,是从今天升级后只有大约一半电量时开始计算的,并不是真的since full charge。&br&&/p&&p&&img src=&/v2-cebcff5ddea74c80006ac3e_b.png& data-rawwidth=&1440& data-rawheight=&2560& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-cebcff5ddea74c80006ac3e_r.png&&Battery界面往下滚,是分应用耗电情况。&b&注意&/b&这里的耗电百分比不是占电池总量的百分比。是什么百分比我也弄不清。&/p&&p&&img src=&/v2-6ad83397_b.png& data-rawwidth=&1440& data-rawheight=&2560& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-6ad83397_r.png&&在Battery界面点电池大图标,进入Advance usage界面,有充放电曲线图和按大类耗电统计。&/p&&p&可以看到在上图中显示占6%的ss,在这里显示为2%。&/p&&img src=&/v2-43ccb49a0b11bc8d0c2b338a_b.png& data-rawwidth=&1440& data-rawheight=&2560& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/v2-43ccb49a0b11bc8d0c2b338a_r.png&&&br&&p&兼容性方面:&/p&&ul&&li&招行客户端(play store安装) crash,无法进入。DP2会显示有crash,但仍然可以进入界面正常使用。同一个版本在7.1.2的Pixel上使用正常。&/li&&li&Mobike(play store安装) crash,无法进入,卸载后重新安装也一样。摩拜的app在DP2上曾经可以使用,但某一天开始就突然一直crash。同一个版本在7.1.2的Pixel上使用正常。&/li&&li&支付宝(play store安装)正常&/li&&li&京东金融(网站安装)正常。京东金融曾经有段时间被play store报恶意软件,后来没有再提示过。&/li&&li&小米运动(play store安装)正常。小米运动一直利用前台service驻留,在O里会有显眼的通知栏图标提示,点两下就可以杀掉。&/li&&li&Welike正常&/li&&li&其他二十来个play store安装的非国产应用/游戏都没发现问题。&/li&&/ul&&p&性能方面还需要多试。DP2在使用一段时间后就会东卡一下西卡一下,DP3目前看来还好。&/p&
如题图所示,更新后就直接显示Android 8.0.0,会不会有钦定的感觉?现在持续运行于后台的app会被更明确的标出(注意和 VPN 的提示是两回事): 进入settings界面,剩余电量会显示在Battery下面。DP2也有,但通常需要进入Battery查看细节后,在settings界面才…
1、当你有足够的钱,并且不想花太多心思在“怎么让手机更听话省心”上,买最新款最高配的iphone。&br&2、上一条第一句不符合的话,就买前一年的iphone。&br&3、所有鼓吹“八核(十核)处理器”“XX拍照效果”“强大安全性能”之流而不写上具体型号、感光元件的手机,都没有任何购买的必要。&br&4、千元以下,基本上,只有小米(红米)的手机是值得花钱的。&br&5、原则上,除了find和xplay系列,Oppo和Vivo没有购买的价值。&br&6、任何鼓吹自拍效果的手机,基本上没有购买的价值。&br&7、华为手机只能买旗舰(p/mate),荣耀系列也是。&br&8、如果没有一定的分辨能力,请上京东买手机,上淘宝买手机跟送钱分别不大。&br&9、小米是一家买不了吃亏买不了上当但你绝对贪不着什么便宜的厂商。&br&10、如果不是特别的爱好需求,不要买日韩厂商的手机(三星LG索尼)&br&11、同上,台湾厂商也是(华硕HTC)&br&12、这年头本质上来说手机厂商都是组装商,不存在爱国手机一说——华为的摄像头还是德味呢。&br&13、如果实在不打算买苹果,请尽量选择国产安卓手机,毕竟国产UI在易用度上实在是胜过外国友商太多。&br&14、谁推荐你windows phone你就抽出40米长的大砍刀砍死他。&br&15、推荐云os的请换80米的砍他。&br&16、不要随便听人介绍一加这好那好你就过去,这是一个实力足够但是赞誉过度的手机。&br&17、中华酷联这四家有三家是天坑,不用我说你也知道是哪三家,所以就不要往里钻了。&br&18、一个原则:大厂的手机不见得性价比多高质量多好,但比起三天两天就整幺蛾子的,他们多少还是可靠点(我没有在说锤子,真的没有)。&br&19、手机的处理器如果不表明骁龙8XX(6XX),Helio Xxx(xx为数字),麒麟9XX(华为),Exynos 8XXX(三星/魅族),AXX(苹果),那他多半是打算坑你。&br&20、接上一条:如果这个手机用的是Helio Xxx,那你最好做被坑的准备。毕竟这个世界上只有苹果,骁龙,Exynos,麒麟和其他这几家处理器。&br&21、索尼大法好,索尼手机坑的你哇哇乱叫。&br&22、如果你不是具备随时能充电条件的人,建议买4000mah以上电池容量的手机。&br&23、玩游戏还是屏幕越大越好,只要没有ipad mini那么大就可以了。&br&24、为了起码的生命安全,请拒绝三星。&br&【转载于贴吧,原帖在浩如烟海的网络世界着实难寻,侵删。】&br&&br&&br&以下是答主私货:&br&&br&1、除了做工、配置、相机之外手机还有一个尤为重要的特性:手感(舒适度),这里给推荐,矩形直角边的机器手感往往都不会太好,可以尽量选择圆角矩形,圆润一点的。&br&举几个手感明显很差的机器,iPhone5s/se,sony一些列,小米3&br&&br&2、买机器不要只看soc,就欢天喜地的上网下单所谓的“高性价比”机器,相信我,哪怕你对品质有那么一点点追求,你不会喜欢一台手感、外观、质感,还不如一台模型的机器。&br&高配低价/高性价比的机器,肯定是阉割缩料的机器,从电池、传感器、屏幕(屏幕直接影响观感)以及各种手机里的“内脏”几乎都用缩料的配件。&br&&br&3、三星的手机从s5以后,每一代都非常抓人眼球,但是抛开外表来谈:S6可以堪称旗舰机器尿崩的代表,2-3小时的4g续航一点不夸张。s7代国行三星活活把820优化成615,而且不约而同的就是一开始续航还行,越到后面越尿崩。&br&【ps,三星在note7爆炸事件中,对中国消费者的态度,真的挺令人心寒的】&br&&br&4、现在网络上流行千元机吊打旗舰机的论调,我可以这么告诉各位看官,除了续航千元机实在是没有什么出彩之处,千元机“实用”但绝对不“够用”。如果有可能,请选择续航优秀/靠谱的旗舰机器。相信我,7p、米6等等各种旗舰对比一大票千元625机器绝对是碾压级的(电池除外)。&br&&br&5、如果你很想了解一款机器的真实情况请去对应论坛,对应贴吧,而不是知乎,相信我那里的各种经验帖比知乎上很多泛泛而谈的热门回答真实很多。(比如之前口碑很好的S7E)&br&&br&6、不要相信小众品牌粉丝的话,小众品牌之所以变为小众品牌绝不是因为他们所宣称的“这届用户不行”,而是真真切切的是被市场以及大众抛弃的。(参考后期扑街的诺基亚,塞班时代的发烧友知道诺记当年有多坑、多作死,“科技以换壳为本”,然而诺记扑街以后网上各种所谓的“情怀”)&br&&br&7、我不是针对某一款机器,所有价格极为便宜的配着顶级芯片的“高性价比”机器都是垃圾,而且体验之差,系统之烂超乎想象,发热、死机可谓家常便饭,可是这种机器在非专业机型论坛口碑却很好,希望知乎的机油不要被纯soc蒙蔽了双眼。&br&&br&8、在手机界特别爱撕逼的今天,希望各位基友保持理智,手机而已,没有必要为了xx而在网上和人撕的天昏地暗。我见过很多失去理智的各种品牌粉丝,其实真的本末倒置了,大家用个手机就图个便利、好用,有撕逼的时间不如多看看你感兴趣的东西。&br&&br&9、最后我希望大家都可以理性的挑选一台自己钟爱的机器,不管你是发烧友还是普通用户,都希望你们可以享受到手机科技大跃进时代所带来的便利。&br&&br&10、“洋垃圾”很美妙,充满吸引力,但不要向你的普通朋友推荐“洋垃圾”。&br&&br&11,手机里一些不被人关注的小细节:耳机底噪问题、移动数据/Wi-Fi是否会断流、在使用12个月以后,电池是否呈断崖式下跌、官方对后续的更新支持是否良心、辅助功能里对残疾人的支持度如何、连接蓝牙是否会总是出问题...&br&&br&12,手机的ram(运行内存)决定你的后台上限,但不代表ram越大后台越强,手机厂商中有几家的系统优化,能把4g优化成1g/2g,这里不点名批评,大家可以在评论区讨论下真实的机器后台水准。另建议大家买之前可以去相关机型论坛一探究竟。&br&&br&&br&&br&【额外说个观点:我认为目前电池水平的停滞已经严重的影响了手机科技的发展并且我们可以感受到,这两年手机发展明显已经放缓,容我做个大胆的猜测,现在坚持不懈突破电池界限的机构/公司/个人,在电池的科技水平可以出现在以量产的前提下进步的时候,这些机构/个人绝对会获利,而那时候,整个科技界(不仅仅手机界)都将出现一次巨大的飞跃】&br&以上是个人一点愚见,希望可以和各位互相指教。&br&&br&&img data-rawwidth=&640& data-rawheight=&422& src=&/v2-41998fba32f10dceb7bc568e31f6b962_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-41998fba32f10dceb7bc568e31f6b962_r.jpg&&&br&&br&&br&晚安
1、当你有足够的钱,并且不想花太多心思在“怎么让手机更听话省心”上,买最新款最高配的iphone。 2、上一条第一句不符合的话,就买前一年的iphone。 3、所有鼓吹“八核(十核)处理器”“XX拍照效果”“强大安全性能”之流而不写上具体型号、感光元件的手…
&img src=&/v2-eb60ec735887_b.jpg& data-rawwidth=&700& data-rawheight=&233& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-eb60ec735887_r.jpg&&&p&原文发表于少数派:&a href=&/?target=https%3A///post/39584%3Futm_source%3Dzhihu%26utm_medium%3Dzhuanlan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&具透 | Android O 就是 8.0,第三个开发者预览版还有这些新东西&i class=&icon-external&&&/i&&/a&&/p&&p&作者:&a href=&/?target=https%3A///user/696946& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Clyde&i class=&icon-external&&&/i&&/a&&/p&&p&------&/p&&p&距离首个 Android O 预览版发布已经过去了三个月,与当前的稳定版本 Android 7.1.2 Nougat 相比,Android O 将带来多渠道通知分类、通知延后、自动填写、自适应启动器图标、更激进的后台管理策略、支持 LDAC 等高阶音频解码协议等等海量新特性,如果你记不清还有哪些激动人心的改进,可以查看少数派先前的「具透」文章:&br&&/p&&a href=&/?target=https%3A///post/38394%3Futm_source%3Dzhihu%26utm_medium%3Dzhuanlan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&具透 | Android O 突然就来了,首个开发者预览版都有哪些新东西?&i class=&icon-external&&&/i&&/a&&p&经历了稳定性极差的第二个开发者预览版(以下简称 DP2)之后,我不得不降级到了 Android 7.1.2。就在本月的月度安全更新补丁还在手机里滚滚发烫之际,昨晚,Google 突然放出了第三个 Android O 开发者预览版(以下简称 DP3)。&/p&&p&这次发布的敲定最终 API 等级(26)的 DP3 理应是一个相对比较稳定的版本,因而一番体验后我发现,DP3 在稳定性上几乎已经没有影响日常使用的问题了(比如 DP2 中的系统应用内存泄漏问题)。除此之外,与 DP2 相比新版本还有着不少的细节改动,所以我将在本文为大家进行详细梳理。&/p&&h2&版本号敲定:就是 8.0 了!&/h2&&p&没错,Android O = Android 8.0。&/p&&p&这一次没有彩蛋、没有暗示,也不需要各大媒体从官方截图中的状态栏时钟捕风捉影。&/p&&p&更新到 Android O DP3 后我们发现,在「关于手机」页面中「系统版本」栏目下,赫然写着 Android O 的版本号—— &b&Android 8.0.0&/b&。&/p&&p&&img src=&/v2-2fd52157afe72eb0b6d1f_b.jpg& data-rawwidth=&700& data-rawheight=&1244& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-2fd52157afe72eb0b6d1f_r.jpg&&Google 的直截了当为我们省去了猜版本号的过程,但其实这并不意外,仔细回想近三年来 Android 系统的版本号跃进规律其实就可以发现,「一年一个版本号」几乎是板上钉钉的事。&/p&&p&&img src=&/v2-b9faecd42add02_b.png& data-rawwidth=&700& data-rawheight=&3238& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-b9faecd42add02_r.png&&&i&(What's next?)&/i&&/p&&p&所以让我们把心思放在猜甜品名字这件事情上吧。每一代 Android 都会对应一个甜品名称,大家觉得这次的「O」代表哪种甜品?&/p&&h2&更漂亮的媒体通知样式&/h2&&p&在 &a href=&/?target=https%3A///post/38394& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&上一篇具透&i class=&icon-external&&&/i&&/a& 中我们曾提到过 Android O 在蓝牙音质上的巨大飞跃。在更新到 DP3 后,用 Android O 听歌不仅能从听觉上满足我们的高音质需求,视觉上也加入了一些小小的惊喜。&/p&&p&现在,通知栏中的所有媒体通知都会根据正在播放的媒体内容进行从左至右渐变式上色,具体效果大家可以从下方的对比图中看出:&/p&&p&&img src=&/v2-ba389acbefbb16ce9e4f9_b.jpg& data-rawwidth=&700& data-rawheight=&333& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-ba389acbefbb16ce9e4f9_r.jpg&&&i&(媒体通知样式对比:Android DP2/DP3)&/i&&/p&&p&遗憾的是,那些没有采用 Android 系统标准样式设计的媒体通知是无法被「上色」的,比如网易云音乐。&br&&/p&&p&&img src=&/v2-51afd078b622bfb3a9f4_b.jpg& data-rawwidth=&700& data-rawheight=&641& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-51afd078b622bfb3a9f4_r.jpg&&&i&(&/i&&i&上:网易云音乐;下:Phonograph)&/i&&/p&&h2&常驻通知提醒:后台应用无所遁形&/h2&&p&&a href=&/?target=https%3A///post/38394& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&上一篇具透&i class=&icon-external&&&/i&&/a& 中,我们同样提到了 Android O 的后台管理策略,面向 Android O 进行开发的应用进入后台之后会更加省电。&/p&&p&而在 Android O DP3 中,无论应用是否为面向 API 26 开发的,当他们进入后台运行时,系统都会发出通知告知用户当前系统的后台应用状况。只要后台应用存在,这个通知就无法被清除。&/p&&p&&img src=&/v2-021b001db9a96a9ff08163_b.png& data-rawwidth=&700& data-rawheight=&613& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-021b001db9a96a9ff08163_r.png&&&i&(系统会以常驻通知的方式提醒用户注意后台应用)&/i&&/p&&p&点击这个后台应用通知后,我们就能在弹出的对话框中看到后台应用列表,从列表中进一步可以前往对应的应用管理界面,对那些耗电异常、占用后台资源的应用进行关停或卸载。&/p&&p&这个常驻通知的出现一如既往地体现了 Google 对 Android 后台应用管理和手机续航的关注,但无论当前后台应用是否处于高耗电状态,这个通知都会一直以常驻通知的方式存在于通知栏当中,还是为小屏设备地通知栏带来了不小的压力。&/p&&h2&让人无所适从的图标&/h2&&p&自 Pixel 设备诞生之日起,Google 就一直试图用软件功能上的差异来对 Pixel 和 Nexus 两条产品线进行区别。运行相同版本的 Android Nougat,Pixel 设备就曾经独占过或依然独占着 Google Assistant、指纹识别传感器手势、Pixel Launcher、圆形图标、夜间模式等等实用特性。&/p&&p&截至这次发布的 Android O DP3,Google 依然没有为 Nexus 设备撤下 Google Now Launcher,尽管此前曾有消息报道他们或许将不再对 Google Now Launcher 进行更新维护。&/p&&p&更让人难以接受的是,Nexus 设备在更新到 DP3 后将强制采用圆角矩形图标规范,对那些没有适配该样式规范的图标处理方式也极其「暴力」。&/p&&p&如果你看习惯了 Pixel 设备上整齐划一的圆形图标,或是传统不规则 Android 应用图标的拥护者,更新到 Android O DP3 之后可能会一时间觉得难以适应。&img src=&/v2-9adeebf92bc8c_b.png& data-rawwidth=&700& data-rawheight=&613& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-9adeebf92bc8c_r.png&&&/p&&p&&i&(大小不一的图标样式、粗暴无脑的圆角矩形)&/i&&/p&&p&除此之外,Pixel Launcher 还加入了一种新的全局图标样式:Teardrop。美观与否大家自行评判吧。&br&&/p&&p&&img src=&/v2-c6e5bbb7e29c_b.jpg& data-rawwidth=&700& data-rawheight=&624& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-c6e5bbb7e29c_r.jpg&&&i&(&/i&&i&Teardrop:「见者落泪」?)&/i&&/p&&h2&大量 UI 和功能细节调整&br&&/h2&&p&除了上面提到的几个最为明显的改动之外,在实际体验过程中,你也许还会留意到这些细节:&/p&&p&&b&1. 状态栏布局回调&/b&&/p&&p&Android O DP2 引入了一种极其古怪的状态栏布局,即「信号+数据图标+WiFi+电量百分比+电池图标+时间」,具体的效果如下图:&/p&&p&&img src=&/v2-9b70cf9de086ecbfcdc846a536c6155a_b.jpg& data-rawwidth=&700& data-rawheight=&228& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-9b70cf9de086ecbfcdc846a536c6155a_r.jpg&&这种设计已经面世就在国外论坛和反馈社区引来诸多抱怨,因为上图中的 WiFi 图标在未连接甚至未打开 WiFi 开关的情况下也会显示在状态栏当中,造成空间浪费。现在 Google 在 DP3 中撤销了这个改进。&br&&/p&&img src=&/v2-e1af18c5b9d42fd267e8de6ecd371df7_b.jpg& data-rawwidth=&700& data-rawheight=&229& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-e1af18c5b9d42fd267e8de6ecd371df7_r.jpg&&&p&&b&2. 通知面板样式改进&/b&&/p&&p&此前的两个预览版中,Android O 的通知面板都更多地给人一种「更加扁平」的感觉。拉下通知栏后,顶部的几个快速开关和通知之间仅有一条细微的分隔线。&/p&&p&到了 DP3,这两部分之间则多出了一点空隙和阴影,即便是通知栏中没有任何通知,这部分空隙和阴影也依然存在,看上去有了几分层次感。这点变化依旧可以从上面媒体通知的对比图中看出。&img src=&/v2-529a432e57ac0a33f290bd44604fdd37_b.jpg& data-rawwidth=&700& data-rawheight=&333& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-529a432e57ac0a33f290bd44604fdd37_r.jpg&&&/p&&p&&i&(注意顶部面板和通知之间的间隔)&/i&&/p&&p&前后两种设计孰优孰劣现在难以判断,但 Android O 的通知与 Android Nougat 相比更加好看了这是千真万确的。&br&&/p&&p&&b&3. 设备主题功能被隐藏&/b&&/p&&p&在之前的 Android O 预览版中,Pixel 设备的「显示」设置项中是有「设备主题」这个选项的,通过这个选项,高贵的 Pixel 用户是可以进行简单的主题更换的。&/p&&p&但这个功能还是被少数派编辑在第一篇 &a href=&/?target=https%3A///post/38394& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&具透&i class=&icon-external&&&/i&&/a& 中那一口「毒奶」给奶没了(其实是「谷鸽」又发力啦)……在 Android O DP3 中,设备主题选项从「显示」设置项中正式移除。&img src=&/v2-bcec044d7666962_b.png& data-rawwidth=&700& data-rawheight=&613& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-bcec044d7666962_r.png&&&/p&&p&&i&(DP2 中的设备主题选项 [Pixel])&/i&&/p&&p&其实目前也不能说是「移除」,如果你在设置中搜索相关的关键字,还是能够找到这个选项的。只是不能用而已。&img src=&/v2-f4f09b7ded4_b.png& data-rawwidth=&700& data-rawheight=&1244& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-f4f09b7ded4_r.png&&&i&(点击搜索结果会跳转至「显示」菜单)&/i&&/p&&p&&b&4. 系统界面调节器「瘦身」&/b&&/p&&p&在 Android O DP2 中,我们可以通过系统界面调节器对勿扰模式、导航栏按键、状态栏图标甚至是锁屏快捷方式等多个部分进行自定义。DP3 则迎来了 Google 猝不及防的一刀。&/p&&p&&img src=&/v2-578e17a3d1a40a9e6f0404fac9c4a1a6_b.jpg& data-rawwidth=&700& data-rawheight=&623& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-578e17a3d1a40a9e6f0404fac9c4a1a6_r.jpg&&&i&(曾经的系统界面调节器 [DP1/Pixel] )&/i&&br&&/p&&p&现在,系统界面调节器中仅剩下状态栏图标和勿扰模式两个自定义项目:&br&&/p&&p&&img src=&/v2-c80bcd0e7f30fedd153db_b.png& data-rawwidth=&700& data-rawheight=&1244& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-c80bcd0e7f30fedd153db_r.png&&&i&(&/i&&i&现在的系统界面调节器 [DP3])&/i&&/p&&p&&b&5. 全新电池动画&/b&&/p&&p&抱歉,这里说的电池动画并不是状态栏里那个电池。&/p&&p&如果你打开系统设置,进入电池管理界面,就会发现这里多了一个电池电量从 0 上涨至当前电量的小动画,非常灵动但有改进空间。&/p&&p&&img src=&/v2-e163de8a7dcaca_b.jpg& data-rawwidth=&700& data-rawheight=&1244& data-thumbnail=&/v2-e163de8a7dcaca_b.jpg& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-e163de8a7dcaca_r.gif&&&i&(进入电量管理界面时多了这个有趣的小动画)&/i&&/p&&p&要是以后能根据具体的充放电场景进行改变,做一个从 100 掉到当前电量的动画是不是能让你更心痛?&/p&&p&&b&5. 媒体通知无法被「延后」&/b&&/p&&p&这其实是一个 bug。&/p&&p&Google 在 Android O 中引入了通知延后功能,可以对系统和应用发出的通知进行全局「延后」操作(关于这个功能的更多细节请移步我们先前的 &a href=&/?target=https%3A///post/38394%3Futm_source%3Dzhihu%26utm_medium%3Dzhuanlan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&具透&i class=&icon-external&&&/i&&/a&)。但这个功能在加入到前两个版本的 Android O 当中时似乎并没有考虑到一个问题,那就是部分通知并不需要「延后」。&/p&&p&这就导致在早期的 Android O 预览版中,我们可以随意对常驻通知、媒体通知进行延后,然后,这些通知短期内就不会再回来了……&img src=&/v2-5c5d1c804dbb2562acc8ec1_b.jpg& data-rawwidth=&700& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-5c5d1c804dbb2562acc8ec1_r.jpg&&&/p&&p&&i&(媒体通知无法被「延后」了)&/i&&/p&&p&DP3 修复了这个 bug,或者说完善了这个功能,现在,媒体通知(比如音乐播放器)和常驻通知(比如 SSR)都无法被「延后」。再也不会出现歌还放着,但通知却找不回来这种情况了。&br&&/p&&h2&此外,这些内置应用有了更新&/h2&&p&&b&1. 时钟&/b&&/p&&br&Android O DP3 内置的时钟换了新图标,应用内部的主题也由原先的蓝、紫色调变成了黑、灰色调。&br&&img src=&/v2-0e716ecd8bc11464babb862f7e431478_b.png& data-rawwidth=&700& data-rawheight=&613& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-0e716ecd8bc11464babb862f7e431478_r.png&&&i&(新图标、新界面)&/i&&br&&p&&b&2. 相机&/b&&/p&&p&内置 Google 相机升级至 v4.4.012,部分功能按键的布局进行了调整,同时也带来了一些操作方式上的变化——现在,你可以在取景器中滑动切换照相/摄像模式。&/p&&p&&img src=&/v2-fa2d55d24c2712dab4e255b_b.jpg& data-rawwidth=&700& data-rawheight=&1244& data-thumbnail=&/v2-fa2d55d24c2712dab4e255b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/v2-fa2d55d24c2712dab4e255b_r.gif&&&i&(取景器内滑动即可切换模式)&/i&&br&&/p&&p&------&br&&/p&&p&以上就是我们所发现的 Android O 第三个开发者预览版中的最新改动,如果你还有别的发现,欢迎在评论区与我们分享;如果你看完具透想要提前体验一把,也可以留意我们稍后推出的「Android O 升级指南」。&/p&&p&关联阅读:&a href=&/?target=https%3A///post/38394& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&具透 | Android O 突然就来了,首个开发者预览版都有哪些新东西?&i class=&icon-external&&&/i&&/a&&/p&
原文发表于少数派:作者:------距离首个 Android O 预览版发布已经过去了三个月,与当前的稳定版本 Android 7.1.2 Nougat 相比,Android O 将带来多渠道通知分类、通知延后、自动填写、…
苹果:软件需要推送通知?将推送发到Apple Push Notification Service?APNs再进一步转发给用户。&br&如上,所以iOS的推送不需要啥后台,YouTube Twitter这类不存在的404网站照样能在没破解404的情况下推送通知过来,就因为走的APNs。&br&&br&安卓:软件需要推送通知?将推送发到Google Message Service或Mi Push等推送服务器?服务器转发给用户&br&&br&但Android的问题往往出在第二步,因为:&br&要不那个app没有内置Mi Push、GMS等服务的接收器SDK&br&要不那个app支持GMS但你处于访问不存在的网站出现404状态&br&要不那个app支持Mi Push但你的系统是AOSP而不是MIUI等等...&br&&br&第二步一出问题,那就变成:&br&软件需要推送通知?保留后台,后台Service里有一个msfservice或notification service这种特地用来接收推送通知的服务器?通知成功推送到用户手中。&br&&br&也就是因为Android生态整体上的一些混乱和不规整,再加上Google不在大陆,Android在这方面的问题变得很明显。
苹果:软件需要推送通知?将推送发到Apple Push Notification Service?APNs再进一步转发给用户。 如上,所以iOS的推送不需要啥后台,YouTube Twitter这类不存在的404网站照样能在没破解404的情况下推送通知过来,就因为走的APNs。 安卓:软件…
&b&Xposed框架&/b&&br&&br&&br&
这绝对是Android上的终极神器,一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。关于Xposed更多信息见XDA原帖&a href=&///?target=http%3A//forum./showthread.php%3Ft%3D1574401& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[FRAMEWORK ONLY!] Xposed&i class=&icon-external&&&/i&&/a&&br&&br&
而基于Xposed框架的应用现在越来越多,个人觉得值得推荐的有以下几款:&br&&br&&b&
1.绿色守护(&/b&Greenify)&br&&br&
不像其他查杀进程的清理工具,真正做到睡眠不需要后台运行的应用,节省电量和内存,实际上绿色守护是一款可以独立运行的应用,而借助Xposed框架可以实现绿色化系统应用等实验性功能(不过必须是捐赠版才能实现该功能)。&br&
酷安下载链接:&a href=&///?target=http%3A///apk/com.oasisfeng.greenify& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Greenify绿色守护(com.oasisfeng.greenify)_2.1 (build 1)_Android软件&i class=&icon-external&&&/i&&/a&&br&&br&&b&2.重力工具箱(GravityBox)&/b&&br&&br&&br&几乎可以对系统从界面到操作进行各式各样的自定义和美化,设置项极其繁多,而且还在不断增加中·······&br&
酷安下载链接:&a href=&///?target=http%3A///apk/com.ceco.gm2.gravitybox& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&重力工具箱:GravityBox(com.ceco.gm2.gravitybox)_2.9.2_Android软件&i class=&icon-external&&&/i&&/a&&br&&br&&b&3.X隐私(XPrivacy)&/b&&br&&br&&br&主打隐私权限管理的应用,最突出的特点是对禁止部分涉及隐私权限而可能会导致崩溃的应用采取欺骗策略,提供伪造信息。&br&
酷安下载链接:&a href=&///?target=http%3A///apk/biz.bokhorst.xprivacy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&X隐私:XPrivacy(biz.bokhorst.xprivacy)_1.11.10_Android软件&i class=&icon-external&&&/i&&/a&&br&&br&&b&4.App Settings&/b&&br&&br&&br&能够对每一款应用进行各项设置修改和权限管理,比如修改DPI、是否全屏、屏幕常亮等等。&br&
酷安下载链接:&a href=&///?target=http%3A///apk/de.robv.android.xposed.mods.appsettings%23pic%3D2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Settings(de.robv.android.xposed.mods.appsettings)_1.7.1_Android软件&i class=&icon-external&&&/i&&/a&&br&&br&&b&5.MinMinGuard&/b&&br&&br&&br&
去应用广告的工具。依作者的说法,这款应用和AdAway以及Adblock用的是完全不同的方法,借助Xposed框架直接针对广告的API呼叫进行拦截,并且将广告所站的空间完全移除,比起AdAway和Adblock更有效率且不会偷跑背景程式。&br&
酷安下载链接:&a href=&///?target=http%3A///apk/tw.fatminmin.xposed.minminguard& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MinMinGuard去广告(tw.fatminmin.xposed.minminguard)_1.5.1_Android软件&i class=&icon-external&&&/i&&/a&
Xposed框架 这绝对是Android上的终极神器,一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。关于Xposed更多信息见XDA原帖 而基于Xposed框…
&img src=&/v2-9edd2b2cc2ee1_b.jpg& data-rawwidth=&1200& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&/v2-9edd2b2cc2ee1_r.jpg&&&p&&i&* 本文首发于FreeBuf,转载请注明作者欧阳洋葱以及出处&a href=&/?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/i&&/p&&p&去年7月份,国外媒体福布斯在介绍金立M6手机(&a href=&/?target=https%3A///sites/bensin//hands-on-with-gionee-m6-the-worlds-safest-smartphone-that-provides-extreme-mobile-security/%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Forbes Welcome&i class=&icon-external&&&/i&&/a&)的时候提到,“深圳的这家公司宣传这款手机是‘全球最安全的手机’,由于其采用128位加密芯片所以相当安全”。很多国外媒体也都跟随用了这个“safest”最安全一词。其实我们去追本溯源的时候,并没有发现金立官方做过这样的宣传。不过国内还是有不少媒体下标题,类似于“&a href=&/?target=http%3A///2818640.shtml& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这可能是当前最安全的手机 金立M6评测&i class=&icon-external&&&/i&&/a&”,“&a href=&/?target=http%3A///446/.shtml& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&iOS还真不是最安全的 金立M6对比iPhone7&i class=&icon-external&&&/i&&/a&”…无论如何,这款手机都是以安全为卖点的。&/p&&img src=&/v2-5ae741dc4f255c0961a71_b.jpg& data-rawwidth=&1182& data-rawheight=&638& class=&origin_image zh-lightbox-thumb& width=&1182& data-original=&/v2-5ae741dc4f255c0961a71_r.jpg&&&p&实际情况可能并不像厂商或者许多媒体宣传得那么简单。手机安全本身是个极为庞大的话题,对任何一款手机而言,安全都贯穿于每个环节,从末端的移动App安全,到系统安全(Android和iOS)、网络通讯安全,再到手机厂商自己提供的互联网服务安全,还有底层的芯片安全…&/p&&p&不过按照金立的宣传,M6这款手机中内置了一颗专门的加密芯片,那么我们就尝试从底层芯片安全的角度来聊聊智能手机芯片在安全方面现如今的状况。因为金立并没有公布这颗“加密芯片”的技术细节,我们很难在短时间内了解这颗芯片在整个手机系统里扮演着怎样的角色,所以这篇文章会尝试从芯片安全的主流设计方式,来谈金立M6的这种设计是否值得推崇。&/p&&br&&h2&究竟是怎样一颗芯片?&/h2&&p&按照金立的说法,这颗“安全芯片”是位于M6手机主芯片旁边的一颗独立芯片:“M6采用的是硬件加密方式,为此M6专门内置了一颗安全加密芯片,加解密过程、密钥存储均在此芯片中完成”。金立官方只解释了这颗芯片采用“与商业银行同样的加密算法。通过这颗芯片,金立M6可以实现私密空间、专线通话以及支付保护等多种功能。”&/p&&p&针对这颗芯片能够挖到的料也就只有国内媒体手机报提到的(&a href=&/?target=http%3A///news/show-htm-itemid-14790.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&揭秘金立M6“安全芯片”的幕后大腕和指纹供应链_手机报_手机报在线&i class=&icon-external&&&/i&&/a&),这颗安全芯片由苏州国芯设计,信大捷安提供整体解决方案。据说金立先前通过了国家密码管理局的审批,获得了“商用密码产品生产定点单位证书”以及“商用密码产品销售许可证”。这颗芯片“使用SM4(国家商用密码管理办公室指定的分组密码算法)加密算法,安全级别与AES一致”。在加密算法方面大致推断为国密无疑。&/p&&p&另一方面,从媒体对金立M6手机的拆解来看,这款手机的主芯片(联发科P10)旁边的确有一颗标注了VEB A3的芯片,这可能就是传说中金立M6的安全加密芯片了。&/p&&img src=&/v2-0bc889b9aa3eea4394cbffd0ca7f912c_b.jpg& data-rawwidth=&1000& data-rawheight=&639& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/v2-0bc889b9aa3eea4394cbffd0ca7f912c_r.jpg&&&p&&i&这颗VEB A3应该就是金立M6的“安全加密芯片”&/i&&/p&&p&不过如果你去百度VEB A3关键词就不难发现,早前就有一家“VEB”品牌的手机制造商,2014年推出过一款VEB V3手机,资料注明了采用VEB A3加密芯片(VEB第三代加密芯片)——同样主打安全加密。这款手机目前依然在京东有售,价格是惊人的28000元,宣传页面提到了“军工级加密运算”…这就更让人搞不清楚VEB在其中扮演的角色了,以及这两款手机的VEB V3是不是同一个。这样一来,M6安全加密芯片的技术细节也就很难了解到了。&/p&&p&但这些都不重要,只要能提供出色的安全表现和体验,何必在意供应商是谁。关键是这颗芯片对用户而言,究竟有什么价值?从金立的宣传来看,M6加密芯片主要负责“私密空间2.0”、“专线通话”和“支付保护”三项功能。&/p&&img src=&/v2-251ace81e10d04e57cd8b9_b.jpg& data-rawwidth=&1000& data-rawheight=&889& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/v2-251ace81e10d04e57cd8b9_r.jpg&&&p&&i&金立M6的“私密空间”&/i&&/p&&p&所谓的私密空间,是指用户可以将联系人、短信、通话记录、图片、文件和应用放入到一个加密的空间内,操作界面直接表现为有一个专门的“私密空间”,可对私密空间进行密码设置,输入密码才能进入——金立曾经提到过M6的加密芯片内置有独立的RAM、ROM和闪存。我们猜测这里的私密空间就是指,&b&将资料以加密的方式保存在专门的加密芯片内&/b&(既然涉及到独立于主系统之外的Memory存储,果然还是需要成本投入的)。所以金立也说,即便手机被盗,将芯片取出来也无法获取其中的数据。&/p&&p&专线通话则是对通话过程进行加密防止窃听,但我们并不清楚通话过程是如何通过这颗芯片实现加密解密的。&/p&&p&支付保护则是系统对金融应用做安全认证、扫描支付环境、对支付验证码(也就是与支付相关的短信)单独加密保护。我们猜测,对金融应用做安全认证、扫描支付环境理应还是在系统层面以软件方式实现的,对支付验证码的加密保护或许是借用了加密芯片。至于用户指纹或密码之类的信息,可能需要打个问号,因为ARM的TrustZone原本是负责这部分工作的——这一点在下面还会做进一步的探讨。&/p&&img src=&/v2-52c45e0e35cff4e08a01fdd_b.png& data-rawwidth=&1401& data-rawheight=&890& class=&origin_image zh-lightbox-thumb& width=&1401& data-original=&/v2-52c45e0e35cff4e08a01fdd_r.png&&&p&金立M6的安全功能不止上述三个,不过其他安全特性如伪基站防护、虚拟位置等主体上都是从系统层面着手的了,并不在本文的讨论范畴内。&/p&&p&总的来说,虽然我们不清楚金立M6加密芯片的工作流程(及其与主CPU的协作方式),但这种设计属于典型的在SoC之外增加硬件安全模块的方案。想一想,普通智能设备在Memory层面原本只包含了一般闪存、RAM内存、SoC的高速缓存(另外也包含底层ROM),要在这个流程中增加一个外来的“加密芯片”环节,对金立或者上一级解决方案提供商而言,是需要对设计流程做不少工作投入的,还需要在寸土寸金的手机内部,对手机空间、功耗和性能做多方权衡。所以这种设计理论上成本不低,不光是加块芯片这么简单。&/p&&p&这也不难理解为什么金立M6售价约在2300左右——金立M6所用的主芯片联发科P10在国产手机市场是定位于千元机级别的。想必金立的确在这款手机上花了些本钱,安全附加价值令这款手机比其他同配产品贵了一倍多(不知是否有VEB的前期经验…)。&/p&&br&&h2&这种安全设计真的好吗?&/h2&&p&实际上金立M6安全加密芯片属于比较常规的设计思路,就是将普通世界和安全世界进行隔离,在安全世界中存储更有价值的信息。运用这种思路做安全设计的典范就是ARM芯片内部的TrustZone了——对半导体行业有了解的同人都知道,ARM是一家提供芯片设计IP的公司,现如今这个星球上超过九成的手机都采用ARM设计的CPU和芯片。高通、联发科、苹果、华为这样的厂商从ARM公司购买芯片设计授权,再做二次开发,推出自家的芯片产品应用到手机上。&/p&&img src=&/v2-e078aacd16c1da7cce23b8_b.jpg& data-rawwidth=&1500& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1500& data-original=&/v2-e078aacd16c1da7cce23b8_r.jpg&&&p&早在多年以前,ARM就考虑到了芯片层面的安全问题,所以将专门解决安全问题的TrustZone融入到了此后几乎所有的芯片设计中。在谈ARM的TrustZone之前,有必要先聊聊苹果和iPhone。既然有媒体将金立M6的安全性与iPhone对比,那么提iPhone是如何做安全的就很有必要了。&/p&&p&苹果2013年推出了iPhone 5s,这款手机的一大变化就是加入了TouchID指纹识别传感器。很多人可能不知道的是,指纹识别传感器的采用并不只是关乎指纹识别技术,身份认证一旦涉及到生命体征(比如指纹),其安全性要求就会高出一截。就像许多人常说的,指纹识别这样的生命体征一旦被盗,就是永久被盗,无法像密码那样——泄露了大不了改掉就是。&/p&&p&所以iPhone 5s采用的A7主芯片(同样是ARM架构)内部有个叫做Secure Enclave的区域(苹果在自家的安全拍皮书中将之称作coprocessor-协处理器)。这个区域包含有硬件随机数生成器,并采用加密存储(高速缓存),用户的指纹数据就加密存储在这个位置,另外此处还针对数据防护密钥管理提供加密操作、生成唯一UID等等。&/p&&img src=&/v2-b3aaea0eaed13dfa06d7be9_b.jpg& data-rawwidth=&1439& data-rawheight=&811& class=&origin_image zh-lightbox-thumb& width=&1439& data-original=&/v2-b3aaea0eaed13dfa06d7be9_r.jpg&&&p&Secure Enclave其实还有很多数据加密方面的特性,下面的章节中会详细探讨。&/p&&p&总之指纹、密钥、加密操作一类的相关安全的部分就隔离在CPU的这块Secure Enclave中。它就像一个黑匣子,与CPU其它区域的通讯也是被严格限制的,即便是系统级别的进程也无法获取Secure Enclave中像指纹这样的数据。针对指纹数据做解密的密钥只在Secure Enclave中使用,外界是拿不到的。&/p&&p&这里我们可以简单谈一谈指纹的加密存储。TouchID指纹识别传感器本身通过一个串行界面总线与处理器连接,数据是直接转往Secure Enclave的。双方针对指纹数据的加密和通讯方式是这样的:设备专为Touch ID指纹识别传感器和Secure Enclave准备了一个共享密钥,利用该共享密钥协商出一个会话密钥对指纹进行加密存储。会话密钥的交换又会采用双方“包装”的AES密钥,用提供的随机密钥生成该会话密钥,并采用AES-CCM传输加密。&/p&&p&这段话其实没有必要去深究。在你进行指纹识别的时候,指纹识别传感器首先对你的指纹做光栅扫描,将之临时存储到Secure Enclave中,分析过后就会丢弃。我们平常所见的任何应用(即便是系统级应用)要求用户按压指纹,无论是支付还是购买确认操作,它们实际上并没有机会拿到指纹数据——不仅指纹加密存储在Secure Enclave中,而且指纹只是客户端和服务器交互过程中本地加密解密的一个环节,而不会参与身份认证的数据传输过程。这种身份识别方式先前已经由FIDO联盟做出过标准化的统一。&/p&&img src=&/v2-576def52cff_b.jpg& data-rawwidth=&1544& data-rawheight=&1062& class=&origin_image zh-lightbox-thumb& width=&1544& data-original=&/v2-576def52cff_r.jpg&&&blockquote&&p&&b&有关FIDO UAF标准的扩展&/b&&/p&&p&比如利用指纹来支付的场景,简单说来是设备生成公钥和私钥——针对用户、设备及卖家(也就是购物网站)。卖家那边仅持有公钥,而设备持有的&b&私钥需要用指纹识别的方式来解锁&/b&。指纹数据本身是不在设备间和网络上传递的,这一点很重要。卖家一方能够获取到一些元数据,包括用户身份认证的方式(此处就是指纹识别)、所用的密钥保护机制以及设备型号,这些数据可用于后端风险分析。&/p&&p&这种方案是FIDO联盟提出来的,苹果的芯片和Android手机芯片基本都在遵循这套方案。其实想一想,网上购物的传统用户名、密码组合方式——卖家一方是需要和用户共同持有这个“私钥”的,只不过卖家一方以加密的方式存储私钥(也就是用户密码),卖家服务器如果被黑,数据就会被获取。但在FIDO这套方案中并不存在这样的风险,因为卖家并不持有私钥。&/p&&p&不过目前某些互联网服务的生物识别身份认证过程,的确有采用将生命体征(如声纹、指纹)存储在服务器上的方式——这种方式原则上是非常不被推崇和不安全的。&/p&&/blockquote&&img src=&/v2-cd756ac2983708eca9644fa0_b.jpg& data-rawwidth=&1462& data-rawheight=&762& class=&origin_image zh-lightbox-thumb& width=&1462& data-original=&/v2-cd756ac2983708eca9644fa0_r.jpg&&&p&虽然苹果没有公布过Secure Enclave的技术细节,但从其描述方式来看,和ARM设计中的TrustZone在理念上很相似,或许是TEE的其他实现方式,或者也可能是高度定制版TrustZone——TrustZone也是在处理器内部区隔出一块独立的安全区域(ARM称之为Secure World)。也就是将安全世界和普通世界进行隔离的设计理念。&/p&&p&听起来似乎和金立M6的设计也差不多,但千万不要忘记:无论是ARM芯片内部的TrustZone,还是苹果A7(到现如今的A10)芯片内部的Secure Enclave,它们都是在设计伊始就融入到整个系统的流程中的,也就是将安全作为芯片设计的必要环节。&/p&&p&所以这两者的设计思路是整合到处理器流程内部的,而金立M6安全芯片如前文所述更像是个“外来者”——虽然严格来说这也属于内置硬件安全模块。且不说这颗芯片中的加密数据经过总线和主芯片通讯的性能会打折扣,&b&打个更为宏观的比方,现如今的企业安全都讲究将安全融入到业务中去,而不是在业务之外孤立地考虑安全问题,这就是两者的区别所在。&/b&&/p&&img src=&/v2-16e915e2aa467aea35b091_b.jpg& data-rawwidth=&1280& data-rawheight=&860& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-16e915e2aa467aea35b091_r.jpg&&&p&这种在主芯片旁边采用定制硬件的方案的安全设计思路如果早几年应该是个可被接受的方案,但在TrustZone(TEE)普及之后就显得没那么给力了。就安全而言,其主要问题在于涉及的范围有限,投入产出不大成正比:没有人会将所有应用和数据全部放到“私密空间”,现实也不允许这么干,这就注定其保护的资产是不全面的。&/p&&p&《Securing Java》一书中总结用户在安全和功能之间做出选择时的一句话很有趣,在行业内也非常有名:&/p&&blockquote&“要在跳舞的猪和安全之间做出选择,用户肯定总是会选跳舞的猪!”(&a href=&/?target=https%3A//en.wikipedia.org/wiki/Dancing_pigs%23cite_note-1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dancing pigs - Wikipedia&i class=&icon-external&&&/i&&/a&)&/blockquote&&p&这句话很形象地表达了,在安全事件出现之前,绝大部分人对安全的忽视。所以最佳方案是在整个“业务”流程中融入安全,令安全成为系统的组成部分,而不是独立于系统之外。不要寄希望于用户会主动选择安全,将数据主动放进“黑匣子”,而是帮他们去做这件事。&/p&&br&&h2&安全只是系统的组成部分&/h2&&p&TrustZone主要就是在CPU内部构建一个叫做“Trust Execution Enviroment(TEE)”的区域,也就是前文所述的“安全世界”。这里的TEE早在很久之前就由GlobalPlatform提出了标准化,TrustZone算是遵循TEE的具体解决方案(TrustZone也并非唯一一种TEE解决方案)。其理念就是在硬件架构之中,将安全基础设施扩展到整个系统设计,比如安全启动、授权Debug之类的操作都考虑在其中。&/p&&p&在此,我们还可以对TrustZone的设计做一些简单展开。由于芯片具体实现比较枯燥,这里只谈其中的一小部分。&/p&&img src=&/v2-409f5ee5e479f13cbf771_b.png& data-rawwidth=&1336& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1336& data-original=&/v2-409f5ee5e479f13cbf771_r.png&&&p&&i&左边的Rich OS表现在手机上就是Android和iOS了&/i&&/p&&p&如前文所述,TrustZone的设计理念就是将整个SoC硬件和软件资源都分隔成两部分:安全子系统的“安全世界”,和常规使用的“普通世界”。“安全世界”有自己专有的操作系统(受信任的启动流程,Root of Trust),敏感数据就放在其中,也会有一些微应用运行在安全处理器核心之上,诸如加密、密钥管理和完整性检查,这个“世界”也有专门的安全Debug。AMBA3 AXI总线结构用于确保“安全世界”不会被“普通世界”的成员访问。&/p&&p&在具体实现上,比如如今占据移动芯片半壁江山的高通,其CPU内部的TrustZone名为QSEE,所用的安全操作系统叫QSEOS。QSEOS直接以系统调用的形式提供少量服务,由TrustZone自身内核处理。为了让受信任功能具有扩展性,TrustZone内核是可以加载执行名为“Trustlets”的小程序的——为“普通世界”操作系统(也就是Android)提供安全服务。一般来说这两个世界之间的通讯是需要经过操作系统的内核的。通常的Trustlets有:&/p&&blockquote&&p&&b&Keymaster&/b&,Android的”keystore”守护进程提供的密钥管理API的具体实现,它的作用是生成存储加密密钥并让用户使用这些密钥。&/p&&p&&b&Widevine&/b&,Widevine DRM的实现方式,就是在设备上进行媒体的“安全播放”。&/p&&/blockquote&&p&当然了,TrustZone本身在实现方面绝不仅是在CPU内部划个单独的逻辑区域出来这么简单,有很多实际的问题需要解决和设计,比如AMBA3 AXI系统总线需要针对每个读写通道增加一个额外的控制信号,用这个信号比特位来确认处理操作究竟是Secure还是Non-secure。这样一来内部Cache也需要重新设计,这多出来的标记比特位可以看作是第33个地址位(NS,如下图所示)。如此就有更多实际问题要解决了。&/p&&img src=&/v2-0d83a60bd895b9d667595_b.png& data-rawwidth=&1624& data-rawheight=&1252& class=&origin_image zh-lightbox-thumb& width=&1624& data-original=&/v2-0d83a60bd895b9d667595_r.png&&&p&&i&带TrustZone的CPU的L1缓存示意图,这里的NS就是多出来的标记位,PA是物理地址、VA是虚拟地址、NSTID是指非安全表标记符(Non-secure Table Idenfitier);这表明了TrustZone对于缓存设计的影响&/i&&/p&&p&再比如TrustZone划分后,就有了两个虚拟处理器,但从实际物理属性来看仍是一个处理器。在处理具体工作的时候按照时序的方式来切换,这两个“世界”还要考虑工作切换的问题(用名为monitor mode的模式来进行切换,从“普通世界”进入到monitor mode的机制是被严格控制的,这个过程是通过软件执行Secure Monitor Call专门指令达成的,由“安全世界”内核处理这种SMC指令。)&/p&&p&另外,TrustZone在设计中还有个AMBA3 APB外围总线,让TrustZone能够用于保护外围组件,比如中断控制器、用户I/O设备。这样也就可以解决更广泛的安全问题了,比如采用安全键盘,实现用户密码的安全输入。&/p&&p&说了这么多其实是为了表达一点,这种&b&将安全融入到整个流程内的设计方案,实现了更广范围的安全保护。但如果是在CPU外部加一颗“安全芯片”,这其中的价值又是完全不同的了。&/b&&/p&&p&而且实际上,当前绝大部分智能手机都已经用上了TrustZone方案,包括高通、联发科、三星、苹果,还有华为的海思处理器。那么金立M6就面临一个更有意思的问题,联发科P10主芯片内部的TrustZone,和外部那颗“安全加密芯片”,它们之间究竟是怎样一种工作关系呢?&/p&&br&&h2&加密?那不是应该的吗?&/h2&&p&无论如何,金立M6的这颗安全加密芯片的主要价值就是重要数据的加密,且金立强调是从硬件层面实现加密,至于它能不能像ARM的TrustZone那样全程参与其它操作流程就不得而知了。数据加密对安全而言总是一件好事,但请等一等,iOS和Android早就实现全盘加密了。什么?你说那是软件层面的加密,和硬件加密不能比?有关这一点的争议问题我们按下不表。&/p&&p&回顾一下去年圣贝纳迪诺枪击案涉案的那台iPhone 5c——抛开可能存在的阴谋论不谈,这款手机的A6芯片都还没有加装Secure Enclave,即便后期利用种种复杂的手法(&a href=&/?target=http%3A///articles/terminal/115040.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FBI被坑了!破解iPhone 5c的密码其实只要100美元&i class=&icon-external&&&/i&&/a&)可以实现解锁,实现成本却并不像很多人所说的那么低,也并没有破解其中的加密方式。且后期iOS是否是单纯的“软件加密”?为此,我们来简单了解一下iOS的数据防护机制是怎么做的。这部分内容可能会比较枯燥,没兴趣的可以直接跳过,或只看其中的粗体部分。&/p&&img src=&/v2-9edd2b2cc2ee1_b.jpg& data-rawwidth=&1200& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&/v2-9edd2b2cc2ee1_r.jpg&&&blockquote&&p&&b&每台iOS设备都有个专门的硬件级AES 256加密引擎&/b&,这个加密引擎位于闪存和主系统存储之间(DMA的路径之上)。在采用苹果A9芯片(也就是iPhone 6s)之后的设备上,闪存子系统位于单独的总线之上,只能通过DMA加密引擎来获取用户数据存储访问权。&/p&&p&iOS设备的UID和GID(一种群组ID)在设备出厂的时候就混合或者编译(GID)进了Secure Enclave之中,软件和固件只能看到AES引擎执行加密或解密(用UID和GID作为密钥)操作的结果;且也只有Secure Enclave中的AES引擎可以使用UID和GID。&/p&&p&对iPhone有了解的同学应该知道,这里的UID对于每一台苹果设备而言都是唯一的;GID则是根据设备做归类的一种ID(比如所有采用A8芯片的设备一类),GID主要用于非关键任务。值得一提的是,&b&UID存在的价值主要在于,加密数据与某一台单独的设备存在唯一关联性,所以如果将iPhone的闪存芯片单独取下来,文件是没法读出来的&/b&,除了CPU中的Secure Enclave,系统的其他组成部分又无法获取UID。&/p&&p&此外,除了UID和GID,还有各种加密密钥都采用Secure Enclave中的硬件级随机码生成器生成。系统熵由启动期间的时间变量,和设备启动时的中断时间形成。&/p&&p&除了Secure Enclave相关的加密、密钥存储和生成,苹果设备闪存数据存储现如今都已经用上了所谓的“Data Protection”机制。简单说来&b&每一个文件生成的时候,Data Protectio机制都会生成新的256位密钥(也就是所谓的per-file key),并将之交予前面提到的AES引擎&/b&,AES引擎在该文件写入闪存的时候,通过AES CBC模式对文件做加密(其中的IV本身也比较复杂)。&/p&&p&这里的&b&per-file key密钥本身会再采用“类密钥(class key)”进行包装&/b&(具体是哪一类取决于文件访问的具体情况),经过包装之后的per-file key就会存储到文件的元数据中。打开文件的时候,元数据先采用文件系统密钥来解密,找到其中包装过的per-file key及其“类”标记,然后就可以得到真正的per-file key了,再传递给AES引擎对文件做最终解密。&/p&&img src=&/v2-95d5c73bc704c8a5d9da2e_b.jpg& data-rawwidth=&1624& data-rawheight=&592& class=&origin_image zh-lightbox-thumb& width=&1624& data-original=&/v2-95d5c73bc704c8a5d9da2e_r.jpg&&&p&整套机制里,上面所谓“包装”文件key的过程都是在Secure Enclave中进行的,所以处理器的“普通世界”并不知悉。&/p&&p&在启动过程中,Secure Enclave还会和AES引擎协商一个临时密钥,在Secure Enclave对文件密钥进行解包装的时候,文件密钥会再与该临时密钥做重新打包,随后才发回给应用处理器。再另外,上文提到所有文件的元数据本身就会做加密,这个密钥是在iOS系统初次安装(或被擦除)的时候生成的一个随机密钥。&/p&&p&最后值得一提的是,用户一般会给手机设置一个解锁密码,或者采用指纹解锁。&b&用户密码或者指纹数据,本身也参与文件加密过程,主要是配合UID共同生成上文提到的“类密钥”的&/b&(往上翻一下,就是那个用来包装per-file key的密钥)。&/p&&/blockquote&&p&整套机制说起来和看起来都非常费劲,总结一下就是环环相扣,层层递进,iOS的每个文件都加密。可以想见FBI针对罪犯iPhone数据获取的问题主要来自哪里。
&/p&&p&这些实际还只是苹果设备安全的一个环节,iOS的安全还包括启动流程的几层安全认证:启动过程的每一步都包含苹果加密签署的组件,以确保完整性。这个链条包括Bootloaders、Kernal、Kernel Extensions,以及基带固件。Secure Enclave与属于Secure Boot Chain的一个环节,所以现在的iPhone几乎已经很难再刷进第三方固件。
&/p&&img src=&/v2-ddf183e7c29c_b.png& data-rawwidth=&1471& data-rawheight=&733& class=&origin_image zh-lightbox-thumb& width=&1471& data-original=&/v2-ddf183e7c29c_r.png&&&p&说这么多并不是为了表明iPhone的Secure Enclave和数据保护方案做得有多好,而是&b&在金立M6宣称“硬件级”加密的时候,苹果玩儿的这一套早就不知将金立甩到哪里去了。通过对iPhone Secure Enclave相关数据保护的阐述,也不难发现,将安全融入到系统全套流程中有多么必要,不光是全局和局部安全的差异。反观金立M6的“私密空间”,这还是个事儿吗?&/b&&/p&&p&不过问题又来了,Android系统从6.0版本开始也采用强制全盘加密,虽然我们并没有去研究Android文件加密的方案,但金立M6私密空间的加密和普通文件的加密流程,又是如何做流程设计的呢?这和上一段中提及主芯片的TrustZone及其安全加密芯片如何配合工作,大致上也算是同一个问题了。&/p&&br&&h2&什么样的芯片设计是安全的?&/h2&&p&TEE出现这么久并不值得歌颂,因为这是如今移动安全的标配。而TrustZone也并非无懈可击,去年的GeekPwn2016黑客大赛上,美国Shellphish团队宣布攻破华为P9 Lite的加密功能,实际上破解的就是海思Kirin芯片中的TrustZone,实现任意指纹解锁手机。“安全世界”无论如何还是需要和“普通世界”做交互的,找准具体实现的漏洞,还攻破TrustZone也是完全可行的。&/p&&img src=&/v2-148ba11918_b.jpg& data-rawwidth=&733& data-rawheight=&489& class=&origin_image zh-lightbox-thumb& width=&733& data-original=&/v2-148ba11918_r.jpg&&&p&&i&去年GeekPwn黑客大赛上,攻破TrustZone的Shellphish团队成员&/i&&/p&&p&Shellphish攻击的主要思路是首先找到系统内核驱动的一个漏洞(CVE-)(&a href=&/?target=https%3A///docs/us-15/materials/us-15-Shen-Attacking-Your-Trusted-Core-Exploiting-Trustzone-On-Android-wp.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/docs/us-15&/span&&span class=&invisible&&/materials/us-15-Shen-Attacking-Your-Trusted-Core-Exploiting-Trustzone-On-Android-wp.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& ),这个驱动和上文谈到的SMC请求是有关的;随后再利用华为自家TEE(也就是“安全世界”)中的操作系统RTOSck的漏洞(CVE-)最终实现在TrustZone内部操作系统中实现任意代码执行,并且从传感器获取指纹图像。举个例子,这些利用环节中海思麒麟芯片TEE内部的受信任应用名为TA,具体如安全存储(TA_SecStorage)、指纹扫描(TA_FingerPrints)等,而其中有个“TEEGlobalTask”是TEE用户模式的首要TA,负责将外部的调用发往其他TA提供的子服务。这里的TEEGlobalTask没有进行边界检查,TEE内部也几乎没有什么漏洞缓解机制,如ASLR/DEP等,这些都提供了更大的攻击面。&/p&&p&至于高通的TrustZone,去年国外有名黑客在自己的博客上连续发布了数篇探讨高通QSEE的文章(&a href=&/?target=http%3A//bits-please.blogspot.co.il/2016/04/exploring-qualcomms-secure-execution.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&bits-please.blogspot.co.il&/span&&span class=&invisible&&/2016/04/exploring-qualcomms-secure-execution.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)。他的其中一篇文章(&a href=&/?target=http%3A//bits-please.blogspot.co.il/2016/05/qsee-privilege-escalation-vulnerability.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&bits-please.blogspot.co.il&/span&&span class=&invisible&&/2016/05/qsee-privilege-escalation-vulnerability.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)分享了QSEE提权漏洞(CVE-),抓住了Linux内核中qseecom的软肋,这个qseecom可让用户空间进程执行各种与TrustZone相关的操作,比如将Trustlets载入到安全环境,并与之通讯的操作。有趣的是,这个过程越过了Linux内核直捣QSEE。&/p&&img src=&/v2-08ea6dcc76e7f8bdb827_b.png& data-rawwidth=&640& data-rawheight=&628& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-08ea6dcc76e7f8bdb827_r.png&&&p&&i&qseecom可以算得上是一个较大的攻击面,所以其访问仅限于极少的进程,其中包括了mediaserver,攻陷了mediaserver就能直捣QSEE的Trustlet了!&/i&&/p&&p&这个世界看来根本就没有什么手机是安全的,更何况我们这里还只谈到了芯片层面的安全问题。但ARM的TrustZone白皮书输出了在我们看来相当到位的安全理念,即移动设备总是要不可避免地遭受攻击。&/p&&p&其中有一类攻击名为Lab Attack(实验室攻击)。这种攻击在实验室里通过电子探针进行针对设备的专业级逆向工程,甚至可以细致到晶体管级别,还能通过监控模拟信号,如设备电量使用、电磁发射来执行加密密钥分析之类的攻击。一般来说,任何设备在这种攻击强度下都会被攻破,所以产品在进行安全设计的时候没有必要考虑抵御Lab Attack,这类攻击的攻击成本本身也相当之高。
&/p&&p&对手机芯片或者安全环节上的很多组成部分而言,&/p&&blockquote&&p&1.任何一种设计出来的安全方案都不应该用“不可能被绕过”来形容,而应该这样描述:“A攻击针对B资产的攻击,至少需要耗费Y天,Z美元的成本。”因为所有的安全措施,只要有足够的时间和金钱都能被攻破。如果花费的时间和金钱成本太长太多,这样的防御就是成功的。&/p&&p&2.不仅攻击复杂度高,而且攻击方案无法简单复制到其他同类设备之上,也就是说攻击一台设备成功后,如果还想攻击其他同类设备,则还需要付出同样程度的劳动,这样的防护也可以认为是成功的。&/p&&p&(比如绝大部分安全措施首次被攻破所需花费的成本比较高,但一旦首次被攻破,后续就可以几乎零成本地进行攻击了。这种攻击就是简单可复制的)&/p&&/blockquote&&p&比如针对圣贝纳迪诺枪击案涉案的那台iPhone 5c,虽然市面上涌现了各种攻破手法,随之而来就有不少媒体说iPhone并不安全。但是这些攻击手法并不具有简单可复制性,也不是普通人在家里就能搞定的。如同TrustZone和Secure Enclave的大部分攻破方式都并不简单,虽然的确也可以从中看出其具体实现方式设计过程中的一些疏忽。&/p&&img src=&/v2-cf6fa8a1afe27b_b.jpg& data-rawwidth=&878& data-rawheight=&516& class=&origin_image zh-lightbox-thumb& width=&878& data-original=&/v2-cf6fa8a1afe27b_r.jpg&&&p&最后顺带一说,除了安全加密芯片之外,金立M6也支持伪基站信息屏蔽、虚拟位置、通话防录音。这些功能应该是在系统层面实现的,不过这类安全功能算不上稀奇,许多国产手机都已经带有同类功能。而且像华为这样具有垂直整合能力的厂商,已经开始从芯片层面着手防伪基站了(去年的ISC大会上,海思安全研究人员的分享就提到过这一点)。
&/p&&p&更有趣的是,黑莓还没有卖身TCL之前曾经推出过一款手机DTEK50,宣传语是“最安全的Android手机”。这款手机的CPU有特别定制,实际上先前就有传说黑莓的许多关键硬件组成都是定制的,包括闪存芯片、CPU等,连PCB主板都进行了JTAG屏蔽;在系统层面,黑莓当时宣称每个月都会越过谷歌独立推安全补丁。即便如此也不过是最安全的“Android手机”,大约是黑莓深知,硬件底层做得再安全,在Android面前也不过是惘然。&/p&&p&那么金立M6还有可能是最安全的手机吗?&b& 别闹了!差得远。&/b&&/p&&br&&p&&b&主要参考来源:&/b&&/p&&p&[1] iOS安全(&a href=&/?target=https%3A///business/docs/iOS_Security_Guide.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/business/docs&/span&&span class=&invisible&&/iOS_Security_Guide.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/p&&p&[2] ARM安全技术(&a href=&/?target=http%3A///help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/help&/span&&span class=&invisible&&/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/p&&p&[3] 用基于ARM TrustZone的TEE与FIDO来保护认证的未来(&a href=&/?target=https%3A///files/pdf/TrustZone-and-FIDO-white-paper.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/files/pdf/Trust&/span&&span class=&invisible&&Zone-and-FIDO-white-paper.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/p&&p&[4] 探索高通SEE(&a href=&/?target=http%3A//bits-please.blogspot.co.il/2016/04/exploring-qualcomms-secure-execution.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&bits-please.blogspot.co.il&/span&&span class=&invisible&&/2016/04/exploring-qualcomms-secure-execution.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/p&
* 本文首发于FreeBuf,转载请注明作者欧阳洋葱以及出处去年7月份,国外媒体福布斯在介绍金立M6手机()的时候提到,“深圳的这家公司宣传这款手机是‘全球最安全的手机’,由于其采用128位加密芯片所以相当安全”。很多…
&img src=&/v2-e3cd66f625780_b.jpg& data-rawwidth=&750& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-e3cd66f625780_r.jpg&&&blockquote&作者:吴小龙同學&p&原文链接:&a href=&/?target=https%3A//mp./s%3F__biz%3DMzI4MTQyNDg3Mg%3D%3D%26mid%3D%26idx%3D1%26sn%3Decb87dad8c99f829fa7d77c%26chksm%3Deba82425dcdfad33e25b873bed9d1f648bbd775bb56%26mpshare%3D1%26scene%3D23%26srcid%3D0416vActMkbt67ucShWrF1ta%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android 内存优化&i class=&icon-external&&&/i&&/a&&br&&/p&&/blockquote&&h1&为什么优化&/h1&&p&虽然 Java 对内存的释放有垃圾自动回收机制,但是实际开发中,不再用到的对象因为被错误引用会导致无法回收,从而造成内存泄漏,甚至内存溢出 OOM(OutOfMemory),程序崩溃。&br&&/p&&h2&Android GC 原理&/h2&&p&参考:Android GC 原理探究&/p&&h2&Android 内存管理&/h2&&p&参考:Android 内存管理&/p&&h1&如何检测&/h1&&h2&使用 LeakCanary&/h2&&p&Android 内存泄漏检测库:&a href=&/?target=https%3A///square/leakcanary& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&square/leakcanary&i class=&icon-external&&&/i&&/a& ,善于使用 LeakCanary 发现内存泄漏。&/p&&h2&Memory Monitor工具&/h2&&p&Android Studio 中的 Android Monitor ,选择其中的 Memory,跟踪整个 APP 的内存变化情况。&br&步骤如下:&br&1、与您的应用交互,在 Memory 监视器中,查看 Free 和 Alloated 内存。&br&2、点击 Dump Java Heap:,这个会打开 HPROF 查看器,如果没有,在 Captures 标签中,双击堆快照文件以打开 HPROF 查看器。&br&3、要引起堆分配,请与您的应用交互,然后点击触发 GC 的按钮: &/p&&h2&Heap Viewer 工具&/h2&&p&实时查看App分配的内存大小和空闲内存大小,发现 Memory Leaks 。&br&详细使用教程:Heap Viewer工具&/p&&h2&Allocation Tracker&/h2&&p&追踪内存对象的来源。&br&详细使用教程:Allocation Tracker(Device Monitor)&/p&&h1&优化方案&/h1&&h2&检查使用多少内存&/h2&&p&每个 APP 的堆(heap)内存大小有硬性限制,如果您的 APP 已达到堆内存限制,并尝试分配更多的内存,系统会抛出 OutOfMemoryError 。为了避免 OOM ,您可以查询当前设备有多少堆空间,可以通过调用系统 getMemoryInfo() 查询,返回 一个ActivityManager.MemoryInfo 对象,它提供该设备当前存储器的状态信息,包括可用的存储器,总存储器,和低于该阈值存储器。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&private void getMemoryInfo() {
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
LogUtil.d(&totalMem=& + memoryInfo.totalMem + &,availMem=& + memoryInfo.availMem);
if (!memoryInfo.lowMemory) {
// 运行在低内存环境
&/code&&/pre&&/div&&h2&当界面不可见时释放内存&/h2&&p&实现 ComponentCallbacks2 API 中 onTrimMemory()) ,当回调参数 level 为 TRIM_MEMORY_UI_HIDDEN ,是用户点击了Home键或者Back键退出应用,所有UI界面被隐藏,这时候应该释放一些不可见的时候非必须的资源。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&public class MainActivity extends AppCompatActivity
implements ComponentCallbacks2 {
// Other activity code ...
* Release memory when the UI becomes hidden or when system resources become low.
* @param level the memory-related event that was raised.
public void onTrimMemory(int level) {
// Determine which lifecycle or system event was raised.
switch (level) {
case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
Release any UI objects that currently hold memory.
The user interface has moved to the background.
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_MODERATE:
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW:
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL:
Release any memory that your app doesn't need to run.
The device is running low on memory while the app is running.
The event raised indicates the severity of the memory-related event.
If the event is TRIM_MEMORY_RUNNING_CRITICAL, then the system will
begin killing background processes.
case ComponentCallbacks2.TRIM_MEMORY_BACKGROUND:
case ComponentCallbacks2.TRIM_MEMORY_MODERATE:
case ComponentCallbacks2.TRIM_MEMORY_COMPLETE:
Release as much memory as the process can.
The app is on the LRU list and the system is running low on memory.
The event raised indicates where the app sits within the LRU list.
If the event is TRIM_MEMORY_COMPLETE, the process will be one of
the first to be terminated.
Release any non-critical data structures.
The app received an unrecognized memory level value
from the system. Treat this as a generic low-memory message.
&/code&&/pre&&/div&&p&该 onTrimMemory() 回调是在搭载Android 4.0(API级别14)加入。对于早期版本,您可以使用 onLowMemory() 回调作为旧版本的回调,这大致相当于 TRIM_MEMORY_COMPLETE事件。&/p&&h2&谨慎使用服务&/h2&&p&离开了 APP 还在运行服务是最糟糕的内存管理错误之一,当 APP 处在后台,我们应该停止服务,除非它需要运行的任务。我们可以使用 JobScheduler 替代实现,JobScheduler 把一些不是特别紧急的任务放到更合适的时机批量处理。如果必须使用一个服务,最佳方法是使用 IntentService ,限制服务寿命,所有请求处理完成后,IntentService 会自动停止。&/p&&h2&使用优化的数据容器&/h2&&p&考虑使用优化过数据的容器 SparseArray / SparseBooleanArray / LongSparseArray 代替 HashMap 等传统数据结构,通用 HashMap 的实现可以说是相当低效的内存,因为它需要为每个映射一个单独的条目对象。&/p&&h2&避免在 Android 上使用枚举&/h2&&p&枚举往往需要两倍多的内存,静态常量更多,我们应该严格避免在 Android 上使用枚举。&/p&&h2&使用 nano protobufs 序列化数据&/h2&&p&Protocol buffers 是一个语言中立,平台中立的,可扩展的机制,由谷歌进行序列化结构化数据,类似于 XML 设计的,但是更小,更快,更简单。如果需要为您的数据序列化与协议化,建议使用 nano protobufs。&/p&&h2&避免内存流失&/h2&&p&内存流失可能会导致出现大量的 GC 事件,如自定义组件的 onDraw() ,避免大量创建临时对象,比如 String ,以免频繁触发 GC。GC 事件通常不影响您的 APP 的性能,然而在很短的时间段,发生许多垃圾收集事件可以快速地吃了您的帧时间,系统上时间的都花费在 GC ,就有很少时间做其他的东西像渲染或音频流。&/p&&h2&使用ProGuard来剔除不需要的代码&/h2&&p&使用 ProGuard 来剔除不需要的代码,移除任何冗余的,不必要的,或臃肿的组件,资源或库完善 APP 的内存消耗。&/p&&h2&降低整体尺寸APK&/h2&&p&您可以通过减少 APP 的整体规模显著减少 APP 的内存使用情况。文章:&a href=&/?target=http%3A//mp./s%3F__biz%3DMzI4MTQyNDg3Mg%3D%3D%26mid%3D%26idx%3D1%26sn%3Db79b1d975e2b02d68cd9de%26chksm%3Deba824f9dcdfadefd30db34e4d6ced6fa5c8f264cb436ca3315fcd3dfd56fb61ec8b348b41f8%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android APK瘦身实践&i class=&icon-external&&&/i&&/a&&/p&&h2&优化布局层次&/h2&&p&通过优化视图层次结构,以减少重叠的 UI 对象的数量来提高性能。文章:&a href=&/?target=http%3A//mp./s%3F__biz%3DMzI4MTQyNDg3Mg%3D%3D%26mid%3D%26idx%3D1%26sn%3D34aab076ddfba57b1cf82b%26chksm%3Deba8240fdcdfad19fca4c1c58ff793e5b99fe1aa12a20c8dab784fc4%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android 渲染优化&i class=&icon-external&&&/i&&/a&&/p&&h2&使用 Dagger 2依赖注入&/h2&&p&依赖注入框架可以简化您写的代码,并提供一个自适应环境测试和便于其他配置的更改。如果打算在您的 APP }

我要回帖

更多关于 安卓7.1流畅度对比6.0 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信