1. 程式人生 > 資訊 >比亞迪 2022 款唐 EV 即將上市,官方公佈內外全景外觀

比亞迪 2022 款唐 EV 即將上市,官方公佈內外全景外觀

實驗一-密碼引擎-加密API研究

任務詳情

密碼引擎API的主要標準和規範包括:
1 微軟的Crypto API
2 RAS公司的PKCS#11標準
3 中國商用密碼標準:GMT 0016-2012 智慧密碼鑰匙密碼應用介面規範,GMT 0018-2012密碼裝置應用介面規範等

研究以上API介面,總結他們的異同,並以龍脈GM3000Key為例,寫出呼叫不同介面的程式碼,提交部落格連結和程式碼連結。
內容:
0 查詢各種標準的原始文件,研究學習(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
1 總結這些API在程式設計中的使用方式(5分)
2 列出這些API包含的函式,進行分類,並總結它們的異同(10分)
3 以龍脈GM3000Key為例,寫出呼叫不同介面的程式碼(Crypto API,PKCS#11,SKF介面),把執行截圖加入部落格,並提供程式碼連結(10分)

學習過程

0 查詢各種標準的原始文件,研究學習(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)

1 總結這些API在程式設計中的使用方式

2 列出這些API包含的函式,進行分類,並總結它們的異同)

Crypto API

Windows CryptoAPI是Microsoft 公司提出的安全加密應用服務框架,也是PKI推薦使用的加密 API。它提供了在Win32 環境下使用認證、編碼、加密和簽名等安全服務時的標準加密介面,用於增強應用程式的安全性與可控性。應用開發者可以在不瞭解複雜的加密機制和加密演算法的情況下,簡便、快速地開發出標準、通用和易於擴充套件的安全加密應用程式。CryptoAPI 提供的功能主要有:金鑰管理、資料加密和解密、數字簽名和驗證、證書管理、可信根證書管理、資料編碼和解碼、數字證書編碼和解碼、PKCS#7 標準格式編碼和解碼等。
CryptoAPI體系架構共由五大主要部分組成:基本CSP函式(Base Cryptographic Functions)、證書編解碼函式(Certificate Encode/Decode Functions)、證書庫管理函式(Certificate Store Functions),簡單訊息函式(Simplified Message Functions)、底層訊息函式(Low-level Message Functions)。其結構圖如下圖所示。

基本加密函式:用於選擇CSP、建立CSP連線、產生金鑰、交換及傳輸金鑰等操作。這些函式為開發加密應用程式提供了足夠靈活的空間。所有CSP 的通訊都是通過這些函式,一個CSP 是實現所有加密操作的獨立模組,於是在每一個加密應用程式中至少需要提供一個CSP來完成所需的加密操作。

證書編/解碼函式:用於資料加密、解密、雜湊等操作。這類函式支援資料的加密/解密操作;在應用程式中完成計算雜湊、建立和校驗數字簽名操作;用來對證書、證書撤銷列表、證書請求和證書擴充套件進行編碼和解碼操作。

證書庫管理函式:用於數字證書及證書庫管理等操作。這組函式用於管理證書、證書撤銷列表和證書信任列表的使用、儲存、獲取等。

簡單訊息函式:用於訊息處理,比如訊息編碼/解碼、訊息加/解密、數字簽名及簽名驗證等操作。它是把多個低層函式包裝在一起以完成某個特定任務,以方便使用者的使用。

底層訊息函式:低階訊息函式對傳輸的PKCS#7 資料進行編碼,對接收到的PKCS#7 資料進行解碼,並且對接收到的訊息進行解密和驗證。它可以實現簡單訊息函式可以實現的所有功能,它提供更大的靈活性,但一般會需要更多的函式呼叫。對於絕大多數應用,我們不推薦使用低階訊息函式,使用簡化訊息函式更為方便。

PKCS#11

  • 在密碼系統中,PKCS#11是公鑰加密標準(PKCS, Public-Key Cryptography Standards)中的一份子 ,由RSA實驗室(RSA Laboratories)釋出[1],它為加密令牌定義了一組平臺無關的API ,如硬體安全模組和智慧卡。
  • PKCS#11的物件可根據其生命期長短的不同分成兩大類:一類是持久儲存的類物件,這類物件被儲存在USB Key的安全儲存區域當中,直到應用程式主動刪除這些物件;另一類是會話物件,這類物件只存在於執行時建立的特定會話(Session物件)當中,一旦會話結束,這類物件也跟著被刪除。決定物件生命期的模板屬性是CKA_TOKEN,這是個布林值,所有的物件都有這一屬性。當該值為TRUE時,該物件將被儲存到Key內的儲存空間,否則,該物件儲存在會話空間中,當會話結束後,該物件即銷燬。
  • 指令列表




  • 架構

GMT 0016-2012

本標準規定了基於PKI密碼體制的智慧密碼鑰匙密碼應用介面,描述了密碼應用介面函式、資料型別、引數的定義和裝置安全要求。適用於智慧密碼鑰匙產品的研製、使用和檢測。
智慧密碼鑰匙密碼應用介面位於智慧密碼鑰匙應用程式與裝置之間,如下圖:

裝置的應用結構:一個裝置中存在裝置認證金鑰和多個應用,應用之間相互獨立。裝置的邏輯結構如下圖:

裝置管理系列函式:

訪問控制系列函式:

應用管理函式:

容器管理系列函式:

密碼服務系列函式:

GMT 0018-2012

  1. 本標準的目標是為公鑰密碼基礎設施應用體系框架下的服務類密碼裝置制定統一的應用介面標準,通過該介面呼叫密碼裝置,向上層提供基礎密碼服務。為該類密碼裝置的開發、使用及檢測提供標準依據和指導,有利於提高該類密碼裝置的產品化、標準化和系列化水平。
  2. 範圍:本標準規定了公鑰密碼基礎設施應用技術體系下服務類密碼裝置的應用介面標準,適用於服務類密碼裝置的研製、使用,以及基於該類密碼裝置的應用開發,也可用於指導該類密碼裝置的檢測。
  3. 密碼裝置應用介面在公鑰密碼基礎設施應用技術體系框架中的位置:在公鑰密碼基礎設施應用技術體系框架中,密碼裝置服務層由密碼機、密碼卡、智慧密碼終瑞等裝置組成,通過本標準規定的密碼裝置應用介面向通用密碼服務層提供基礎密碼服務。
  4. 裝置管理類函式:
    開啟裝置:SDF_OpenDevice
    關閉裝置:SDF_CloseDevice
    建立會話:SDF_OpenSession
    關閉會話:SDF_CloseSession
    獲取裝置資訊:SDF_GetDeviceInfo
    產生隨機數:SDF_GenerateRandom
    獲取私鑰使用許可權: SDF_GetPrivateKeyAccessRight
    釋放私鑰使用許可權: SDF_ReleasePrivateKeyAccessRight
  5. 金鑰管理類函式:
    匯出 RSA 簽名公 鑰:SDF_ExportSignPublicKey_RSA
    匯出 RSA 加密公鑰:SDF_ExportEncPublicKey_RSA
    產生RSA非對稱金鑰對並輸出:SDF_GenerateKeyPair_RSA
    生成會話金鑰並用內部RSA公鑰加密輸出:SDF_GenerateKeyWithIPK_RSA
    生成會話金鑰並用外部RSA公鑰加密輸出:SDF_GenerateKeyWithEPK_RSA
    導人會話金鑰並用內部RSA私鑰解密:SDF_ImportKeyWithISK_RSA
    基於 RSA 演算法的數宇倍封轉換:SDF_ExchangeDigitEnvelopeBaseOnRSA
    匯出 ECC 簽名公鑰:SDF_ExportSignPublicKey_ECC
    匯出 ECC 加密公鑰:SDF_ExportEncPublicKey_ECC
    產生ECC非對稱金鑰對並輸出:SDF_GenerateKeyPair_ECC
    生成會話金鑰並用內部ECC公鑰加密輸岀:SDF_GenerateKeyWithIPK_ECC
    生成會話金鑰並用外部ECC公鑰加密輸出:SDF_GenerateKeyWithEPK_ECC
    匯入會話金鑰並用內部ECC私鑰解密:SDFJmportKeyWithlSKJECC
    生成金鑰協商引數並輸出:SDF_GenerateAgreementDataWithECC
    計算會話金鑰:SDF_GenerateKey WithECC
    產生協商資料並計算會話金鑰:SDF—GenerateAgreementDataAndKeyWithECC
    基於 ECC演算法的數字信封轉換:SDF_ExchangeDigitEnvelopeBaseOnECC
    生成會話金鑰並用金鑰加密金鑰加密輸出: SDF_GenerateKeyWithKEK
    匯入會話金鑰並用金鑰加密金鑰解密:SDF_ImportKeyWithKEK
    銷燬會話金鑰:SDF_DestroyKey
  6. 非對稱演算法運算類函式
    部公鑰 RSA 運算:SDF_ExternalPublicKeyOperation_RSA
    內部公鑰 RSA 運算:SDF_InternalPublicKeyOperation_RSA
    內部私鑰 RSA 運算:SDF_InternalPrivateKeyOperation_RSA
    外部金鑰 ECC 驗證:SDF_ExternalVerify_ECC
    內部金鑰 ECC 簽名:SDF_InternalSign_ECC
    內部金鑰 ECC 驗證:SDF_InternalVerify_ECC
    外部金鑰 ECC 加密:SDF_ExternalEncrypt_ECC
  7. 對稱演算法運算類函式
    對稱加密:SDF_Encrypt
    對稱解密:SDF_Decrypt
    計算MAC:SDF_CalculateMAC
  8. 雜湊運算類函式
    雜湊運算初始化:SDF_HashInit
    多包雜湊運算:SDF_HashUpdate
    雜湊運算結束:SDF_HashFinal
  9. 安全要求
    (1)基於本標準設計、開發的密碼裝置在金鑰管理方面,應滿足以下要求:
    裝置金鑰的使用不對應用系統開放;
    金鑰必須用安全的方法產生並存儲;
    在任何時間、任何情況下,除公鑰外的金鑰均不能以明文形式出現在密碼裝置外;
    密碼裝置內部儲存的金鑰應具備有效的金鑰保護機制,防止解剖、探測和非法讀取;
    密碼裝置內部儲存的金鑰應具備許可權控制機制,防止非法使用和匯出。
    (2)密碼服務要求:
    使用的密碼演算法應得到國家密碼主管部門的批准;
    使用國家密碼主管部門認可的密碼演算法晶片;
    本標準所列的所有介面函式均應能被應用系統任意呼叫。
    (3)裝置狀態要求:
    密碼裝置應具有初始和就緒兩個狀態;
    未安裝裝置金鑰的密碼裝置應處於初始狀態,已安裝裝置金鑰的密碼裝置應處於就緒狀態;
    在初始狀態下,除可讀取裝置資訊、裝置金鑰的生成或恢復操作外,不能執行任何操作,生成或恢復裝置金鑰後,密碼裝置處於就緒狀態;
    在就緒狀態下,除裝置金鑰的生成或恢復操作外,應能執行任何操作;
    在就緒狀態下進行的金鑰操作,裝置操作員應經過密碼裝置的認證。
    (4)其他要求:
    密碼裝置應有安全機制和措施,保證金鑰在生成、安裝、匯入、儲存、備份.恢復及銷燬整個生存期間的安全,此安全機制可由裝置廠商自行設計實現

3 以龍脈GM3000Key為例,寫出呼叫不同介面的程式碼(Crypto API,PKCS#11,SKF介面),把執行截圖加入部落格,並提供程式碼連結