在嵌入式设备上存储敏感数据最安全的方法是什么?
在我的工作中,我正在为消费者市场开发一种产品,它将有一张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
是否可以从与特定扩展名匹配的变量中选择文件,并丢弃其余的?
SRCS = file1.c file2.c file3.cpp
OBJS = $(SRCS:%.c=%.o)
OBJS += $(SRCS:%.cpp=%.o)
Run Code Online (Sandbox Code Playgroud)
问题是$(SRCS:%.c=%.o)将.c文件转换为.o文件,但保留.cpp文件.
在这种情况下,OBJS变量将等于
file1.o file2.o file3.cpp file1.c file2.c file3.o
Run Code Online (Sandbox Code Playgroud)
而我想要的是
file1.o file2.o file3.o
Run Code Online (Sandbox Code Playgroud)
那么,有可能吗?或者唯一干净的方法是拥有SRCS_C和SRCS_CPP变量?
std::chrono::system_clock::time_since_epoch().count() 给出了以微秒为单位的结果。
我想要当前时间(以纳秒为单位)。但我不能使用 high_resolution_clock 因为在我的系统上它是 stable_clock (单调时钟)的别名。
我知道我的系统具有纳秒能力,因为如果我使用clock_gettime(CLOCK_REALTIME, &ts),我将获得正确的纳秒分辨率纪元时间。
我如何告诉 std::chrono 使用纳秒分辨率?我想避免使用clock_gettime 并坚持使用cpp 包装器。