
安全
文章平均质量分 75
DreamerJ
也不知道要随便写点啥
展开
-
TLS初探(1)概述
目前并不打算详细研究TLS协议,初步调查了一下有了大致的印象,简单步骤如上图所示,归结起来大致如下: 首先客户端与服务器端握手,其中包含有协商的加密套件、随机数等信息; 服务器向终端下发证书,终端进行证书校验,判断其是否可信; 如果要求双向认证,则客户端也需要向服务器提供证书,服务器根据证书进行校验,从而确认终端身份 客户端与服务器端分别利用证书中的公钥以及...原创 2018-07-28 22:30:02 · 834 阅读 · 0 评论 -
密码存储与传输的那些事儿(四)Scrypt&Argon2密码哈希
Scrpyt 如前所述,Scrypt密码哈希的安全性要高于Bcrypt,Scrypt内部还使用了PBKDF2算法,具体算法就不深入研究了,其实从Scrypt的入参就可以看出其安全性,具体入参列表如下:Passphrase:待哈希密码 Salt:盐,推荐不小于16字节 N:CPU/内存消耗指数,一般取值为2的若干次方,例如16384 p:并行计算参数,理论上取值范围为1-25...原创 2018-08-20 23:08:24 · 3338 阅读 · 2 评论 -
密码存储与传输的那些事儿(三)PBKDF2密码哈希
上篇介绍了BCrypt密码哈希算法,这次来看一下与之齐名的PBKDF2算法,首先看一下其基本公式:DK = PBKDF2(PRF, Password, Salt, c, dkLen) DK表示哈希计算结果,其中PBKDF2的参数包含如下5个:PRF:这个可以理解为HMAC算法,HMAC在此就不过多介绍了,可理解为就是利用摘要算法对秘钥以及固定消息进行摘要计算,这里秘钥...原创 2018-08-19 23:31:17 · 1344 阅读 · 0 评论 -
密码存储与传输的那些事儿(二)bcrypt密码哈希
上一节讲到了密码哈希算法,首先我们从bcrypt入手,之前说到bcrypt算法不需要再生成盐,其实这么说是错误的,应该说bcrypt算法生成的结果自身就包含了盐,而且可以进行算法复杂度参数调整,从而加长了哈希算法执行时间,有效的防止了彩虹表攻击等手段。 本次以Java为例,其他javascript、python等主流语言都有相应的库,相信并不难找,本次用的Java库如下...原创 2018-08-13 23:40:39 · 3109 阅读 · 0 评论 -
TLS初探(5)TLS示例与证书互认证(Node.js)
(一)代码分析本章旨在通过实际Node.JS代码进行之前所说的证书与TLS简单内容的确认,废话不多直接上代码,首先看服务器端代码:const https = require('https');const fs = require('fs');const options = { key: fs.readFileSync('./certs/server.key'), c...原创 2018-08-02 23:53:21 · 999 阅读 · 0 评论 -
密码存储与传输的那些事儿(一)密码存储概述
最近看到一个项目,用明文存储的密码,让人不忍直视,所以就想聊聊密码的存储以及登陆过程中密码传输的那些事儿。 首先就来看看密码存储,密码不能明文存储相信这个都不会有异议,那应该如何存储呢? 方案1: 加盐哈希 相信这个方案也是大多数公司目前使用的方案,至于哈希算法的话,普遍都采用MD5、SHA1、SHA256等算法。加盐的方式也各不相同,比如在密码尾部...原创 2018-08-10 00:01:40 · 2470 阅读 · 1 评论 -
TLS初探(4)多域名证书
在“TLS初探(2)证书简介”中提过,如想使用泛域名,可在Subject DN(Distingushed Name)的CN(Common Name)中使用*通配符,例如*.abc.com。而如果想使用同一证书匹配多个域名,可以使用X.509中扩展字段的Subject Alternative Name字段来进行多域名支持。 为此如果想支持多域名证书,首先就要想办法在CS...原创 2018-07-30 23:30:38 · 2269 阅读 · 0 评论 -
证书番外篇之Android证书
最近略微研究了一下证书,为此借着这个东风,顺带研究一下安卓的证书及其使用。 Android使用的是jks证书,这个在TLS初探(2)证书简介中有介绍,和P12证书类似,实际就是将X509证书和私钥打包成一个文件,并且对该文件加上密钥(称为密钥库口令);不仅如此,还进一步对其中的私钥加上密钥(称为密钥口令)。简单来说,如果你需要提取证书文件就需要密钥库口令,如果你需要提...原创 2018-08-04 00:44:53 · 5304 阅读 · 1 评论 -
TLS初探(3)证书生成
上一节讲了各种证书的格式,在此基础上本次来探究一下证书的生成。本次使用openssl进行相应的证书管理,具体openssl的安装说明等基本知识就不在此赘述。 此次主要流程就是先生成一个自签名根证书,然后利用自签名根证书去签发一个服务器证书,具体步骤如下:1. 生成根证书之前,首先需要进行私钥生成(以RSA为例)openssl genrsa -out ca.k...原创 2018-07-30 00:23:26 · 1923 阅读 · 0 评论 -
TLS初探(2)证书简介
证书可以理解为签发方信息、拥有者信息、公钥以及签名(由签发方私钥签名)的集合(当然还有额外信息)。校验证书是否可信,实际就是检验该证书是否是由合法的签发方签发,验证的方法就是首先通过签发方信息找到对应的签发方证书,利用签发方证书中的公钥去校验签名是否正确。 从上述验证方法可以看出,实际上证书是否可信是由其签发方的证书来进行校验的,而签发方的证书的可信是由上一层签发方的证...原创 2018-07-29 23:03:29 · 3446 阅读 · 1 评论 -
密码存储与传输的那些事儿(五)密码传输
对于密码的存储,需要使用密码哈希来保证用户隐私与密码安全,对于这一点基本上是没什么争议的。但对于像用户登陆这样的场景来说,需要传递用户密码,这时是否需要使用哈希算法?如何保证密码安全?首选HTTPSHTTPS肯定是最安全的方式,这点是毋庸置疑的。有些人也很极端的说,“如果项目都不肯用HTTPS,这样的公司待下去也没啥意思”,这点我却不敢苟同了。实际上很多小项目或者是私活之类的...原创 2018-08-21 23:40:33 · 2101 阅读 · 0 评论