Udostępnij za pośrednictwem


Instrukcje: korzystanie z ustawień szyfrowania

Ważne

Wersje zestawu Microsoft Rights Management Service SDK wydane przed marcem 2020 r. są przestarzałe; aplikacje korzystające z wcześniejszych wersji muszą zostać zaktualizowane w celu korzystania z wersji z marca 2020 r. Aby uzyskać szczegółowe informacje, zobacz powiadomienie o wycofaniu.

Zestaw SDK usługi Microsoft Rights Management nie planuje dalszych ulepszeń. Zdecydowanie zalecamy wdrożenie zestawu SDK Microsoft Information Protection na potrzeby klasyfikacji, etykietowania i usług ochrony.

Ten temat kieruje użytkowników do pakietów szyfrowania firmy Microsoft i zawiera przykłady fragmentów kodu, w których zastosowano te pakiety.

Obsługa nowego domyślnego algorytmu szyfrowania AES 256

Żaden dodatkowy kod nie jest wymagany do korzystania z szyfrowania opartego na nowym domyślnym algorytmie AES 256 przy założeniu, że do opracowywania aplikacji jest używana aktualizacja zestawu RMS SDK 2.1 z marca 2015 lub nowsza. Zachęcamy do rozważenia możliwości zaktualizowania aplikacji przy użyciu tej wersji w celu skorzystania z dodatkowych zalet zabezpieczeń algorytmu AES 256.

Ważne

Obsługa plików chronionych przy użyciu algorytmu AES 256 była dostępna już w wersji z października 2014 roku. Jeśli używasz aplikacji utworzonych za pomocą wersji zestawu SDK sprzed października 2014 r., ta aktualizacja spowoduje awarię aplikacji. Upewnij się, że klienci aplikacji, które tworzysz, używają zaktualizowanego zestawu SDK lub są gotowi do natychmiastowego przeprowadzenia aktualizacji do najnowszej wersji aplikacji.

 

Obsługa szyfrowania w interfejsie API

Począwszy od aktualizacji z marca 2015 roku, uwzględniliśmy następujące trzy flagi w naszym interfejsie API i skojarzonych pakietach szyfrowania:

  • IPC_ENCRYPTION_PACKAGE_AES256_CBC4K
  • IPC_ENCRYPTION_PACKAGE _AES128_CBC4K
  • IPC_ENCRYPTION_PACKAGE _AES128_ECB (znane również jako przestarzałe algorytmy)

Flagi pakietu szyfrowania, zobacz Preferowane szyfrowanie, można używać w połączeniu z flagą Właściwość licencji — IPC_LI_PREFERRED_ENCRYPTION_PACKAGE.

Poniższe przykłady fragmentu kodu przedstawiają sposób użycia nowej właściwości licencji.

Przestarzałe algorytmy

Nie ujawniamy już flagi IPC_LI_DEPRECATED_ENCRYPTION_ALGORITHMS w naszym interfejsie API. Oznacza to, że kompilacje aplikacji odwołujących się do tej flagi nie będą możliwe w przyszłości, ale aplikacje, które zostały już utworzone przy użyciu tej flagi, będą nadal działać, ponieważ flaga będzie prywatnie uznawana w kodzie interfejsu API.

Nadal będzie można uzyskiwać korzyści zapewniane przez przestarzałą flagę algorytmów szyfrowania, zmieniając po prostu jedną flagę. Jako przykład mogą posłużyć poniższe fragmenty kodu.

Ochrona plików przy użyciu algorytmu AES 256 CBC4K

Zmiana kodu nie jest potrzebna, ponieważ AES 256 CBC4K jest ustawieniem domyślnym.

hr = IpcCreateLicenseFromTemplateID(pcTil->aTi[0].wszID,
                                0,
                                NULL,
                                &pLicenseHandle);

Ochrona plików przy użyciu algorytmu AES-128 CBC4K

hr = IpcCreateLicenseFromTemplateID(pcTil->aTi[0].wszID,
                                0,
                                NULL,
                                &pLicenseHandle);

DWORD dwEncryptionMode = IPC_ENCRYPTION_PACKAGE_AES128_CBC4K;

hr = IpcSetLicenseProperty(pLicenseHandle,
                        false,
                        IPC_LI_PREFERRED_ENCRYPTION_PACKAGE,
                        &dwEncryptionMode);

Ochrona plików przy użyciu algorytmu AES-128 ECB (przestarzałe algorytmy)

W tym przykładzie przedstawiono również nową metodą obsługi przestarzałych algorytmów.

hr = IpcCreateLicenseFromTemplateID(pcTil->aTi[0].wszID,
                                0,
                                NULL,
                                &pLicenseHandle);

DWORD dwEncryptionMode = IPC_ENCRYPTION_PACKAGE_AES128_ECB;

hr = IpcSetLicenseProperty(pLicenseHandle,
                        false,
                        IPC_LI_PREFERRED_ENCRYPTION_PACKAGE,
                        &dwEncryptionMode);