研二暑假前,有幸拿到华为2012实验室的offer,辗转去了传说中做【操作系统】的【欧拉实验室】,我觉得作为一个程序员去膜拜一下这帮大佬也是一段不错的经历,早早就入职开始实习了。开始了我的为期5个月了解华为的奇幻之旅。
入职的部门是欧拉一部,是华为做终端操作系统的部门,可能是因为专业是信息安全把我分到了做TEEOS的系统内核小组,部门所做的操作系统叫iTrustee,我有幸跟随着部门的大佬打了两场硬仗,一是ITrustee切换华为自主研发的微内核架构的鸿蒙内核,两一个是iTrustee的SMP改造。虽然这些硬仗我参与的不多,但是作为实习生的我,华为内部的所有关于这两场硬仗的会议和沟通学习沙龙我是都可以参加的(为这一点赞!)所以我自己收获很多,加深了自己对操作系统的理解。下面整理一下在华为学到的东西:
关于 TEE OS(可信执行环境操作系统)
原来我还真是不知道,现在的智能手机原来早就开始用这样的技术来保护用户的隐私安全,即实时的运行两个操作系统,一个是安卓一个是TEE,基于Arm的TrstZone技术将两个操作系统进行物理隔离。原本我一看这个描述还停留在虚拟化隔离或者说Linux提供的NameSpace隔离,但当看到这张架构图时,我有点懵…这是两个完全独立的操作系统。
两个系统同时运行在同一颗CPU上,TEE可以由Rich OS通过硬件中断来切换,硬件上由BL31等特制元件完成CPU的上下文切换。可以看出来我上面所说的第二场硬仗是多么的复杂,两个SMP系统来回切换,这在课本上是完全没有学过的,脑洞也从来没有这么打开去思考过,这些技术我是真的很好奇,以致于我参与了全部的内部培训会议,收获多!开眼界!
TEE存在的价值主要就是保存一些用户的隐私数据,比如指纹信息、3D人脸信息、元密钥等等,或者做一些可信计算,比如可信随机数、可信时间、可信签名验签等。
后来还参加了一些关于RPMB和Keystore的培训,真是的感觉就是华为的手机以后想root怕是难如登天了。。。。
关于区块链
传统区块链基础
如何记账:
H=Hash(上一个交易的摘要值 || 当前交易的元数据 || 随机数)
如何确认记账节点:
网络中第一个计算出一个随机数,使得上式中的H的前18位全为0
特点:
- 其他节点都是复制该条记录,不能得到奖励
- 每个节点上的账本都是全量的完整账本
- 若有节点自己修改交易账本,则会出现账本链条断开,导致数据无效(投票机制)
- 想要修改交易记录,攻击节点要占到整个网络的50%以上的算力
微软公布了一个coco framework的区块链结构,首次将TEE和区块链结合在一起,其白皮书中的架构图:
因为现在TEE的流行,手机端有Arm的TrustZone,PC、服务器端Intel也推出了SGX的可信执行环境,所以之前靠拼算力来达成区块链中共识的费时费力囧境有望被打破,关键的是因为有TEE的加成,区块链的共识协议不需要像之前那样考虑容错机制等,可以直接上最简单的共识协议,比如RAFT、PpET等,核心可以理解成交出一个可信随机数比大小。
安卓
安卓架构图:
可以看出安卓比以往的操作系统多出来了一个硬件描述层(HAL)。
PS:
十点下班做的地铁: