Кунсткамера

Remote DCrypt — параноидальное шифрование

Cloud Drive своими руками. Берем шифрование файлов под полный контроль

Бинарные файлы и исходный код .

Небольшая утилита, написанная на C# .NET2.0 для курсовой работы. Актуальность решения исходит из новости (http://habrahabr.ru/blogs/infosecurity/118220/). Естественно, это было изначально известно, но все равно неприятно.

А что нужно для надежного хранения зашифрованных файлов?

  1. Не хранить ключи для дешифровки файлов там, где они хранятся в зашифрованном виде. Использовать симметричное шифрование.
  2. Хранить даные ключи в зашифрованном виде. Притом, ключ для дешифровки должен генерироваться из пароля, который в свою очередь также не должен где-либо храниться.
  3. Обеспечить шифрование канала передачи файлов. Из п.п. 1-2 следует, что файлы нужно шифровать поточно на стороне клиента и передавать на сервер шифрованный файл. Таким образом на стороне клиента не останется записей о том, что даный зашифрованный файл был на его компьютере. Саму передачу файлов нужно шифровать дополнительно, чтобы нельзя было перехватить и зашифрованный файл.
  4. Шифрование канала передачи зашифрованных файлов вести с помощью симметричного шифрования.
  5. Реализовать на практике легко воспроизводимый алгоритм.
Первый запуск программы

Содержимое файлов шифруем алгоритмом AES. Ключи для дешифрирования файлов храним в отдельном файле «keys.key», который шифруется с помощью пароля, вводимого с клавиатуры. Пароль никуда не сохраняется.

Соединение с сервером осуществляем по протоколу SSH2. Здесь важно получить реальный ключ с сервера, чтобы исключить расшифровку потока где-то на середине пути (а-ля MITM SSL).

Также шифруются имена файлов, используя шаблон

<PREFIX>.<CRYPTED_NAME>

например

0.A765.A799.V86F.G78.65D

Для шифрования имен файлов используем отдельный ключ.

Остальное – дело техники. На сервере файлы будут храниться в следующем виде

-rw-r—r— 1 w_675655 virtwww 51452 27 ??? 01:12 0.5678.754.899.5633.4678
-rw-r—r— 1 w_675655 virtwww 21487 26 ??? 00:13 0.677.345.234.874.876
-rw-r—r— 1 w_675655 virtwww 2514785 26 ??? 04:13 0.878.3567.6767.332.226
-rw-r—r— 1 w_675655 virtwww 651233 27 ??? 05:25 0.563.536.7643.245.5654
-rw-r—r— 1 w_675655 virtwww 213 26 ??? 06:27 0.123.456.6542.334.756
-rw-r—r— 1 w_675655 virtwww 735634 27 ??? 04:45 0.1154.734.567.211.652
-rw-r—r— 1 w_675655 virtwww 78657464 27 ??? 02:01 0.654.357.323.777.342
-rw-r—r— 1 w_675655 virtwww 4566 26 ??? 15:24 0.555.632.7543.234.634

Удачи!

Показать больше

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Закрыть