RIOT文档二

可信平台架构——设备标识符组合引擎的硬件需求

1. Scope and Audience

本规范描述了通过Device Secret和首次出现的可变代码的散列所派生出来的identity value的硬件要求和整体流程。该规范将此派生值称为复合设备标识符CDI(Compound Device Identifier)。这个
复合设备标识符的组成收到硬件状态或配置和第一代可变代码的影响。

CDI的一个可能的应用是attest一个嵌入式设备是否可信。

文档的潜在读者是不可访问TPM的可编程组件的程序设计师。

2. Normative references(规范性引用文件)

(略)

3. Terms and definitions(名词解释)

  1. CDI

    复合设备标识符是一组数据,用于标识用于生成该数据的系统上运行的软件。

  1. digest

    hash值

  2. device

    一种整合了可编程组件与其他可选的可编程组件和外围设备平台。

Read More

RIOT文档一

1. Abstract

RIoT是一种为计算设备提供基础信任服务的体系结构。信任服务包括设备标识、密封、认证和数据完整性。之所以使用“健壮”这个词,是因为最小的可信计算基数很小,而且因为RIoT的功能可以远程重建被恶意软件破坏的设备的信任。术语“物联网”之所以被使用,是因为即使是最微小的设备,这些服务也可以以低成本提供。
本文描述了RIoT的硬件需求以及硬件如何支持一系列基础信任服务。

2. Introduction

技术正在迅速地发展和丰富现代世界,许多应用程序使计算设备对我们的日常生活不可或缺。这些应用程序中有很多都是非常昂贵的,而且,由于传统的基于硬件的安全方法增加了设备的成本,基于硬件的安全性通常被认为是不切实际的。同时,设备经常在没有物理安全保证的苛刻环境中部署。加速上市的时间、迭代的改进和不断改进的安全研究,已经为频繁的软件更新创造了需要。但是,这些更新必须在没有人参与的情况下进行管理和验证。RIoT解决了这些新的安全现实,并且可以进一步加强传统的安全技术。

加密操作和密钥管理构成了许多安全场景,而RIoT的核心贡献是为这些服务提供安全且可管理的基础。身份验证、完整性验证和数据保护要求加密密钥加密和解密,以及对数据进行散列和签名的机制。大多数联网设备也使用加密技术来与其他设备和服务进行通信。通过设备标识、访问控制、设备健康验证以及制造商控制更新到设备的部署和验证安装完成等更复杂的场景,也最好使用加密技术完成。

为了支持这些和其他方案,RIoT提供的基本加密服务包括:

  • Device Identity
    设备通常通过证明拥有一个加密密钥来对自己进行身份验证。如果与设备相关的键被提取和克隆,那么设备可以被模拟,因此保护设备标识键是至关重要的。

  • Data protection
    设备通常使用加密来对本地数据进行加密和完整性保护。如果密码密钥只能被授权的代码访问,那么恶意软件或可能对平台安全产生不利影响的未经授权的软件将无法解密或修改数据。

  • Attestation
    设备通常需要能够报告它们正在运行的代码以及它们的安全配置——一个被称为认证的过程。特别地,认证常常用来证明设备正在运行最新的补丁代码。

如果密钥不被对手所知,密码学只会对整个系统安全起作用。如果密钥仅在软件中进行管理,那么软件组件中的缺陷就会导致密钥被盗,从而否定它们的安全价值。对于软件系统来说,恢复信任的主要方法是安装更新的软件,并在物理安全条件下为设备提供新的密钥。对于典型的PC机、服务器和移动设备来说,这是耗时且昂贵的,当设备在物理上无法访问时,这是不可行的或不可能的。

今天的安全远程重置的实用解决方案涉及基于硬件的安全性。软件级别的攻击可能允许对手使用硬件保护的密钥,但不能提取它们,因此,硬件保护密钥是安全重新配置受损害的系统的有用的构建块。可信平台模块(TPM)是一个低成本安全模块的例子,它为密钥提供硬件保护,并允许设备报告它正在运行的软件。[1]因此,一个受损的tpm设备可以安全发布新的密钥,并且还可以提供证明更新成功的认证报告。

TPMs在当代计算平台上随处可见,而soc -集成和处理器-分离的固件TPMs的出现降低了成本。然而,在某些情况下,TPMs仍然是不切实际的。例如,在一个小型物联网设备中,如果没有大幅增加成本和电力预算,就无法支持TPM。TPM使用的另一个不实际的例子是确保TPM本身——TPM是需要进行现场更新的复杂软件系统。如果TPM被破坏,那么它不太可能获得第二个TPM来帮助重新配置和重新定位,因此需要另一种方法。

RIoT已经被开发用来为即使是最小的计算设备提供这种基本的设备安全性,尽管它可以应用于任何处理器或计算机系统。对于RIoT的硬件和软件需求非常有限,不应该增加任何足以运行网络堆栈的设备的材料成本。特别是,RIoT不需要专用的安全处理器或专用处理器模式

Read More

人类简史

人类的发展!

认知革命(7万年前)/农业革命/科技革命

直立人 -> 石器,由于基因而发展出的石器能力,但是能力止步于此,因此石器也是直立人的定义特征。
火->更高效的食物利用方式->更短的消化道->开始直立/大脑发展->解放双手->促进大脑发展

智人人种 KO 尼安德特人(身体更强壮)
优势在于:语言能力(交流信息,50人团体),八卦能力(更大的组织协调150人,第四权利)和虚构的相信能力(“法律拟制”超越150人的团体,大量陌生人之间的信任和协作,社会行为之间的快速创新)
因此社交革命使得我们脱离基因进化的范畴,使得历史脱离生物学

人类的迁移使得地球上大规模的物种灭绝。

农业革命

农业革命之前的采集社会时期,人类能力很强,饮食均衡,有着丰富的生存能力和运动能力,社会形态饱满,但是可能和当今人类的价值观不同。很聪明,知识丰富脑容量比人类大。只不过由于没有更大的社会结构和更好的社会分工,因此没有更进一步。

为了更好的获取食物,人类开始学会了农业,但是越精细的农业就越会占用大量的劳动者的时间,并迫使其由采摘者或者猎人转变成为农民。
一方面农业聚居地的人口承受力更强,能满足更多的人口的需要,使得采摘聚居地无法与之抗衡,从而农业技术得以在大陆上传播;而另一方面,农业的发展虽然使得人类人口数得以提升,但是平均个体的生活质量却下降了:食物的单一依赖,疾病的肆虐,饥荒,免疫力下降以及更加单调的生活方式。

畜牧业也是一样,虽然从基因演化的角度来说,小麦/牛羊猪等牲畜可能是有史以来从进化角度来说最成功的动物,衣食无忧而且基本不会灭绝,但是每个个体的生活情况却也十分悲惨。

这其实映射到人身上也可以进行类似的比较:,每当人类整体的能力大幅增加、看来似乎大获成功,个人的苦痛也总是随之增长。

在有了大规模的团体与组织之后,我们开始以一些“虚构”的“想象”的实物来形成大规模写作:

  1. 想象构建的秩序深深地与真实世界结合。
  2. 想象构建的秩序塑造了我们的欲望。
  3. 想象构建的秩序存在于人和人之间思想的连接。

Read More

xpath tutorial

这篇文章主要是方便写爬虫,实验环境可以基于scrapy爬虫框架,操作页面就以煎蛋妹子图为例.

安装好scrapy后,直接使用命令 scrapy shell http://jandan.net/ooxx/page-1进入scrapy的交互模式,其中response变量中存放了响应对象,直接使用response.xpath函数就可以直接尝试xpath选择器啦。

基于树结构的简单实例

首先xpath是一种查询xml的方式,XML文档被组织称树的格式,因此,对树的基本概念可以直接应用到xpath上。直接上例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
'''获得所有div元素,不管他在文档中的位置'''
response.xpath("//div")

'''获得所有根节点下的所有元素'''
response.xpath("/×")

'''获得所有id是‘sidebar’的元素,不管他在文档中的位置
response.xpath("//div[@id='sidebar']")

'''获得id是‘commentform’的所有元素,不管他在文档中的位置'''
response.xpath("//*[@id='commentform']")

'''获取左右文档中的id的值'''
response.xpath("//@id")

谓语

上面是对xpath的一个直观认识,使用上xpath表达式比css要稍微繁琐一些,但是却更强大。首先重要的一个概念就是“谓语”,谓语被嵌在方括号中,用来查找符合某个特定条件的节点。

在上面的案例中我们已经看到了谓语的使用实际上[@a=b]这种形式是通用的,a可以是id或class或者节点的任意属性。另外,下标也是谓语的一大类使用方式。

1
2
3
4
5
6
7
8
9
10
11
<!-- more -->
'''选取拥有id属性的所有div元素'''
response.xpath("//div[@id]")

'''选取body元素下的第一个div节点,注意从1开始'''
response.xpath("//body/div[1]")

'''选取body的div子节点的div子节点中的前两个'''
response.xpath("//body/div/div[position() < 3]")

'''直接进行元素的比较

多重选择

可以使用通配符×或者|符号进行多重选择。通配符的使用不多赘述。

1
2
'''选取所有body节点的直接a子节点和div子节点'''
response.xpath("//body/*/div | //body/*/a")

轴可定义相对于当前节点的节点集,例如子节点,子孙节点,父节点,祖宗节点,后继兄弟等等。轴的使用要配合“步”,步实际上就是对轴节点集的条件测试,如果无需测试,在“步”中使用通配符。

1
2
3
4
5
6
7
8
9
10
11
12
13
'''选取body的div子节点的所有孩子节点'''
response.xpath("//body/div/child::×")

'''选取body的div子节点的所有div孩子节点'''
response.xpath("//body/div/child::div")

'''选取a节点的所有祖先节点中的body节点
a = response.xpath("//body/div/a")[0]
a.xpath("ancestor::body")

'''选取a节点的所有后继兄弟
a = response.xpath("//body/div/a")[0]
a.xpath("following-sibling::*")

更多轴的使用:

函数

详见w3school

常用的函数:

1
2
3
4
5
6
7
8
'''text'''
response.xpath("//span[@class='tucao-like-container']")[0].xpath("span/text()")

'''contains'''
response.xpath("//div[contains(@id, 'foot')]")

'''position()'''
response.xpath("//body/div/div[position() < 3]")

Goal CSS 3 XPath
所有元素节点 * //*
所有p元素节点 p //p
所有p元素节点的子节点 p > *
根据ID选择元素 #foo //*[@id=’foo’]
根据class选择元素 .foo //*[contains(@class,’foo’)]
根据属性选择元素 *[title] //*[@title]
所有p节点的第一个子节点 p > *:first-child 0]
所有存在子节点的p节点 Not possible //p[a]
下一个元素节点 p + llowing-sibling::[0]

参考:

  1. W3school
  2. [译]XPath和CSS选择器

基于CFG的句法分析算法

基于CFG的句法分析

线图分析法

线图分析法

先直观的感受这个算法,其实这是一个非常naive的方法,如果直接让大家用一个带词性标注的句子和一套CFG规则去解析出句法树,这个方法应该就是最直接的解法。
假设有这样的的句子和CFG规则:

带标注的句子:the(Det) boy(N) hits(V) the(Det) dog(N) with(Prep) a(Det) rod(N)

CFG规则:

  • S -> NP VP
  • NP -> Det N
  • VP -> VP PP
  • VP -> V NP
  • PP -> Prep NP

主要的思想就是每处理一个节点都回头看看,新加上的这个节点能不能和之前的节点再次利用CFG规则合并。进行自底向上的合并成为一棵句法树。
首先把Det放入树叶节点,然后添加N叶节点,此时回头看发现可以把Det和N合并为NP,所以添加NP作为Det和N的父节点。NP节点再往前看没了,然后往后看,把V加入线图。此时树是这样的:

本站总访问量