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

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

时间:2024-04-10 20:55:05浏览次数:24  
标签:API 加密 函数 密码 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)(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)

CryptoAPI

CryptoAPI是应用程序编程接口,使应用程序开发人员能够将身份验证、编码和加密添加到基于Windows的应用程序。

CryptoAPI 系统体系结构由五个主要功能领域组成:基本加密函数、证书编码/解码函数、证书Microsoft Store函数、简化的消息函数、低级别消息函数。
应用程序开发人员可以在不了解基础实现详细信息的情况下使用 CryptoAPI 中的函数,其方式与使用图形库的方式大致相同,而无需了解特定图形硬件配置。 CryptoAPI 与许多执行实际配合使用。
微软的Crypto API

PKCS#11

PKCS#11是公钥加密标准Public-Key Cryptography Standards中的一份子,由RSA实验室发布。
  PKCS#11标准定义了与密码令牌的独立于平台的API,API本身命名为Cryptoki,这个API已经发展成为一个通用的加密令牌的抽象层。
  PKCS#11主要是应用于智能卡和HSM。
  PKCS#11为使用加密Token的应用程序提供统一的编程接口,独立于设备,屏蔽加密设备的复杂性,应用程序可以方便地更换设备。
  PKCS密码中间件位于上层应用和底层安全设备之间,应用基于 PKCS#11 标准接口开发各类应用程序。主要包括2个库

  • 主API库:提供给应用的PKCS11接口。
  • tokenDLL库:由主 API 库调用,完成从上向下到指定设备的套接。
  • 安全密码设备:安全服务资源和实施的载体,完成具体安全功能支撑。

GMT 0016-2012

GMT 0016-2012是国家规定的智能密码钥匙密码应用接口规范,规定了基于PKI密码体制的智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。适用于智能密码钥匙产品的研制、使用和检测。

规范性引用文件

下列文件对于本标准的应用是必不可少的。凡是注日期的引用文件。仅所注日期的版本适用于本文件;凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件;GM/T 0006密码应用标识规范;GM/T AAAA SM2密码算法使用规范
GM T 0016-2012智能密码钥匙密码应用接口规范

GMT 0018-2012

接口标准

GMT 0018-2012标准规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准。适用于服务类密码设备的研制、使用,以及基于该类密码设备的应用开发,也可用于指导该类密码设备的检测。

规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件;凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件;GM/T 0006密码应用标识规范;GM/T AAAA SM2密码算法使用规范。
GMT0018-2012密码设备应用接口规范 )

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

Crypto API

使用CryptoAPI编写一个文件保护程序,具有如下功能:
(1)给定明文文件,生成加密文件,同时产生文件的数字签名文件;
(2)给定密文文件,解密出明文文件,并验证签名的正确性。
  在不安全的网络上进行安全的数据传输涉及三个方面的要求:信息隐藏,身份鉴别和完整性检验。CryptoAPI除了提供上述三个功能外还提供标准的ASN.1编码、解码,信息解密,数字证书和证书存储区的管理,证书信任列表、吊销列表和证书有效性检查等功能。

1.信息隐藏

信息隐藏的意义是保障信息内容只能被特定的人获取。信息隐藏通常是使用某种形式的密码学方式。数据加密算法能保障信息的安区隐藏和传输。数据加密算法是将明文数据经过一定的变换使其看上去是一组毫无意义的数据。在没有加密密钥的情况下,对于好的加密算法想从密文获取明文信息是不可能的。被加密的数据可以是任意的ASCII编码文本文件,数据库文件,和任意需要进行安全传输的数据。这里,“信息”是指任意的一段数据,“明文”是指任意一段没有被加密的数据,“密文”是指任意一段加密的数据。被加密的数据可以在不安全的通道上进行传输而不伤害其安全性。之后,密文可以被还原成明文。
  数据加密和解密的概念是:对数据加密的时候需要一个加密密钥,相当于门上的一把钥匙。解密的时候,需要使用一个解密密钥来解开数据。加密密钥、解密密钥可以相同也可以不相同。

2.身份鉴别

安全通讯的前提是通讯的双方知道对方的身份。身份鉴别的任务就是鉴别一个用户或者实体的真实身份。标识用户身份的文档通常被称为信任状或者凭证。
  身份鉴别有时候也用来判定接受的数据就是被发送的数据。如果A向B发送了一段数据,B需要鉴别这段数据就是A发出去的,而不是其它冒充A发出去的。为了满足这类验证的需求,CryptoAPI提供数字签名和校验函数,用来对信息进行鉴别。
  因为在计算机网网络上传输的数据与用户之间并没有物理连接,因此对数据进行鉴别的凭证也必须能够在网络上进行传输。这种凭证必须由受信任的凭证发行机构发行。
  数字证书就是平常说的证书就是这种凭证,是计算机在网络上进行身份验证的有效凭证。

3.完整性检验

任何通过不安全介质传输的信息都可以被意外或蓄意的修改。在现实世界中,盖章、签名就是用来提供和证明信息完整性的工具。
  信息的接收者不但需要确定信息是由谁发送的,还要确定自己收到的信息是发送者发送的信息,而没有任何的变化。要建立数据的完整性检测机制,不仅要发送信息本身,还要发送用来校验数据的信息,这一信息通常被称作哈希值。数据和验证信息都可以与数字签名一起发送来证明其完整性。

RAS公司的PKCS#11标准

架构

输入图片说明

对象

输入图片说明image

GMT 0016-2012

层次关系

输入图片说明image

应用结构

输入图片说明image

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

微软API

文件处理函数

输入图片说明输入图片说明输入图片说明输入图片说明输入图片说明输入图片说明输入图片说明

网络函数

输入图片说明

消息函数

输入图片说明

打印函数

输入图片说明输入图片说明输入图片说明

文本和字体函数

输入图片说明输入图片说明

菜单函数

输入图片说明输入图片说明

位图、图标和光栅运算函数

输入图片说明输入图片说明

绘图函数

输入图片说明输入图片说明输入图片说明

设备场景函数

输入图片说明输入图片说明

硬件与系统函数

输入图片说明输入图片说明

进程和线程函数

输入图片说明输入图片说明

控件与消息函数

输入图片说明输入图片说明

RAS公司的PKCS#11标准

输入图片说明image输入图片说明image输入图片说明image输入图片说明image输入图片说明image输入图片说明image

GMT 0016-2012

输入图片说明image输入图片说明image

设备管理系列函数

输入图片说明image

访问控制系列函数

输入图片说明image

文件管理系列函数

输入图片说明image

容器管理系列函数

输入图片说明image

密码服务系列函数

输入图片说明image输入图片说明image

# GMT 0018-2012

设备管理类函数

设备管理类函数包括以下具体函数:
A.打开设备:SDF_OpenDevice
B.关闭设备:SDF_CloseDevice
C.创建会话:SDF_OpenSession
D.关闭会话:SDF_CloseSession
E.获取设备信息:SDF_GetDeviceInfo
F.产生随机数:SDF_GenerateRandom
G.获取私钥使用权限:SDF_GetPrivateKeyAccessRight
H.释放私钥使用权限: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_GenerateKeyWiuhECC
产生协商数据并计算会话密钥∶SDF_GenerateAgreementDataAndKeyWithECC
基于 ECC算法的数字信封转换∶SDF_ExchangeDigitEnvelopeBaseOnECC
生成会话密钥并用密钥加密密钥加密输出∶SDF_GenerateKeyWithKEK
导入会话密钥并用密钥加密密钥解密∶SDF_ImportKeyWithKEK
销毁会话密钥∶SDF_DestroyKey

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

SKF接口

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



Crypto API

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


标签:API,加密,函数,密码,SDF,引擎,密钥
From: https://www.cnblogs.com/nql2/p/18127402

相关文章

  • 实验一-密码引擎-3-加密API研究
    一、任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交......
  • Java8 Stream API全面解析——高效流式编程的秘诀
    文章目录什么是StreamApi?快速入门流的操作创建流中间操作filter过滤map数据转换flatMap合并流distinct去重sorted排序limit限流skip跳过peek操作终结操作forEach遍历forEachOrdered有序遍历count统计数量min最小值max最大值reduce聚合collect收集anyM......
  • vue做游戏vue游戏引擎vue小游戏开发
    Vue.js是一个构建用户界面的渐进式JavaScript框架,它同样可以用于游戏开发。使用Vue开发游戏通常涉及以下几个关键步骤和概念:1.了解Vue的核心概念 1在开始使用Vue进行游戏开发之前,你需要理解Vue的一些核心概念,如组件化、响应式数据绑定、指令、生命周期钩子等。这......
  • 恺撒加密术
    标题:恺撒加密术时间限制:1000ms内存限制:65536KB【题目描述】加密术最早应用于古代战争。古罗马时期,凯撒大帝曾是使用密码来传递信息,它是一种替代密码,对于信中的每个字母,会用它后面第i给字母代替。试编一个程序,将输入的一段英文字符加密后输出,只加密字母,加密的规......
  • TypeScript 与组合式 API
    看吧:https://cn.vuejs.org/guide/typescript/composition-api.html为组件的props标注类型<scriptsetuplang="ts">constprops=defineProps({foo:{type:String,required:true},bar:Number})props.foo//stringprops.bar//number|undefine......
  • 某狗网歌曲接口逆向之加密算法刨析
    逆向网址aHR0cHM6Ly93d3cua3Vnb3UuY29t逆向链接aHR0cHM6Ly93d3cua3Vnb3UuY29tL21peHNvbmcvN2dxcGVzNjguaHRtbA== 逆向接口aHR0cHM6Ly93d3dhcGkua3Vnb3UuY29tL3BsYXkvc29uZ2luZm8= 逆向过程 请求方式:GET逆向参数        signature:1898d8f157837fa......
  • 前端流程引擎有哪些框架推荐
    前端流程引擎通常是指用于设计、建模、执行和可视化业务流程、工作流或流程图的软件组件,它们通常包含图形化的设计器、流程模型解析与执行引擎、以及与用户交互的可视化界面。以下是一些推荐的前端流程引擎框架:bpmn-js:开源项目,基于BPMN2.0标准,提供流程图的绘制、解析......
  • AI时代,搜索引擎的巨头地位恐怕不保了
    兄弟们,你们使用搜索网站的频率有降低吗?ChatGPT已经流行了一年多了,这期间数个大模型都发展了起来。搜索引擎本质上也属于问答系统,所以,在大模型成熟之后,我使用搜索的频率越来越低了。主要是因为大模型直接给出答案,而且结果已经非常精准了。比如我想知道“羽毛球比赛中鹰眼的......
  • gemini1.5 API调用
    https://ai.google.dev/pricing?hl=zh-cn查询可用的modelhttps://generativelanguage.googleapis.com/v1beta/models?key=xxx使用postman调用https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=xxx https://ai......
  • 最新阿里云服务器esc centos7 系统 安装yapi全流程 亲测
    一、环境准备安装yapi前,需部署node与mongodb我这里用到的版本=》node:v14.15.1mongodb:v4.2.23yapi:v1.8.0注意操作之前需要阿里云服务器安全组开放9090端口 这一步省略了1.node安装 1.1下载node,解压  使用wget直接下载。wgethttps://nodejs.org/download/re......