首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以对文件的一部分进行加密以供上传,这样就不需要首先加密整个文件了?

是否可以对文件的一部分进行加密以供上传,这样就不需要首先加密整个文件了?
EN

Security用户
提问于 2019-11-07 22:28:53
回答 1查看 310关注 0票数 0

通常,要上传加密文件,我首先对整个文件进行加密,然后再上传加密的文件。但是,对于大型文件,这并不容易,因为我需要一个外部硬盘驱动器来保存加密的文件。我想知道是否有可能加密一个大文件,比如500 GB大小的文件,一点一点地加密,然后将加密的信息一点一点地发送到一个上传流中,比如Google?谢谢。

EN

回答 1

Security用户

发布于 2019-11-08 00:27:41

是。您的主要问题是,您需要一个允许从流接收文件的客户端,而不是单个文件。

例如,如果您通过ssh复制文件,通常会执行以下操作

scp myfile.txt远程主机:

但是,这期望前面的文件存在。但这恰好相当于:

cat myfile.txt _ ssh远程主机'cat > myfile.txt‘

它是一种表单,您现在可以轻松地插入加密筛选器。

cat myfile.txt \ gpg -e -r AA00BB00CC00DD _ ssh远程主机'cat > myfile.txt.gpg‘

另一种选择是使用一个虚拟文件系统,它将文件显示为加密,但在访问时执行加密。这将使加密层对执行上载的程序透明。

这方面的一个例子是使用成群熔断器文件系统实用程序。手册页本身展示了一个示例,说明如何将其与--reverse标志一起使用,以便创建用于复制文件的加密视图。

最后,不需要双磁盘空间的最后一种方法是通过明文加密文件。也就是说,使用一个程序对文件的前10³进行加密,并用加密的程序替换原始文件的前10³。然后是第二块10 so,以此类推。

然而,如果进程中途失败(例如由于停电),您将得到一个半加密文件,这是有风险的。如果要使文件解密,则需要在上传后执行第二次内联解密。只有当您希望将本地文件加密,但您没有空间以不同的方式处理它时,我才会推荐它。但它还是解决了你的问题,

我认为最常见的cli命令是scpsftprsync,它们都提出了相同的问题。

对于普通文件,不考虑元数据

或任何其他任意的块体大小

更新: OP注释询问是否可以将文件分成不同的部分,分别加密和上传。这显然是可能的。您只需要依次提取文件的片段,加密和上传它们。

下面的脚本就是这样做的:

代码语言:javascript
运行
复制
#!/bin/bash
FILENAME=file.dat  # File to encrypt, set to "$1" if using as a command
KEY=user321627  # Identifier of the PGP key to use
BLOCKSIZE=$((10 * 1024 * 1024))  # Use 10 MB chunks
FILESIZE=$(stat -c %s "$FILENAME")
BLOCKS=$(( ($FILESIZE - 1 ) / $BLOCKSIZE + 1))
for i in $(seq 1 $BLOCKS); do
    echo Encrypting part $i of $BLOCKS
    dd if="$FILENAME" bs=$BLOCKSIZE skip=$(($i - 1)) count=1 |       gpg -e -r $KEY > "$FILENAME.$i.gpg"
    sha256sum "$FILENAME.$i.gpg" >> hashes.txt
    echo Uploading part $i
    upload-file "$FILENAME.$i.gpg"
    rm "$FILENAME.$i.gpg"
done

根据需要调整。我假设将gpg加密到OpenPGP密钥(通常是一个很好的选择),并且有一个命令upload-file将作为参数传递的文件发送到最终目的地,例如Google。

考虑到除了机密性之外,您可能还需要完整性,所以我将在hashes.txt上存储每个加密部分的散列,以便您以后可以验证每个部分。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/220854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档