如何:使用加密設定

重要

2020年3月之前發行的 Microsoft Rights Management Service SDK 版本已被取代;使用舊版的應用程式必須更新為使用2020年3月版本。 如需完整的詳細資訊,請參閱淘汰 通知

Microsoft Rights Management Service SDK 尚未規劃任何進一步的增強功能。 我們強烈建議採用 Microsoft 資訊保護 SDK 來進行分類、標記和保護服務。

本主題會將您導向我們的加密套件,並顯示其部分程式碼使用片段。

支援 AES 256,新的預設值

假設您是對 RMS SDK 2.1 2015 年 3 月更新或更新版本進行建置,則使用 AES 256 式加密不需額外的程式碼,因為它是新的預設值。 我們鼓勵您慎重考慮將您的應用程式更新為此版本,以獲得額外的 AES 256 安全性優勢。

重要

2014 年 10 月版本起已提供 AES 256 受保護檔案的支援。 如果您正在執行使用早於 2014 年 10 月的 SDK 版本建置的應用程式,此更新會中斷您的應用程式。 請確定您要建置之應用程式的客戶正使用更新後的 SDK,或願意立即更新為您的應用程式的最新版本。

API 加密支援

2015 年 3 月更新開始,我們已經在我們的 API 和其相關聯的加密封裝中納入下列三個旗標︰

  • IPC_ENCRYPTION_PACKAGE_AES256_CBC4K
  • IPC_ENCRYPTION_PACKAGE _AES128_CBC4K
  • IPC_ENCRYPTION_PACKAGE _AES128_ECB (也就是已過時的演算法)

加密封裝旗標 (請參閱 慣用的加密) 可搭配授權內容旗標 IPC_LI_PREFERRED_ENCRYPTION_PACKAGE 使用。

以下是一些簡單的程式碼片段,示範如何使用新的授權屬性。

已過時的演算法

我們將不再於 API 公開 IPC_LI_DEPRECATED_ENCRYPTION_ALGORITHMS 旗標。 這表示如果未來的應用程式參考這個旗標,它們將不再編譯,但已使用它建置的應用程式仍將繼續運作,因為我們將會私下在 API 程式碼中採用旗標。

我們仍然可以藉由變更一個旗標來達成取得已被取代之舊加密演算法旗標的優點。 如需範例,請參閱下列程式碼片段。

使用 AES 256 CBC4K 保護檔案

不需要變更程式碼,AES 256 CBC4K 是預設值。

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

使用 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);

使用 AES 128 ECB 保護檔案 (已過時的演算法)

這個範例也示範支援 已過時的演算法 的新方式。

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);