sikkerhed - Hvad er GUID-suffikset på nøglebeholderlagringsfiler i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg undrer mig over, hvad der er GUID-suffikser for RSA-nøglebeholderfilerne, der er gemt i maskin- og brugernøglebeholdere. Jeg kan ikke identificere nogle af disse som nøglebeholdere via CAPI/CNG, selv om jeg vil udsætte mit tilfælde ved hjælp af kommandolinjeværktøjer i stedet. Kommandoer nedenfor er for PowerShell i en forhøjet prompt. På de fleste maskiner er GUID-suffikset det samme for alle disse filnavne, men her er der fire forskellige GUID'er, mens API'en kun returnerer nøgler med kun én. Hvad er denne GUID? Jeg kan ikke lide tilfældige hemmeligheder gemt ved jeg ved ikke, hvad der er på min maskine; Er de sikkert at slette?


Indholdet i mappeforretningskataloget er:


> ls -n $env:ProgramDataMicrosoftCryptoRsaMachineKeys  | 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


Jeg sorterede listen med de sidste tre tegn, så det er nemt at se et overblik, at der er 4 forskellige GUID-suffixer til nøglebeholderfilerne. Lad os nu opregne nøglen, der er rapporteret af alle installerede CSP'er. Jeg får listen over udbydere, og senere listen over hver udbyder s nøgler ved hjælp af værktøjet certutil, der følger med Windows. Dens output kræver nogle regex magi til parsing, hvilket ikke er vigtigt, bare praktisk:


> 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...]


Udgangen for en enkelt nøgle viser navn, flag og nøglebeholder ID, sidstnævnte svarer til respektive filnavn i ovenstående mappe (selvfølgelig kan vi se flere nøgler fra flere KSP'er, smartkort, TPM osv.). Eksempel på en udbyder (-q gør nogle udbydere svigtende i stedet for at bede om brugers handling, såsom indsættelse af et SmartCard):


> 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...]


Nogle nøglebetegnelser er også kun GUID'er, men hvis vi kun greb ud de linjer, der starter med mindst 20 hex-cifre, vil der kun være de id'er, der er angivet. Så alle nøgle-id'er fra alle udbydere kan sammenfattes med:


> 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


Her er faktisk 2 flere nøgler end der findes i MachineKeys-mappen (de kommer fra KSP, faktisk certutil -key -csp KSP viser dem, hvis du undrer dig over det. Men faktum er, at de alle har samme GUID-suffiks \_f7fe3b04-ef9b-4b27-827f-953c5743e2ec.


Maskinen blev installeret af sælgeren (en HP notebook, for at være præcis). Dette er i modsætning til andre maskiner, at vi samler eller køber barebone og installerer og konfigurerer selv. Og jeg arbejder nogle gange med nogle følsomme data, så jeg er faktisk paranoid vetting softwaren grundigt, før maskiner tillader adgang til følsomme data.


Operativsystemet er Windows 10, hvis det betyder noget, men den samme type lagring er ikke ændret fra Windows 7, AFAIK, selv med introduktionen af ​​den nye CNG API i 8.0 (eller 8.1?).





Bare hvis nogen ville finde nyttige en PowerShell-uddrag til læseligt liste nøgler af udbyderen, brugte jeg denne kommando:


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

Bedste reference