0xAA55 发表于 2016-1-14 21:18:30

【系统安全】Samsung Magician的RAPID加速功能存在严重的安全风险

Samsung Magician是三星固态硬盘的优化软件,能提升固态硬盘的性能,并且将用户的计算机调整为适合固态硬盘使用的运行状态。
它还有一个究极的加速功能,叫RAPID模式。开启RAPID模式后,Samsung Magician的驱动就会使用内存缓存对固态硬盘进行加速,如果在使用RAPID模式的时候运行AS SSD跑分,速度能达到接近内存盘的读写速度!所以Samsung Magician还被大家称作“三棒固态开挂驱动”。

然而RAPID模式的驱动实现固态硬盘加速的真正原理,并不光是使用内存缓存。而且Windows本身自身就带有磁盘缓存机制(要不然,开个机至少需要几十分钟)。
RAPID模式的真正的原理,是将磁盘的写入操作转移到后台慢慢写入,然后达到从逻辑上实现让其它软件在写入数据的时候,立即得到“数据已经写入磁盘”的信息——其实它只是将数据转移到自己驱动分配的内存中然后进行常规的文件写入操作而已,并且能让需要读写磁盘数据的软件立即完成写入操作并继续运行。这样做可以直接使跑分软件以为数据已经完成了读写,因此测出非常高的分数。同时你将大文件从设置了RAPID模式的固态硬盘里拷到普通的机械硬盘的时候,你会看到进度条跑得飞快,拷贝速度到达3 GB/s的速度。但事实上这里显示的速度只是Samsung Magician将文件转移到后台写入的转移速度而已,并不是真实的写入速度,拷贝窗口消失后,Samsung Magician仍然在后台慢慢地往磁盘写你的文件呢!它根本就没有加速,只是利用了你的空闲时间而已。我试过,把电源蹬掉,重启电脑后文件必定损坏。

Samsung Magician的这种将所有的读写操作转移到后台的优化方式其实是为了将电脑的空闲运行时间利用起来。其实还是挺合理的。但是,它欺骗了所有要往磁盘写入数据的软件,以及,最终的用户。用户以为数据已经拷完了就把U盘拔了,但是数据根本就没拷完,拔了U盘后文件其实已经损坏。除非用户有安全删除硬件的习惯,否则文件必烂无疑。对于读写次数和数量不多的磁盘,使用这种方式优化能达到提升计算机性能的效果(其实主要是提升Windows的性能),但是对于读写操作很频繁、读写从来不会停歇、每次都要写入大量数据的硬盘(比如专门用来装虚拟机的硬盘)而言,这种方式只是将数据的写入滞后了而已,不仅不能提升性能,它还会导致数据丢失的风险增加。在它还没有完成数据的写入的时候用户的计算机突然没电了,或者突然停电了,即便“进度条”已经满了,系统已经显示文件已经给你复制好了,它也会使文件、数据变得不完整,或者损坏。因为它根本就没来得及将文件真正地写入磁盘。


TrueCrypt 发表于 2016-1-14 21:44:41

其实Ms自己的缓存机制也有这个问题
只不过Ms的缓存机制设计的比较靠谱罢了……
另外RAPID在高压力使用下可能蓝屏……

0xAA55 发表于 2016-1-16 00:41:20

TrueCrypt 发表于 2016-1-14 21:44
其实Ms自己的缓存机制也有这个问题
只不过Ms的缓存机制设计的比较靠谱罢了……
另外RAPID在高压力使用下可 ...

高压力下大量的文件都还在内存里,驱动还没来得及将其写入硬盘呢。
然后再来几个磁盘的读写操作,内存不够用了,GG

ShadowMoon 发表于 2018-1-4 02:07:22

0xAA55 发表于 2016-1-16 00:41
高压力下大量的文件都还在内存里,驱动还没来得及将其写入硬盘呢。
然后再来几个磁盘的读写操作,内存不 ...

写入速度提高可以理解,读取速度呢,为什么读取速度也提高了,读取速度指的就是硬盘到内存的速度么,内存做的缓存在读取的时候能帮上什么忙以至于让读取速度提高呢?

0xAA55 发表于 2018-1-4 03:31:23

ShadowMoon 发表于 2018-1-4 02:07
写入速度提高可以理解,读取速度呢,为什么读取速度也提高了,读取速度指的就是硬盘到内存的速度么,内存 ...

“预读取”,假设你要读取C盘的一块64MB大小的区域,这个驱动会瞒着你一次性读取256MB,然后在读完64MB的时候把数据给你的同时,后台继续读取剩下的192MB。这样当你要读取后面的64MB的时候,数据已经在内存里了……

ShadowMoon 发表于 2018-1-6 00:02:59

0xAA55 发表于 2018-1-4 03:31
“预读取”,假设你要读取C盘的一块64MB大小的区域,这个驱动会瞒着你一次性读取256MB,然后在读完64MB的 ...

懂了,多谢大佬!

xiaoxin 发表于 2019-1-15 22:23:06

本帖最后由 xiaoxin 于 2019-1-15 22:28 编辑

如果要说用户级的绝对安全保障, 还是老老实实用机械硬盘组RAID好了.
用固态硬盘, 就存在风险, 所以踢掉电源来证明不安全这做法, 值得思考

https://www.samsung.com/semiconductor/global.semi.static/Samsung_Magician_5_2_1_Installation_Guide_v2.4.pdf
三星的文档, 读一下吧.
使用上有很多限制.
原理上和AMD之前做的RamDisk很像.
至于安不安全, 一个电脑老突然断电, 那不管是用啥都不安全吧.

PS, 这个软件是开源的, 有兴趣可以去下了自己分析.
2018年看2016年的帖子, 其实还蛮马后炮的.
不过安全性, 没楼主说的那么差, 个人认为

0xAA55 发表于 2019-1-16 05:09:18

xiaoxin 发表于 2019-1-15 22:23
如果要说用户级的绝对安全保障, 还是老老实实用机械硬盘组RAID好了.
用固态硬盘, 就存在风险, 所以踢掉电源 ...

关于第一句:“如果要说用户级的绝对安全保障, 还是老老实实用机械硬盘组RAID好了.”
组RAID几?0,1,10,其中RAID0反而是最不安全的,不如不组RAID。

第二句:“用固态硬盘, 就存在风险”
用机械硬盘就不存在风险了吗?磕碰一下出坏道。

“所以踢掉电源来证明不安全这做法, 值得思考”
重点在于不是踢掉电源来证明不安全,而是在于进度条跑完了以后,再踢掉电源,导致数据损坏。
作为对比,一般的机械、固态、U盘,它们的驱动没有RAPID模式,拷贝文件的进度条跑完后,数据基本也完成了实际的写入,顶多延后一两秒。而Samsung Magician的RAPID模式,会导致进度条跑完后,你还需要等待很久,才能保证文件真正被写入到SSD了。有一种方式可以验证,那就是完成一个大文件的拷贝后,迅速关机。你会发现你的电脑需要消耗相当长的时间才能真正关机。

“至于安不安全, 一个电脑老突然断电, 那不管是用啥都不安全吧.”
是这样没错。但如果进度条能实时反馈更加准确的存储进度,用户也知道什么时候允许断电,什么时候不允许断电。Samsung Magician的RAPID模式的做法,会导致存储进度无法被准确反馈,导致用户无法判断允许断电的合理时机。

打个比方:对于笔记本电脑,安装固态硬盘比机械硬盘更安全,因为笔记本电脑并非总是能工作在非常稳定的环境,移动与磕碰必不可少。但由于笔记本电脑内置了电池,用户并不一定总是给笔记本电脑接入AC电源。有时候为了展示、放映幻灯片,用户会在没有给笔记本电脑接入AC电源的情况下进行使用。

在这种环境下,你让用户把硬盘中某分区的文件移动到别的分区,即使你看到进度条迅速就走到了100%,你也无法保证它真正完成了这样的操作。当电池耗尽,用户看到屏幕黑了,以为系统已经完成了休眠的过程(然而系统一直开启,CPU一直在运转、发热),用户把电脑合上,放入背包。电脑会由于尚未完成关闭的过程持续发热,并且由于背包的散热条件很差,很容易导致过热损坏。这就是它实际存在的安全性问题。

以欺骗用户作为优化手段并不可取。

页: [1]
查看完整版本: 【系统安全】Samsung Magician的RAPID加速功能存在严重的安全风险