Лучшее шифрование для больших объемов данных (скорость необходима)? - PullRequest
3 голосов
/ 20 февраля 2011

Я относительно новичок в C # и шифровании, поэтому, пожалуйста, потерпите меня.Я работаю над бизнес-приложением (в C #, .NET 4.0, VS 2010), которое хранит довольно много данных, и оно также должно быть способно считывать довольно большие объемы данных и фильтровать их для отображения (в основном вdatagridview, иногда просто некоторые расчеты ...).В любом случае данные должны быть зашифрованы, и должна быть возможность шифровать и дешифровать только части файлов данных (для записи и чтения со случайных позиций).Скорость очень важна (пользователь не должен ждать загрузки и отображения данных), безопасность занимает второе место.Компьютер, на котором он будет работать, будет по крайней мере двухъядерным с тактовой частотой 2,0 ГГц и оперативной памятью не менее 2 ГБ.

Я думал об использовании относительно большой (около 1 МБ) панели xor, которая будет рассчитываться во время выполнения.Я думаю, что нестандартный дизайн файла в двоичном коде в сочетании с xor должен обеспечивать относительно хорошую безопасность и скорость.Но теперь я начал думать об использовании чего-то более сильного, если оно все еще достаточно быстрое, возможно, AES (возможно, реализации .NET: Rijindael или Serpent или Twofish).Так что вы думаете, это лучше?Что обычно используют другие компании / разработчики в таких случаях?Как быстро / медленно AES?Операции ввода-вывода уже очень медленные, и я не знаю, ухудшит ли AES ситуацию или, возможно, ее даже не заметят.

Или у вас есть другие идеи о том, как шифровать данныедостаточно быстро?

ps Я знаю, что если кто-то успешно (!) отлаживает или разбирает код, он может расшифровать данные.

РЕДАКТИРОВАТЬ: я разрабатываю только пользовательское приложение для клиента,поэтому я не могу заставить их иметь лучшее оборудование, я могу порекомендовать лучшее оборудование.Мое программное обеспечение будет состоять в основном из 3 частей: POS, сервер и какой-то менеджер.Если вы считаете, что моя первая идея (своего рода xor) бесполезна и что мне следует использовать более качественное шифрование, по крайней мере, попытайтесь оценить, какое оборудование (минимум) даст желаемые результаты («достаточно быстро» = расшифровка не должнавлияние на отображение данных, например, если для загрузки и отображения данных в режиме просмотра данных требуется 1 с, то для дешифрования то же самое не должно быть более 1,2-1,3 с).

Ответы [ 4 ]

6 голосов
/ 20 февраля 2011

безопасность идет вторым

Не выбирайте скорость и безопасность. Попробуйте их обоих!

Алгоритмы шифрования, такие как Blowfish или Rijndael / AES, довольно производительны ( см. ). Определенно инвестировать в лучшее оборудование! Настройка вашего сервера не совсем современная. На самом деле у моего ноутбука гораздо больше энергии, чем у вашего сервера;)

Аппаратное обеспечение намного дешевле, чем часы разработчика . Придерживайтесь стандартных и хорошо проверенных методов шифрования! Если ваше оборудование является современным, и вы все еще сталкиваетесь с узким местом во время шифрования / дешифрования, то пришло время поразить мозг. Не раньше.

Только мои 2 цента.

Обновление

Определенно рекомендую вашему клиенту покупать лучшее оборудование. Я не могу дать вам ответ на вопрос «какого оборудования будет достаточно» , потому что вы не указали, какая скорость является приемлемой для какого объема шифрования / дешифрования данных (просто очень сложно ответить потому что это зависит от очень многих факторов). Я бы порекомендовал вам (или вашей компании) арендовать оборудование для тестирования производительности с использованием стандартных методов шифрования. Как только вы найдете подходящую настройку оборудования с хорошей производительностью для своих нужд, предоставьте эти измерения производительности вашему клиенту.

4 голосов
/ 20 февраля 2011

Прежде всего вы должны выяснить, действительно ли накладные расходы, предоставляемые популярными алгоритмами, вообще будут проблемой. Реализации алгоритмов в .NET быстрые, и вы должны ожидать, что сможете обрабатывать 50 - 400 МБ / с необработанных данных (естественно, очень грубая цифра ... smile ). Если вашим источником данных являются запросы SQL (а это часто бывает), у вас обычно есть источник данных, предоставляющий данные с гораздо более низкой скоростью, что ограничивает влияние шифрования / дешифрования на производительность.

Для получения подробной информации о производительности вы должны попробовать это в своем приложении.

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

2 голосов
/ 21 февраля 2011

ПК Core2 с частотой 2,0 ГГц должен иметь возможность шифровать или дешифровать данные с помощью AES со скоростью более 120 МБ / с (сто двадцать мегабайт в секунду), используя реализацию в OpenSSL ,с одним ядром.Это быстрее, чем современный жесткий диск или гигабитное соединение Ethernet.

С точки зрения безопасности, ваша идея многоразового использования "xor pad" - это просто мусор.Не делай этого.

0 голосов
/ 20 февраля 2011

Возможно эта статья может вам помочь.

Кроме того, вам нужно определить достаточно быстро ... сделать его измеримым, поскольку это относительный термин.

...