windows - Udveksling af sikre data mellem exe og Service

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Windows Exe, der skal skrive nogle sikre data til HKEY\_LOCAL\_MACHINE (HKLM). Jeg har også en tjeneste, der kører som NetworkService-konto, som skal læse de sikre data. Bemærk, at exe og service kører som forskellige brugere.


Problemet her er med at sikre dataene. Jeg forsøgte med CryptProtectData, men problemet er, at tjenesten ikke kan dekryptere, fordi dataene ikke blev krypteret ved hjælp af NetworkService-kontoen. Jeg vil ikke bruge CRYPTPROTECT\_LOCAL\_MACHINE-flag, mens du ringer til CryptProtectData, da enhver bruger kan dekryptere det og i det væsentlige gøre det usikkert. [1]


Jeg gætter på, at dette er en almindelig brugssag, men ikke i stand til at finde nogen løsning. Eventuelle ideer venligst?


FYI, jeg bruger visuel C ++ til at skrive exe og tjenesten.

Bedste reference


Du forsøger at bruge registreringsdatabasen som en interprocess kommunikation (IPC) mekanisme, og du 'finder, at den ikke er meget elegant.


En bedre arkitektur for det, du leder efter, ville være at håndtere kryptering/dekryptering helt inden for tjenesten og bruge en ægte IPC-mekanisme (TCP-stikkontakter, maillot osv.) Til at overføre data fra EXE til tjenesten for kryptering.


Redigere:


Registret lyder ikke som det rigtige sted for disse data, kryptering til side. Sæt på min 'sysadmin hat' Jeg har meget mere dine data i filsystemet end i registreringsdatabasen. Ved hjælp af registreringsdatabasen som en køle-og-frem-kø-mekanisme giver mig testamentet.


For så vidt som kryptografisk arkitektur mener jeg, at du bedst serveres ved hjælp af assymetrisk kryptering. Lad EXE kryptere dataene vha. Tjenesteens offentlige nøgle. Tjenesten kan dekryptere dataene med sin private nøgle.