Что такое суффикс GUID для файлов хранилища ключей в Windows? - PullRequest
0 голосов
/ 14 мая 2018

Мне интересно, каковы суффиксы GUID для файлов контейнера ключей RSA, хранящихся в хранилище машины и контейнера пользовательских ключей.Я не могу определить некоторые из них как ключевые контейнеры через CAPI / CNG, хотя вместо этого я представлю свой случай, используя инструменты командной строки.Команды ниже предназначены для PowerShell в режиме с повышенными привилегиями.На большинстве машин суффикс GUID одинаков для всех этих имен файлов, но на этом есть четыре различных идентификатора GUID, в то время как API возвращает только ключи только с одним. Что это за GUID? Мне не нравятся случайные секреты, хранящиеся у меня, я не знаю, что на моей машине; они безопасны для удаления?

Содержимое каталога машинного магазина:

> ls -n $env:ProgramData\Microsoft\Crypto\Rsa\MachineKeys  | sort { "$_"[-3..-1] }
d1f9044f5d7345da71c0d2efd2e4f59e_e9f96f2e-b8b7-49b2-85a5-840195eca603
d6d986f09a1ee04e24c949879fdb506c_a4dc5a56-574d-4e4b-ba8d-d88984f9a6c5
6de9cb26d2b98c01ec4e9e8b34824aa2_a4dc5a56-574d-4e4b-ba8d-d88984f9a6c5
76944fb33636aeddb9590521c2e8815a_a4dc5a56-574d-4e4b-ba8d-d88984f9a6c5
d6d986f09a1ee04e24c949879fdb506c_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
d1f9044f5d7345da71c0d2efd2e4f59e_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
76944fb33636aeddb9590521c2e8815a_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
6de9cb26d2b98c01ec4e9e8b34824aa2_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
ba8e1b9b5510957b3af7b811f05660de_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
d1f9044f5d7345da71c0d2efd2e4f59e_c6a7fc9d-32a6-41e4-afd5-7dc7b822029e

Я отсортировал список по последним трем символам, чтобы его было легкочтобы сразу увидеть, что есть 4 различных суффикса GUID к файлам контейнера ключей.Теперь давайте перечислим ключ, сообщаемый всеми установленными CSP.Я получу список провайдеров, а позже список ключей каждого провайдера, используя инструмент certutil, который поставляется с Windows.Его вывод требует некоторого регулярного выражения для анализа, что не является обязательным, просто удобно:

> certutil -csplist | sls  '^Provider Name: (.*)' | %{ $_.Matches[0].Groups[1].Value }
Microsoft Base Cryptographic Provider v1.0
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
Microsoft Base DSS Cryptographic Provider
[...snip...]

Вывод для одного ключа перечисляет имя, флаги и идентификатор контейнера ключа, последний соответствует соответствующему имени файла ввышеупомянутый каталог (конечно, мы можем видеть больше ключей от дополнительных KSP, смарт-карт, TPM и т. д.).Пример для одного провайдера (-q заставляет некоторых провайдеров молчать, а не запрашивать действия пользователя, такие как вставка смарт-карты):

> certutil -key -q
Microsoft Strong Cryptographic Provider:
  iisConfigurationKey
  6de9cb26d2b98c01ec4e9e8b34824aa2_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  RSA
    AT_KEYEXCHANGE

  iisWasKey
  76944fb33636aeddb9590521c2e8815a_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  [...snip...]

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

> certutil -csplist | sls '^Provider Name: (.*)' | %{ $_.Matches[0].Groups[1].Value } |
%{ certutil -key -q -csp "$_" } | sls '^\s+[0-9a-f]{20}.+' | sort -u

  597367cc37b886d7ee6c493e3befb421_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  6de9cb26d2b98c01ec4e9e8b34824aa2_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  76944fb33636aeddb9590521c2e8815a_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  ba8e1b9b5510957b3af7b811f05660de_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  d6d986f09a1ee04e24c949879fdb506c_f7fe3b04-ef9b-4b27-827f-953c5743e2ec
  f0e91f6485ac2d09485e4ec18135601e_f7fe3b04-ef9b-4b27-827f-953c5743e2ec

Здесь на самом деле на 2 ключа больше, чем в каталоге MachineKeys (они получены из KSP, фактически, certutil -key -csp KSP показывает их, если вам интересно).Но дело в том, что все они имеют одинаковый суффикс GUID _f7fe3b04-ef9b-4b27-827f-953c5743e2ec.

. Аппарат был установлен производителем (точнее, ноутбуком HP).Это не похоже на другие машины, которые мы собираем или покупаем barebone, а также устанавливаем и настраиваем сами.И я иногда работаю с некоторыми конфиденциальными данными, поэтому я действительно параноик тщательно проверяю программное обеспечение, прежде чем дать машинам доступ к конфиденциальным данным.

Операционная система Windows 10, если это имеет значение, нохранилище того же типа не изменилось по сравнению с Windows 7, AFAIK, даже с введением нового API CNG в 8.0 (или 8.1?).


На всякий случай, если кто-нибудь найдет полезный фрагмент PowerShellЧтобы получить список ключей по читателю, я использовал эту команду:

> certutil -csplist | sls  '^Provider Name: (.*)' | %{ $_.Matches[0].Groups[1].Value } |
%{ Write-Host -for Yellow "`n$_"; certutil -key -q -csp "$_" }

1 Ответ

0 голосов
/ 25 апреля 2019

Нашел ответ здесь: https://serverfault.com/a/642279/451491

Соглашение об именовании файлов: x_y, где x - это произвольный GUID для уникально идентифицируйте ключ, а y - GUID машины, найденный в HKLM \ SOFTWARE \ Microsoft \ Cryptography.

...