2008-10-12 3 views
2

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

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

Возможно ли адаптировать эти решения на основе SSL (возможно, это просто маркетинг, и его можно было бы легко использовать в другом месте)? Есть ли хороший общий сопроцессор, который может помочь?

Мне это нужно в Windows Server 2008, но меня будут интересовать решения на любой платформе.

ответ

1

Если алгоритмы, над которыми вы работаете, являются стандартными алгоритмами шифрования, такими как 3DES и AES, есть определенно доступное оборудование. Hifn является самым известным, но Broadcom также имеет ряд чипов от их приобретения BlueSteel несколько лет назад. nCipher также имеет линию продуктов шифрования, хотя, когда я смотрел на них (много лет назад), они были гораздо более сосредоточены на оборудовании для безопасного управления ключами, чем на ускорении блочных алгоритмов.

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

Вы также должны проверить, доступна ли более эффективная реализация программного обеспечения. Например, Дэн Бернштейн и Питер Швабе published опубликовали в сентябре 2008 года статью об оптимизации AES для современных процессоров. Реализация программного обеспечения была размещена в общественном достоянии (т. Е. Отменить все авторские права, использовать его, как вам нравится).

Наконец, будущие процессоры AMD (и, вероятно, Intel) будут включать в себя SSE5, в котором добавлены инструкции, специально предназначенные для AES. Если вы можете продержаться до тех пор, ваше следующее обновление сервера может предоставить всю необходимую вам аппаратную поддержку.

1

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

Heres a quick google search

удачи.

1

Несколько компаний производят криптографическое оборудование. Например, недавно я закодировал поддержку в приложении для устройства nCipher, которое обрабатывало AES на карте (и поддерживало многие другие алгоритмы шифрования). Они не дешевые, но они поддерживают множество алгоритмов и режимов работы.

1

Самый популярный аппаратный криптодвигатель - VIA Padlock, входящий в состав процессоров C3, C7 и более поздних версий. Это низкопроизводительные, маломощные; но (предположительно) легко превосходят Core2 для криптоалгоритмов.

Ядро Linux 2.6.16 и более поздние версии include support для RNG, MD5, SHA1/256, SSL, GPG и других стандартных вещей. Я не уверен в ssh.

Вы упомянули не SSL, поэтому вам может не пригодиться существующий код, но на сайте Via есть документация, необходимая для его использования из пользовательского пространства.

1

В окнах вы хотите найти устройство с API, поддерживающим MSCAPI, CAPING или PKCS # 11. Первый и последний все очень распространены, однако MSCAPI не поддерживает аппаратное обеспечение AES/3DES.

nCipher (теперь Thales) Сделайте несколько коробок или PCI/PCIe-карт, поддерживающих вышеуказанные (и поддерживающие openssl), а также поддерживайте другие платформы, включенные в Linux и Solaris, и Safenet тоже используют аналогичное оборудование с аналогичной поддержкой платформы.

Если бы я начинал, я бы выбрал PKCS # 11, тогда вы получите хороший выбор языков для написания, включая C или java.

Если вы хотите написать в C# /. Net, вы можете использовать MSCAPI из .Net или вы можете PInvoke в DLL PKCS # 11 для вашего оборудования.