查看原文
其他

校验和与验证系列科普

欢迎关注→ GaiaDaily
2024-11-19



什么是校验和?

校验和(checksum)是一个由数字和字母组成的字符串,它独一无二地标识某个特定的文件,无论其类型为何(如.mov、.ari、.dng、.png、.txt)。你可以把它们想象成指纹:任意两根手指都不会有相同的指纹(不,连同卵双胞胎都不会相同!)。同理,任意两个随机文件也不会有相同的校验和:不同的文件=不同的校验和。这使人们(显然是在计算机应用程序的帮助下)可通过对比校验和值来确保复制或装载文件时得到了百分百一致的拷贝。



为什么校验和在媒体和娱乐行业中很重要?

视频文件是由字节组成的。很多时候,当文件,尤其是视频文件,被移动时,这些字节就可能损坏、颠倒或完全丢失。这可能导致播放视频时出现延迟或故障。类似访达或文件资源管理器这样的简单应用程序并不使用校验和,只会“看一眼”正在移动或复制的文件或文件夹,说:“OK,看着有10 GB。好啊我这里空间足够”,然后把文件丢到目标位置就完事儿了。而当文件只移了9.8 GB,丢了0.2 GB,或者总共移了10 GB,但字节3.2和3.3掉了个个儿,3.3跑到3.2前面去了的时候,问题就出现了……你能看出问题出在哪儿了吧!访达和文件资源管理器并没有安全措施来避免这种情况。


在何时何地使用校验和是合适的?

你可以在传输任何文件类型时使用校验和。许多地产、医生和律师事务所在将文件从一个地方移动到另一个地方时会使用校验和。你肯定明白为什么丢失文件或文件夹对这些行业来说是灾难性的。而在媒体和娱乐界,丢文件等于丢镜头。有时这些镜头不可复制或复制成本太高。无论如何,这个问题的简短答案是:“永远”记得使用校验和。任何时候只要移动了文件或文件夹,都应该使用校验和。抱歉哦在这里玩了个哈利·波特梗,我忍不住(毫无歉意)!

“永远”记得使用校验和


谁应该使用校验和?
老实说,如果你认真看待数据完整性,就该使用校验和。不仅如此,你还得确保自己有份包含所有校验和值的报告来避免出岔子。很多制片厂和保险公司都要求采用 ShotPut Pro 这类使用校验和算法的装载应用程序。如果没有报告,你没法证明用了校验和。

关于第二部分的内容,之前我们问了你们最感兴趣的是什么,许多人回答说,他们想知道每种校验和的定义和解释,以便在不同的情况下更好地使用它们。当然你们都有在用ShotPut Pro装载数据,对吧?又或许你正在研究哪种备份软件比较适合你。本系列文章也会比较一下各种备份软件和它们对校验和的使用。

我们不会白费力气做重复工作,但在该写明内容来源的地方都会写明来源!所有用来解释和定义校验和的资料都可在文内找到。如果你在找比较轻松的东西读……那这些内容不适合你!但如果你想获取更深入的信息,这些内容信息量够大。

xxHash:xxHash是一种非常快的非加密哈希(hash)算法,其运行速度接近RAM上限。它有两种形式,32位和64位。(github. io上的SMHasher)

ShotPut Pro、ShotSum 和 PreRoll Post 使用 xxHash 64位。我们比较推荐使用 xxHash 作为校验和类型,除非你明确需要使用其他类型。xxHash 的运行表现会优于 MD5,因为它可以以 RAM 的速度运行,而 MD5 的表现则取决于 CPU 处理能力。

值得注意的是,一些英国公司不接受 xxHash,所以如果有偏好或要求,一定要和客户或保险公司确认。


MD5:MD5算法是一种广泛使用的哈希函数,生成的是128位的哈希h值。它是验证数据完整性的最佳校验和类型。(维基百科MD5)

多年来,MD5是可用的最快和最安全的校验和。尽管xxHash的应用越来越广泛,但仍有许多公司要求使用MD5校验和。

在选择校验和时,首要考虑的是它的速度有多快,而在文件方面,校验和冲突的几率是多少?冲突概率指的是两个不同文件映射到相同校验和值的概率。xxHash很优秀,因为它很快,但仍然存在低冲突概率。很多人甚至认为哈希函数比逐字节比较更安全,因为在很多情况下,硬件返回错误结果的几率会高于校验和冲突几率。
SHA-1:(Secure Hash Algorithm 1-安全哈希算法1)这是一种加密哈希函数(cryptographic hash)。SHA-1会生成160位(20字节)的哈希值,也被称为信息摘要(message digest)。SHA-1哈希值通常呈现为十六进制数字,长度为40位。(维基百科SHA-1)

SHA-2:(Secure Hash Algorithm 2-安全哈希算法2)256和512——这是SHA-1的升级版本,包括6种哈希函数,Imagine Products软件提供6种哈希函数中的2种。加密哈希函数是在数字数据上运行的数学操作;通过将计算得到的“哈希”(算法执行的输出)与已知和期望得到的哈希值做比较,使用者可以确定数据的完整性。(维基百科SHA-2)

不同保险公司或政府机构有时仍要求使用 MD5 和部分 SHA 校验和算法,因为它们存在已久且比较成熟,但它们被设计成了加密哈希。加密哈希最初是用来存储密码之类的东西的。它们本就该很复杂,甚至本就该慢,以确保密码的安全性。但这对我们多数人来说并不理想,所以 xxHash 才会应运而生。

除非你有特定需求,否则我们比较推荐使用xxHash或偶尔使用MD5,因为其他方法通常不值得拿冲突几率换速度。以SSD至SSD拷贝的情形举例,xxHash 之外的任何算法表现可能都会欠佳。


比较校验和软件

为这项工作选择合适的工具是个好主意,而测试一下不同的工作流软件也是个好主意,因为这样你就会对确保数据完整性和准确性有把握。
不过,要记住一件事……

计算机的设计理念是在进行数据处理流的同时结合多个缓存。它们存在于硬盘、连接端口和计算机操作系统中。这种设计的目的是加快返回“已知”最近访问项目的数据请求。

想想你的浏览器是如何缓存你之前访问过的网页的。缓存浏览器历史记录允许浏览器在再次请求时快速显示最近访问过的页面,而不必每次重新下载整个页面。
苹果操作系统也有类似做法(硬盘本身也是如此)。最近访问的项目会被保存在一个周转的RAM缓存中,以方便快速显示。

因此,当软件要求操作系统从输出硬盘读取最近文件时,Mac OS会说:“噢!不用再去载一遍了,我这儿有一份呢!”然后直接返回缓存信息。如果你不需要比较和验证一份文件和它的副本,那这还挺不错。但它只是对源文件的重复,不是从输出磁盘新读取全部文件内容,所以对验证来说毫无意义,甚至在比较文件大小方面也不具安全性。

事实上,在苹果操作系统中,如果不明确绕过缓存,你就无法获得文件的硬盘(而不是从缓存中的)读取结果——了解这种做法的人只有经验丰富的程序员,或者那些对校验算法实际工作原理非常感兴趣的人——比如你!

要测试不同的备份软件,在Mac上打开活动监视器(Activity Monitor)程序。启动它,然后点击“磁盘”(Disk)。然后打开终端(Terminal)程序,输入命令“SUDO PURGE”刷新缓存。

准备好后,进行一次合理大小的装载——比如15 GB。然后查看右下表中的磁盘读写大小。为了进行校验和比较,读的大小应该是写的两倍。因为你只从源读取一次,向输出硬盘写入一次,然后再从输出硬盘读取回来计算校验和。
如果你有打算用在工作流中的软件或工作方法,而它没有让读的大小为写的两倍,那它其实没有检索磁盘内容来和源文件做比较,安全性也逊于真正的校验和比较。换句话说,文件在最终目标位置的拷贝实际上可能和源文件不匹配——如果你真正关心数据完整性,那这就很成问题了。

记住,如果一件事看起来好得难以置信——那它可能真的就不可信。

速度:面对现实吧,我们都在不断尝试把事请做得更快。当我的电脑需要两分钟来启动,那感觉像是要整整两年。当页面没有立即加载完毕,那感觉仿佛是世界末日又慢又痛苦地降临了。时间和速度是我们时刻关注的要素。而在媒体和娱乐行业,这些都至关重要。
因此,事关安全和快速地装载数据时,很多因素都可能对它产生重大影响。本文会对此做一些善意提醒,也会介绍一些装载数据时要考虑的事项,尤其是在你打算放弃安全换速度的情境中。

总线(bus)速度及硬盘速度:

1994年动作惊悚片《生死时速》(Speed)中的公交车飞跃

《生死时速》中,基努·里维斯(Keanu Reeves)的角色告诉我公共汽车的时速必须保持在50英里/每小时左右,而大家都知道,时间旅行的时速需要88英里/每小时……等等,咱说的可不是这个公共汽车(bus),也不是这个速度。

那么,什么是总线?速度和总线有什么关系?总线是连接到计算机上的两台或多台设备间的数据连接。总线使计算机的不同部分能够相互通信。

硬盘和笔记本电脑之间的连接即通过总线,因此受总线及其吞吐量的影响。正如DIT杰森·约翰逊(Jason Johnson)机智地指出的:“这就是为什么连USB 3的RedMag只能以120 MBps的速度装载数据。卡的数据传输总线即是限制因素。Lacie Rugged硬盘等等设备也是一样。” 尽管USB 3的吞吐量为640MBps,但传输量受限于RedMag的吞吐量。

不同的连接方式,有不同的速度吞吐量。记住这一点很重要!工作流中任何速度最慢或吞吐量最小的部分就是你工作的瓶颈。


虽然说的不是这种“瓶颈”,但它看着很酷,我们也总是想到阿姆斯特丹的IBC展会——阿姆斯特丹是喜力啤酒的老家

DIT瑞安·阮也给了我一个很好的比喻:“USB 3和雷电2就像美国高速公路上的限速和德国高速公路上的限速。雷电2当然可以让你跑得更快,但实际速度取决于多种因素,包括天气、交通状况、汽车轮胎性能等等。”我喜欢这个例子,因为它提醒我们,在装载或复制文件或文件夹时,需要考虑许多因素。这也引出了我的下一个话题,下面我会再引用一下杰森的话,因为他说到了点上!

“复制一个大文件比复制多个文件要快。ProRes与DNG或ARRI的区别可以归结为一系列‘握手’。想象一下:你做成了一笔交易,然后握手。这是ProRes。再想象你做成了几百笔小生意,每笔都握手。这是ARRIRAW。每次传输文件时,每一方都需要停下再开始操作。”这里还有一个因素是,有时你负担不起传输数百个文件——没关系!意识到你必须调整对传输速度的期望值很重要。

安全性:我们已经在前面的章节中讲过校验和是什么,如何确定使用哪种校验和以及怎么判断你的内容确实正在经过验证——如果没跟上进度,去读一下前四章的内容吧!

在考虑速度时,校验和类型是另一个要考虑的因素。直接复制粘贴是比较糟糕的做法(这我们都知道),因为没有任何机制可以保证拷贝100%和源文件一模一样。也就是说,没有任何机制会告诉你:“嘿伙计,我们复制好了源文件的所有数据。”而这是每一种校验和都会和你确认的事情。

那么,当你需要快速安全地装载某些数据,或者你愿意放弃一些安全性以获得更快的速度(这样做风险很高,但假设我们已经接到了这类请求,必须解决它的话),你该怎么办?

如果你需要速度也需要安全性,眼下适合你的正确校验和选择就是 xxHash。

“xxHash是一种非常快的非加密哈希算法,其运行速度接近RAM限制。它分为两种形式:32位和64位。(github. io上的SMHasher)

对于ShotPut Pro、ShotSum和PreRoll Post,我们用的是xxHash 64位。我们建议使用xxHash作为校验和类型,除非你明确需要采用其他类型。举例来说,xxHash可能优于MD5,因为它能够以RAM的速度运行,而MD5的速度则取决于CPU进程。”


如果你需要的是较低的安全性和较快的速度,可以选择文件比较验证而不是校验和验证——请记住,如果选择这个选项,就不会有任何机制告诉你“嘿伙计,我们复制好了源文件的所有数据”了(参见上文)。但这也是一种可能的选择,有其存在的合理性。在ShotPut Pro和myLTO中,我们称之为文件大小比较,我们甚至更进一步,提供了只计算源的校验和的选项,以供之后参考。再次重申,这不是最好的实操方式,但这种验证有其存在的合理性,并当速度是你的首要考虑因素时,你是得想想要不要采用这种验证方式。

自信地装载数据吧,还要记得留意《校验和与验证系列科普》的下一部分。

MHL或媒体哈希表(Media Hash List)是一种验证工具。它确保文件完整且未加更改地进行了移动或转移。MHL采用的是一些常用校验和算法,比如xxHash、MD5、C4和SHA-1。它是一份文件夹内容的列表或目录。

根据mediahashlist.org的说法:“MHL是一种XML格式,它列出了一个文件夹及其子文件夹中的所有文件,以及相应的校验和。”关于创建MHL文件的其他信息会随列表一起提供。

在传输数据,尤其是媒体文件时发生错误是很常见的,而且有时伴随着很高的代价。许多支持电影公司的保险公司都要求将校验和验证流程作为工作流的一部分。而MHL则通过创建原始文件夹结构的分布图把这一流程向前再推一步。它是检查下游文件变更的好工具。在起始点创建MHL让它成为了存档和长期存储的理想选择。


MHL的未来

目前,行业正在制定一套新的MHL标准,即ASC-MHL。Imagine Products软件公司正在与美国摄影师协会紧密合作以制定这一新标准,还有多家媒体和娱乐行业公司也加入了这一行列。参与者都希望ASC-MHL能成为数据完整性保护链的标准。
作为工作流方面的专家,我们相信我们在具体工作的实施过程中有着重要的贡献。我们的目标是推动媒体和娱乐行业开始使用易用的目录校验和。这也能提升云操作的验证能力和优化程度。生成目录校验和是在文件夹基础上完成的,与文件校验和一致。而一整个目录结构可以得到一个单一校验和。
在新规格中包含目录校验和会丰富验证功能。这是软件使用者的理想选择,也优化了云操作的传输带宽。它提供了更好的用户体验,并让终端用户能够处理“根校验和”而非整个校验和树。我们相信,结合了Merkle Tree技术的MHL将成为“air gap”数据处理和云存储策略的核心。它提供了在其整个使用周期中从原点检查数据的能力。而ASC-MHL目录验证使用了一部分相同基础技术使区块链成为可能。
作为媒体和娱乐行业的思想领袖,我们的职责是提供有关技术变化和最佳实操的深入见解和信息。而在这个不断发展的数字世界里,校验和验证正变得越来越重要。本文是《校验和与验证系列科普》系列的一部分。点击下方的系列阅读链接查看完整文章吧。


出处:Studio Daily
翻译:Charlie | 盖雅翻译小组




往期推荐

2022圣丹斯电影节幕后的摄影机


时间定格摄影:每秒拍摄100万帧


12K甚至更高 —— 你真的需要这么高的分辨率吗?


继续滑动看下一个
GaiaDaily
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存