Неэкспортный ключ ЭЦП что это такое

Обновлено: 21.11.2024

Аньес Бенасси-Кере, Рамон Маримон, Жан Пизани-Ферри, Лукреция Райхлин, Дирк Шенмейкер, Беатрис Ведер ди Мауро

В нашем взаимосвязанном мире всякий раз, когда возникает глобальный кризис, правительства должны решить, является ли дискриминация иностранных поставщиков частью решения или можно использовать иностранные ноу-хау и ресурсы для взаимной выгоды. Решения пожертвовать открытыми границами на алтарь какой-то другой цели обычно зависят от шагов — реальных или предполагаемых — предпринятых другими правительствами. В такие времена проверяются писаные и неписаные международные правила с последствиями, которые могут продолжаться еще долго после того, как кризис заполнил заголовки газет. Пандемия коронавируса не стала исключением.

Учитывая центральную роль Китая во многих международных цепочках поставок, существует значительный интерес к влиянию COVID-19 на глобальные торговые потоки (Болдуин и Томиура, 2020 г.), а также на стоимость и местонахождение прямых иностранных инвестиций (ЮНКТАД, 2020 г.) . Однако есть тревожный аспект торговой политики, который сейчас становится очевидным. Чтобы оценить его значение, вспомните, что Генеральный директор Всемирной организации здравоохранения утверждал, что «[мы] не можем остановить COVID-19, не защитив работников здравоохранения» (ВОЗ, 2020 г.). Этим работникам требуются перчатки, медицинские маски, респираторы, лицевые щитки, халаты и тому подобное. А с распространением Коронавируса возникла явная нехватка. В связи с этим ВОЗ призвала правительства увеличить производство средств защиты на 40 % и отменить экспортные ограничения.

Основываясь на недавнем анализе Global Trade Alert (2020), в этой колонке я оцениваю один из ключевых выводов, а именно то, что все больше правительств вызывают отвращение у своих торговых партнеров, запрещая или ограничивая экспорт медицинских товаров. запасы. Здесь под медицинскими расходными материалами понимаются защитные медицинские средства (такие как маски), а также лекарства и их ингредиенты.

Прибегать к экспортным ограничениям с начала этого года

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

Теперь очевидно, что эти экспортные ограничения кусаются. В начале марта 2020 года власти Германии прекратили доставку 240 000 масок швейцарскому покупателю, что побудило правительство Берна уволить посла Германии (NZZ 2020). Кроме того, французский приказ о реквизиции помешал Valmy SAS выполнить контракт с Британской национальной службой здравоохранения на поставку миллионов масок (Euronews 2020). Точно так же североамериканские покупатели китайских медицинских товаров сообщают, что заказы не выполнялись после начала распространения коронавируса (CNN Business 2020).

Проанализировав сообщения прессы, удалось выявить 24 страны, которые ввели либо формальный запрет на экспорт, либо фактический запрет на экспорт, либо ограничения на экспорт в той или иной форме медицинских товаров, связанных с коронавирусом. Рисунок 1 показывает идентичность этих наций. Отсутствие экспортных ограничений в Северной Америке, одно в Южной Америке и относительно небольшое их количество в Африке позволяет предположить, что в настоящее время одним из факторов может быть удаленность от Китая.

Темпы, с которыми правительства прибегают к экспортным ограничениям, ускоряются. Из 27 случаев экспортных ограничений, введенных этими 24 странами с начала года, 16 были введены в первые десять дней марта 2020 года.

Для полноты необходимо признать, что Индия отменила некоторые из своих экспортных ограничений на маски в начале февраля, разрешив экспорт некоторых из них в Китай. Это не было открытием с новой страницы — позже в этом же месяце Нью-Дели запретил экспорт 26 фармацевтических ингредиентов и некоторых продуктов, изготовленных из них, таких как парацетамол. Кроме того, совсем недавно Тайвань временно снял запрет на экспорт товаров для лица. Тем не менее в целом экспортная политика стала более ограничительной.

Рис. 1. Ограничения на экспорт товаров медицинского назначения 10 марта 2020 г.

Пять неблагоприятных последствий ограничения экспорта товаров медицинского назначения

В последний раз ограничения экспорта были в центре внимания многих экономических исследований после того, как многие правительства ограничили экспорт продуктов питания во время скачков цен на сырьевые товары в 2006–2008 годах (например, Anderson and Jensen 2017). В этом случае было установлено, что экспортные ограничения повышают уровень и волатильность мировых цен, но мало снижают внутренние цены, которые отчасти были обусловлены другими факторами. Как средство обеспечения продовольственной безопасности такие экспортные ограничения имели сомнительную ценность.

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

Отказ иностранным покупателям в поставках медицинских препаратов дорого обходится внушительной стране по четырем причинам. Во-первых, напомним, что целью таких экспортных ограничений является увеличение поставок, доступных для местных больниц и т. д. Какой бы временной выгодой ни было ограничение поставок за границу, потеря будущих экспортных продаж будет препятствовать местным фирмам наращивать производство и инвестировать в новые потенциала, именно к этому призывает ВОЗ. С практической точки зрения это означает, что во время пандемии запрет на экспорт «обеспечивает» определенные доступные в настоящее время отечественные медицинские товары за счет будущих товаров местного производства.

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

В-третьих, запреты на экспорт ставят под угрозу сотрудничество с другими правительствами. Подрыв доверия между торговыми странами не должен ограничиваться поставками медикаментов и сотрудничеством в вопросах здравоохранения. Кроме того, нельзя исключать возмездия со стороны пострадавших торговых партнеров — разветвленные цепочки поставок лекарств и медицинского оборудования подразумевают, что почти каждая страна уязвима для тех или иных форм возмездия.

В-четвертых, запрет на экспорт в одной стране – это политический подарок националистам и популистам в пострадавших торговых партнерах. Призывы к протекционистской промышленной политике являются результатом — как показали недавние замечания г-на Питера Наварро, директора Управления торговой и производственной политики президента Трампа (Financial Times 2020), — подразумевая, что страна, которая вводит запрет на экспорт, может обнаружить, что условия конкуренции за рубежом значительно ухудшились после преодоления пандемии коронавируса.

Существуют менее опасные альтернативы политики

Предложения по экспортным ограничениям следует сравнивать с альтернативами, которые не препятствуют закупкам за границей. Правительствам, обеспокоенным тем, что субсидирование отечественного производства принесет непропорционально большую пользу иностранным покупателям, следует рассмотреть вопрос об установлении минимальной цены на медицинские устройства, продаваемые государству. Такие минимальные цены могут применяться к заранее объявленному лимиту государственных закупок. Тогда местным производителям будет гарантирована гарантированная сумма дохода от снабжения штата необходимыми медикаментами.

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

Ссылки

Андерсон К. и Х. Г. Дженсен (2017 г.), «Скачки цен на зерно и меры политики «разорение соседей»: глобальный анализ экономики», The World Bank Economic Review 31(1): 158 –175.

Болдуин, Р. и Э. Томиура (2020 г.), «Заблаговременно думая о влиянии COVID-19 на торговлю», глава 5 в книге Р. Болдуина и Б. Ведер ди Мауро (ред.), Economics in the Time of COVID -19, CEPR Press.

CNN Business (2020 г.), «Из-за отсутствия поставок из Китая поставщики медицинских масок должны выбирать, кого поставлять», 6 марта.

Euronews (2020 г.), «Коронавирус: французский производитель защитных масок отменяет распоряжение NHS о хранении масок во Франции», 6 марта.

Financial Times (2020 г.), «Торговый советник США стремится заменить китайские поставки лекарств», 12 февраля.

Global Trade Alert (2020), «Борьба с коронавирусом: измерение торговой политики», Университет Санкт-Галлена, 10 марта.

NZZ (2020), «Coronavirus: Die Schweiz Liegt mit Deutschland im offenen Streit», 7 марта.

ЮНКТАД (2020 г.), «Влияние вспышки коронавируса на глобальные ПИИ». Мониторинг инвестиционной политики, март.

ВОЗ – Всемирная организация здравоохранения (2020 г.).«Нехватка средств индивидуальной защиты ставит под угрозу работников здравоохранения во всем мире», 3 марта.

Мы настраиваем решение PKI для нашей сети Wi-Fi

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

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

Есть ли решения для этого?

Ответы

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

Для версий до Windows 8 это обоснованная проблема, и вы должны принять на себя риск того, что ваши сотрудники не приобретут программное обеспечение, позволяющее экспортировать с закрытым ключом (если оно было отключено в шаблоне сертификата)

В Windows 8 вы можете перейти на виртуальные смарт-карты, где закрытый ключ сертификата защищен доверенным платформенным модулем вашего компьютера. Это может предотвратить любые экспортные атаки.

До Windows 8 вам нужно было защитить материал ключа с помощью HSM или сертификата смарт-карты на смарт-карте или USB-накопителе на основе чипа смарт-карты

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

Все ответы

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

какие пользователи по умолчанию имеют "права на чтение закрытого ключа"?

Мы настраиваем решение PKI для нашей сети Wi-Fi

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

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

есть ли решения для этого?

Спасибо

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

Для версий до Windows 8 это обоснованная проблема, и вы должны принять на себя риск того, что ваши сотрудники не приобретут программное обеспечение, позволяющее экспортировать с закрытым ключом (если оно было отключено в шаблоне сертификата)

В Windows 8 вы можете перейти на виртуальные смарт-карты, где закрытый ключ сертификата защищен доверенным платформенным модулем вашего компьютера. Это может предотвратить любые экспортные атаки.

До Windows 8 вам нужно было защитить материал ключа с помощью HSM или сертификата смарт-карты на смарт-карте или USB-накопителе на основе чипа смарт-карты

то есть с XP и Windows 7 можно заблокировать доступ на уровне администратора к машине? или этого недостаточно?

Честно говоря, этого недостаточно. Это зависит от вашего профиля риска и от атак, которые вы пытаетесь смягчить.

1) использовать смарт-карты

2) Поверьте, что пользователи не будут покупать инструменты, которые позволят им экспортировать вручную. Например, используйте загрузочный диск Nordahl и сбросьте локальный пароль администратора или используйте инструмент восстановления Elcomsoft EFS (это только примеры)

В большинстве случаев можно установить неэкспортируемый тег. Но все больше организаций видят в этом вектор атаки, поэтому в Windows 8 появились виртуальные смарт-карты.

Есть еще более простой способ экспортировать ключ. Просто попросите экспортируемый ключ. Этого можно добиться, используя MMC и вручную запросив точно такой же сертификат, который вы получили бы при автоматической регистрации. Для автоматической регистрации требуются права регистрации. Так что вы не можете предотвратить это.

К сожалению, «неэкспортируемость» — это «функция клиента», которая не определена в сертификате. И даже Windows 7 не соблюдает определение шаблона сертификата «не экспортировать закрытый ключ» при использовании MMC, а не при автоматической регистрации. Мне это кажется багом, а не фичей. Но это может быть даже по замыслу :-)

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

Итак, Брайан (как часто:-) прав:

Единственный способ по-настоящему защитить закрытый ключ — это HSM, то есть смарт-карта.

Облегчите жизнь пользователям, и они не захотят обойти ваши меры безопасности.

Помните, что смарт-карта и HSM — это два разных устройства. Оба защищают закрытый ключ таким образом, что его нельзя экспортировать, но это два совершенно разных устройства (огромная разница в цене и роли)

Обычно HSM защищают закрытые ключи сервера, а смарт-карты защищают закрытые ключи пользователей

Я никогда не утверждал, что смарт-карта — это HSM.

Все, что я сказал, это то, что единственный способ защитить закрытые ключи — это выделенные устройства и:

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

В XP вам нужно было обладать некоторыми техническими знаниями, чтобы использовать альтернативу автоматической регистрации или MMC, так как оба параметра учитывали настройки. Более новая MMC управления сертификатами от Vista и более поздних версий позволяет вам перезаписывать настройки запроса по умолчанию. Длина ключа, тема, SAN применяются CA, даже если запрашивается другой параметр, но не параметр «экспорт закрытого ключа».

Ещё раз: это (ИМХО) ошибка MMC, которая делает эту настройку в шаблоне бесполезной.

> Еще раз: это (ИМХО) ошибка MMC, которая делает этот параметр в шаблоне бесполезным.

Я сомневаюсь, что это ошибка, потому что она предназначена для автоматической регистрации и простого запроса сертификата. Ничего больше. Вы можете использовать инструмент certreq.exe, чтобы нарушить этот параметр. Хотя многие другие параметры могут быть проверены сервером ЦС, он не может получить никаких сведений о закрытом ключе (например, разрешен или нет экспорт ключа), поскольку эта информация отсутствует в запросе.

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

следующая команда даст нам необработанный запрос
certutil -view -out Request.RawRequest

' затем используйте сценарий, аналогичный следующему, чтобы получить информацию

'В случае ошибки продолжить дальше
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("Wscript.Shell")
Set objFile = objFSO.CreateTextFile ("./list.txt",2)
Set objFileO = objFSO.OpenTextFile("./xyz.txt",1)
Выполнять до objFileO.AtEndOfStream
strLine = objFileO.Readline
if left(strline,12) = " Request ID" Then
objFile.Write strLine
End if

if left (strline,10) = "-----BEGIN" Then
strQ = "B"
set objFileT = objFSO.createTextFile("./temp.txt",2)
else if left (strline,8) = "-----END" Then
strQ = "E"
objFileT.WriteLine strLine
objFileT.close
objShell.Run "cmd /c certutil temp.txt | findstr" & chr(34) & _
"Процесс: Пользователь:" & chr(34) & ">a.txt", 0, True
>set objFileX = objFSO.openTextFile("./a.txt",1)
Выполнять до objFileX.AtEndofStream
objFile.Write "," & objFileX.ReadLine
Цикл
objFile.Writeline
End if
End if
if strQ = "B" Then
objFileT.WriteLine strLine
End if
loop
< /p>

вероятно, приведенные выше строки могут помочь нам получить информацию о методе запроса сертификата

Хранилище ключей AWS CloudHSM — это специальное хранилище ключей JCE, в котором используются сертификаты, связанные с ключами на вашем HSM, с помощью сторонних инструментов, таких как keytool и jarsigner . AWS CloudHSM не хранит сертификаты в HSM, поскольку сертификаты являются общедоступными и неконфиденциальными данными. Хранилище ключей AWS CloudHSM хранит сертификаты в локальном файле и сопоставляет сертификаты с соответствующими ключами на вашем HSM.

При использовании хранилища ключей AWS CloudHSM для создания новых ключей записи в локальном файле хранилища ключей не создаются — ключи создаются в HSM. Точно так же, когда вы используете хранилище ключей AWS CloudHSM для поиска ключей, поиск передается в HSM. Когда вы сохраняете сертификаты в хранилище ключей AWS CloudHSM, поставщик проверяет наличие пары ключей с соответствующим псевдонимом в HSM, а затем связывает предоставленный сертификат с соответствующей парой ключей.

Темы

Предпосылки

Чтобы использовать хранилище ключей AWS CloudHSM, необходимо сначала инициализировать и настроить SDK AWS CloudHSM JCE.

Шаг 1. Установите JCE

Чтобы установить JCE, включая предварительные условия для клиента AWS CloudHSM, выполните шаги по установке библиотеки Java.

Шаг 2. Добавьте учетные данные для входа в HSM в переменные среды

Настройте переменные среды, чтобы они содержали ваши учетные данные для входа в HSM.

CloudHSM JCE предлагает различные варианты входа в систему. Чтобы использовать хранилище ключей AWS CloudHSM со сторонними приложениями, необходимо использовать неявный вход в систему с переменными среды. Если вы хотите использовать явный вход через код приложения, вам необходимо создать собственное приложение с использованием хранилища ключей AWS CloudHSM. Дополнительную информацию см. в статье Использование хранилища ключей AWS CloudHSM.

Шаг 3. Регистрация поставщика JCE

Чтобы зарегистрировать поставщика JCE, в конфигурации Java CloudProvider.

Откройте файл конфигурации java.security в вашей установке Java для редактирования.

В файле конфигурации java.security добавьте com.cavium.provider.CaviumProvider в качестве последнего поставщика. Например, если в пакете java.security, добавьте следующего поставщика в качестве последнего поставщика в разделе. Добавление поставщика Cavium в качестве более приоритетного может негативно сказаться на производительности вашей системы.

Опытные пользователи могут привыкнуть указывать параметры командной строки -providerName , -providerclass и -providerpath при использовании keytool вместо обновления файла конфигурации безопасности. Если вы попытаетесь указать параметры командной строки при создании ключей с помощью хранилища ключей AWS CloudHSM, это вызовет ошибки.

Использование хранилища ключей AWS CloudHSM с keytool

При использовании keytool с хранилищем ключей AWS CloudHSM укажите следующие аргументы для любой команды keytool:

Если вы хотите создать новый файл хранилища ключей с помощью хранилища ключей AWS CloudHSM, см. раздел Использование AWS CloudHSM KeyStore. Чтобы использовать существующее хранилище ключей, укажите его имя (включая путь), используя аргумент –keystore для keytool. Если указать несуществующий файл хранилища ключей в команде keytool, хранилище ключей AWS CloudHSM создаст новый файл хранилища ключей.

Создать новые ключи с помощью keytool

Вы можете использовать keytool для создания любого типа ключа, поддерживаемого JCE SDK AWS CloudHSM. См. полный список ключей и их длины в статье «Поддерживаемые ключи» в библиотеке Java.

Ключ, сгенерированный с помощью keytool, создается в программном обеспечении, а затем импортируется в AWS CloudHSM в виде извлекаемого постоянного ключа.

Инструкции по созданию неизвлекаемых ключей непосредственно в HSM и их последующему использованию с помощью keytool или Jarsigner приведены в примере кода в разделе Регистрация уже существующих ключей в хранилище ключей AWS CloudHSM. Мы настоятельно рекомендуем генерировать неэкспортируемые ключи вне keytool, а затем импортировать соответствующие сертификаты в хранилище ключей. Если вы используете извлекаемые ключи RSA или EC с помощью keytool и jarsigner, поставщики экспортируют ключи из AWS CloudHSM, а затем используют ключ локально для операций подписи.

Если к кластеру CloudHSM подключено несколько экземпляров клиента, имейте в виду, что импорт сертификата в хранилище ключей одного экземпляра клиента не сделает сертификаты автоматически доступными для других экземпляров клиента. Чтобы зарегистрировать ключ и связанные сертификаты на каждом экземпляре клиента, вам необходимо запустить приложение Java, как описано в разделе Создание CSR с помощью Keytool. Кроме того, вы можете внести необходимые изменения на одном клиенте и скопировать полученный файл хранилища ключей на все остальные экземпляры клиента.

Пример 1. Создание симметричного ключа AES-256 с меткой "my_secret" и сохранение его в файле хранилища ключей с именем "my_keystore.store" в рабочем каталоге.

Пример 2. Чтобы сгенерировать пару ключей RSA 2048 с меткой "my_rsa_key_pair" и сохранить ее в файле хранилища ключей с именем "my_keystore.store" в рабочем каталоге.

Пример 3. Создание ED-ключа p256 с меткой "my_ec_key_pair" и сохранение его в файле хранилища ключей с именем "my_keystore.store" в рабочем каталоге.

Список поддерживаемых алгоритмов подписи можно найти в библиотеке Java.

Удалить ключ с помощью keytool

Хранилище ключей AWS CloudHSM не поддерживает удаление ключей. Чтобы удалить ключ, необходимо использовать функцию deleteKey инструмента командной строки AWS CloudHSM, deleteKey.

Создайте CSR с помощью keytool

Вы получаете максимальную гибкость при создании запроса на подпись сертификата (CSR), если используете OpenSSL Dynamic Engine. Следующая команда использует keytool для создания CSR для пары ключей с псевдонимом my-key-pair .

Чтобы использовать пару ключей из keytool, эта пара ключей должна иметь запись в указанном файле хранилища ключей. Если вы хотите использовать пару ключей, созданную вне keytool, вы должны импортировать метаданные ключа и сертификата в хранилище ключей. Инструкции по импорту данных хранилища ключей см. в разделе Импорт промежуточных и корневых сертификатов в хранилище ключей AWS CloudHSM с помощью Keytool.

Использование keytool для импорта промежуточных и корневых сертификатов в хранилище ключей AWS CloudHSM

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

Если вы подключаете несколько экземпляров клиента к кластеру AWS CloudHSM, импорт сертификата в хранилище ключей одного экземпляра клиента не сделает этот сертификат автоматически доступным для других экземпляров клиента. Вы должны импортировать сертификат в каждый экземпляр клиента.

Использование keytool для удаления сертификатов из хранилища ключей AWS CloudHSM

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

Если вы подключаете несколько экземпляров клиента к кластеру AWS CloudHSM, удаление сертификата в хранилище ключей одного экземпляра клиента не приведет к автоматическому удалению сертификата из других экземпляров клиента. Вы должны удалить сертификат на каждом экземпляре клиента.

Импорт рабочего сертификата в хранилище ключей AWS CloudHSM с помощью keytool

После подписания запроса на подпись сертификата (CSR) его можно импортировать в хранилище ключей AWS CloudHSM и связать с соответствующей парой ключей. В следующей команде приведен пример.

Псевдоним должен быть парой ключей со связанным сертификатом в хранилище ключей. Если ключ создается вне keytool или на другом экземпляре клиента, необходимо сначала импортировать метаданные ключа и сертификата в хранилище ключей. Инструкции по импорту метаданных сертификата см. в примере кода в статье «Регистрация существующих ключей в хранилище ключей AWS CloudHSM».

Цепочка сертификатов должна быть поддающейся проверке. Если вы не можете проверить сертификат, вам может потребоваться импортировать сертификат подписи (центра сертификации) в хранилище ключей, чтобы можно было проверить цепочку.

Экспорт сертификата с помощью keytool

В следующем примере создается сертификат в двоичном формате X.509. Чтобы экспортировать удобочитаемый сертификат, добавьте -rfc к команде -exportcert.

Использование хранилища ключей AWS CloudHSM с jarsigner

Jarsigner — это популярная утилита командной строки для подписи файлов JAR с помощью ключа, надежно хранящегося в HSM. Полное руководство по Jarsigner выходит за рамки документации AWS CloudHSM. В этом разделе объясняются параметры Jarsigner, которые следует использовать для подписи и проверки подписей с помощью AWS CloudHSM в качестве корня доверия через хранилище ключей AWS CloudHSM.

Настройка ключей и сертификатов

Прежде чем вы сможете подписывать файлы JAR с помощью Jarsigner, убедитесь, что вы настроили или выполнили следующие шаги:

Настройте ключи подписи и связанные сертификаты, а также цепочку сертификатов, которые должны храниться в хранилище ключей AWS CloudHSM текущего экземпляра сервера или клиента. Создайте ключи в AWS CloudHSM, а затем импортируйте связанные метаданные в хранилище ключей AWS CloudHSM. Используйте пример кода из раздела «Регистрация существующих ключей в хранилище ключей AWS CloudHSM», чтобы импортировать метаданные в хранилище ключей. Если вы хотите использовать keytool для настройки ключей и сертификатов, см. раздел Создание новых ключей с помощью keytool. Если вы используете несколько экземпляров клиента для подписи JAR-файлов, создайте ключ и импортируйте цепочку сертификатов. Затем скопируйте полученный файл хранилища ключей в каждый экземпляр клиента. Если вы часто создаете новые ключи, вам может быть проще импортировать сертификаты по отдельности в каждый экземпляр клиента.

Вся цепочка сертификатов должна быть поддающейся проверке. Чтобы цепочку сертификатов можно было проверить, вам может потребоваться добавить сертификат ЦС и промежуточные сертификаты в хранилище ключей AWS CloudHSM. См. фрагмент кода в разделе Подписание файла JAR с помощью AWS CloudHSM и Jarsigner, чтобы получить инструкции по использованию кода Java для проверки цепочки сертификатов. При желании вы можете использовать keytool для импорта сертификатов. Инструкции по использованию keytool см. в разделе Использование Keytool для импорта промежуточных и корневых сертификатов в хранилище ключей AWS CloudHSM.

Подпишите файл JAR с помощью AWS CloudHSM и jarsigner

Используйте следующую команду, чтобы подписать файл JAR:

Используйте следующую команду для проверки подписанного файла JAR:

Известные проблемы

В следующем списке представлен текущий список известных проблем.

При создании ключей с помощью keytool первым провайдером в конфигурации провайдера не может быть CaviumProvider.

При создании ключей с помощью keytool для создания ключа используется первый (поддерживаемый) поставщик в файле конфигурации безопасности. Обычно это поставщик программного обеспечения. Затем сгенерированному ключу присваивается псевдоним, и он импортируется в HSM AWS CloudHSM в качестве постоянного (токенового) ключа в процессе добавления ключа.

При использовании keytool с хранилищем ключей AWS CloudHSM не указывайте параметры -providerName , -providerclass или -providerpath в командной строке. Укажите эти параметры в файле поставщика безопасности, как описано в предварительных требованиях к хранилищу ключей.

При использовании неизвлекаемых ключей EC через keytool и Jarsigner поставщик SunEC необходимо удалить/отключить из списка поставщиков в файле java.security. Если вы используете извлекаемые ключи EC с помощью keytool и Jarsigner, провайдеры экспортируют биты ключей из AWS CloudHSM HSM и используют ключ локально для операций подписи. Мы не рекомендуем использовать экспортируемые ключи с keytool или Jarsigner.

Регистрация уже существующих ключей в хранилище ключей AWS CloudHSM

Для максимальной безопасности и гибкости атрибутов и маркировки мы рекомендуем создавать ключи подписи с помощью key_mgmt_util. Вы также можете использовать приложение Java для создания ключа в AWS CloudHSM.

В следующем разделе представлен пример кода, демонстрирующий создание новой пары ключей в HSM и ее регистрацию с использованием существующих ключей, импортированных в хранилище ключей AWS CloudHSM. Импортированные ключи можно использовать со сторонними инструментами, такими как keytool и Jarsigner.

Чтобы использовать уже существующий ключ, измените пример кода, чтобы искать ключ по метке вместо создания нового ключа.Пример кода для поиска ключа по метке доступен в образце KeyUtilitiesRunner.java на GitHub.

Регистрация ключа, хранящегося в AWS CloudHSM, в локальном хранилище ключей не приводит к экспорту ключа. Когда ключ зарегистрирован, хранилище ключей регистрирует псевдоним (или метку) ключа и сопоставляет объекты сертификатов локального хранилища с парой ключей в AWS CloudHSM. Пока пара ключей создается как неэкспортируемая, биты ключа не покидают HSM.

Операция экспорта используется при создании модулей JavaScript для экспорта активных привязок к функциям, объектам или примитивным значениям из модуля, чтобы их можно было использовать в других программах с помощью инструкции импорта. Значение импортированной привязки может быть изменено в модуле, который ее экспортирует. Когда модуль обновляет значение экспортируемой им привязки, это обновление будет отображаться в его импортированном значении.

Экспортированные модули находятся в строгом режиме независимо от того, объявляете вы их таковыми или нет. Оператор экспорта нельзя использовать во встроенных сценариях.

Синтаксис

Существует два типа экспорта:

  1. Именованные экспорты (ноль или более экспортов на модуль)
  2. Экспорт по умолчанию (по одному на модуль)

Идентификатор для экспорта (чтобы его можно было импортировать через импорт в другом скрипте).

Описание

Существует два разных типа экспорта: именованный и по умолчанию. У вас может быть несколько именованных экспортов на модуль, но только один экспорт по умолчанию. Каждый тип соответствует одному из приведенных выше синтаксисов:

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

Но экспорт по умолчанию можно импортировать с любым именем, например:

Вы также можете переименовать именованные экспорты, чтобы избежать конфликтов имен:

Реэкспорт/агрегирование

Также можно "импортировать/экспортировать" из разных модулей родительского модуля, чтобы они были доступны для импорта из этого модуля. Другими словами, можно создать единый модуль, сконцентрировав различные экспорты из разных модулей.

Этого можно добиться с помощью синтаксиса "экспортировать из":

Что сопоставимо с комбинацией импорта и экспорта:

Но где функция1 и функция2 не становятся доступными внутри текущего модуля.

Примечание. Следующее синтаксически неверно, несмотря на импортный эквивалент:

Правильный способ сделать это — переименовать экспорт:

Синтаксис "экспорт из" позволяет опустить токен as; однако это будет означать, что элемент по умолчанию не может быть импортирован как именованный импорт:

Примеры

Использование именованного экспорта

В модуль my-module.js мы могли бы включить следующий код:

Тогда в модуле верхнего уровня, включенном в вашу HTML-страницу, мы могли бы иметь:

Важно отметить следующее:

Использование экспорта по умолчанию

Если мы хотим экспортировать одно значение или иметь резервное значение для вашего модуля, вы можете использовать экспорт по умолчанию:

Затем в другом скрипте легко импортировать экспорт по умолчанию:

un.mit.i.gat.ed: прил. Не уменьшена или умерена по интенсивности или тяжести; безнадежный. риск: N. Возможность причинения вреда или убытков; опасность.

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

В Windows мы пытались создать ряд систем, помогающих решить эти проблемы, самой простой из которых был API защиты данных Windows (DPAPI). Это был наш ответ на вопрос: «Какой секрет я использую для шифрования секрета». Его можно рассматривать как политику или систему управления цифровыми правами, поскольку с практической точки зрения это в значительной степени «лежачий полицейский» для привилегированных пользователей, которым нужен доступ к данным, которые он защищает.

За прошедшие годы появилось много инструментов, которые используют разрешения пользователя для расшифровки данных, защищенных DPAPI, одним из последних был DPAPIPick. Несмотря на то, что я сформулировал эту проблему в контексте Windows, вот аккуратная статья по этой широкой проблеме под названием «Игра в прятки с сохраненными ключами».

Следующий уровень защиты ключей, предлагаемый Windows, — это механизм политик, который называется «неэкспортируемые ключи». В первую очередь это потребитель DPAPI. По сути, когда вы генерируете ключ, вы просите Windows запретить его экспорт, в результате чего на ключе устанавливается флаг, который нельзя изменить через API. Затем ключ и этот флаг защищаются с помощью DPAPI. Несмотря на то, что это просто политика, применяемая в системе, подобной DRM, она служит своей цели, уменьшая случайное копирование ключей.

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

Лучшее решение для защиты ключей от пользователя — поместить их за API-интерфейсы для конкретных протоколов, которые "удаленно" передают операцию процессу в другом пользовательском пространстве. Мы бы назвали этот процесс изоляцией, и лучшим примером этого в Windows является SCHANNEL.

SCHANNEL — это реализация TLS в Windows. До Windows 2003 ключи, используемые SCHANNEL, загружались в память вызывающего его приложения. В 2003 г. мы перенесли криптографические операции в службу подсистемы локального управления безопасностью (LSAS), которая в Windows фактически является RING 0.

Перемещая ключи в этот процесс, мы помогаем защитить их от процессов пользовательского режима, но не предотвращаем их, но при этом позволяем приложениям выполнять сеансы TLS. Это дорого обходится, теперь вам нужно маршалировать данные в пользовательский режим и LSAS, что снижает производительность.

[Наско, бывший разработчик SCHANNEL, говорит мне, что, по его мнению, именно синхронная природа SSPI больше всего повлияла на производительность, это вполне вероятно, но конечный результат тот же]

На самом деле, это изменение было названо одной из основных причин того, что IIS был намного медленнее, чем Apache, для «реальных рабочих нагрузок» в Windows Server 2003. Стоит отметить, что те из нас, кто принимал решение о внесении этого изменения, наверняка почувствовали это. подтверждено, когда произошло кровотечение сердца.

Это решение также не идеально, опять же, если вы находитесь в кольце 0, вы все равно можете получить доступ к криптографическим ключам.

Если вы хотите устранить этот риск, вы должны перенести криптографическую операцию на выделенную систему, управляемую группой пользователей, в которую не входит пользователь. Это может быть удаленная криптографическая служба TCP/IP (например, Microsoft KeyVault или Google Cloud Key Manager), аппаратный модуль безопасности (HSM) или смарт-карта. Это имеет все проблемы с производительностью базовой изоляции процессов, но хуже, потому что переход из пользовательского режима в защищенный сервис еще «дальше» или «пропускная способность» ограничена (смарт-карты часто работают со скоростью 115 000 бит/с или медленнее).

В Windows для TLS это достигается с помощью поставщиков CNG, CSP CryptoAPI и мини-драйверов Smartcard. Эти решения обычно имеют закрытый исходный код, и некоторые из проблем безопасности, которые я видел в них на протяжении многих лет, ужасны, но, несмотря на их недостатки, получение ключей из пользовательского пространства имеет большую ценность, и это самый эффективный способ сделать это. это.

Эти устройства также в той или иной степени обеспечивают защиту от физических, временных и других более сложных атак.

Ну, это мой обзор основных схем защиты ключей, доступных в Windows. Большинство операционных систем имеют схожие механизмы, но Windows просто имеет превосходную документацию и ответы на все эти проблемы в «одном логическом месте», а не из множества разных библиотек от разных авторов.

Читайте также: