Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Obálková data se skládají z šifrovaného obsahu libovolného typu a šifrovaných klíčů relace šifrování obsahu pro jednoho nebo více příjemců. Obálkované zprávy zachovávají obsah zprávy v tajnosti a umožňují načtení obsahu pouze určeným osobám nebo entitě.
Syntaxi kryptografických zpráv (CMS) lze použít ke kódování obálek zpráv. CMS podporuje tři techniky správy klíčů: přenos klíčů, smlouvu o klíči a dříve distribuované symetrické šifrovací klíče (KEK). Dříve distribuované symetrické klíče KEK jsou také známé jako distribuce klíčů pro poštovní seznam.
V každé z těchto tří technik se vygeneruje jeden klíč relace, který zašifruje obálkovou zprávu. Problémy řízení klíčů zahrnují způsob, jakým je klíč relace šifrován odesílatelem a dešifrován příjemcem. Jednu zašifrovanou zprávu je možné distribuovat mnoha příjemcům pomocí kombinace technik správy klíčů.
Správa klíčů pro přenos používá veřejný klíč zamýšleného příjemce k šifrování klíče relace. Příjemce dešifruje klíč relace pomocí privátního klíče přidruženého k veřejnému klíči, který byl použit k šifrování. Příjemce pak použije dešifrovaný klíč relace k dešifrování zabalených dat. Při použití přenosu klíčů příjemce nepotvrdil informace o identitě odesílatele.
Při správě dohod o klíčích se vygeneruje dočasný Diffie-Hellman privátní klíč, který se použije k šifrování klíče relace. Veřejný klíč odpovídající dočasnému privátnímu klíči je součástí informací o příjemci zprávy. Příjemce dešifruje klíč relace pomocí přijatého dočasného klíče a použije tento dešifrovaný klíč relace k dešifrování obálek zprávy. Pokud používáte smlouvu s dočasným klíčem ve spojení s privátním klíčem příjemce, příjemce zprávy potvrdí informace o identitě odesílatele.
Pro správu klíčů pomocí dříve distribuovaných symetrických klíčůobsahuje každá zpráva šifrovací klíč obsahu, který byl šifrovaný pomocí dříve distribuovaného šifrovacího klíče. Příjemci používají dříve distribuovaný klíč pro šifrování klíčů k dešifrování šifrovacího klíče obsahu, a poté dešifrovaný šifrovací klíč obsahu k dešifrování zašifrované zprávy.
Typická posloupnost událostí CMS pro kódování obálek dat je znázorněna na následujícím obrázku.
- Načte se ukazatel na zprávu ve formátu prostého textu .
- Symetrický klíč (session) je vygenerován.
- K šifrování dat zpráv se používá symetrický klíč a zadaný šifrovací algoritmus.
- Úložiště certifikátů je otevřeno.
- Certifikát příjemce se načte z úložiště.
- veřejný klíč je získán z certifikátu příjemce.
- Pomocí veřejného klíče příjemce se symetrický klíč zašifruje.
- Z certifikátu příjemce se načte ID příjemce.
- Do digitálně obálek zprávy jsou zahrnuty následující informace: algoritmus šifrování dat, šifrovaná data, šifrovaný symetrický klíč a struktura informací příjemce.
Pokud chcete k provádění typických úloh, které jsou uvedeny, použít funkce zpráv nízké úrovně, použijte následující postup.
Zakódovat zahalenou zprávu
Vytvořte nebo načtěte obsah.
Získejte zprostředkovatele kryptografických služeb.
Získejte certifikát příjemce.
Inicializujte strukturu CMSG_ENVELOPED_ENCODE_INFO.
Zavolejte CryptMsgCalculateEncodedLength, abyste získali velikost kódované zprávy BLOB. Přidělte paměť.
Zavolejte CryptMsgOpenToEncode, předáním CMSG_ENVELOPED pro dwMsgType a ukazatel na CMSG_ENVELOPED_ENCODE_INFO pro pvMsgEncodeInfo. Výsledkem tohoto volání získáte popisovač otevřené zprávy.
Volání CryptMsgUpdate, s předáním popisovače načteného v kroku 6 a ukazatelem na data, která mají být šifrována, obalena a zakódována. Tuto funkci lze volat tolikrát, kolikrát je potřeba k dokončení procesu kódování.
Zavolejte CryptMsgGetParama předejte popisovač získaný v kroku 6 spolu s příslušnými typy parametrů pro přístup k požadovaným zakódovaným datům. Předáním CMSG_CONTENT_PARAM například získáte ukazatel na celou zprávu PKCS #7.
Pokud se má výsledek tohoto kódování použít jako vnitřní data pro jinou zakódovanou zprávu, jako je obálka, musí být předán parametr CMSG_BARE_CONTENT_PARAM. Pro příklad se podívejte na Alternativní kód pro zprávu v obálce.
Zavřete zprávu voláním CryptMsgClose.
Výsledkem tohoto postupu je zakódovaná zpráva, která obsahuje šifrovaná data, symetrický klíč, který je šifrovaný pomocí veřejných klíčů příjemce a struktury dat informací o příjemci. Kombinace šifrovaného obsahu a šifrovaného symetrického klíče pro příjemce je digitální obálka pro tohoto příjemce. Pro více příjemců může být obálek jakýkoli typ obsahu.
Související témata