- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我了解到安全世界可以保护关键数据不被正常世界访问,但我不明白的是如何衡量正常世界与安全世界的完整性。
我在三星 TZ-RKP 和 SierraTEE 中找到了一些相关工作,其中他们都实现了可以衡量正常世界完整性的功能。但他们没有提供技术细节。我有两个问题,如果有人能给我一些线索,我将不胜感激。
假设我想查看正常世界中正在运行的进程,是否必须使用正常世界中的内核模块来帮助我执行此操作?如果是这样,我如何确保它已将正确的结果传递给安全世界?准确来说,如何判断内核是否被入侵?
假设我有一个 RSA key 对并且我将私钥保存在安全的世界中。当进程请求解密某些数据时,安全世界如何知道请求是否来自立法进程?白名单机制可能会有所帮助,但如果正常世界中的内核已被破坏并且对手假装是立法者怎么办?安全世界似乎对正常世界中发生的事情一无所知。
即使可以确定它来自立法程序并且它使用私钥解密数据,解密后的数据仍然会以某种方式(即共享内存)返回到正常世界区域并且解密后的数据仍然可能被泄露。那么在安全世界中保存私钥有什么意义呢?
顺便说一句,我使用的是 armv8 开发板。
提前致谢。如果您能提供一些示例,那就太好了。
最佳答案
Trust-zone 本身并不是一个安全系统。你必须设计它。此外,还有许多不同类型的安全性。例如,您假设是软件攻击,但系统存在许多物理攻击(就像我猜您描述的那样)。某些东西必须是可信计算基础 (TCB);即,您认为无法泄露的某些代码。一个正常的世界内核可能太大而不能成为 TCB 的一部分,但它可以成为很好的第一道防线。针对它的利用只是从用户到主管的特权提升。您的 TrustZone API 应该期待不受信任的数据(即正常世界内核尝试缓冲区溢出和 API 误用等)。
这里的关键点是 TZASC 和其他总线外设可以授予安全世界访问权限以读/写普通世界内存。对于像 Linux 这样的成熟操作系统,您必须验证 MMU 表和其他数据结构。模块加载、进程运行等都需要验证。但是,如果您在正常世界中有一个简单得多的系统,则可以验证它。很可能你必须接受其中的一部分。 PC 的随机抽样可能会起到威慑作用;但除非正常世界证明携带代码,否则没有什么是万无一失的。
- Suppose I want to see what processes are running in the normal world, do I have to use a kernel module in the normal world to help me do this? If so, how do I make sure that it has passed the right result to the secure world? To be precise, how do I check that whether the kernel has been comprimised?
您的安全世界可以包含一个操作系统(或原始调度程序),它将定期检查正常世界代码的完整性。有像 RTIC 等硬件模块。您还可以使用 TZASC 将内核代码锁定为只读的普通用户(无访问权限)和普通主管。 comprimised 是一个重载的词。在某些时候,您必须信任某些东西。如果正常的 super 被破坏,私钥可以复制吗?您必须定义您的安全目标。在任何意义上,正常世界的内核当然会受到损害。您没有完整的行为规范来从安全的世界进行验证。
- Suppose I have a RSA key pair and I keep the private key in the secure world. When a process request to decrypt some data, how does secure world get to know whether the request is from a legislative process? A whitelist mechanism might help, but what if the kernel in normal world has been compromised and the adversary pretend to be legislative? The secure world seems to know nothing about what is happening in the normal world.
您的安全世界可能需要加密实体的一些合作。例如,您可以在不进行某些验证的情况下限制解密的数量。看来最有值(value)的东西就是RSA私钥了。如果您允许正常世界请求解密,那是您的问题而不是 Trustzone 的问题?您必须使用带有密码学和未知/不受信任主机的正常机制来处理此问题。 RSA key 对是全局的还是每个设备?是否支持吊销等。它在你的系统中,TrustZone只是其中的一部分。
关于linux - 如何使用 TrustZone 从安全世界反省正常世界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288422/
一个关于Lua和元表的初学者问题,以一个简单的Hello-World为例,涉及len事件,不幸的是它没有返回预期的结果(我使用的是从 Ubuntu 官方存储库安装的 Lua 5.1)。 案子 这是示例
我正在开发一个 OpenGL 应用程序。我需要一个地球自转模型(蓝色的水,绿色的土地)。我的问题不是处理 OpenGL/图形……而是处理数据。 我在哪里可以获得这些数据? (各个国家的边界)。如果
我试图了解在 OpenGL 中创建空间: 对象空间 世界空间 相机空间 投影空间 我对这些阶段的理解是否正确? “立方体”是在笛卡尔坐标系的中心创建的,直接在程序内部输入顶点坐标。 坐标转换为“世界”
我有一个Entity和Bundle的Components,我想附加到将成为第一个实体的子实体的实体上。我可以使用Commands生成带有我的组件的实体,但是我无法获得实际的Entity,这意味着我不能
我想创建一个游戏,它有一个无尽的(实际上是一个非常大的)世界,玩家可以在其中移动。我是否会抽出时间来实现游戏是一回事,但我发现这个想法很有趣,并且希望就如何实现它提供一些意见。 关键是要有一个所有数据
以下代码片段来自维基百科,是标准 Hello World! 的序言! Brainfuck 中的程序... 1. +++++ +++++ initialize counter (
就目前情况而言,这个问题不太适合我们的问答形式。我们期望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试获取特定日期剩余的确切秒数、分钟数等。这听起来可能很愚蠢,但为什么结果会翻倍呢?这看起来不对,是吗? setInterval(function() { var startDate =
如果我有两个嵌套元素,假设: Foo 然后我对外部元素应用旋转,假设顺时针旋转 45 度: Foo 现在我想将内部 div 向下移动一点。 Foo http://j
在 WindowsForms 世界中,您可以获得可用图像编码器/解码器的列表 System.Drawing.ImageCodecInfo.GetImageDecoders() / GetImageEn
因此,作为我的计算机体系结构类(class)的一部分,我需要熟悉 Assembly,或者至少足够舒适,我正在尝试读取用户的输入然后重新打印(暂时),这是我的我是如何尝试用伪代码来展示它的: 声明 ms
在 HLSL 中有很多矩阵乘法,虽然我了解如何以及在何处使用它们,但我不确定它们是如何导出的或它们的实际目标是什么。 所以我想知道是否有在线资源可以解释这一点,我特别好奇将世界矩阵乘以 View 矩阵
我正在使用 http://jvectormap.owl-hollow.net/ 中的 jVectorMap一切正常。但世界地图的标准尺寸非常小。如果有人想打例如波斯尼亚和黑塞哥维那,他需要大眼镜!有可
我在做游戏。游戏由一个无限平面组成。单位必须在一个离散的正方形上,因此可以使用简单的 Location { x :: Int, y :: Int } 来定位它们。 可能有很多种Unit s。有些可能是
所以我创建了一个顶点着色器,它接受一个角度并计算旋转。尽管模型围绕世界中心而不是它自己的轴/原点旋转,但存在一个问题。 旁注:这是 2D 旋转。 如何让模型绕着自己的轴旋转? 这是我当前的顶点着色器:
所以我创建了一个顶点着色器,它接受一个角度并计算旋转。尽管模型围绕世界中心而不是它自己的轴/原点旋转,但存在一个问题。 旁注:这是 2D 旋转。 如何让模型绕着自己的轴旋转? 这是我当前的顶点着色器:
我最近萌生了创建标签云的想法,就像地球形状的动画一样。我从 ngdc.noaa.gov 中提取了海岸线坐标,并编写了一个小脚本,将其显示在我的浏览器中。现在您可以想象,整个海岸线由大约 48919 个
我使用 3d 模式渲染我的 2d 游戏,因为相机旋转和放大/缩小比 2d 模式容易得多。 现在我遇到了一个我似乎想不出如何解决的问题: 如何使我的世界的 2d 平面以 1 个纹理像素匹配屏幕上的 1
我正在寻找一种简单快捷的方法来清除整个 Phaser 屏幕,就像在 HTML5 canvas 中,您可以通过将 Canvas 的宽度重置为自身来删除所有内容。我无法通过搜索找到任何此类方法 - 只有
是否可以为这样的游戏创建一个 2.5D 世界(双龙)http://www.youtube.com/watch?v=xb9P0YTeq5Y使用box2d? 你知道任何工作示例吗? 预先感谢您的时间。 最
我是一名优秀的程序员,十分优秀!