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

各种标准的原始文档

  1. Crypto::https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptoapi-system-architecture

  2. PKCS#11::https://docs.oracle.com/javase/9/security/pkcs11-reference-guide1.htm#JSSEC-GUID-30E98B63-4910-40A1-A6DD-663EAF466991

  3. GMT 0016-2012:https://max.book118.com/html/2017/1225/145915404.shtm

  4. GMT 0018-2012 :http://www.gmbz.org.cn/main/viewfile/20180110020642562680.html

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

  1. Crypto API:

    • 概述:Crypto API是一组用于加密和解密操作的软件接口。它通常由操作系统提供,并用于执行各种加密算法和密钥管理功能。
    • 使用方式:在编程中,开发人员可以使用Crypto API来实现数据加密、数字签名、随机数生成等功能。具体使用方式取决于操作系统和编程语言,通常需要调用相应的API函数来执行所需的加密操作。
  2. PKCS#11:

    • 概述:PKCS#11(Public-Key Cryptography Standards #11)是一种通用的加密设备接口标准,用于与各种加密硬件(如智能卡、USB加密令牌等)进行通信。
    • 使用方式:在编程中,开发人员可以使用PKCS#11标准来与加密硬件进行交互,执行诸如密钥管理、数字签名、加密解密等操作。通常需要使用PKCS#11提供的API函数,以及特定加密硬件厂商提供的驱动程序或库来实现功能。
  3. GMT 0016-2012:

    • 概述:GMT 0016-2012是中国国家标准,定义了密码应用接口规范,用于在计算机系统中实现密码算法和安全功能。
    • 使用方式:在编程中,如果开发人员需要遵循中国国家标准,可以参考GMT 0016-2012定义的接口规范来实现相应的密码算法和安全功能。具体使用方式可能涉及调用标准定义的接口函数或类库来实现加密、解密、数字签名等操作。
  4. GMT 0018-2012:

    • 概述:GMT 0018-2012是中国国家标准,定义了密码术语及定义,用于统一密码领域的术语和定义。
    • 使用方式:在编程中,开发人员可以参考GMT 0018-2012中定义的术语和定义,以确保在密码相关的代码编写和交流中使用一致的术语和理解。这可以帮助避免混淆和误解,提高代码的可读性和可维护性。
      总体来说,这些技术在编程中的使用方式取决于具体的

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

Crypto API

分类:

  1. 加密算法函数:
    • 加密函数(如AES_encrypt)
    • 解密函数(如AES_decrypt)
  2. 摘要算法函数:
    • 摘要计算函数(如SHA1)
  3. 数字签名函数:
    • 签名生成函数(如RSA_sign)
    • 签名验证函数(如RSA_verify)
  4. 密钥管理函数:
    • 密钥生成函数(如RSA_generate_key)
    • 密钥导入导出函数(如EVP_PKEY_export)
  5. 其他:
    • 随机数生成函数(如RAND_bytes)

异同:

  • 优点
    • 提供了各种加密算法和功能的标准接口,方便开发人员使用。
    • 可以在不同操作系统和编程语言中使用。
  • 缺点
    • 可能在不同操作系统或平台上有一定差异,需要考虑兼容性问题。

PKCS#11

分类:

  1. 密钥管理函数:
    • 密钥生成函数(如C_GenerateKey)
    • 密钥导入导出函数(如C_ImportKey)
  2. 数字签名函数:
    • 签名生成函数(如C_Sign)
    • 签名验证函数(如C_Verify)
  3. 加密解密函数:
    • 加密函数(如C_Encrypt)
    • 解密函数(如C_Decrypt)
  4. 其他安全功能:
    • 会话管理函数(如C_OpenSession)
    • 对象管理函数(如C_CreateObject)

异同:

  • 优点
    • 提供了与各种加密硬件通信的标准接口,支持硬件加速的加密操作。
    • 可以在不同的加密硬件上使用。
  • 缺点
    • 需要了解特定硬件厂商提供的驱动程序或库。

GMT 0016-2012

分类:

  1. 密码算法接口函数:
    • 加密算法函数(如SM2_Encrypt)
    • 解密算法函数(如SM2_Decrypt)
  2. 数字签名接口函数:
    • 签名生成函数(如SM2_Sign)
    • 签名验证函数(如SM2_Verify)
  3. 密钥管理接口函数:
    • 密钥生成函数(如SM2_GenerateKey)
    • 密钥导入导出函数(如SM2_ExportKey)

异同:

  • 优点
    • 遵循中国国家标准,适用于在中国国内开发的项目。
    • 提供了与国家密码算法和安全标准相关的接口函数。
  • 缺点
    • 仅适用于特定的国家或地区。

GMT 0018-2012

分类:

  1. 密码术语和定义:
    • 定义了各种密码学术语的含义和解释,如密钥、数字签名等。

异同:

  • 优点
    • 统一了密码学领域的术语和定义,有助于提高交流和理解的一致性。
  • 缺点
    • 主要是术语和定义,没有具体的编程接口函数。

代码及截图

  1. EncryptDecryptFile

  1. Sign_Verify

  1. PKCS#11

posted @ 2024-04-10 11:23  20211301郑润芃  阅读(6)  评论(0编辑  收藏  举报