GnuPG шифрует все загрузки файлов - PullRequest
1 голос
/ 13 мая 2011

Я хотел бы зашифровать файл при его загрузке, обычно получается, что он записывается на диск, а затем вы можете зашифровать его оттуда, я хотел бы зашифровать его до того, как это произойдет. Есть ли какой-нибудь модуль для http-сервера или для инфраструктуры приложений, который позволил бы мне это сделать, я не хочу тратить много времени на написание программного обеспечения для этого, но если потребуется, я сделаю это.

Важно то, что ни одна незашифрованная запись никогда не касается жесткого диска.

Жесткий диск уже зашифрован с использованием aes, но поскольку доступ к серверу может быть получен третьей стороной без моего ведома, я бы предпочел, если бы был какой-то способ предотвратить фактическую / легкую компрометацию фактических данных.

Ответы [ 3 ]

0 голосов
/ 14 мая 2011

Вот ответ, который я получил, но еще не проверял, я не буду отмечать его как ответ, пока не проверил, что именно он делает.

Ответ - это проект django, он предназначен для утечек веб-сайтов, он читает весь файл в память и затем шифрует его. http://gitorious.org/deaddrop/deaddrop/blobs/master/drop/views.py

Однако есть способ разбить данные на части

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

Существует также проблема, заключающаяся в том, что httpd обрабатывает загрузку файлов и может игнорировать структуру приложения в зависимости от ... поэтому мне нужно много раз проверить его, прежде чем я буду уверен, что он делает.

Тем не менее, я уверен, что вы можете сделать это с помощью wsgi, что я вполне уверен, что django делает, когда вы используете mod_wsgi с apache ... не уверен, что используют другие веб-серверы, и я бы предпочел использовать что-то более легкий вес.

edit: если кто-то действительно тщательно проверяет это и публикует его как ответ, я отмечу это как ответ.

0 голосов
/ 17 мая 2011

В итоге я использовал 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()

Когда я это делаю, я в конечном итоге шифрую все постданные с использованием шифра с сохранением состояния и записываю их в файл, а затем сохраняю ключ в другом файле после использования GnuPG для его шифрования.

0 голосов
/ 13 мая 2011

Ответ системного администратора: область хранения ramdisk для предварительно зашифрованных данных. Никогда не трогает диск, проблема решена. Нет

...