密码学和算法
文章平均质量分 86
密码一步一步从简单到负责,从无到有,带你进入神器的密码学世界!
flydean程序那些事
懂程序更懂你!微信公众号:程序那些事 个人主页:www.flydean.com 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!
展开
-
密码学系列之:PEM和PKCS7,PKCS8,PKCS12
PEM是一种常见的保存key或者证书的格式,PEM格式的文件一般来说后缀是以.pem结尾的。那么PEM到底是什么呢?它和常用的证书格式PKCS7和PKCS12有什么关系呢?一起来看看吧。以上就是PEM和PKCS系列中几个非常常用的编码格式。希望大家能够掌握和正确使用。更多内容请参考最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!...原创 2022-08-04 19:08:50 · 2186 阅读 · 0 评论 -
密码学的基础:X.690和对应的BER CER DER编码
之前我们讲到了优秀的数据描述语言ASN.1,很多协议标准都是使用ASN.1来进行描述的。对于ASN.1来说,只定义了数据的描述是不够的,它还规定了消息是如何被编码的,从而可以在不同的机器中进行通讯。ASN.1支持一系列的编码规则,比如BER,DER,CER等。而X.690就是一个ITU-T的标准,它里面包含了一些对ASN.1进行编码的规则。有人要问了,那么什么是ITU-T呢?以上就是X.690和对应的BERCERDER编码详解,看完本篇文章,你又多会了一门语言,ohyeah!更多内容请参考。...原创 2022-08-01 19:27:32 · 379 阅读 · 0 评论 -
有一种密码学专用语言叫做ASN.1
ASN.1是一种跨平台的数据序列化的接口描述语言。可能很多人没有听说过ASN.1,但是相信有过跨平台编程经验的同学可能都听过protocolbuffers和ApacheThrift,虽然ASN.1和上面两个语言相比不是那么出名,但是ASN.1的出现要比他们早的多,早在1984年ASN.1就出现了。和他们相比ASN.1并没有提供单一的开源实现,而是作为一种规范来供第三方供应商实现的。ASN.1主要用在定义各种基础协议中,比如常用的LDAP,PKCS,GSM,X.500等。http。...原创 2022-07-28 16:37:10 · 652 阅读 · 0 评论 -
创建私有CA,我就用openSSL
一般情况下我们使用的证书都是由第三方权威机构来颁发的,如果我们有一个新的https网站,我们需要申请一个世界范围内都获得认可的证书,这样我们的网站才能被无障碍的访问。如果在某些情况下,我们的网站或者系统并不是公开的,但是也需要使用tls协议的话,那么就需要自己搭建一个CA服务器。这样的CA服务器就叫做privateCA。熟悉证书的朋友可能会说了,为什么不使用自签名证书呢?也可以达到安全通信的目的。这是因为自签名证书的作用比较有限,它没有CRL和OCSP的能力,并且使用起来也不是很方便。http。...原创 2022-07-21 14:13:08 · 675 阅读 · 0 评论 -
密码学系列之:使用openssl检测网站是否支持ocsp
OCSP在线证书状态协议是为了替换CRL而提出来的。对于现代web服务器来说一般都是支持OCSP的,OCSP也是现代web服务器的标配。但是OCSP stapling却不是所有的web服务器都支持。但是现实工作中我们可能需要知道具体某个网站对OCSP的支持程度。怎么判断一个web站点是否支持OCSP stapling呢?最简单的方法就是去第三方网站查看网站的证书信息。比如我们之前提到过的entrust.ssllabs.com,通过输入对应的网站信息,在Protocol Details一节中,可以找到网站是原创 2022-07-11 13:58:23 · 878 阅读 · 0 评论 -
密码学系列之:在线证书状态协议OCSP详解
我们在进行网页访问的时候会跟各种各样的证书打交道,比如在访问https网页的时候,需要检测https网站的证书有效性。OCSP就是一种校验协议,用于获取X.509数字证书的撤销状态。它是为了替换CRL而出现的。本文将会详细介绍OCSP的实现和优点。我们知道在PKI架构中,CA证书是非常重要的组件,客户端通过CA证书来验证服务的可靠性。对于CA证书本身来说在创建的时候是可以指定过期时间的。这样证书在过期之后就不可以使用,需要申请新的证书。但是只给证书指定过期时间是不够的,比如我们因为业务的需求,需要撤销证书怎原创 2022-07-06 19:15:34 · 2800 阅读 · 1 评论 -
密码学系列之:PKI的证书格式表示X.509
在PKI(public key infrastructure)公钥设施基础体系中,所有的一切操作都是围绕着证书和密钥的,它提供了创建、管理、分发、使用、存储和撤销数字证书以及管理公钥加密所需的一组角色、策略、硬件、软件和程序。有了密钥,就可以根据密钥制作证书了。要想证书可以被广泛的使用,一个通用的标准肯定是少不了的,在PKI体系中,这个证书的标准就叫做X.509。X.509 标准定义了公钥证书最常用的格式。证书中最主要就是公钥信息,从证书中提取公钥,才能使用公钥去解密发送者使用私钥加密过的数据。公钥信息是证原创 2022-06-22 19:00:49 · 390 阅读 · 0 评论 -
密码学系列之:1Password的加密基础PBKDF2
文章目录简介PBKDF2和PBKDF1PBKDF2的工作流程详解PBKDF2的key生成流程HMAC密码碰撞PBKDF2的缺点总结简介1password是一个非常优秀的密码管理软件,有了它你可以轻松对你的密码进行管理,从而不用再考虑密码泄露的问题,据1password官方介绍,它的底层使用的是PBKDF2算法对密码进行加密。那么PBKDF2是何方神圣呢?它有什么优点可以让1password得以青睐呢?一起来看看吧。PBKDF2和PBKDF1PBKDF的全称是Password-Based Key D原创 2021-09-28 10:15:04 · 27351 阅读 · 2 评论 -
密码学系列之:Argon2加密算法详解
文章目录简介密钥推导函数key derivation functionPassword Hashing CompetitionArgon2算法Argon2的输入参数处理流程简介Argon2是一个密钥推导函数,在2015年7月被选为密码哈希大赛的冠军,它由卢森堡大学的Alex Biryukov、Daniel Dinu和Dmitry Khovratovich设计,Argon2的实现通常是以Creative Commons CC0许可(即公共领域)或Apache License 2.0发布,并提供了三个相关版原创 2021-09-20 16:13:27 · 21646 阅读 · 0 评论 -
密码学系列之:bcrypt加密算法详解
文章目录简介bcrypt的工作原理bcrypt算法实现bcrypt hash的结构hash的历史简介今天要给大家介绍的一种加密算法叫做bcrypt, bcrypt是由Niels Provos和David Mazières设计的密码哈希函数,他是基于Blowfish密码而来的,并于1999年在USENIX上提出。除了加盐来抵御rainbow table 攻击之外,bcrypt的一个非常重要的特征就是自适应性,可以保证加密的速度在一个特定的范围内,即使计算机的运算能力非常高,可以通过增加迭代次数的方式,使原创 2021-09-16 10:21:26 · 18788 阅读 · 0 评论 -
密码学系列之:海绵函数sponge function
文章目录简介海绵函数的结构海绵函数的应用简介海绵函数sponge function是密码学中使用的一种函数,它接收一定长度的输入,然后输出一定长度的输出,中间包含了有限个内部状态。因为海绵函数的强大功能,所以可以用来建模和实现许多密码原语,包括密码散列,消息身份验证码,生成掩码,流密码,伪随机数生成器等。本文将会讲解海绵函数的结构。海绵函数的结构我们先看一个海绵函数的结构图:这个函数被分成了两部分,左边部分叫做吸收部分,右边部分叫做输出部分,一吸一出,像是海绵一样,所以叫做海绵函数。P表示原创 2021-09-14 09:19:18 · 15924 阅读 · 0 评论 -
密码学系列之:Merkle–Damgård结构和长度延展攻击
Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击。这个结构是一些优秀的hash算法,比如MD5,SHA-1和SHA-2的基础。今天给大家讲解一下这个MD结构和对他进行的长度延展攻击。原创 2021-07-23 09:14:55 · 4076 阅读 · 2 评论 -
密码学系列之:memory-bound函数
memory-bound函数可以称为内存受限函数,它是指完成给定计算问题的时间主要取决于保存工作数据所需的内存量。和之相对应的就是计算受限compute-bound的函数,在计算受限的函数中,计算所需要的计算步骤是其决定因素。原创 2021-07-14 07:53:57 · 3206 阅读 · 0 评论 -
密码学系列之:twofish对称密钥分组算法
之前的文章我们讲到blowfish算法因为每次加密的块比较小只有64bits,所以不建议使用blowfish加密超过4G的文件。同时因为加密块小还会导致生日攻击等。所以才有了blowfish的继承者twofish。原创 2021-06-30 09:25:53 · 4180 阅读 · 1 评论 -
密码学系列之:blowfish对称密钥分组算法
Blowfish是由Bruce Schneier在1993年发明的对称密钥分组加密算法,类似的DES和AES都是分组加密算法,Blowfish是用来替代DES算法出现的,并且Blowfish是没有商用限制的,任何人都可以自由使用。原创 2021-06-21 09:04:55 · 2860 阅读 · 1 评论 -
密码学系列之:feistel cipher
feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构。它是由德籍密码学家Horst Feistel在IBM工作的时候发明的。feistel cipher也被称为Feistel网络。原创 2021-06-16 09:19:55 · 3436 阅读 · 0 评论 -
密码学系列之:生日攻击
生日攻击其实是一个概率论的问题,也就是说一个看起来很难发生的事情,事实上它发生的概率却很大。这种主观上和事实上的概率差距,让随机攻击成功的几率变的更高,这样的攻击就叫做生日攻击。原创 2021-06-09 09:05:25 · 7582 阅读 · 2 评论 -
密码学系列之:碰撞抵御和碰撞攻击collision attack
hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击。今天和大家详细探讨一下碰撞攻击。原创 2021-06-03 06:53:03 · 2847 阅读 · 4 评论 -
密码学系列之:SAFER
分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如DES。SAFER表示的也是一种分组密码算法。一起来看看吧。原创 2021-05-28 07:55:33 · 2201 阅读 · 0 评论 -
密码学系列之:memory-hard函数
Memory hard function简称为MHF,在密码学中,内存困难函数(MHF)是一个需要花费大量内存来完成的函数。MHF主要被用在工作量证明中。因为需要花费大量的内存,所以MHF也会被用在密码Hash中,可以防止恶意破解。原创 2021-05-26 08:06:44 · 2355 阅读 · 0 评论 -
密码学系列之:IDEA
IDEA的全称是International Data Encryption Algorithm,也叫做国际加密算法,注意,这里不是我们常用的那个开发工具IDEA。今天给大家详细介绍一下IDEA。原创 2021-05-17 09:46:29 · 1457 阅读 · 4 评论 -
密码学系列之:NIST和SHA算法
SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种。这三种算法都是由美国NIST制定的。原创 2021-05-10 09:32:29 · 1583 阅读 · 0 评论 -
密码学系列之:csrf跨站点请求伪造
CSRF的全称是Cross-site request forgery跨站点请求伪造,也称为一键攻击或会话劫持,它是对网站的一种恶意利用,主要利用的是已授权用户对于站点的信任,无辜的最终用户被攻击者诱骗提交了他们不希望的Web请求。 恶意网站可以通过多种方式来发送此类命令。 例如,特制的图像标签,隐藏的表单和JavaScript XMLHttpRequests都可以在用户不交互甚至不知情的情况下工作。如果发生了CSRF攻击,可能导致客户端或服务器数据意外泄漏,会话状态更改或者修改用户的信息。原创 2021-03-18 07:54:34 · 4605 阅读 · 1 评论 -
密码学系列之:内容嗅探
内容嗅探,也被称为媒体类型嗅探或MIME嗅探,是检查一个字节流的内容,试图推断其中数据的文件格式的做法。内容嗅探通常用在媒体类型没有被准确指定的情况,用于补偿元数据信息。本文将会讲解内容嗅探的常用场景和可能出现的问题。原创 2021-03-10 09:54:13 · 6147 阅读 · 5 评论 -
密码学系列之:明文攻击和Bletchley Park
明文攻击就是指已经知道了部分明文和它对应的加密后的字段,从而可以推测出使用的加密手段或者密码本。明文攻击这个故事还要从二战时候说起。原创 2020-12-09 21:03:56 · 14673 阅读 · 5 评论 -
一篇文章让你彻底弄懂SSL/TLS协议
文章目录SSL/TLS的应用TLS协议的架构握手协议主密码和预备主密码TLS记录协议一篇文章让你彻底弄懂SSL/TLS协议SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。SSL(Secure Socket Layer)安全套接层,是1994年由Net...原创 2020-04-19 07:44:23 · 15427 阅读 · 1 评论 -
基于口令的密码(PBE)
基于口令的密码(PBE)基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法。其中加密和解密使用的是同一个密钥。根据用户自己的口令和salt生成口令密码,我们先看下加密的过程:加密的过程可以分为这几步:生成KEK密钥使用伪随机数生成器来生成salt将salt和用户自己的口令使用单向散列函数算法生成KEK密...原创 2020-04-18 07:47:27 · 10276 阅读 · 0 评论 -
更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman之前我们谈到了密钥配送的问题,这个世界是如此的危险, 一不小心通信线路就会被监听,那么我们怎么在这种不安全的线路中传递密钥呢?这里我们介绍一下Diffie-Hellman密钥交换算法。这个算法是由Whitfield Diffie和Martin Hellman在1976年共同发明的一种算法。通过这个算法,双方只需要交换某些共同的信息就可以生成出...原创 2020-04-17 07:27:25 · 9991 阅读 · 0 评论 -
有关密钥的最全总结都在这了
文章目录各种密钥总结其他密钥分类密钥的管理密钥详解在之前的文章中,我们讲到了对称密码,公钥密码,消息认证码和数字签名等密码学的技术,这些技术中都使用到了一个叫做密钥的东西。那么到底什么是密钥呢?密钥就是一个key,通过这个key可以获得最终的明文。所以密钥其实是和明文等价的。举个例子,保险箱里面放着十万美元,保险箱被锁住了,并且有一个钥匙。那么这个拥有钥匙的人和拥有了十万美元是等价的。各...原创 2020-04-17 07:19:48 · 20632 阅读 · 4 评论 -
一文读懂密码学中的证书
一文读懂密码学中的证书之前的文章中,我们讲到了数字签名,数字签名的作用就是防止篡改和伪装,并且能够防止否认。但是要正确运用数字签名技术还有一个非常大的前提,那就是用来验证签名的公钥必须真正的属于发送者。如果你获取到的公钥是伪造的,那么不管你的签名算法多完美,也是会得到错误的结果。那么我们怎么才能安全的获得发送者的公钥呢?这里就需要使用到证书了。所谓证书就是通过第三方的可信机构对发送者的公钥进...原创 2020-04-16 07:24:26 · 10640 阅读 · 0 评论 -
数字签名
文章目录我们需要数字签名签名的生成和验证数字签名的方法直接对消息进行签名对消息的hash值进行签名数字签名可以替代现实生活中的签名吗?数字签名无法解决的问题我们需要数字签名之前的文章我们讲了MAC(Message Authentication Code)消息认证码,MAC是认证消息的完整性的技术。它是由任意长度的消息和在发送者和接受者中间共享的密钥生成的。MAC有个缺点就是秘钥是共享的,因为...原创 2020-02-26 08:54:09 · 13906 阅读 · 0 评论 -
混合密码系统
之前的文章我们讲了两种加密方式,一种是对称加密,一种是非对称加密。对称加密可以解决通信的机密性的问题,但是不能解决密钥配送的问题。而非对称加密算法虽然可以解决密钥配送的问题,但是它的加密速度比较慢,并且无法抵御中间人攻击。那么如果将对称加密算法和非对称加密算法结合起来,是不是就能够得到一种既不用配送密钥,加密速度又快的系统呢?答案是肯定的,著名的SSL/TLS协议就是这样的加密系统。这样的系...原创 2020-01-16 11:18:22 · 11715 阅读 · 1 评论 -
单向散列函数
文章目录单向散列函数单向散列函数的性质单向散列函数的实现对单向散列算法的攻击单向散列函数在介绍单向散列函数之前,我们先了解一下什么情况下需要使用到单向散列函数。如果你需要从国外的网站上下载一个软件,但是因为种种原因,国外的网络太慢了,下载几个G的数据几乎是不可能的。刚好国内有镜像网站,可以从国内下载数据。但是如何保证国内的镜像不是被篡改过后的呢?这个时候就需要单向散列函数了。一般来说网站会提...原创 2020-01-16 11:15:57 · 11850 阅读 · 1 评论 -
中间人攻击
前面的文章我们讲到了RSA算法以目前的手段是很难被攻破的,那么使用RSA算法是不是就一定安全了呢?答案当然是否,因为我们并没有考虑到网络传输中的各种情况。本文会讲一种攻击叫做中间人攻击,为了抵御这种攻击,我们引入证书的概念。我们会在后续的文章中讲解证书的概念。这里我们重点讲一下中间人攻击。所谓中间人攻击就是在A和B通信的过程中加入了恶意攻击者C。C作为中间人转发两者的请求。示意图如下:消息...原创 2020-01-15 09:49:13 · 19194 阅读 · 2 评论 -
RSA算法详解
文章目录什么是RSARSA的加密RSA的解密N,E,D的生成1. 生成N2. 求L3. 求E4. 求D破解RSA什么是RSA前面文章我们讲了AES算法,AES算法是一种是对称加密算法,本文我们来介绍一个十分常用的非对称加密算法RSA。非对称加密算法也叫公钥密码算法,通过生成的公私钥来对明文密文进行加密解密。 RSA的名字是由它的三个开发者Ron Rivest, Adi Shamir和 Leo...原创 2020-01-15 09:40:16 · 15965 阅读 · 5 评论 -
MAC攻击及缺陷
MAC攻击及缺陷MAC有好几种实现方式对MAC的攻击重放攻击重放攻击的防护密钥推测攻击MAC算法的缺陷第三方证明防止否认前面我们在讲HMAC的时候简单讲过了什么是MAC消息认证码。简单点说MAC(Message Authentication Code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称MAC。它是一种与密钥相关联的函数。 HMAC就是MAC的一种实现。MAC有好几种实...原创 2019-06-18 23:07:31 · 7761 阅读 · 4 评论 -
一次性密码本-绝对不会被破译的密码
文章目录一次性密码本加密之前的准备一次性密码本的加密方式一次性密码本的解密无法破译缺陷一次性密码本一次性密码本即Vernam Cipher,是由Gilbert Vernam在1917年, 开发的一种加密算法。之所以叫做一次性密码本,是因为加密所用的密钥是一次性的,即密钥只会使用一次,不会出现因为密钥泄露导致之前的加密内容被解密。即使密钥被泄露了,也只会影响一次通信过程。加密之前的准备通...原创 2019-06-24 10:57:25 · 12399 阅读 · 4 评论 -
DES算法
文章目录什么是DESDES的加密解密DES工作原理Feistel 网络的特定三重DES什么是DESDES全称叫(Data Encryption Standard), 是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称加密算法。DES之前一直使用很普遍,但是随着计算机的进步,现在DES已经可以被暴力破解了,处理历史的原因外,我们不再建议使用DES算法。DES的加密解密DES的密...原创 2019-09-25 07:51:41 · 12956 阅读 · 4 评论 -
AES算法
文章目录AES的由来什么是RijndaelRijndael的原理Rijndael的特点AES的由来前面一篇文章我们讲到了DES算法。鉴于DES可以被破解和加密效率不高的缺陷。美国的NIST(National Institute of Standards and Technology,国家标准技术研究所)在2000年通过选拔,从多个候选算法中确认了Rijndael算法为最新的AES算法,成为联邦...原创 2019-09-25 07:53:10 · 11933 阅读 · 4 评论 -
分组密码与模式
文章目录什么是分组密码和模式ECB模式CBC模式CFB模式OFB模式CTR模式什么是分组密码和模式前面我们讲过了DES和AES算法,他们每次都只能加密固定长度的明文,这样的密码算法叫做分组密码。如果需要加密更长的明文则需要对分组密码进行迭代。而分组密码的迭代方法就称为分组密码的模式。本文我们会讲如下几种模式:ECB模式:电子密码本模式CBC模式: 密码分组链接模式CFB模式: 密文...原创 2019-09-25 07:54:46 · 11918 阅读 · 4 评论