本帖最后由 丿灬幸灬 于 2018-11-16 19:55 编辑
u盘加密设备 / r7 ^* v, J+ P3 t9 z 3 z0 C2 t1 e7 m% j 6 f3 f, l R. @3 [( l% p 描述拥有micro-sd卡插槽,32位ARM,和硬件加密的U盘0 z5 ~4 H& o5 l4 @! K 1 W# H3 {4 z" E) Q) u8 w( ^1 s 每一个(几乎所有)磁盘加密使用XTS,我认为我们可以做得更好。 + G: j& q _9 i 在这里Niels Ferguson写道:我们可以很容易的往密文里添加一个nonce或MAC值,但是,然而,使密文比明文还大却不可行,不管是磁盘还是操作系统工作的扇区,他们的大小都是2的幂次。 我们可以将512字节的操作系统扇区映射到1024字节的磁盘扇区,但这将导致磁盘的容量损失一半,用户不愿意这样。 我们也可以在每16个部门中保留一个部门来存储其他15个部门的MAC和nonce值,但这有几个问题: 5 d ?! O) W5 r7 r1 r 首先,写入扇区x意味着更新了一个额外扇区的nonce和MAC。这样写入会导致读写相关性能的损失。 此外,它可能会损害nonce/MAC数据区(比如发生电源故障时),这将导致其他14个数据部门的损失;这也是不能接受的。 最后,由于不同的可用性、可管理性和部署的原因,必须能够启用和禁用对现有的磁盘驱动器加密。(想象一下用户升级到一个新的Windows版本,他要也能进行磁盘加密并且在现有磁盘上启用磁盘加密)。 添加nonce/MAC的扇区会修改磁盘布局(减少大量的可用磁盘空间)使它的就地启用和禁用变的极其复杂。再加上转换过程中可能发生的各种故障模式,以一种可靠的方式进行转换是不太可能的。 $ P- }' `6 T' `* L! L- R$ F 最后的结论是,我们添加一个MAC到每个磁盘扇区的方式,不能被大多数用户所接受。& R# x/ H0 g# {6 d9 P6 v; M . W5 i& s) @& d% T @3 T1 s6 N% z 是的,为消费级磁盘加密,确实不可以这样。 % E. O' z" J- M$ B/ } 但是对于你我而言,为什么不把安全放在第一位,再处理其他的问题呢?8 p9 B7 I1 i9 U& {& j T: U& x6 E7 P6 S 所以,我们可以在16个扇区中预留1个,用来存储nonces和MACs。 通过使用intent-log来恢复因为电源故障丢失的数据。. M5 I. W+ h3 j; ^
组件1×stm32f415: X$ p- a. D" F5 C0 @ 9 h* t9 R( G6 v$ M. V- L + |6 h) {" K" n7 _! t% B3 _+ u usb的快乐时光所以,短暂停留在那里我写一个新的usb堆栈。(没有ST的usb代码来达到我想要的效果)$ c, O9 y: M! l. Y/ O- ~* Q0 U0 r 存在模小的bug,该设备目前正在我的mac上。1 {3 \$ _, w" s( |* o 7 `4 K/ ^# G" C; D: | G
2 n2 l9 T6 o5 M. p+ k: \ ' y- o* E: s5 s' V ( R7 L) k9 S& Y `+ I; D 现在可用的测试代码 ; C2 p' f( t; v 源代码和编译后的二进制文件现在在github上。) ?, i4 ?$ v' f% W# y3 V 警告:实验性代码,风险自负。 * k+ [( ~; s' S3 N. M9 E " v) C$ `9 Z/ v4 _6 ` 2 l# y8 x% {2 b8 T/ y4 e$ M 演示 8 {& L8 @; U( K' ~2 Y4 F: B 见视频 # @: k4 A+ Q; V q+ `1 b& v9 j 相关资料请见oshpark 2 @# c6 Q5 B3 J" ~) t3 m$ W+ ^ |
最全USB HID开发资料,悉心整理一个月,亲自测试
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
STM32 USB CDC 虚拟多串口
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现
微信公众号
手机版