PDF signatures

The PDF format supports two types of user signatures: Certification signatures in addition to signing the document also select which changes to the document shall be allowed after signing; approval signatures merely sign. Usually the author of a document signs Read more…

加密中不同文件格式的区别

SSL SSL – Secure Sockets Layer,现在应该叫”TLS”,但由于习惯问题,我们还是叫”SSL”比较多.http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样在干嘛,不用动,这个加密对用户和开发者来说都是透明的.[维基百科] OpenSSL – 简单地说,OpenSSL是SSL的一个实现,SSL只是一种规范.理论上来说,SSL这种规范是安全的,目前的技术水平很难破解,但SSL的实现就可能有些漏洞,如著名的”心脏出血”.OpenSSL还提供了一大堆强大的工具软件,强大到90%我们都用不到. 证书标准 X.509 – 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. 编码格式 同样的X.509证书,可能有不同的编码格式,目前有以下两种编码格式. PEM – Privacy Enhanced Mail,打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是BASE64编码.查看PEM格式证书的信息: openssl x509 -in certificate.pem -text -nooutApache和*NIX服务器偏向于使用这种编码格式. DER – Distinguished Encoding Rules,打开看是二进制格式,不可读.查看DER格式证书的信息: openssl x509 -in certificate.der -inform der -text -nooutJava和Windows服务器偏向于使用这种编码格式. 相关的文件扩展名 这是比较误导人的地方,虽然我们已经知道有PEM和DER这两种编码格式,但文件扩展名并不一定就叫”PEM”或者”DER”,常见的扩展名除了PEM和DER还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式. CRT – CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,相信你已经知道怎么辨别. CER – 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码. KEY – Read more…

数字签名,数字证书,加密

加密、数字签名和数字证书

1. 什么是加密 加密就是对明文数据按某种特殊算法进行处理,使其成为不可读的一段代码,通常称为“密文“, 密文通过”密钥“解密后还原出原来的明文,通过这样的途径可以达到保护数据不被非法人窃取、阅读的目的。 定义简单吧?那来看个题,考虑以下哪些属于加密方法: 这几种都是日常开发中常用的数据编码技术,但是只有 AES、RSA、SM4 才能算是加密方法。 为什么呢?一个区分的简单方法就是看编码后的数据是否还能还原,能还原的是加密。 MD5 实际上是对数据进行有损压缩,无论数据有多长,1KB、1Mb 还是 1G,都会生成固定 128 位的散列值,并且 MD5 理论上是不可能对编码后的数据进行还原的,即不可逆。 MD5 因为其具有不可逆性、单向恒定性(相同的数据多次计算值不变)被广泛应用于文件完整性验证、口令加密以及接下来会讲到的数字签名中。 至于 BASE64 是否算做加密方法,仁者见仁。在这里不下结论,因为 BASE64 编码不需要密钥,且编码后的字符串任何人都可以解码出原串,所以一般不认为是加密方法。BASE64 常用来做转码,把二进制字节序列转化为 ASCII 字符序列。 2. 加密算法的分类 加密算法按照加解密使用的密钥是否相同,可分为: 1. 对称加密 对称加密是指加密和解密时使用同一个密钥。 2. 非对称加密 非对称加密是指加密和解密使用不同的密钥,这两个密钥分别叫做「公钥」、「私钥」。 公钥是可以公开给所有人的,而私钥需要自己保密的。 公钥加密的数据只能用私钥解密: 同理,私钥“加密”的数据只能用公钥“解密”: 大家注意到没,我对 私钥“加密” 这里打了引号,为什么呢? 因为私钥不是用来加密的,准确的说法应该是 「私钥签名,公钥验签」。 Read more…