#windows #encryption #hardware #hash #signing
Вопрос:
Я работаю над проектом, который выполняет большой объем хэширования, подписи, а также асимметричного и симметричного шифрования. Поскольку эти шаги оказывают существенное влияние на нашу производительность и доступную нагрузку, мне было интересно, существует ли аппаратное решение для разгрузки работы.
Я немного порылся в интернете, чтобы выяснить это, и единственные предметы, которые я могу найти, посвящены связи на основе SSL. Мне нужно более универсальное решение, которое позволит мне ускорить подписание и шифрование независимо от того, где это происходит.
Можно ли адаптировать эти решения на основе SSL (возможно, это просто маркетинг, и его было бы легко повторно использовать в другом месте)? Есть ли хороший универсальный сопроцессор, который может помочь?
Мне это нужно в коробке на базе Windows Server 2008, но я был бы заинтересован в решениях на любой платформе.
Ответ №1:
Если алгоритмы, над которыми вы работаете, являются стандартными алгоритмами шифрования, такими как 3DES и AES, определенно есть доступное оборудование. Hifn является наиболее известным, но у Broadcom также есть линейка чипов, приобретенных BlueSteel несколько лет назад. У nCipher также есть линейка продуктов для шифрования, хотя, когда я в последний раз смотрел на них (много лет назад), они были гораздо больше сосредоточены на оборудовании для безопасного управления ключами, чем на ускорении блочных алгоритмов.
Даже карты, предназначенные для SSL, могут быть вам полезны, хотя вам нужно будет получить доступ к деталям низкого уровня. Самая большая победа для оборудования SSL-это экспоненциальный и широкий мультипликатор, оба из которых, как правило, доступны независимо в аппаратном обеспечении, о котором я знаю. Если вы используете алгоритмы асимметричного шифрования, эти два устройства, вероятно, также будут вам полезны.
Вам также следует проверить, доступна ли более эффективная реализация программного обеспечения. Например, Дэн Бернштейн и Питер Швабе опубликовали в сентябре 2008 года статью об оптимизации AES для современных процессоров. Реализация программного обеспечения была помещена в общественное достояние (т. е. Откажитесь от всех авторских прав, используйте ее так, как вам нравится).
Наконец, будущие процессоры AMD (и, возможно, Intel) будут включать SSE5, который добавляет инструкции, специально полезные для AES. Если вы сможете продержаться до этого времени, ваше следующее обновление сервера может обеспечить всю необходимую аппаратную поддержку.
Ответ №2:
Я не уверен, насколько это будет полезно, однако я видел несколько работ, посвященных использованию графического оборудования для ускорения шифрования
удачи.
Ответ №3:
Несколько компаний производят оборудование, специфичное для криптографии. Например, недавно я закодировал поддержку в приложении для аппаратного устройства nCipher, которое обрабатывало AES на карте (и поддерживало многие другие алгоритмы шифрования). Они недешевы, но поддерживают множество алгоритмов и режимов работы.
Ответ №4:
Наиболее популярным аппаратным крипто-движком является VIA Padlock, входящий в состав процессоров C3, C7 и более поздних версий. Это низкоэффективные, маломощные устройства; но (предположительно) они легко превосходят Core2 по криптоалгоритмам.
Ядро Linux 2.6.16 и более поздние версии включают поддержку RNG, MD5, SHA1/256, SSL, GPG и других стандартных функций. Я не уверен насчет ssh.
Вы упомянули не SSL, поэтому существующий код может вам не пригодиться, но на сайте Via есть документация, необходимая для его использования в пользовательском пространстве.
Ответ №5:
В Windows вы хотите найти устройство, имеющее API, поддерживающий MSCAPI, CAPING или PKCS#11, первый и последний очень распространены, однако MSCAPI не поддерживает аппаратные AES/3DES.
nCipher (теперь Фалес) Сделайте несколько коробок или карт PCI/PCIe, которые поддерживают вышеуказанное (и поддерживают openssl), а также поддерживают другие платформы, включая Linux и Solaris, Safenet также использует аналогичное оборудование с аналогичной поддержкой платформы.
Если бы я начинал, я бы выбрал PKCS#11, тогда у вас будет хороший выбор языков для написания, включая C или java.
Если вы хотите писать на C#/.Net, вы можете использовать MSCAPI из .Net или вы можете подключиться к библиотеке DLL PKCS#11 для вашего оборудования.