登录
  • 人们都希望被别人需要 却往往事与愿违
  • 要在自己的代码里找出一个bug是十分困难的。而当你认为你的代码没有错误时, 那就更难了@《代码大全》Steve McConnel

[学校上网系列]3. 从网盘秒传中想到的:不要想当然

信息安全 Benny小土豆 8012次浏览 4202字 15个评论
文章目录[显示]

今天恰逢美国大选,特朗普已经成为新任美国总统。所以我也来凑个热闹,当然今天我不打算谈论总统的事,今天我要继续谈论我们的学校上网系列之从网盘秒传想到的

鉴于360云盘宣布关门大吉,估计大家伙都转移到百度网盘了吧。提到网盘,大家可能会把他当做备份数据的、存储资料的一个地方。所以今天我也就来科普下一些和数据备份相关的概念以及如何安全、可靠的进行数据备份。嗷对了,自从百度云改版之后,下载什么东西都得用那丫的百度云管家。婶不能忍啊! :twisted:

再继续之前,强烈建议阅读爱范儿上的一篇文章:《国内的网盘一个个倒下,这里有一份能让你用到老的存储指南》

在说数据备份之前,我们要先学习一些基础知识:数据备份的三种方式、如何选择存储媒介、超大空间和秒传,之后我们会讨论下如何安全的使用云盘、如何干他丫的百度云管家

数据备份的三种方式

通常来说,最常见的数据备份方式有完整备份、增量备份、差异备份。

完整备份

把所有文件、文件夹或数据作一次性的复制,不考虑其中是否有任何更改、变化的备份方式就叫做完整备份。通常来说,第一次备份都会是完整备份。举个例子,我周一把整个分区/目录的文件都以某种方式备份/封装到某个特定的存储介质中,这就叫做完整备份。

增量备份

指对上一次完整备份或增量备份后更新的数据进行备份。举个例子,我周一进行了完整备份,周二进行增量备份则是这段时间内发生变化的数据作为一个"增量"和周一的备份文件放在一起,这个过程就叫做增量备份。周三继续进行增量备份是和周二进行对比,变化的数据进行备份。换句话说,增量备份是跟前一次备份对比,备份变化的。

差异备份

提供运行完整备份后变更的文件的备份。差异备份和增量备份非常相近。只不过差异备份永远是和完整备份的那次进行比较(在这里也就是周一的完整备份)


估计大家伙此时还是懵逼的状态,依旧没搞懂增量和差异的区别……我们举个很大的例子:

周一进行完整备份,周二进行增量备份,周三进行增量备份,周四进行差异备份,周五进行差异备份,他们备份之后的文件名分别为file1, file2, file3, file4, file5

那么请继续往下看。

三种备份方式的还原

完整备份

最简单了,直接还原file1即可。

增量备份

假如我要恢复到周二的状态,那么需要file1和file2这两个文件,假如需要恢复到周三的状态,那么就需要file1, file2, file3这三个文件。

差异备份

假如需要恢复到周四的状态,那么就需要file1, file4;假如需要恢复到周五的状态,那么就需要file1和file5(并不需要file4)


看出增量备份和差异备份的区别了吗?

增量备份是针对上一次备份的(无论是增量还是完整),它的恢复需要每一次的增量文件和最开始的完整备份,也就是说恢复到周三的状态不能没有file2这个文件;

差异备份是针对完整备份的,它的恢复需要本次差异备份文件和对应的完整备份。假如我想恢复到周四,那么只需要file1和file4就够了,file2和file3都是完全无关的。

这有什么用?和网盘有何关系?

当然有用了,尤其是那些喜欢备份系统分区的人们——每次都是完整备份,浪费时间、浪费空间。

[学校上网系列]3. 从网盘秒传中想到的:不要想当然

著名的备份软件True Image即提供这三种备份方式。

对于使用网盘的人们来说……网盘如果能够支持类似增量备份这种技术,将会大幅度减少上传时间。实际上,网盘中存在的这种技术一般被称作"差异同步",对这个技术做的最好的应该是Dropbox。举个例子,假如你上传了一个压缩包,之后又给压缩包进行了一些修改(增加、修改、删除文件等),Dropbox会分析这个压缩包中哪里被修改了,然后只上传修改过的那些字节。这一技术有一点像rsync 。因为这技术太先进了,所以很少有网盘会用,维基百科上有个页面,有兴趣可以去查阅这里

如何选择备份媒介

备份媒介,指的是你是把备份文件复制到移动硬盘上,U盘上还是上传到虚无缥缈的"云"上?

我们要从几个方面来考虑这个问题。

速度

毫无疑问,拷贝到移动硬盘上的速度是要远远快于上传到云端的,况且中国奉行下载很快、上传很慢的不对等"百兆光纤"这个现象要更加明显。下载也基本同理。

保密性

你的数据是否是保密的呢?。如果移动硬盘被借走、偷走,那么所有数据就会被人偷窥;而上传到网盘…也可能有类似的担忧:网盘提供商偷窥(比如说美国的NSA啦,中国的金盾啦)、传输过程中被窃听(很多网盘上传下载都不是加密的)、网盘账号被盗(网盘被入侵、被搜索引擎检索)

在这里点名批评百度网盘,用它,那就先给你的隐私买个保险吧

可用性

硬盘坏了、着火、被盗、地震,使用移动硬盘这类的可能就要遭殃了。但是除非发生极大规模的全国性灾难、云存储厂商跑路、内容被审查,云端资料大概还是比较安全的……

其实我看好BT Sync

易用性

假如你想分享某个视频给朋友,U盘拷贝进去再给他可能很麻烦;但是上传到网盘再分享就很简单了。

超大空间和秒传的秘密

对于大多数人来说,2T的空间是一种诱惑啊。但是天真的你难道以为百度真的为你量身订造买了三块价值300元的1硬盘总计900元和其他电费、带宽费来为你服务吗?还有哎百度说的2T是2048G——1024进制,而不是硬盘厂商们喜欢的900G

当然不会了!

为什么要3x1T?不应该直接就是2T吗
RAID5啊亲,这么重要的应用场合,肯定要用到磁盘阵列的,而且RAID5应用比较广泛,速度和安全并存。

事实当然不是这样了。笨理想,同样的文件服务器上肯定只有一份(逻辑上只有一份),但是从技术上他们是怎么确定同一个文件的呢?这就引入了单向散列函数的概念。

单向散列函数

英文名字是hash,原意为砸碎,这倒是很形象,也有人音译为"哈希"。单向散列函数是一种将无穷无尽的东西转换为有限长度的尽可能不重复的、不可逆字符串的算法,这个算法叫做单向散列函数,这个字符串叫做散列值、摘要、信息摘要。说到这,有些童鞋可能会问,你把无穷的东西转换成有穷的东西,肯定会有两个东西转换之后会是相同的嘛!问得好!这种现象叫做碰撞,分为……!

说到这可能"散列"这个概念还是很难理解。那么指纹可以理解吗?你对一首歌求某个散列算法的散列值,就相当于把这首歌的指纹求出来了——就像你的指纹可以几乎唯一的代表你一样,这个散列值也可以几乎唯一的代表那首歌。

举个例子,你把00000000散列之后的摘要是abjhda62c,你把仅仅改变了一个bit的10000000散列之后,摘要就会变为fjgha267d2。输入值只变了一位,但是摘要却变得面目全非。也就是说,散列可以用来验证文件的正确性、

聪明的童鞋大概想到了…假如我上传了某部电影,此时服务器上海没有这个文件,于是只好乖乖的上传了。上传完之后,另一个用户再上传同一部电影的时候(或者是散列值相同的文件),服务器(或者是客户端)经过计算发现散列值相同,那也就直接给另一个用户做标记并提示"秒传"。

这也就是秒传的原理。

Windows下的HashTab用起来挺舒服的


单向散列函数有哪些基本特征呢?
单向性
你能把砸碎的镜子复原吗?很难吧。单向散列函数的单向性是指的操作方向的不可逆性,在单向散列函数中是指只能从输入推导出输出,而不能从输出计算出输入。

唯一性
散列函数的输入和输出不是唯一对应关系的(无穷怎么可能会一一对应有穷),如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为"哈希碰撞"。碰撞分为两种,强碰撞和弱碰撞。

弱抗碰撞性:当给定某条消息的散列值时,单向散列函数必须确保要找到和该条消息具有相同散列值的另外一条消息是非常困难的。

强抗碰撞性:是指要找到散列值相同的两条不同的消息是非常困难的。

这里的碰撞可能说的有点多了……但是百度云使用的是MD5,而MD5早就被认为是不安全的散列函数了。我曾见过用工作站碰撞小黄片玩的孩子...

PS:在对用户身份进行认证中(也就是你登录账户的时候),散列函数是起到非常关键的作用的。没有哪家系统会直接明文把用户密码存到数据库里吧,再不济也得用散列函数hash一下(然而这却无法阻挡彩虹表的脚步),比较好的做法是使用随机盐配合安全的散列函数。

如何安全的使用云盘

几个月之前,几个字幕组的成员因为上传日剧资源被日本警方逮捕

虽说字幕组本身就是游走在法律边缘的,但是我还是想说一句,字幕组挺辛苦的。那么,假如你是上面新闻里被抓的字幕组成员,假如你的网盘受到监控、传输被监听,假如给你一次重来的机会,你该怎样避免被抓到呢……?

再假如你不是很放心云存储厂商,你怕他们泄露隐私,但是你又不得不使用,那该怎么办呢?

PS,这不是想要说"匿名术",这只是想说,怎样能够在轻度危险的情况下安全的使用云盘;同时也不会涉及到那些很牛逼的破解技术,比如说"冷启动攻击"什么的。

使用VeraCrypt创建加密卷,并将加密卷上传

创建加密卷,哪怕拿到它,没有密码也是无法解密的。在轻度危险的情况下,大概也不会有人揍你胁迫你交出密码。至于加密卷的密码,可以使用某些支持端到端加密的IM软件、或者是GPG发邮件等方法告知接收人。

对于那些不信任云存储厂商但又没办法的人,创建加密卷可能是非常棒的办法了——同时这时候支持差分同步就要好太多太多了。

使用VeraCrypt创建加密卷具体方法,可以参考我的博文《2016版:密码学科普,兼谈GnuPG和VeraCrypt》

使用GPG创建加密文件

这个本质和上面是一样的,只不过非对称往往速度不占优势

使用WinRar、7zip等开启文件名加密功能

一定要记得开启文件名加密功能,否则,哎嘿嘿还是能看到文件名的。

[学校上网系列]3. 从网盘秒传中想到的:不要想当然[学校上网系列]3. 从网盘秒传中想到的:不要想当然

注意:不要对加密卷再次使用WinRar等工具进行压缩

为啥捏?学习一点点信息论、密码学的人大概会懂,加密过的东西的熵都是很高的,是压不动的,还浪费你CPU,非得想弄成压缩包,或者是纯粹利用压缩软件的分卷压缩功能,请记得选"只存储"这个选项。

总结

最近心情比较浮躁,这篇文章也写得比较草率,一度都觉得想放弃了。近几天我也会尽快更新“美文推荐”的。最后,留下一句话:

有些人总觉得,我踢球进门了,是我球技好;射偏了,那是打雷吓到了我。其实真正起决定性作用的是球技,打不打雷下不下雨只是次要因素。


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/school-3.html
喜欢 (14)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论(代码和日志请使用Pastebin或Gist)
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(15)个小伙伴在吐槽
  1. rsync可以对veracrypt的加密卷进行增量同步吗? 我使用 rsync -avP --delete 原加密盘 备份加密盘 测试发现不行,rsync应该是没有识别出原加密盘的数据变动,备份加密盘依然是维持在第一次同步的状态(就是什么都没有)
    axaxax2022-12-16 19:14 回复
  2. 呃,还有本地存储……比如自建个NAS服务器……(不过我没钱) 不过,呃,比较私人的数据(比如家庭照片什么的)大概都会留有本地备份吧,毕竟这些网盘公司都不可靠。 如果数据是文本类的,大概也不会很大,用 Git 直接搞定。(不过 Git 不是增量式的) 如果数据是大型数据库的……这不是一般人的会有的东西…… 如果是同步用 Syncthing 也省事。 所以,大部分人的占空间最大的就是片子类的(或者无损音乐?或者超大的软件包?或者一大堆电子书?),最好的解决方法是买硬盘……不过,其实,这些大部分东西好像也没啥敏感的,除非你的内容真的是敏感类的,如果有敏感需求上 VeraCrypt。不过等一下,敏感类的东西干嘛还要存在网盘里对吧?用VeraCrypt存本地好了。没钱倒是可以考虑网盘 + VeraCrypt的。呃,但是最后,你还是要付带宽费用的对吧。 如果是考虑文件分享,那么也许可以考虑一下,如果有特殊需求再上加密好了。 对于网盘如果要拿来分享文件,个人认为百度实在太烂,也许微软和Dropbox的不错。 如果当作硬盘来用,那么还是算了吧。
    example2019-05-26 15:55 回复
    • 电影 音乐和游戏 这三个应该是大头了?拿个树莓派,插一个128G的卡,如果有IPv6的话,很容易就有本地存储啦(丢数据报警)
      Benny小土豆2019-05-27 09:27 回复
      • 啊,树莓派,突然感觉自己也想要一个(顺便还自带正版 Mathematica)(不过依然没钱)。128G 的卡(是SD卡吗?)……我感觉不是很好……然后开始折腾自建了一个小型NAS。嗯,听上去感觉还不错。呃,等会,我可以问一下这个耗电量怎么样?
        example2019-05-27 14:36 回复
        • 128G的microSDHC或者microSDXC?5V1A的输入,撑死5W,平常待机估计也就1W不到吧
          Benny小土豆2019-05-27 14:42
        • 那还挺好的,不过 128G 的 microSD 看着就感觉有点慌……
          读写速度多少比较合算?
          CF卡现在看上去好像已经过气了……感觉CF卡不容易掰断……不过 microSD 是不是比较脆?也许不怎么拿出来比较好。
          (看着别人用树莓派,自己在整积灰TP-Link?)
          example2019-05-31 02:20
        • ?class 10?
          Benny小土豆2019-05-31 09:32
  3. 震惊!!!!!!!!!!!!!!!!!!!!!!
    只会傻瓜软件的傻瓜2018-02-14 15:04 回复
    • 震惊?什么?
      Benny小土豆2018-02-14 22:37 回复
  4. 文章很有趣。有价值的内容也不少。但我觉得VeraCrypt有点杀鸡用牛刀了,而且这东西会严重损害硬盘寿命; 我个人推荐百毒盘+GPG(重要资源可以自己生成个sha256存在本地防止资源被掉包),也推荐分布式的syncthing(开源)来备份(支持增量同步); 另外,不知道作者有没有好的aes加密工具(开源的)可以推荐下?
    atom19892017-02-24 01:40 回复
    • 公钥密码的的速度太慢,分布式的话,BTSync也可以但是如果只是自己的话...感觉不是那么方便。AES加密工具,我目前能想到的只有VeraCrypt,支持aes和aes的那几个候选算法(twofish、Serpent啥的),跨三平台,不放心的话也可以自己编译。使用一些压缩工具自带的加密也凑合吧,但是我感觉这样的安全性尚可但是远远不够,毕竟那些压缩工具的专职不在加密、而且他们应该不会经过完整的密码审计工作,鬼知道他们的实现会不会有bug。
      Benny小土豆2017-02-24 08:23 回复
  5. 存储服务有个实用的功能叫做“去重”,会找存储里的所有重复文件删除并创建链接。然后建立索引,上传的时候进行哈希之类的去查找,如果找到,创建一个引用就好了。所以说,其实“云”很不安全你上传的东西,基本上是永远都不会被删除的了。这就是所谓的高可用。本地备份异地备份远程备份实时同步……
    R0uter2016-11-11 22:31 回复
    • 别以为你删掉了,其实肯定躲在服务器的某个扇区里呢,只是你自己给设置成不可见(嗷为什么我觉得像用防火墙把自己挡在了门外?)
      Benny小土豆2016-11-12 10:22 回复
      • 基本上就是这么个道理,只要服务器上还有用户保持对这个文件的引用,它就不会真的被删除。只有在所有人都在自己账户“删除”了这份文件之后,这份文件才会在一定时间后(很有可能是总空间达到一定阈值)被清理删除。而在中国,这个时间有国家规定,是三个月还是三年来着记不清了。 最后,对于大多数企业来讲,只要不是“钱不够”,一般都有这么一条“不成文的规定”:只增不减。
        R0uter2016-11-12 14:19 回复
        • 我记得短信貌似是90天,其他的或许可以参考下《网络安全法》(。•́︿•̀。)很久之前在注销Gmail的时候Google也告诉我最长可能xx天才会被完全删除。
          Benny小土豆2016-11-12 14:28