OpenSSL

安全通信

一个人想着一个人 提交于 2020-11-04 07:01:22
安全通信 应用层协议大多数自己都没有实现加解密功能,比如http等。http就是直接把数据加载进来然后做简单编码(也就是流式化)然后响应客户端,然后数据在浏览器展示,这个数据在传输过程是明文的,你截获就可以直接查看。这显然不安全,要想做到安全那么就只能在发送端加密然后接收端还能把信息还原成原来的内容,这就是加密解密。其实这个事情很好理解,加密解密在古代就有也不是现代的概念。在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的? SSL和TLS SSL SSL是网景公司研发的一种功能模块这种模块或者叫库就在应用层和传输层之间又加了一层,而且不是一整层只是半层,这要做的好处是你调用这个库就可以使用这个功能如果不调用则还是按照之前的方式来使用,这个半层的库就是SSL,叫做安全套接字层。不过SSL只是一种规范和协议并不是具体实现。OpenSSL则是对SSL的实现而且众多实现中的一种。什么叫做一种实现呢?比如httpd和Nginx这两个应用都是http协议的实现或者说x86是一种标准那么DELL和HP都可以基于这种标准来设计自己的电脑。 如果你自己本身不具备开发这种加密解密的功能,那么你就可以使用SSL完成这个工作,不过无论你自己开发还是使用SSL,这些加密解密协议都需要具备2个基本功能: 加密和解密 秘钥分发 在Web应用方面

再谈HTTPS

走远了吗. 提交于 2020-11-03 16:34:38
作者:李银城 来源:https://zhuanlan.zhihu.com/p/75461564 本篇将讨论HTTPS的加解密原理,很多人都知道RSA,以为HTTPS = RSA,使用RSA加解密数据,实际上这是不对的。HTTPS是使用RSA进行身份验证和交换密钥,然后再使用交换的密钥进行加解密数据。身份验证是使用RSA的非对称加密,而数据传输是双方使用相同的密钥进行的对称加密。那么,什么是对称加密和非对称加密? 1. 对称加密和非对称加密 假设隔壁小王想要约小红出来,但是他不想让小明知道,于是他想用对称加密给小红传了个小纸条,如下图所示: 他想发送的数据的数据是"Meet at 5:00 PM"(5点见面,如果是中文的话可以使用UTF-8编码),加密方式是直接在ASCII表进行左移或右移,他的密钥是3,表示在ASCII表往后移3位,就会变成"Phhw#dw#8=33#SP",这样一般人如果截获了不知道是什么意思的。但是我们可以想一下,如果既然他可以载获你的数据,自然也可以截获你的密钥,进而进行解密,如下图所示: 所以小王打算用非对称加密,非对称加密的特点是双方都有自己的公钥和私钥对,其中公钥发给对方,密钥不交换自己保管不泄漏,如下图所示: 其中小红的公钥为: public_key = (N, e) = ( 3233 , 17 ) 她把公钥发给了小明,她自己的私钥为: private

网安上课打卡day03

爱⌒轻易说出口 提交于 2020-11-03 13:19:06
VMware中虚拟机系统的安装 前提条件: 1.下载安装系统的映像文件以及拥有对应密钥 2.下载ultralso(将映像文件转化为*iOS后缀式) 3.下载VMware(安装虚拟机) 创建步骤: 1、新建一个系统的文件夹 2、在VMware中创建新的虚拟机 3、Windows系统选经典配置,lunix选自定义 4、选择稍后安装操作系统 5、选择对应系统及版本 6、命名虚拟机,将虚拟机保存在1新建的文件夹中 7、磁盘默认为40G,选择将虚拟磁盘储存为单个文件 8、虚拟机创建完成 系统安装步骤: (其中几步后须耐心等待) 1、点击虚拟机设备里的CD/DVD,选择使用iOS映像文件,找到下载好与选择系统对应的iOS文件,确认 2、开启虚拟机 3、选择现在安装(按ctrl+alt可让鼠标在虚拟机与真实机之间转换) 4、选择创建磁盘C区,输入C盘大小,回车 5、选择C盘,再选择安装xp 6、选择NTFS格式化(快) 7、输入姓名单位 8、选择每服务器 9、命名计算机名称,写入密码 来源: oschina 链接: https://my.oschina.net/u/4287583/blog/4700836

使用SSM 或者 springboot +mybatis时,对数据库的认证信息(用户名,密码)进行加密。

假装没事ソ 提交于 2020-11-03 02:25:15
通常情况下,为了提高安全性,我们需要对数据库的认证信息进行加密操作,然后在启动项目的时候,会自动解密来核对信息是否正确。下面介绍在SSM和springboot项目中分别是怎样实现的。 无论是使用SSM还是springboot,首先我们需要一个加密工具,这里我采用的是AES 高级加密算法。 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * AES 高级加密算法,本项目中用于对数据库的验证信息进行加密 */ public class AESUtil { private static String key = "111" ; /** * 加密 * @param content * @param strKey * @return * @throws Exception */ public static byte [] encrypt(String content,String strKey ) throws Exception { SecretKeySpec skeySpec =

数字签名

送分小仙女□ 提交于 2020-11-02 19:11:01
数字签名是非对称加密算法与数字摘要技术的应用,数字摘要验证了原文是否被篡改、公钥私钥保证了数字摘要的安全性,两者配合使用安全性高,速度快。 非对称密钥加密: RSA 、ECC等,依赖密钥长度来提高安全性, 数字摘要:将任意长度的消息变成固定长度的短消息,常用的加密算法包括 HASH (MD5、SHA1、SHA256)、HMAC(HmacMD5/HmacSHA1/HmacSHA256)等。 数字签名过程: 环境:A 的公钥公开,私钥保密 ,A 和 B 都使用同样的摘要算法 HASH。 • A 给 B 发送一段数据data,首先 A 使用 HASH 算法生成 data 的数字摘要 digestA,然后利用A的私钥对数字摘要 digestA 进行加密生成 digestEncodeA ,然后将 data 和 digestEncodeA 一起发送给B。 • B 收到 A 发过来的 data 和 digestEncodeA 以后,首先使用 HASH 算法生成 data 的数字摘要 digestB ,然后用 A 的公钥对 digestEncodeA 进行解密得到数字摘要 digestDecodeB,然后如果 digestB = digestDecodeB ,那么标明 data 是由 A 发送过来的 ,否则不是。 一、 公钥 加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字

openssl 生成ssl证书详解

試著忘記壹切 提交于 2020-11-02 16:42:34
1.概念 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。 一般证书分有三类,根证书、服务器证书和客户端证书。根证书,是生成服务器证书和客户端证书的基础,是信任的源头,也可以叫自签发证书,即CA证书。服务器证书,由根证书签发,配置在服务器上的证书。客户端证书,由根证书签发,配置在服务器上,并发送给客户,让客户安装在浏览器里的证书。 接下来,认识了证书的基本概念之后,我们来认识下这几个概念,公钥/私钥/签名/验证签名/加密/解密/对称加密/非对称加密。 我们一般的加密是用一个密码加密文件,然后解密也用同样的密码。这很好理解,这个是对称加密。而有些加密时,加密用的一个密码,而解密用另外一组密码,这个叫非对称加密,意思就是加密解密的密码不一样。其实这是数学上的一个素数积求因子的原理应用,其结果就是用这一组密钥中的一个来加密数据,用另一个来解密,或许有人已经想到了,没错这就是所谓的公钥和私钥。公钥和私钥都可以用来加密数据,而他们的区别是,公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥加密数据

redis未授权访问之利用

匆匆过客 提交于 2020-11-02 14:54:08
文章源自【字节脉搏社区】-字节脉搏实验室 作者-Jadore 扫描下方二维码进入社区 : redis简介 Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 redis未授权访问产生原因 Redis 若因配置不当存在未授权访问漏洞,则攻击者可进行恶意利用。当以 root 身份运行时,可以通过root 写入 SSH 公钥文件,直接通过 SSH (默认端口22)登录,从而获取服务器权限。 redis利用场景1:webshell写入 条件:有web服务,知道路径,具有增删改查权限 首先使用redis客户端直接无账号登录redis: 这里假设路径为/home/jadore,可以执行如下命令写入webshell: 靶机上可以看到 edis利用场景2:公私钥免密认证登录SSH 条件:redis以root身份运行 首先我们可以生产一个密钥对,密码为空,命令如下:

RHCSA

白昼怎懂夜的黑 提交于 2020-11-02 07:51:30
RHCSA Part Score:300 1、SElinux必须运行在Enforcing模式下。 2、配置YUM源,使用地址http://content.example.com/rhel7.0/x86_64/dvd 3、调整逻辑卷vo的大小,它的文件系统大小应该为290M。确保这个文件系统的内容仍然完整。注意逻辑卷范围260到320只见都是可以接受的 4、建立一个adminuser的组;用户harry属于这个辅助组;用户natasha也属于这个辅助组;sarah不能使用shell登录;三人密码均为redhat 5、拷贝/etc/fstab到/var/tmp。要求用户属于root,组也属于root,没有一个人能对这个/var/tmp/fstab有执行权限,natasha用户对这个文件有可读可写的权限;harry既不能读也不能写;其他人现在或者将来都只有读的权限 6、natasha用户设置一个周而复始的计划任务,此任务在本地时间20:45时执行/bin/echo hiya,要求邮件池可见执行邮件。 7、创建/home/admins的目录;此目录属于adminuser的组,在这个组内的人是可读可写,可访问的,但是其他用户没有任何权限;在这个文件夹内所建立的任何文件和文件夹都属于这个组 8、请从服务器上http://content.example.com/rhel7.0/x86_64

证书锁定SSL/TLS Pinning

青春壹個敷衍的年華 提交于 2020-11-01 18:22:36
前言 APP端抓包中, 设置抓包代理后会发现部分APP(如app store、Facebook)直接无法访问,其他部分app又功能正常,为什么呢?这涉及 ssl-pinning,证书锁定。 证书锁定(SSL/TLS Pining),顾名思义,将服务器提供的SSL/TLS证书内置到移动端开发的APP客户端内,当客户端发起请求时,通过对比内置的证书和服务器端证书的内容,以确定这个链接的合法性。 HTTPS与中间人攻击 HTTPS HTTPS实际上是由HTTP协议与TLS协议组合而成的一个协议。 TLS协议作用于HTTPS建议客户端与服务端通信建立信任的过程;HTTP协议作用于客户端与服务端的正式通信过程,二者通信的数据是被TLS协议最终生成的密钥加密过。 HTTPS建立连接过程会生成三个随机数,通过这三个随机数,客户端与服务端能够使用相同的算法生成后续HTTP通信过程中对接加密算法使用的密钥。 HTTPS协议中,非对称加密只是在协议建立的过程,协议建立后使用的是对称加密。 中间人攻击 市面上的抓包软件的实现原理就是中间人攻击。 TLS建立连接时,客户端生成的随机数1、服务端生成的随机数2都是明文,只有随机数3使用非对称加密技术加密。 中间人攻击的关键是截获服务器返回的证书并伪造证书发送给客户端骗取信任,获取随机数3,进而达成盗取信息的目的 。 客户端校验证书合法性的三种方式