为什么以及如何 __attribute__
在GNU C程序中使用?
在嵌入式设备上存储敏感数据最安全的方法是什么?
在我的工作中,我正在为消费者市场开发一种产品,它将有一张eMMC卡,其中包含非常有价值的数据.我想知道保护这些数据的最佳方法是什么,即让某人无法理解其内容.(ps:这不是代码,这是一个实际的数据集)
我想象设计的方法是将数据放在eMMC上,用AES加密它(128位密钥就够了吗?).密钥将存储在MCU的闪存中.我使用的MCU提供了防止闪存读出和闪存覆盖的功能.但是,如果eMMC只是将eMMC硬连接到计算机,那么带有数据(但没有加密密钥)的eMMC将可供黑客使用.因此,解密的数据将仅暂时存在于系统的RAM中.
因此,如果我正确使用我的MCU的功能来锁定闪存,它会安全吗?或者,如果受到保护,是否有其他方法可以获取闪存内容(嵌入到MCU中)?像硬件模块或类似的东西.或者即使我成功地将密钥隐藏在闪存中,也可以制作一些数据?
请避免像"...... 应该没问题"这样的答案.我想知道最糟糕的情况.
作为参考,这里是我们使用的MCU的读出/写保护功能,但我的问题有一个通用的目的,不一定与一个MCU相关. http://www.st.com/content/ccc/resource/technical/document/application_note/89/12/c5/e2/0d/0e/45/7f/DM00186528.pdf/files/DM00186528.pdf/jcr:内容/翻译/ en.DM00186528.pdf
我刚刚发现了一些非常有趣的东西,这是我的错字引入的.这是一个非常简单的代码脚本示例:
printf("A" "B");
Run Code Online (Sandbox Code Playgroud)
结果将是
$> AB
Run Code Online (Sandbox Code Playgroud)
有谁可以解释这是怎么发生的?
fd = open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);
Run Code Online (Sandbox Code Playgroud)
我的学费告诉我,这O_WRONLY | O_CREAT | O_TRUNC
意味着系统调用允许写入and
创建(如果有)and
截断文件(如果有)。
但它不是|
按位运算符 和 之一吗OR
?
系统如何解释该组合?我尝试用我学到的按位运算来解释这个组合,但我只是迷失了方向。有人可以解释一下吗?
在浏览可用的内在函数时,我注意到无处可见可用的水平 addsub/subadd 指令。它在过时的 3DNow 中可用!扩展但是由于显而易见的原因,它的使用是不切实际的。在 SSE3 扩展中没有实现这种“基本”操作以及类似的水平和 addsub 操作的原因是什么?
顺便说一句,现代指令集(SSE3、SSE4、AVX……)中最快的替代方法是什么?(每个值有 2 个双打,即 __m128d)
c ×2
declaration ×1
embedded ×1
encryption ×1
function ×1
gcc ×1
intrinsics ×1
posix ×1
security ×1
simd ×1
sse ×1