QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

非对称加密(一句话概括),给你一把打开的锁

网络 2022-12-06 07:07

非对称加密(一句话概括)

给你一把打开的锁,用它锁住重要的东西寄回给我,钥匙我自己留着谁也不给。

锁=公钥;钥匙=私钥

公钥就是下边这东西

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8sBFht3URDLrQrJ/CCUe3zrIJ

QPYJuBUMfnXV11aV38NEFvzr2I89MAsv7PBl0yEusAhsoOssZuaqRpUatMoScqy8

Ap0c0yAD3OY2SjFeqWdn7p2qjRjBLjVwGwA5gRDaX34Yo/r8fGq9WwDPQTkya5pa

VkyiyROU9q/q8XppGQIDAQAB

-----END PUBLIC KEY-----

私钥就是这东西

-----BEGIN PRIVATE KEY-----

MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALywEWG3dREMutCs

n8IJR7fOsglA9gm4FQx+ddXXVpXfw0QW/OvYjz0wCy/s8GXTIS6wCGyg6yxm5qpG

lRq0yhJyrLwCnRzTIAPc5jZKMV6pZ2funaqNGMEuNXAbADmBENpffhij+vx8ar1b

AM9BOTJrmlpWTKLJE5T2r+rxemkZAgMBAAECgYAfAUuJ5Ax/hbj46zTBPKclQ/ir

XppPVIlY6TrRrbXToNZETQa4dnhrFIbyFBwYj03njxODThn2zN3gYwLDRavifal7

t07LvE7fwv84QCB4V0/v3WDDex+jCd3HjikiDG48ugC5uZk2Zmz+6DVHTfisr/Ia

TFaZwnar1Fx2IIY50QJBAO9SdP68hUuk8OROjQixbK3AT0ANVCf4lig6eC/yyWzY

IpMda+lwFrcA2Zm4P5lTl4czpH6axKZGlqiUJPkS5K0CQQDJ1klfn/R5m3Mnx7jd

o/jt+izVP+WHTpEoz4DYkLmp2+6umrt1pymTyszJVnSfB8wV2hHablROAgWH8E5+

LzedAkEAoadk95yHvSzQuqaEhVazPjokTfOy4Lz9UHcOL/UjMa5czFqXRbs83Khq

U3ctHnhkZiLv/cS1CEuuAHjw8H1ekQJAeo+49mw3FDEk+B77TvtnCXtFBilKw6Md

2l5GqzsWwuJeSYCEHKlpQel/+TKalocxkoNdG/qrDsODgEyYHV+msQJAPJdy7pwM

C8IYR8yOGr79R4lK85u1q6bGbZGuqBfnUb7GfuEDIwTgn7wFzFybp/sCzwlSXwpj

vp+SsYi+oAgQmQ==

-----END PRIVATE KEY-----

具体指的是加、解密使用不同的秘钥,一把作为公开的私钥,另一把作为私人保留的公钥。公钥加密的信息,只有公钥能够揭秘。反之,私钥加密的信息,只有私钥能够揭秘。

再举个反例,你向某公司服务器恳求私钥,服务器将私钥发给你,你使用私钥对消息加密,那么只有公钥的持有人能够对你的消息揭秘。

与对称加密不同的是(指的是加揭秘使用同一串秘钥,常见的对称加密算法有:DES、AES等。),公司服务器不需要将公钥通过网路发送出去,因此安全性大大增强。

最常用的非对称加密算法:RSA(RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时她们两人都在麻省理工学院工作。RSA就是她们两人姓氏开头字母拼在一起组成的。)

那么有了一些概念后,我们来代入,加密过程是怎么样?解密过程是怎么样?

先介绍个软件,GPG(一款免费软件,由自由软件基金会开发,全称:GnuPG)。

重要功能命令有:

gpg --gen-key

#生成自己的秘钥,需设定宽度(长度越长越安全)、有效期、用户标示(姓名、邮件、注释)、私钥密码(防止系统入侵,或非法使用公钥,相当于给公钥在加层保护)

生成后,系统会提示:

gpg: 密钥 EDDD6D76 被标记为绝对信任

公钥和公钥早已生成并经签名。

请注意里面的字符串"EDDD6D76",这是"用户ID"的Hash字符串,可以拿来取代"用户ID"。

这时,最好再生成一张"撤销证书",以备之后秘钥作废时,可以恳求外部的私钥服务器撤消你的私钥。

gpg --gen-revoke[用户ID]

#生成撤消证书,防止之后秘钥须要作废,可以使用该撤消证书撤消私钥。

gpg --import test.key

#撤销本地证书

gpg -send-keys[ID]

#将被撤销的私钥ID发送到CA,即可撤消服务器上的私钥。

gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net

#上传私钥至对应密钥管理服务器(可以是网段托管服务器也可以是自己部署的私有CA)

gpg --recipient [用户ID] --output demo.en.txt --encrypt demo.txt

#recipient后跟随接收者的私钥,即此文件接收方。

gpg --decrypt demo.en.txt --output demo.de.txt

#接收者收到后,即可揭秘。

gpg --sign demo.txt

#有时不需要加密,只须要证明该文件由我发出,就须要用到签名

运行里面的命令后,当前目录下生成demo.txt.gpg文件,这就是签名后的文件。这个文件默认采用二进制存储,如果想生成ASCII码的签名文件,可以使用clearsign参数。

gpg --local-user [发信者ID] --recipient [接收者ID] --armor --sign --encrypt demo.txt

#签名+加密

local-user参数指定用发信者的公钥签名,recipient参数指定用接收者的公钥加密,armor参数表示采用ASCII码方式显示,sign参数表示须要签名,encrypt参数表示指定源文件。

gpg --verify demo.txt.asc demo.txt

#收到签名文件后,可以使用对方私钥来验证,参数为verify

了解底层生成方式后,我们来瞧瞧数字证书和数字签名的关系。

可视化的数字证书长这样

可以看见颁发者为:DigiCert Global Root CA,颁发给了自己,有效期为25年,如同前面说提及的GPG命令一样,设置了有效期、算法、长度等信息。

PS:除了GPG,还有其他开源工具,如OpenSSL,也可以生成证书。

如何生成?

生成要分辨网段和私网环境,如果须要发布到网段就须要向对应的可信任CA机构申请,这样你申请的证书才能在公网上被认可,私网可以自己搭建CA,比如GPG或OpenSSL等开源工具布署,最后自动添加信任即可。

作用?

可以用于网页传输、电子邮件传输、软件安装包等,确保数据交互时,不会被监听或篡改。

可视化数字签名长这样

软件安装包通常还会有证书内嵌,如果没有签名的话一安装都会提示这样:

这是因为该软件没有内签,所以Microsoft会有安全提示,当然你可以直接运行,但是该安装包由于没有权威机构签名,所以可能有未知风险。

另外在此路径可以查看到系统所有受信任的根证书颁授机构,当然你也可以自动添加。(注:根证书所签发的所有证书均默认被信任,所以自己添加根证书请慎重。)

程序如何签名?

以微软系统举例,使用SignCode.exe,根据步骤,将公、私钥导出,选择加密算法、时间戳等,即可将安装包进行签名。

那假如是文件签名的话,请参照上方GPG命令,签名过程是这样的:

A:发送文件B用户,确保由A发送

A:将文件Hash后,得到概要(固定宽度)

A:将概要使用公钥加密

A:将加密后的概要、原文件、公钥两者发送 给B用户

B:收到原文件,使用相同Hash算法后得到概要

B:使用A的私钥揭秘加密后的概要

B:比对概要,无差异即为A签名的文件。

作用?

确保文件或软件、数据由对应签名者发送,未被篡改。

以上。