实验一-密码引擎-3-加密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)

  • Crypto API

    • Crypto API(应用程序编程接口)是一组函数、协议和工具,允许开发人员与加密服务进行交互,并在其应用程序中执行各种加密操作。这些API使开发人员能够安全地处理敏感信息,确保数据隐私,并实现诸如加密、解密、数字签名和哈希等加密算法。

    • 加密API提供了一个抽象层,使开发人员能够更轻松地利用复杂的加密技术,而无需深入了解底层算法。这些API通常用于各种领域,包括安全通信、安全存储和身份验证。

    • 一些常见的加密API提供的功能包括:

      • 加密和解密:使用对称或非对称加密算法对数据进行加密和解密的API。对称算法使用相同的密钥进行加密和解密,而非对称算法使用不同的密钥进行这些操作
      • 哈希
  • PKCS#11

    • PKCS#11 是一种加密设备接口标准,用于与加密硬件设备(如智能卡、HSM等)进行通信和交互。它定义了一组函数和数据结构,允许应用程序对加密设备执行各种操作,如密钥管理、加密、解密、签名和验证。

    • PKCS#11 提供了一个通用的接口,使得应用程序可以与各种不同类型的加密设备进行通信,而无需了解底层硬件的具体细节。这使得开发人员可以更容易地集成加密硬件功能到他们的应用程序中,从而提高了安全性和可信度。

    • PKCS#11 支持对称加密、非对称加密、数字签名、随机数生成等多种功能,使得开发人员能够在应用程序中利用加密硬件来保护敏感数据和执行安全操作。

  • GMT 0016-2012 智能密码钥匙密码应用接口规范
    这一标准的核心内容包括:

    • 密码生成要求:规定了智能密码钥匙中所采用的密码生成算法和加密机制,确保密码的安全性和难以破解性。

    • 密码验证要求:明确了智能密码钥匙与汽车门锁、启动系统等部件之间的密码验证流程和标准,以防止未经授权的钥匙进入和启动车辆。

    • 密码存储要求:规定了智能密码钥匙内部存储密码的方式和安全性要求,确保密码信息不会被恶意获取或篡改。

    • 密码传输要求:规范了智能密码钥匙与车辆之间的密码传输过程,包括传输协议、加密方式等,以保证密码在传输过程中的安全性和完整性。

1、总结这些API在编程中的使用方式

Crypto API:

功能:提供了在计算机程序中执行密码学操作的标准接口,如加密、解密、签名、验证等。
使用方式:通常以软件库的形式提供,开发人员通过调用库中的函数来实现密码学功能。具体使用方式取决于所选编程语言和平台。
示例操作:生成密钥、加密数据、解密数据、生成数字签名、验证数字签名等。

PKCS#11:

功能:定义了密码设备(如硬件安全模块)与软件之间的接口,用于进行加密、解密、签名、密钥管理等操作。
使用方式:通过调用 PKCS#11 规定的函数来实现密码学操作,可以与各种密码设备进行通信,包括软件和硬件实现。
示例操作:打开密码设备、生成密钥对、加密数据、解密数据、签名数据、验证签名等。

GMT 0016-2012 和 GMT 0018-2012:

GMT 0016-2012:定义了密码应用编程接口,提供了密码学功能的编程接口,类似于 PKCS#11。
GMT 0018-2012:定义了密码设备接口,用于与密码设备进行通信和管理,也类似于 PKCS#11。
使用方式:遵循规定的接口和函数调用方式,实现密码学操作和与密码设备的通信。
示例操作:类似于 PKCS#11,包括打开密码设备、生成密钥、加密数据、解密数据、签名数据、验证签名等。

2、列出这些API包含的函数,进行分类,并总结它们的异同

Crypto API:

加密函数:
    AES_encrypt() - 使用 AES 算法对数据进行加密。
    DES_encrypt() - 使用 DES 算法对数据进行加密。
    RSA_encrypt() - 使用 RSA 算法对数据进行加密。

解密函数:
    AES_decrypt() - 使用 AES 算法对数据进行解密。
    DES_decrypt() - 使用 DES 算法对数据进行解密。
    RSA_decrypt() - 使用 RSA 算法对数据进行解密。

摘要函数:
    SHA1() - 计算数据的 SHA-1 摘要。
    SHA256() - 计算数据的 SHA-256 摘要。
    MD5() - 计算数据的 MD5 摘要。

密钥管理函数:
    generate_key() - 生成密钥。
    import_key() - 导入密钥。
    export_key() - 导出密钥。

PKCS#11 :

会话管理函数:
    C_OpenSession() - 打开会话。
    C_CloseSession() - 关闭会话。
    C_GetSessionInfo() - 获取会话信息。

对象管理函数:
    C_CreateObject() - 创建对象。
    C_DestroyObject() - 销毁对象。
    C_SetAttributeValue() - 设置对象属性。

密钥管理函数:
    C_GenerateKeyPair() - 生成密钥对。
    C_ImportKey() - 导入密钥。
    C_Encrypt() - 使用密钥进行加密。

权限管理函数:
    C_Login() - 用户登录。
    C_Logout() - 用户登出。
    C_SetPIN() - 设置 PIN 码。

GMT 0016-2012:

密码学原语函数:
    gmssl_hash() - 计算哈希值。
    gmssl_encrypt() - 进行加密操作。
    gmssl_decrypt() - 进行解密操作。

安全协议支持函数:
    ssl_connect() - SSL/TLS 连接。
    ipsec_configure() - 配置 IPSec。
    ssh_authenticate() - SSH 认证。

安全标准实现函数:
    x509_certificate_operation() - X.509 证书操作。
    digital_signature() - 数字签名和验证。
    key_management() - 密钥管理。

设备事件管理函数:
    WaitForDeviceEvent() - 等待设备插拔事件的函数。
    CancelWaitForDeviceEvent() - 取消等待设备插拔事件的函数。

设备枚举函数:
    EnumerateDevices() - 枚举当前连接到系统的设备。
    GetDeviceInfo() - 获取设备的详细信息,如设备名称、序列号等。

设备状态检测函数:
    CheckDeviceStatus() - 检测特定设备的状态,如是否可用、是否已插入等。

设备连接/断开管理函数:
    ConnectToDevice() - 连接到指定设备。
    DisconnectFromDevice() - 断开与指定设备的连接。

设备属性查询函数:
    QueryDeviceProperties() - 查询设备的属性,如设备类型、支持的功能等。

GMT 0018-2012:

数字签名函数:
    gmt18_sign() - 生成数字签名。
    gmt18_verify() - 验证数字签名。

密钥管理函数:
    gmt18_generate_key() - 生成密钥。
    gmt18_import_key() - 导入密钥。
    gmt18_export_key() - 导出密钥。

加密函数:
    gmt18_symmetric_encrypt() - 对称加密。
    gmt18_asymmetric_encrypt() - 非对称加密。

异同总结:

  • 功能覆盖范围:所有这些标准或接口都涉及到加密、解密和密钥管理等方面,但具体的函数和功能覆盖有所不同。

  • 标准适用范围:Crypto API 主要用于编程语言中的加密功能;PKCS#11 用于加密设备和安全模块之间的通信;GMT 0016-2012 和 GMT 0018-2012 是中国国家标准,用于规范国内加密算法和安全标准的实现。

  • 标准来源:Crypto API 是由各种编程语言提供的标准库或接口;PKCS#11 是由RSA Security提出的标准;GMT 0016-2012 和 GMT 0018-2012 是中国国家标准,由国家密码管理局发布。

  • 国际化程度:Crypto API 和 PKCS#11 是国际标准,被广泛应用于全球范围;GMT 0016-2012 和 GMT 0018-2012 是中国国家标准,主要在中国国内使用。

  • 具体实现细节:不同标准或接口在实现细节、支持的算法和安全协议等方面可能有所不同,需要根据具体需求选择合适的标准或接口。

3、以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口)运行截图

Crypto API

龙脉密码钥匙驱动实例工具等\mToken-GM3000\csp\samples\CryptAPI\VC\EncryptDecryptFile




PKCS#11

龙脉密码钥匙驱动实例工具等\mToken-GM3000\pkcs11\windows\samples\GetUSBInfos

DES

RC2

RSA

AES

SKF

龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\windows\DevAuth

posted on 2024-04-14 14:32  20211417黄琪凯  阅读(13)  评论(0编辑  收藏  举报