惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
Cloudbric
Cloudbric
The Register - Security
The Register - Security
小众软件
小众软件
PCI Perspectives
PCI Perspectives
G
Google Developers Blog
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
TaoSecurity Blog
TaoSecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
F
Full Disclosure
N
Netflix TechBlog - Medium
博客园_首页
Last Week in AI
Last Week in AI
A
Arctic Wolf
B
Blog RSS Feed
J
Java Code Geeks
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
有赞技术团队
有赞技术团队
S
Schneier on Security
L
Lohrmann on Cybersecurity
P
Privacy & Cybersecurity Law Blog
T
Threat Research - Cisco Blogs
P
Palo Alto Networks Blog
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Security Latest
Security Latest
Vercel News
Vercel News
博客园 - 司徒正美
Webroot Blog
Webroot Blog
Hacker News: Ask HN
Hacker News: Ask HN
A
About on SuperTechFans

Sehnsucht

记一次博客换图床的过程 观《花束般的恋爱》 读《活过》 东京 旅行篇 亲人逝去 我为什么想养鱼 防止AI爬取你的博客 「monthly 」博客重构 游戏全成就 好看的小说 人生的每一步都不会是浪费-2024年终 「weekly」星期五综合征 「weekly」听播客 杂谈 读《美丽新世界》 「weekly」社交媒体 恶性事件 新世界 「weekly」认知觉醒 美丽新世界 follow 「weekly」独立博客9问题 双十一买书 读《惊呆了!原来这就是社会学》 一次聊天与自我建设 2024-09月记 补番《relife》 树状数组简单理解 lvm简单使用 博客自动发布方案 某公众号废案 fail2ban基本使用 Podman 环境使用 Nginx Proxy Manager 最佳实践 2024-07同学聚会 vps使用podman部署freshrss Gitlab CICD 实践,思考与记录 装备升级:新的PC gitlab局域网搭建流程 FastMail迁移至GMail+Cloudflare Email Routing 读《黑客与画家》 leetcode 第 391 场周赛 Astro添加过渡后DarkModeToggle按钮失效 nuxt3使用echarts5渲染中国地图 人生刻度 又到凤凰花朵开放的时候 2023-05-10 实习结束 2023-04-26 广州博物馆游记 YOASOBI「たぶん」官方音乐视频 风灵玉秀-发如雪 带我的老哥离职了 从p10k转向Starship lunarvim国内安装踩坑记录 强调体验的一种思考时间的方式 ArchLinux使用vscode编写latex报错The font "FontAwesome" cannot be found ArchLinux安装(移动硬盘)流程 yay一个或多个文件没有通过有效性检查! 2022年终 hugo建站伊始 clash设置relay前置代理(校园网破解改进记录) 群青 · YOASOBI · Ayase 华为 matepad pro 11使用体验 Nginx使用acme.sh免费安装ssl证书 永远属于你的安娜 在线 童年趣事 童心,是比野心更难得的梦想 2021年终总结 基于jeeSite的软件测试课程作业 流程记录 Linux不同用户安装不同版本jdk Wifi4更换Wifi6路由器的使用体验 Flask 上传图片并灰度显示 玩客云刷机debain个人记录 jython 简单入门 Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务器,freestyle风格 在Web项目中配置Log4j --指南-- Codeforces Round 753 (Div. 3) ABCDE 浅谈fork函数 JavaWeb servlet 使用Cookie记录用户访问次数 Codeforces Round Educational Codeforces Round 114 (Rated for Div. 2) ABC 2021牛客多校7 I xay loves or 2021牛客多校9 H Happy Number 2021牛客多校8 D OR 2021牛客多校5 B Boxes 2021牛客多校5 H Holding Two 2021牛客多校2 D Er Ba Game 2021牛客多校1 F Find 3-friendly Integers 2021牛客多校1 B Ball Dropping 记人生第一次投简历和笔试 原型模式 2021-2-20 雨时随记 关于一维差分数组的例子 halo个人建站 关于手机ping电脑和电脑ping手机 泛型类简单理解 CodeForces - 849C From Y to Y 2020牛客国庆集训派对day3 Leftbest 约瑟夫环问题---2020牛客国庆集训派对day2 AKU NEGARAKU mysql 5.7 忘记密码如何更改 CF 1099B Squares and Segments CF 998A Balloons CF 998B Cutting 链表应用之多项式相加 CF 1150A Stock Arbitraging CF 1199A City Day CF 1199B Water Lily CF 982A Row CF 934A A Compatible Pair CF 629B Far Relative’s Problem 651A Joysticks 651B Beautiful Paintings
什么是对称加密非对称加密、密钥交换、数字签名、证书
2023-03-15 · via Sehnsucht

对称式加密

加密和解密都使用同一把密钥

网络上传输的数据是加密的,第三方窃听者甚至无法破解

缺点在于需要交换密钥

解决密钥交换的方式是密钥交换算法非对称加密算法

密钥交换算法

前提:单向散列函数,给出F(x)和F,无法推出x

假设有三个人,Alice,Bob和Hack(第三方中间人),Hack现在想窃听Alice和Bob的聊天信息

假设Alice和Bob想出两个数字A和B想出两个数字A和B,且确定用G作为生成元(三方都知道)

Alice使用A和G生成AG

Bob使用B和G生成BG

网络数据交换,Alice获得BG,Bob获得AG,Hack获得AG和BG(此时Hack知晓AG,BG和G,但是由于单向散列函数的特性无法推出A和B)

Alice使用BG和A通过运算手段获得ABG

Bob使用AG和B通过运算手段获得ABG

这样Alice和Bob得到了他们共有的限定的数

Hack因为无法确定A或者B所以无法确定ABG

flowchart LR
subgraph 生成元
G
end
subgraph Alice和Bob都知晓
ABG
end
subgraph Alice
A --> G -->|生成| AG -->|给Bob| Bob知道AG和BG和B -->|通过算法使用AG和B生成ABG| ABG
end
subgraph Bob
B --> G -->|生成| BG -->|给Alice| Alice知道BG和AG和A -->|通过算法使用BG和A生成ABG| ABG
end

中间人攻击

对于密钥交换算法,Hack想出了一种方式来破解

不再是窃听,而是直接冒充Alice和Bob的身份进行交流

非对称加密

非对称加密的思路是,将加密密钥和解密密钥分开,公钥用于加密,私钥用于解密

只把我的公钥给对方,对方用我的公钥,到本地用自己的私钥解密

可以这样想,公钥是锁,私钥是钥匙,把锁给别人,钥匙留在自己这里,这样方便理解

常见的RSA算法就是典型的非对称加密算法

实际应用中非对称加密的运算速度要慢于对称性加密,所以在传输大量数据的时候,非对称加密传输的先是对称加密的密钥,然后通过对称加密密钥来传输数据,这样效率更高

sequenceDiagram
    Alice->>Bob: 公钥加密{对称加密密钥}之后发送给对方
    Bob->>Bob: 解密后获得{对称加密密钥}
    Bob->>Alice: 使用对称及加密密钥发送数据
    Alice->>Alice: 接收,使用{对称加密密钥}解密
    Alice->>Bob: 再次加密数据,发送
    Bob-->>Alice: 循环往复

注意,非对称加密也无法防范中间人攻击,比如Hack拦截了Alice的公钥,然后伪装Bob给Alice发信息

数字签名

非对称加密的私钥其实也可以用来加密,然后使用公钥解密,数字签名和非对称加密有点类似只不过完全颠倒

用你的私钥将数据发送出去,这就是数字签名

数字签名的意义在于,验证身份,能解开私钥加密过的数字签名,那么也就确定了你的身份

流程大致是:

  • 生成公钥和私钥,公钥发出去

  • 你将数据和数字签名(加密后的数据)发出去

  • 对方接收数据和数字签名并验证

数字签名同时有着确认完整性的功能,加密的数据其实是全部数据的hash值

这里有个小问题,在使用数字签名认证了身份后,之后的传输数据还需要附带数字签名吗,数字签名的效果是确认发送方的身份,需要密钥解密,我们第一次解密得到的是对称式加密密钥,之后我们用来加密的就是对称式加密了,解不开就说明遭到中间人攻击,所以之后无需数字签名

sequenceDiagram
	Alice->>Alice: 生成公钥和私钥
    Alice->>Bob: Alice的公钥发给Bob
    Alice->>Bob: 将数据和数字签名(加密后的数据)发出去
    Bob->>Bob: 接收数字签名,确认身份,解密数据,获得对称式加密密钥
    Bob->>Bob: 用对称式加密密钥加密数据
    Bob->>Alice: 传输
    Alice-->>Bob: 循环往复

假设中间人修改了明文数据,那么解密之后的数字签名与明文不符

如果中间人修改了数字签名,那么解密之后数字签名极可能乱码无法解读

如果中间人同时修改了数字签名明文数据,那么对方的公钥无法正确解开,哪怕解开了数据返回的时候的数字签名也不是中间人的

数字签名从一定程度上可以认定数据发送方的身份,之所以是一定程度上,是因为公钥的分发过程还是有可能出问题,可能在最开始公钥就被中间人修改了

数字签名是一种用于身份认证的方式,但是最开始的公钥分发就有可能出问题…对于公钥分发,要先确定你的身份是真的,但是数字签名就是用来解决身份认证问题的…陷入死循环了…

我们需要找一个大家都信任的第三方机构,来认证你的身份,如此公钥分发便安全许多

公钥证书

证书其实就是公钥+签名,由第三方受信任的机构(certificate authority,简称CA)颁发

流程如下:

一般来讲浏览器会预先安装几个正规机构的证书,用于确认身份,所以证书的认证还是可信的,所以不要乱装不正规浏览器

现在的网站大多使用的是HTTPS协议,就是在 HTTP 协议和 TCP 协议之间加了一个 SSL/TLS 安全层。在你的浏览器和网站服务器完成 TCP 握手后,SSL 协议层也会进行 SSL 握手交换安全参数,其中就包含该网站的证书,以便浏览器验证站点身份。SSL 安全层验证完成之后,上层的 HTTP 协议内容都会被加密,保证数据的安全传输。

补充

安全技术最多只能保证技术上无问题,但是不代表着完全安全,第三方认证机构也不一定完全安全

HTTPS认证流程

sequenceDiagram
	浏览器->>服务器: 发出请求
	服务器->>浏览器: 用私钥加密网页后,加上本身的数字签名一起发送
	浏览器-->>CA: 浏览器根据CA签证去找CA确定网站信息,如果没有则网页数据无法加密
	CA-->>浏览器: 返回网站的证书(公钥+签名)
	浏览器-->浏览器: 验证证书是否正常
	浏览器->>服务器: 交互信息,循环往复
   

RSA公钥私钥可否互换

原理上是可行的,但是实际上由于一些生成算法和其他情况,不可行

例如一种情况:公钥就是用私钥生成的,公开私钥=公开公钥和私钥

参考: