密钥管理

关于非对称加密的一点解说

隐身守侯 提交于 2020-03-09 00:59:14
非对称加密定义: 非对称加密算法又称 现代加密算法 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。 对称加密定义 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的 密钥 及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的 密钥 只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。 从以上的定义我们不难看出: 对称加密和非对称加密的一个关键区别:对称加密,只有一个秘钥,发送方和接收方都使用这个秘钥进行加密和解密;而非对称加密,是发送方A:拥有 公开密钥(publickey) 和 私有密(privatekey),即公钥,私钥,接收方B:也有自己的公钥,私钥; 公开密钥和私有密钥是 一对 用 公开密钥 对数据进行 加密 ,只有用 对应的私有密钥 才能 解密 用 私有密钥 对数据进行 加密 ,只有用 对应的公开密钥 才能 解密 大致的过程就是这样的,即: 1.A要向B发送信息

java AES加密

情到浓时终转凉″ 提交于 2020-03-08 05:35:08
对称加密算法 定义:在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的 密钥 及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的 密钥 只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。 优点:算法公开、计算量小、加密速度快、加密效率高。 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证。 (2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长, 密钥管理 成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为 密钥管理 困难,使用成本较高。 AES五种加密模式 电码本模式(ECB) 将整个明文分成若干段相同的小段,然后对每一小段进行加密。 优:操作简单,易于实现;分组独立,易于并行;误差不会被传送。——简单,可并行,不传送误差。 缺:掩盖不了明文结构信息,难以抵抗统计分析攻击。——可对明文进行主动攻击。 密码分组链模式(CBC) 先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。 优点 :能掩盖明文结构信息,保证相同密文可得不同明文

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

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

一客户端使用多个密钥对登录多个主机的解决方案.

安稳与你 提交于 2020-03-04 22:33:36
来自:https://www.zhihu.com/question/29864641/answer/124695532 比如 github 、bitbucket ,出现了好几次无法提交和拉取的问题,我才意识到我多次修改了 id_rsa 文件,为不同的 git 服务创建 ssh key 的同时也覆盖了之前 git 服务器的 key 。心想肯定有办法让多个服务共存 创建密钥 1.创建一个密钥 $ ssh-keygen -t rsa 2.输入保存ssh key 密钥的文件名称 id_rsa_github 。 Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/id_rsa_aaa 3.输入两次密码,要求最低不能低于8位。 Enter passphrase (empty for no passphrase): Enter same passphrase again: 重复上面的步骤可以创建多个密钥,比如你有多个git账户 id_rsa_github id_rsa_bitbucket id_rsa_oschina 添加到 ssh-agent 用ssh-add命令把创建的密钥添加到 ssh-agent 里 $ ssh-add ~/.ssh/id_rsa_github $ ssh-add ~/.ssh/id_rsa

对称加密和非对称加密

佐手、 提交于 2020-03-04 17:29:05
(一)对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key) 。对称加密有很多种算法,由于它 效率很高 ,所以被广泛使用在很多加密协议的核心当中。 优点 简单快捷,密钥较短,且破译困难。 缺点 如果用户一旦多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的需求。 对称加密通常有 DES,IDEA,AES,3DES 加密算法。 (二)非对称加密(Asymmetric Cryptography) **非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。**私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。 缺点 加解密比对称加密耗时. 优点 比对称加密安全. 但是非对称加密也是存在漏洞,因为公钥是公开的,如果有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,所以接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。 常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie

ssh免密登录linux服务器

谁说胖子不能爱 提交于 2020-03-03 14:52:54
Ssh 免密登录 sshd 服务 sshd 简介: SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。 官方 维护文档: https://www.ssh.com/ssh/ 参考 文档: https://www.cnblogs.com/ioveNature/p/7919115.html https://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html 一、服务器上创建用户: 在服务器上创建普通用户,为每个人都分配一个自己的用户。 # groupadd dd # useradd -g dd dd1 [root@localhost ~]# passwd dd1 Changing password for user dd1. New password: BAD PASSWORD: The password is shorter than 7 characters Retype new password: passwd: all authentication tokens updated successfully. # 这个密码管理员管理好

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、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥

加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较

末鹿安然 提交于 2020-02-29 17:15:20
转载自:http://www.cnblogs.com/sochishun/p/7028056.html 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法: 对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法: 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时为同样的道理。 散列算法: 散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。 对称性加密算法有

【转】rsa加解密的内容超长的问题解决

寵の児 提交于 2020-02-29 12:06:11
一. 现象: 有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes。老代码已经做了分段的加密,应该是已经考虑了加密长度的问题才对。换了另一个线上代码中的key B,正常加密没有异常。 二. 解决: 老代码如下: private static String encryptByPublicKey(String plainText, String publicKey) throws Exception { int MAX_ENCRYPT_BLOCK = 128; byte[] data = plainText.getBytes("utf-8"); Key e = RSASignature.getPublicKey(publicKey); // 对数据加密 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, e); int inputLen = data.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[]