Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Zarflı veriler, herhangi bir türde şifrelenmiş içerik ve bir veya daha fazla alıcı için şifrelenmiş içerik şifreleme oturum anahtarlarından oluşur. Zarflı iletiler iletinin içeriğini gizli tutar ve yalnızca belirtilen kişilerin veya varlıkların içeriği almasına izin verir.
Şifreleme iletisi söz dizimi (CMS), zarflı iletileri kodlamak için kullanılabilir. CMS üç anahtar yönetimi tekniğini destekler: anahtar taşıma, anahtar sözleşmesi ve önceden dağıtılmış simetrik anahtar şifreleme anahtarları (KEK). Önceden dağıtılmış simetrik KEK, posta listesi anahtar dağıtımı olarak da bilinir.
Bu üç tekniğin her birinde, zarflı iletiyi şifrelemek için tek bir oturum anahtarı oluşturulur. Anahtar yönetimi sorunları, oturum anahtarının gönderen tarafından şifrelenme ve bir alıcı tarafından şifresinin çözülmesiyle ilgilidir. Tek bir şifrelenmiş ileti, anahtar yönetimi tekniklerinin bir karışımı kullanılarak birçok alıcıya dağıtılabilir.
Anahtar taşıma anahtarı yönetimi, oturum anahtarını şifrelemek için hedeflenen alıcının ortak anahtarını kullanır. Alıcı, şifrelemek için kullanılan ortak anahtarla ilişkili özel anahtarı kullanarak oturum anahtarının şifresini çözer. Alıcı daha sonra şifresi çözülen oturum anahtarını kullanarak zarflanmış verilerin şifresini çözer. Anahtar taşıma kullanıldığında, alıcı gönderenin kimliğiyle ilgili bilgileri onaylamaz.
Anahtar sözleşmesi yönetiminde geçici, kısa ömürlü Diffie-Hellman özel anahtar oluşturulur ve oturum anahtarını şifrelemek için kullanılır. Kısa ömürlü özel anahtara karşılık gelen ortak anahtar, iletinin alıcı bilgilerinin bir parçası olarak eklenir. Alıcı, alınan kısa ömürlü anahtarı kullanarak oturum anahtarının şifresini çözer ve zarflı iletinin şifresini çözmek için bu şifresi çözülmüş oturum anahtarını kullanır. Kısa ömürlü anahtar anlaşmasını alıcının özel anahtarıyla birlikte kullanarak, ileti alıcısı gönderenin kimliği hakkında doğrulanmış bilgilere sahiptir.
önceden dağıtılmışsimetrik anahtarları kullanarak anahtar yönetimi için her ileti, önceden dağıtılmış bir anahtar şifreleme anahtarıyla şifrelenmiş içerik şifreleme anahtarını içerir. Alıcılar, içerik şifreleme anahtarının şifresini çözmek için daha önce dağıtılan anahtar şifreleme anahtarını kullanır ve ardından şifresi çözülen içerik şifreleme anahtarını kullanarak zarflı iletinin şifresini çözer.
Zarflı verileri kodlamaya yönelik tipik bir CMS olay dizisi aşağıdaki çizimde gösterilmiştir.
Zarflı veri
- düz metin iletisinin işaretçisi alınır.
- Simetrik (oturum) anahtarı oluşturulur.
- İleti verilerini şifrelemek için simetrik anahtar ve belirtilen şifreleme algoritması kullanılır.
- Bir sertifika deposu açıldı.
- Alıcının sertifikası depodan alınır.
- ortak anahtar alıcının sertifikasından alınır.
- Alıcının ortak anahtarı kullanıldığında simetrik anahtar şifrelenir.
- Alıcının sertifikasından, alıcının kimliği alınır.
- Dijital olarak zarflanmış iletiye aşağıdaki bilgiler dahildir: veri şifreleme algoritması, şifrelenmiş veriler, şifrelenmiş simetrik anahtar ve alıcı bilgi yapısı.
Az önce listelenen tipik görevleri gerçekleştirmek üzere alt düzey ileti işlevlerini kullanmak için aşağıdaki yordamı kullanın.
Zarflı ileti kodlamak için
İçeriği oluşturun veya alın.
Bir şifreleme sağlayıcısı alın.
Alıcı sertifikası alın.
CMSG_ENVELOPED_ENCODE_INFO yapısını başlatın.
Kodlanmış ileti blobunun boyutunu almak için CryptMsgCalculateEncodedLengthçağırın. Bunun için bellek ayırın.
dwMsgType için CMSG_ENVELOPED ve pvMsgEncodeInfoiçin CMSG_ENVELOPED_ENCODE_INFO işaretçisini geçirerek CryptMsgOpenToEncodeçağrısı yapın. Bu çağrının bir sonucu olarak, açılan iletinin işaretçisini alırsınız.
CryptMsgUpdateçağrısı yaparak 6. adımda alınan tanıtıcıyı ve şifrelenecek, zarflanacak ve kodlanacak verilere yönelik bir işaretçi geçirin. Bu işlev, kodlama işlemini tamamlamak için gerektiği kadar çağrılabilir.
6. adımda alınan tanıtıcıyı ve uygun parametre türlerini ileterek, CryptMsgGetParamçağrısını yapın ve istenen, kodlanmış verilere erişin. Örneğin, PKCS #7 mesajının tamamına erişim için bir işaretçi almak amacıyla CMSG_CONTENT_PARAM'i parametre olarak geçirin.
Bu kodlamanın sonucu, zarflı ileti gibi başka bir kodlanmış ileti için iç veri kullanılacaksa, CMSG_BARE_CONTENT_PARAM parametresi geçirilmelidir. Örnek için bakınız: Zarflı Mesajı Kodlamak İçin Alternatif Kod.
CryptMsgCloseçağrısı yaparak iletiyi kapatın.
Bu yordamın sonucu, şifrelenmiş verileri, alıcının ortak anahtarlarıyla şifrelenmiş simetrik anahtar ve alıcı bilgi veri yapılarını içeren kodlanmış bir iletidir. Alıcı için şifrelenmiş içerik ve şifrelenmiş simetrik anahtarın birleşimi, o alıcı için dijital bir zarf oluşturur. Her tür içerik birden çok alıcı için zarflanabilir.
İlgili konular