sikkerhed - Sådan overføres følsomme data mellem processer i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne overføre brugernavn og adgangskodeoplysninger fra en proces til en anden proces, der kører på den samme server i Windows. Hvad er den bedste tilgang til at opnå denne overførsel på en sikker måde? En simpel tilgang er at kopiere adgangskoderne til en fil og derefter have den anden proces læset fra en fil og derefter slette filen, når den er læst. Selvom det er simpelt, er jeg bekymret, hvis det er sikkert, selvom det stadig er muligt for nogen at få adgang til denne fil, selvom den kun lever i en kort periode & har også mulighed for, at filen udelades, hvis de andre processer fejler eller går ned. IPC'er som stik og navngivne rør synes at være en overkill for dette problem. Jeg er mere tilbøjelig til at bruge hukommelseskartede filer som forklaret i dette link nedenfor, som fortæller om at dele hukommelse på tværs af processer. Er dette den rigtige tilgang? Det er også en god idé at fylde hukommelsen med dummy-data inden frigivelse/sletning for at forhindre rouge-processer i at rydde data fra denne hukommelsesplacering?


http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx[1]

Bedste reference


RPC er din ven her (Jeg ville ikke bruge navngivne rør til at overføre sikrede data, fordi de har nogle alvorlige problemer (fordi de opererer i et globalt navneområde og dermed er sårbare over for hukommelsesangreb)).


Da dataene ikke sendes på ledningen, er krypteringen ikke så vigtig som nogle beskriver. I stedet har en proces implementeret en RPC-server og den anden ende binder til den pågældende server, udsteder RPC-opkaldet med legitimationsoplysningerne og ødelægger bindingshåndtaget - det skal nedbryde de mellemliggende datastrukturer.


Glem ikke at gemme hukommelsen korrekt, når du er færdig med at bruge den (ellers kan det blive vedvarende at diskere).


Hvis du vil bruge kryptering, skal du bruge CryptProtectMemory som krypterer dataene på en måde, der kan bruges til IPC.

Andre referencer 1


Brug nogle IPC'er, som (1) ikke understøttes til disk, (2) understøtter ACL'er.


Dette synes at angive navngivne rør.


Alternativt understøtter DCOM og WCF både indholdskryptering.