栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java电子签章验章知识储备

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java电子签章验章知识储备

最近在做电子签章这块的内容,接触学习了很多新的内容,用这篇文章记录所做所学。

一、背景知识

1、CA证书
  CA是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。
  CA 拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。
  如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
  如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。
  证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。证书的格式和验证方法普遍遵循X.509 国际标准。
  
2、PKCS的简单介绍
  PKCS:The Public-Key Cryptography Standards (简称PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
到1999年底,PKCS已经公布了以下标准:
PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。
PKCS#3:定义Diffie-Hellman密钥交换协议。
PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。
PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。
PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。
PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。
PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型。
PKCS#10:描述证书请求语法。
PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。
PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。
PKCS#13:椭圆曲线密码体制标准。
PKCS#14:伪随机数生成标准。
PKCS#15:密码令牌信息格式标准。
  PKCS12也就是以上标准的PKCS#12,主要用来描述个人身份信息。
  签章需要用到数字证书,有两种方式,1.去CA申请,2.自己生成,CA端申请的证书的好处是能验证加签证书的有效性,自己生成pdf工具无法验证有效性,但不影响加签效果。
  
3、GmSSL 与 OpenSSL 共存的安装方法
http://t.zoukankan.com/marshu-p-14201324.html

4、SHA和MD5
(1)SHA(安全哈希算法):
  该算法的思想是接收⼀段明⽂,然后以⼀种不可逆的⽅式将它转换成⼀段(通常更⼩)密⽂,也可以简单的理解为取⼀串输⼊码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。可以对任意长度的数据运算⽣成⼀个160位的数值。SHA将输⼊流按照每块512位(64个字节)进⾏分块,并产⽣20个字节的被称为信息认证代码或信息摘要的输出。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。
(2)MD5(信息-摘要算法5):
  MD5将任意长度的“字节串”映射为⼀个128bit的⼤整数。MD5以512位分组来处理输⼊的信息,且每⼀分组⼜被划分为16个32位⼦分组,经过了⼀系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将⽣成⼀个128位散列值。
  
两者⽐较:
(1)对强⾏攻击的安全性:最显著和最重要的区别是SHA-1摘要⽐MD5摘要长32位。使⽤强⾏技术,产⽣任何⼀个报⽂使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强⾏攻击有更⼤的强度。
(2)对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
(3)速度:在相同的硬件上,SHA-1的运⾏速度⽐MD5慢。

5、RSA和SM2
可参考:
https://blog.csdn.net/lulueee/article/details/119611809
https://baijiahao.baidu.com/s?id=1709210475603703458&wfr=spider&for=pc

6、摘要和加密
(1)消息摘要(Message Digest)
  摘要是哈希值,我们通过散列算法比如MD5算法就可以得到这个哈希值。
  摘要只是用于验证数据完整性和唯一性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。
  不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密文,只是一个验证身份的令牌。所以我们无法通过摘要解密得到原始数据。
  常用的摘要算法有:MD5算法(MD2 、MD4、MD5),SHA算法(SHA1、SHA256、SHA384、SHA512),HMAC算法

(2)加密
  加密是通过 “加密算法” 将 “明文” 加密成 “密文”。
  我们可以通过 “密钥” 和 “解密算法” 将 “密文” 还原成 “明文”。
  常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
  常见的非对称加密算法有RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

7、对称加密与非对称加密
可参考:https://zhuanlan.zhihu.com/p/83644573

8、国密算法
  国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位
  (1)SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
  (2)SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
  (3)SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
  (4)SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号