GnuPG加密所有文件上传

时间:2011-05-13 01:05:04

标签: file-upload public-key-encryption

我希望在文件上传时对其进行加密,通常会发生的事情是它被写入磁盘,然后你可以从那里加密,我想在此之前对其进行加密。 是否有任何模块可用于http服务器或允许我这样做的应用程序框架,我不想花费大量时间为此编写软件,但如果需要我必须这样做。

重要的是没有未加密的记录会触及硬盘。

硬盘驱动器已经使用aes进行加密,但由于第三方可以在不知情的情况下访问服务器,我希望如果有某种方法可以防止实际数据/ /容易受到攻击。

3 个答案:

答案 0 :(得分:0)

系统管理员回答:ramdisk保留区域用于预加密数据。从不接触磁盘,问题解决了。否?

答案 1 :(得分:0)

以下是我收到但尚未测试的答案,在我完全测试它的作用之前,我不会将其标记为答案。

答案是这个django项目,它用于泄漏网站,它将整个文件读入内存然后加密。 http://gitorious.org/deaddrop/deaddrop/blobs/master/drop/views.py

然而,有一种方法可以分块数据

http://docs.djangoproject.com/en/1.3/topics/http/file-uploads/

还有一个问题是httpd处理文件上传并且可以忽略应用程序框架...所以我需要在我确定它正在做什么之前测试它。

然而,说我很确定你可以用wsgi做到这一点我很确定当你使用带有apache的mod_wsgi时django会这样做...不确定其他网络服务器使用什么,我更喜欢使用某些东西更轻盈。

编辑:如果某人确实碰巧严格测试了这一点,并将其作为答案发布,我会将其标记为答案。

答案 2 :(得分:0)

我最终做的是使用mod_wsgi ..

我可以将上传作为流,然后使用PyCrypto对其进行加密 很好地工作

        inputLength  = int(environ.get('CONTENT_LENGTH', 0))
        input = environ['wsgi.input']
        f = open(dropDir + '/input','w')
        while 1:
                remain = inputLength - f.tell()
                if remain <= 0: break
                chunk = input.read(min(chunksize, remain))
                if  not chunk: break
                f.write(crypt.encrypt(chunk))
        f.close()

当我这样做时,我最终使用有状态密码加密整个postdata并将其写入文件,然后在使用GnuPG加密后将密钥保存到另一个文件。