公钥加密

Linux安全之SSH 密钥创建及密钥登录

旧城冷巷雨未停 提交于 2020-01-09 05:03:11
在我们平时使用Linux系统时候,通常使用的Linux SSH登录方式是用户名加密码的登录方式,今天来探讨另外的一种相对安全的登录方式——密钥登录。 我们知道SSH登录是用的RSA非对称加密的,所以我们在SSH登录的时候就可以使用RSA密钥登录,SSH有专门创建SSH密钥的工具ssh-keygen,下面就来一睹风采。 首先进入Linux系统的用户目录下的.ssh目录下,root用户是/root/.ssh,普通用户是/home/您的用户名/.ssh,我们以root用户为例: 执行ssh-keygen命令创建密钥对,这里加了-b 参数,指定了长度,也可以不加-b参数,直接使用ssh-keygen -t rsa,ssh-keygen命令的参数文章后尾有参数详解。 执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会提示呢输入密钥的密码的(如下图中红色处,输入两次相同的,即是又一次确认密码),不需要密码直接回车就行。 [root@localhost ~]# ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'.

RSA加密原理与秘钥、公钥生成

余生颓废 提交于 2020-01-08 01:46:01
RSA加密(非对称加密) RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。(不可逆向运算的加密方法) 它通常是先生成一对RSA 密钥,其中之一是保密密钥(私钥),由用户保存;另一个为公开密钥(公钥),可对外公开,甚至可在 网络服务器 中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。 RSA进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量 数据加密 。RSA的速度比对应同样安全级别的对称 密码算法 要慢1000倍左右。 PHP端(操作方法): 生成证书前先检查 /etc/pki/CA 是否有 index.txt 和 serial 文件 以下是创建的方法 touch index.txt 排序数据库,用来跟踪已经颁发的证书。我们把它命名为index.txt,文件内容为空 touch serial echo 01 > serial 用来跟踪最后一次颁发的证书的序列号,我们把它命名为serial,初始化为01 在linux下创建一个文件夹MyCA 在MyCA下创建两个文件夹用来保存 certs 用来保存我们的CA颁发的所有的证书的副本 private用来保存CA证书的私钥匙 mkdir

网络安全RSA加密

折月煮酒 提交于 2020-01-08 01:44:54
网络安全课相关知识: RSA 预备知识 1.1 快速幂算法 顾名思义,快速幂就是快速算底数的$n$次幂。其时间复杂度为${\rm{O(log n)}}$,与朴素的$O\left( n \right)$相比,效率有了极大的提高。具体可以参考百度百科:快速幂。 1.2 扩展欧几里得算法 扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展。已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式 ax+by=gcd(a,b). ax+by=gcd(a,b). 如果$a$是负数,可以把问题转化成 $\left| a \right|\left( { - x} \right){\rm{ }} + {\rm{ }}by{\rm{ }} = {\rm{ }}gcd\left( {\left| a \right|,b} \right)$($\left| a \right|$为a的绝对值),然后令$x\prime {\rm{ }} = {\rm{ }}\left( { - x} \right)$。具体可以参考维基百科:扩展欧几里得。 1.3 米勒-拉宾素性检验算法 要测试${\rm{N}}$是否为素数,首先将${\rm{N - 1}}$分解为${2^s}d$

macos修改vmware Fusion的NAT网络

痞子三分冷 提交于 2020-01-07 03:44:20
远程连接Linux 为什么要远程连接Linux 在实际的工作场景中,虚拟机界面或者物理服务器本地的终端都是很少接触的,因为服务器装完系统之后,都要拉倒IDC机房托管,如果是购买的云主机,那更碰不到服务器本体了,只能通过 远程连接 的方式管理自己的Linux系统。 因此在装好Linux系统之后,使用的第一步应该是配置好 客户端软件(ssh软件进行连接)连接Linux系统 。 通过什么软件呢? Xshell SecureCRT 远程连接必备的知识 ip地址 > 服务器的位置 互联网上的计算机都会有一个唯一的32位的ip地址,如同家里的门牌号,对应到服务器的位置。 我们找人,可以通过身份证号码对应某个人 那我们找到某台服务器,也必须是通过IP地址 局域网 (针对自己班级/家庭所在环境)里也有预留的ip地址,一般是192/10/172开头,局域网的IP地址也是唯一的。 windows查看ip通过命令: 在cmd终端敲下:ipconfig查看“以太网适配器 本地连接 IPv4”的Ip地址就是自身网线的ip地址了 Linux查看ip方式: 方式1:ip addr 方式2: ifconfig 外网Ip 全世界哪里都可以访问, 虚拟机网络配置 host only 仅主机 单机模式,了解即可 电脑pc > 皇帝 虚拟机 > 老百姓 老百姓被皇帝控制,无法与外届通信 nat模式(网络地址转换)

Alamofire -安全认证

穿精又带淫゛_ 提交于 2020-01-07 01:38:54
基于Alamofire 5.0.0 分析网络的安全认证。同时介绍一些 HTTP 与 HTTPS 的一些相关知识 HTTP 特性 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type 是 HTTP包 中用来表示内容类型的标识)加以标记。 HTTP 存在的问题 1.安全性差 2.每次请求传输结束,重新请求又要建立连接 3.后续处理之前信息必须重传,损耗性能 加密算法 1.对成加密 在对称加密当中加密使用的秘钥和解密使用的秘钥是相同的。也就是加密和解密都是同一个秘钥。这样秘钥的安全性就非常重要,秘钥是一定不能公开的 存在的缺点:对称加密的缺点就在于如果秘钥要是泄露

区块链的技术核心是什么?

▼魔方 西西 提交于 2020-01-06 21:01:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 区块链技术核心 简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。 或许以上概念过于抽象,我来举个例子,你就好理解了。 你可以想象有100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。区块链就是为了解决上述问题而产生的技术方案。 散列函数 区块链技术的一个重要组件是将哈希函数用于许多操作。哈希是一种将哈希函数应用于数据的方法,其为几乎任何大小的输入(例如,文件,文本或图像)计算相对独特的输出(称为消息digest,或仅仅是digest)。它允许个人独立地获取输入数据、散列数据并得出相同的结果 - 证明数据没有变化。即使对输入的最小改变(例如,改变单个位)也将导致完全不同的输出

看完这篇文章,我奶奶都懂了https的原理

百般思念 提交于 2020-01-04 03:34:43
  前言   前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门: https://blog.csdn.net/ityouknow/article/details/80603617 ),文中讲到利用RSA来加密传输AES的秘钥,用AES来加密数据,并提供如下思路:   说人话就是前、后端各自生成自己的RSA秘钥对(公钥、私钥),然后交换公钥(后端给前端的是正常的明文公钥,前端给后端的是用后端公钥加密后的密文公钥;PS:其实我觉得直接交换两个明文公钥就行了),后端生成AES的 明文key ,用明文key进行AES加密得到 密文数据 ,用前端的公钥进行RSA加密得到 密文key ,API交互时 并将密文数据与密文key进行传输,前端用自己的私钥进行RAS解密的到明文key,用明文key进行AES解密得到明文数据;前端给后端发送数据时同理,这样一来,传输的数据都是密文,且只有秘钥才能解密   可惜这篇博客只提供了思路,但并没有具体的代码,我们在网上查找一下资料,开始生撸代码,实现一个前后端API交互数据加密——AES与RSA混合加密,并应用到项目中   后端加、解密   从网上查找工具类,再进行改造   先引入Base64工具类 <!-- Base64编码需要 --> <dependency> <groupId>org.apache.directory.studio<

网络安全RSA加密

心不动则不痛 提交于 2020-01-04 03:26:07
网络安全课相关知识: RSA 预备知识 1.1 快速幂算法 顾名思义,快速幂就是快速算底数的$n$次幂。其时间复杂度为${\rm{O(log n)}}$,与朴素的$O\left( n \right)$相比,效率有了极大的提高。具体可以参考百度百科:快速幂。 1.2 扩展欧几里得算法 扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展。已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式 ax+by=gcd(a,b). ax+by=gcd(a,b). 如果$a$是负数,可以把问题转化成 $\left| a \right|\left( { - x} \right){\rm{ }} + {\rm{ }}by{\rm{ }} = {\rm{ }}gcd\left( {\left| a \right|,b} \right)$($\left| a \right|$为a的绝对值),然后令$x\prime {\rm{ }} = {\rm{ }}\left( { - x} \right)$。具体可以参考维基百科:扩展欧几里得。 1.3 米勒-拉宾素性检验算法 要测试${\rm{N}}$是否为素数,首先将${\rm{N - 1}}$分解为${2^s}d$

面试-HTTPS-身份认证

空扰寡人 提交于 2020-01-02 03:15:28
作者:浩哥的日常 链接:https://zhuanlan.zhihu.com/p/89905893 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 TLS 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图, TLS 在建立连接时是需要 客户端发送 ClientHello(包含支持的协议版本、加密算法和 随机数A (Client random) )到服务端 服务端返回 ServerHello、公钥、证书、 随机数B (Server random) 到客户端 客户端使用CA证书验证返回证书无误后。生成 随机数C (Premaster secret) ,用公钥对其加密,发送到服务端 服务端用 私钥 解密得到 随机数C (Premaster secret) ,随后根据已经得到的 随机数ABC生成对称密钥(hello的时候确定的加密算法) ,并对需要发送的数据进行对称加密发送 客户端使用对称密钥(客户端也用随机数ABC生成对称密钥)对数据进行解密。 双方手持对称密钥 使用对称加密算法通讯 而这一流程 服务端的证书 是至关重要的。 证书 证书用来证明公钥拥有者身份的凭证 首先我们需要知道

HTTPS原理简述

孤人 提交于 2020-01-01 19:40:25
角色: A,B,Server,Client,中间窃听者,数字证书签发机构(CA) 工具:对称加密算法,非对称加密算法,数字签名,数字证书 第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。 第三步,爱丽丝确认数字证书(对证书信息进行md5或者hash后的编号==用证书机构的公钥对加密的证书编号解密后的证书编号)有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥(鲍勃的公钥),加密这个随机数,发给鲍勃。 第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。 第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。 https要使客户端与服务器端的通信过程得到安全保证,必须 使用对称加密算法 并且 每个客户端的算法都不一样 ,需要一个协商过程,但是 协商对称加密算法的过程,需要使用非对称加密算法来保证安全 ,直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用