公钥算法

TLS/SSL 梳理

情到浓时终转凉″ 提交于 2020-03-16 03:16:16
数据加密通篇都是为了防止第三方的劫持伪造,保证连接安全, 毫无遮掩的明文传输只有民风淳朴的时候才是安全的。 先是一些基础的内容: 对称加密 最开始为了对数据进行加密,使用的是对称加密算法,即双方协商好一个密钥,传输的时候使用这个密钥对数据进行加密和解密,但是这个密钥当然不能使用网络传输,不然同样被第三方劫持就没有意义了,所以只能私下协商交换密钥。 最开始的DES(Data Encryption Standard)对称加密算法使用的是56bit的密钥,这个密钥稍微有点短,在后来完全可以暴力破解加密信息,对于56位的密码,只需要2的56次方就可以暴力穷举。 然后又有了新的算法,triple—DES也交3DES,三重加密算法,最高168位密钥,还有AES,以前搭梯子的时候经常能见到,最高256bit密钥,安全性和速度都很出色。 但是,和谁通信都私下传密钥明显不现实,于是就有了 非对称加密 各自有个私钥,使用公钥传输,全程只暴露公钥,具体过程: A先用自己的私钥加密数据,然后传递公钥和密文给B,B可以用自己的私钥解密 (在一篇文章中提到,使用私钥加密的是hash值,而数据本身是明文的,因为使用密钥加密任意的数据内容存在风险,比如可以刻意的上传一些特定的数据在下载下来,从而破解得到密钥(如RSA),对数据只是payload,所以文章中的逻辑是这样的:A用自己的私钥加密hash

前端加解密方案探讨

假装没事ソ 提交于 2020-03-12 05:58:50
最近在做一个node项目,需要对前端传递给node端的敏感数据进行加密,并在node端对该加密数据进行解密;因为在做node项目之前,与后端配合开发过类似的需求,即前端加密后端解密;所以就尝试采用RSA非对称加密算法来实现。由于第一次采用RSA来完成加解密的整个过程,遇到了不少坑;不过由于种种原因,最后采用了AES的加密方式;下面就来说说前端加解密实现方案。 RSA加解密算法 实现思路 当然首先想到采用的加解密算法就是 RSA ,其关键在于算法的 公钥/秘钥 。其主要用法: 算法生成一份公钥和私钥,其中公钥是公开的,所有人都可以知道,私钥是保密的 用公钥解密,要用私钥解密 于是,基于RSA算法来实现加解密,找到了对应的浏览器端库 jsencrypt 和node端的库 node-rsa 来实现具体的功能。 具体实现思路: 使用 jsencrypt 在前端实现用公玥加密,使用 node-rsa 在node端用私钥解密。 遇到的坑 由于采用的是RSA算法,所以需要前后端约定具体的公钥和私钥。怎么生存公钥私钥呢? 于是根据 jsencrypt 库的介绍,使用 openssl 方式来生成对应的公钥和私钥。于是生成的公钥和私钥大概是如下样子: // 私钥 -----BEGIN RSA PRIVATE KEY-----

iOS 用密钥对数据加密解密

╄→尐↘猪︶ㄣ 提交于 2020-03-11 03:09:14
引言 在iOS App开发中,我们需要对账户,密码等个人私密信息进行加密处理,从而保证用户信息的安全。那么可以将这些私密信息保存到钥匙串(keychain)中,因为钥匙串的不可见性,可以保证用户私密信息的安全。 值得注意的是,将明文存入钥匙串中是不安全的。因此可以将用户私密信息通过算法加密后再存进钥匙串中,这样就更进一步的保证了用户的信息安全。 常用的加密算法 加密算法 = 对称性加密算法 + 非对称性加密算法 说明:加密算法通常分为对称加密算法和非对称假面算法。 一、 对称加密算法: 原理:信息接收双方都需要事先知道密钥和加密解密算法,并且这个密钥是相同的,之后就可以对数据进行加密解密了。 常见的有:AES,DES,3DES: AES(Advanced Encryption Standard): 高级加密标准,是下一代的加密算法标准,速度快,安全级别高。 DES(Data Encryption Standard): 数据加密标准,速度较快,适用加密大量的数据。 3DES(Triple DES):是基于DES,对一块数据用三种不同的密钥进行三次加密,强度较DES更高。 二、 非对称性加密算法: 原理:通信双方A,B事先生成一个密钥对(私钥+公钥),然后A将自己的公钥发送给B,B也将自己的公钥发送给A,即通信双方将各自的公钥做一个交换。如果A要给B发送一条秘密电报

科普-- 白话HTTPS

会有一股神秘感。 提交于 2020-03-10 05:59:06
HTTPS是传输协议 吗? HTTPS与HTTP有什么关系? HTTPS为什么会安全? 闲扯一下 Mac笔记本、Windows台式机、Linux主机。像这三种类型,它们硬件不同,系统不同,服务端处理的编程语言不同。它们之间却可以在网络的世界了自由联通。靠的是什么呢? 靠的是它们遵守相同的规则(如:HTTP)。应用层用什么格式(语言编码,报文字段)封装报文、传输层如何将大量的数据分段,并给每帧数据添加编号和端口信息、网络层如何给没帧数据添加IP地址,目标MAC地址、数据链路层如何将数字信息通过网卡发出去。 HTTPS是传输协议吗? 目前常见的应用层协议 ​ 好像没有看到HTTPS啊? 没错,HTTPS并非TCP/IP协议族中的一员,它其实是HTTP协议+SSL协议的组合体,是披着SSL外衣的HTTP。 HTTPS与HTTP有什么关系? HTTP实现的功能 :一种机制简单(这也是从早期众多传输协议中走出来的原因)的超文本传输协议,为客户端和服务器通信服务,是处在TCP/IP协议族中的应用层协议。 HTTP在发送请求时,采用四层架构。 应用层:提供多种应用服务,如:HTTP FTP DNS等,可以直接提供给开发者使用。 传输层:网络间数据的传输,如: TCP TDP,报文 数据分割打包成帧 网络层:处理网络中流动的数据包,在复杂的网络段中选择一条传输路线,将数据包送到目的地

git公钥问题记录

早过忘川 提交于 2020-03-08 00:21:58
实际用git时间不长,一年多,没仔细研究只是翻过《git pro2》那本书,技术这东西,还得实操,理论可以提高广度,实操提高深度。 git公钥私钥的实质是利用rsa算法生成公钥和私钥,公钥放在代码服务器上,私钥留存在本地,你拿着私钥去和服务器上的公钥去配对,配对成功就可以免授权,无需再认证用户,长时间不Push代码,人家就给你把公钥删了,就得重新生成,想想也是合理的,电脑丢了——但电脑上却有一个能打开你代码仓库的钥匙,只是一般人不知道而已,想想也挺可怕的 问题描述: **有时候会在自己的仓库里面写些小功能,顺便记录一些轮子,方便自己以后翻阅查找,改完代码去push的时候,提示没有授权,我就纳闷了,明明生成过公钥私钥了呀。就去git帮助文档看到了如下这段话: ** ** If you haven't used your SSH key for a year, then GitHub will automatically delete your inactive SSH key as a security precaution. For more information, see "Deleted or missing SSH keys." ** 作为一项安全预防措施,GitHub会自动删除一年内没有使用过的SSH密钥。 GitHub会自动删除不活动的SSH密钥,以帮助保护帐户安全

数字证书简介及Java编码实现

旧时模样 提交于 2020-03-07 02:22:06
数字签名原理简介(附数字证书) 首先要了解什么叫对称加密和非对称加密,消息摘要这些知识。 1. 非对称加密 在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密。同时,一般一个密钥加密,另一个密钥就可以解密。 因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息。因此, 私钥也可以认为是个人身份的证明。 如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密。 2.消息摘要 消息摘要可以将消息哈希转换成一个固定长度的值唯一的字符串。值唯一的意思是不同的消息转换的摘要是不同的,并且能够确保唯一。 该过程不可逆 ,即不能通过摘要反推明文(似乎SHA1已经可以被破解了,SHA2还没有。一般认为不可破解,或者破解需要耗费太多时间,性价比低)。 利用这一特性, 可以验证消息的完整性。 消息摘要通常用在数字签名中,下面介绍用法。 了解基础知识之后,就可以看一下数字签名和数字证书了。 3.数字签名 假设现在有通信双方A和B,两者之间使用两套非对称加密机制。 现在A向B发消息。 那么,如果在发送过程中,有人修改了里面密文消息,B拿到的密文,解密之后得到明文,并非A所发送的,信息不正确。 要解决两个问题:1. A的身份认证 2. A发送的消息完整性

RSA 算法简述

末鹿安然 提交于 2020-03-04 00:36:55
RSA是什么 计算机的加密技术分为对称加密和非对称加密两类。在对称加密中,信息的加解密使用同一秘钥key,其可简化加解密的过程,较为简单,但不足之处在于由于加解密使用同一个key,信息传送双方都要接触这个key,密钥key更容易泄露。 在公开密钥加密即非对称加密中,密钥分为公钥PK(发送方通过PK对数据加密,然后发送给接收方,PK可公开),私钥SK(SK解密方保存,接收方通过SK对密文解密,SK不公开)。RSA公钥密码体制是最具代表性的非对称加密方式。 RSA算法原理 RSA定理:若P和Q是两个相异质数,另有正整数D和E,其中E的值与 (P-1)(Q-1)的值互质,并使得DE%(P-1)(Q-1)=1,有正整数M,且M<PQ,设: C=ME%PQ,B=CD%PQ,则有M=B。 生成公钥和密钥 随意选择两个大的素数P和Q,且P不等于Q 令N=PQ 令T=(P-1)(Q-1) 选择一个整数E,作为一个密钥,使E与T互质(即E与T的最大公约数为1),且E必须小于T 由公式DE%T=1,计算得到D的值,作为另一密钥 将(N,E)作为公钥,(N,D)作为私钥,当然也可互换。 用公钥加密信息 发送方收到公钥(N,E)后,通过公钥对数据进行加密,操作如下: 明文:M 加密:ME%N=C 密文:C 用私钥解密信息 接收方收到密文C后,通过私钥(N,D)进行解密,得到明文M,操作如下: 密文:C

PKI详解

╄→尐↘猪︶ㄣ 提交于 2020-03-03 13:36:26
预备: 一、密码基元 二、密钥管理 三、PKI本质是把非对称密钥管理标准化 PKI 是 Public Key Infrastructure 的缩写,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。 数字证书分类 一、 什么是PKI? 官方定义:PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。PKI技术是一种遵循既定标准的密钥管理平台,它的基础是加密技术,核心是证书服务,支持集中自动的密钥管理和密钥分配,能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。 通俗理解:PKI就是利用公开密钥理论和技术建立提供安全服务的、具有通用性的基础设施,是创建、颁发、管理、注销公钥证书所涉及的所有软件、硬件集合体,PKI可以用来建立不同实体间的"信任"关系,它是目前网络安全建设的基础与核心。PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务,包括身份证书和密钥管理、机密性

对称加密和非对称加密

自闭症网瘾萝莉.ら 提交于 2020-03-02 14:31:03
一:基础概念 A 和 B 要把他们的通信内容加密, 如果A/B使用相同的加密解密key,那这就是 对称加密。 对称加密最大的问题就是A和B之间的加密/解密key必须是唯一的。也就是如果A和C 要加密通信,同时还不想让C知道A/B之间的通信内容。那么A/C之间的加密/解密用的key就不能和A/B之间的一样。 链接一旦便多,这种机制将很难管理大量的key。 非对称加密 就是在此环境下诞生的。非对称加密有公钥和私钥。公钥随意公开,私钥自己私密保存。 比如 A 把公钥发给B, C。 当B,C与A通信时,先把约定好的见面信号用公钥加密,A收到后,用私钥解密,当解密后的数据就是提前约定好的见面信号的话,A 就认为B,C是受信链接。 如果此时D也给A发送信息,但却没有正确的公钥。A就无法得到正确的见面信号,就不会受理D的请求。 二:对称加密 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高 对称加密算法在电子商务交易过程中存在几个问题: 1、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥

iOS 打包签名,你真的懂吗?

烂漫一生 提交于 2020-03-02 09:13:57
iOS签名类型有Development、AD-Hoc、In-House与App Store,而打包过程中又涉及到各种证书、Provision Profile、entitlements、CertificateSigningRequest、p12、AppID......各种概念一大堆,本文将从打包签名的原理说起,并梳理完全签名的整体流程,最后讲解重签名的实现以及签名机制中有哪些需要注意防护的要点。 为了保证App的分发平台是可控的,以及保证所有安装到iOS设备上的App都是经过苹果官方允许的,苹果建立了iOS签名打包机制。要了解iOS签名机制的实现,我们首先从签名机制的原理说起。 1. 签名原理 1.1 不对称加密 网络数据的传输可以使用对称加密以及不对称加密的方式进行安全防护,对称加密是指数据发送者(A)和接收者(B)双方进行加解密的密钥是一致的,但这样会增加密钥自身分发的不安全性:比如要如何保证密钥在传递过程中不被泄露。 而不对称加密则由A、B持有一对公私钥进行加解密,公私钥钥匙是成对出现的。对于一个私钥,有且只有一个与其对应的公钥,私钥保密、公钥公开,但是不能通过公钥推导出私钥,使用私钥加密的文件可用公钥解密,反过来公钥加密的文件也只能用私钥进行解密。加密过程如下: 发送方(A)首先生成一对公私钥钥匙对,私钥自己保管,公钥则任意分发出去