首页 > 其他分享 >实验一-密码引擎-3-加密API研究

实验一-密码引擎-3-加密API研究

时间:2024-04-14 19:22:41浏览次数:23  
标签:API 加密 函数 RSA SDF 引擎 密钥

密码引擎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)

Crypto API

CryptoAPI(简称CAPI)是Windows向应用程序开发人员提供的一套密码学编程接口,包括加密解密、身份认证和编码解码等。加密服务提供程序(Cryptographic Service Provider,简称CSP)也称加密服务提供商,指的是Microsoft或其他公司提供的包含密码算法的DLL模块,CryptoAPI的调用最终是由这些模块中的相关API 执行的。具体说来,CryptoAPI是由Advapi32.dll和Crypt32.dll导出的,应用程序对CryptoAPI的调用,会经过CryptoSPI(系统编程接口),然后CryptoSPI将调用传递到加密服务提供程序。应用程序开发人员可以使用CryptoAPI,而无需了解其底层实现细节,就像可以在不了解图形硬件配置的情况下可以使用图形库中的API一样

PKCS#11

PKCS#11是密码学令牌接口标准(Cryptographic Token Interface Standard)的简称。它定义了一套API,用于访问和管理密码学令牌,例如智能卡和硬件安全模块(HSM)。PKCS#11 API允许应用程序执行加密、解密、签名、密钥生成等操作,而这些操作都在安全的密码学令牌上进行。这个标准由RSA安全(现在属于戴尔科技)开发,并被广泛用于安全相关应用程序和系统中

GMT 0016-2012

规定了基于PKI密码体制的智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求

GMT 0018-2012

规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准

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

Crypto API

CryptoAPI函数使用“加密服务提供者”(CSP)完成数据加密、解密以及密钥的存储管理、所有的CSP都是相互独立的模块。理论上,CSP应该独立于特定的应用程序,也就是说所有的应用程序可以使用任何一个CSP。但是,实际上有些应用程序只能与特定的CSP协作。CSP与应用程序之间的关系类似于Windows GDI模型。CSP就类似于图形硬件驱动程序。

PKCS#11

KCS#11是公钥加密标准(PKCS, Public-Key Cryptography Standards)中的一份子 ,由RSA实验室(RSA Laboratories)发布,它为加密令牌定义了一组平台无关的API ,如硬件安全模块和智能卡。 PKCS#11称为Cyptoki,定义了一套独立于技术的程序设计接口,USBKey安全应用需要实现的接口。 由于没有一个真正的标准加密令牌,这个API已经发展成为一个通用的加密令牌的抽象层。 PKCS#11 API定义最常用的加密对象类型( RSA密钥,X.509证书,DES /三重DES密钥等)和所有需要使用的功能,创建/生成,修改和删除这些对象。注意:pkcs#11只提供了接口的定义, 不包括接口的实现,一般接口的实现是由设备提供商提供的,如usbkey的生产厂商会提供 符合PKCS#11接口标准的API的实现。这样你只要通过接口调用API函数即可实现其功能

GMT 0016-2012

调用头文件以及接口进行使用

GMT 0018-2012

密码行业标准列表

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

Crypto API

  1. 基本加密函数
    服务提供者函数:

    密钥的产生和交换函数:

    编码/解码函数:

    数据加密/解密函数:

    哈希和数字签名函数:

    证书和证书库函数
    证书库函数:

    维护函数:

    证书函数:

    证书撤销列表函数:

    证书信任列表函数:

    扩展属性函数:

    证书验证函数
    使用CTL 的函数:

    证书链验证函数:

    消息函数
    低级消息函数:

    简化消息函数:

    辅助函数
    数据管理函数:

    数据转换函数:

    增强密钥用法函数:

    密钥标示函数:

    证书库回调函数:

    OID 支持函数:

    远程对象恢复函数:

    PFX 函数:

PKCS#11

通用接口:

加密解密:

签名和消息鉴别:

GMT 0016-2012

设备管理函数:

访问控制函数:

应用管理函数:

文件管理函数:

容器管理函数:

密码服务函数:

GMT 0018-2012

设备管理类函数:

  • 打开设备:SDF_OpenDevice
  • 关闭设备:SDF_CloseDevice
  • 创建会话:SDF_OpenSession
  • 关闭会话:SDF_CloseSession
  • 获取设备信息:SDF_GetDeviceInfo
  • 产生随机数:SDF_GenerateRandom
  • 获取私钥使用权限:SDF_GetPrivateKeyAccessRight
  • 释放私钥使用权限:SDF_ReleasePrivateKeyAccessRight
    密钥管理类函数
  • 导出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私钥解密:SDF_ImportKeyWithISK_ECC
  • 生成密钥协商参数并输出:SDF_GenerateAgreementDataWithECC
  • 计算会话密钥:SDF_GenerateKeyWithECC
  • 产生协商数据并计算会话密钥:SDF_GenerateAgreementDataAndKeyWithECC
  • 基于ECC算法的数字信封转换:SDF_ExchangeDigitEnvelopeBaseOnECC
  • 生成会话密钥并用密钥加密密钥加密输出:SDF_GenerateKeyWithKEK
  • 导入会话密钥并用密钥加密密钥解密:SDF_ImportKeyWithKEK
  • 销毁会话密钥:SDF_DestroyKey
    非对称算法运算类函数:
  • 外部公钥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
    对称算法运算类函数:
  • 对称加密:SDF_Encrypt
  • 对称解密:SDF_Decrypt
  • 计算MAC:SDF_CalculateMAC
    用户文件操作类函数
  • 创建文件:SDF_CreateFile
  • 读取文件:SDF_ReadFile
  • 写文件:SDF_WriteFile
  • 删除文件:SDF_DeleteFile

3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接

  1. SKF接口
  2. API接口
  3. PKCS#11
    DES:

    DES3:


    RC2:


    RC4:


    RSA:


    AES:
  4. getusbinfos.sln

标签:API,加密,函数,RSA,SDF,引擎,密钥
From: https://www.cnblogs.com/asdlg321/p/18120626

相关文章

  • Web APIs
    0x01概述API是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件访问一组例程的能力WebAPIs是W3C组织的标准,是JS独有的部分WebAPI是浏览器提供的一套操作浏览器功能和页面元素的API,即DOM与BOM0x02DOM(1)简介文档对象模型(DocumentObjectModel)是......
  • TextIn合合信息的API使用心得
    在大学生服务外包杯的比赛中,我们组选了A29的赛题,是合合信息公司发布的赛题该赛题的意图是让我们使用它们公司开发的大模型api接口解决现实中的问题,在textin中的api接口中主要包含了以下几个方面的产品1.通用文字识别2.图像处理3.车辆相关识别4.国内票据识别等等我们组开发应用......
  • jy验证码协议加密分析学习记录
    目录流程参考免责声明:分析请求与加密参数register请求获取challenge和gt第一次W值分析第二次提交W分析第二次W明文值分析第三个W值分析验证小坑流程参考免责声明:本文章主要用于技术交流学习,作者不承担任何滥用技术所产生的法律责任。如有侵权,请联系作者删除!分析请求与加......
  • 密码引擎-3-加密API研究
    任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客......
  • GRPC - Unit testing Production-Grade APIs
      ......
  • 实验一-密码引擎-3-加密API研究
    任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客......
  • 密码引擎3
    一、微软的CryptoAPI(一)研究学习CryptoAPI系统体系结构WebCryptoAPIWebCryptographyAPICSP开发基础--CryptoAPI函数简介CryptoAPI是应用程序编程接口,使应用程序开发人员能够将身份验证、编码和加密添加到基于Windows的应用程序。CryptoAPI系统体系结构由五个主要......
  • 加密API研究
    加密API研究一、标准内容1.CryptoAPI加密API是一种提供加密操作接口的技术,为应用程序提供在软件和硬件之间的通信方式。加密API通常提供对数据的加密、解密、签名、验证和密钥管理等功能。这些API的存在使开发者可以方便地集成加密功能,提高应用程序的安全性。此外,CryptoAPI......
  • 实验一-密码引擎-3-加密API研究
    实验一-密码引擎-3-加密API研究任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key......
  • TextIn.com API使用心得
    我们参加了本次大学生创新创业服务外包大赛,在项目中大量使用到了合合信息所提供的api进行相关功能实现,所以在这里写一篇博客分享一下我们在项目的实际推进中关于TextIn.comAPI使用心得我们的产品是一款面向公司管理的REP微信小程序,由于需要覆盖大部分的企业办公需求,我们使用到了......