《互联网的世界》第五讲-信任和安全(第一趴:物理世界的非对称加密装置)
信任和安全的话题过于庞大,涉及很多数学知识,直接涉及 “正事” 反而不利于理解问题的本质,因此需要先讲一个前置作为 part 1。
part 1 主要描述物理世界的信任和安全,千万不要觉得数字世界是脱离物理世界的另一天堂,它只是效率高了,让物理世界被认为不可能的事变得可能,同时由于不可能的事变得可能了,它带来的问题也要一并解决。
我用棘轮装置设计了一个物理世界的非对称加密装置,实现类似 rsa 的效果:
- 公钥加密:任何人都可以放东西进去。
- 私钥解密:只有有钥匙的人才能把物品取出来。
- 私钥加密,公钥解密:持有钥匙的人把物品放入,任何取出物品的人可以确定这个物品是特定持有钥匙的人放入的,这机制可做签名。
从网上找了一个可转向棘轮原理图:

下面是一个设计(并非唯一,但细致):

还可以抽象出一个更简单的实现方式:

箱主钥匙旋至 180°,联动装置促使箱口内凹,初始状态为 1,分发箱子给别人,别人通过弹簧片可将物品推入箱内却无法取出,只有箱主插入钥匙再旋 180° 到状态 2,箱口外凸,方可以取出物品。
当箱子位于状态 2,箱主可将物品推入箱内,之后再旋转钥匙 180° 至转态 1,将箱子分发给接收者,接收者方可取出物品并确认物品只能是箱主推入。
总结一下,箱子处在状态 1,任何人都可存入物品,只有箱主可取出,箱子处在状态 2,任何人都可取出物品,此物品一定由箱主推入。
这样子给小孩子讲非对称操作应该可行。
我:你在一个信息几乎透明可被任何人截获的环境下和不能对方的人通信,要怎样?
孩子:要把信息加密。
我:如何加密,密码传给遥远的对方吗?如果密码被经理截获了怎么办?
孩子:…
我:使用上述装置,给对方一个瓶子,让对方把密码塞进去,只有我有钥匙能打开瓶子获得密码,就不怕被截获了。
孩子:既然都能塞进密码,如果有多个塞入,我打开瓶子后,怎么确定哪个是特定对方塞入的。
我:瓶子里只能有一个密码。
孩子:如果你希望获得 A 发来的密码,结果坏人 B 截获了瓶子,塞入了自己的密码发回来了怎么办?
我:A 从权威机构那里获得一种特殊的更小的小瓶子,并且拥有小瓶子的钥匙,A 用钥匙打开小瓶子,密码装进小瓶子里,再把小瓶子装进大瓶子里,就好了。
孩子: 坏人没有这种小瓶子吗?
我:是的,坏人没有。所以坏人就算抢了一个小瓶子,也没有钥匙打不开它,就放不进密码。
…

我们从没见过类似的装置实现安全认知需求,因为在物理世界,我们有更好更方便的。
任何人都可以放钱到存钱罐,只有存钱罐的主人可以用钥匙打开它拿出钱;只有管理员可以往自动售货机里加物品,但所有人只要投钱就能取出;带玻璃窗的公示栏每个人都可以看,但只有科长有权限打开玻璃门张贴新告示;印章和签名也能从细微之处认证每一个人或机构。
在线下物理世界,我们会配合使用锁,钥匙,玻璃窗,印章,签名,严格的法律等手段满足非对称安全需求,因为它们的操作时间处在同一个数量级,然而在线上世界,操作时延的差异被放大,使用不同的方式自然会引入木桶短板效应拖慢整个系统,固然需要一个统一的非对称算法,也就是我设计的上述装置在物理世界的描述,大概就是 rsa,ecc 这类。
此外,物理世界本就是 “零信任” 的,然而互联网最初却建立在普遍信任的基础上,这导致原则上基于 ip 地址的互联互通,包括攻击等恶意流量在内的所有流量在互联互通的原则上真的就是互联互通,恶意流量从物理层到应用无需付出太大代价就能在互联网注入恶意,这也是互联网安全的核心问题。
一个不那么技术但却典型的例子是任何人都可针对任何人攻击。谩骂,网络暴力无处不在,你甚至不知道骂你的人在哪里(显示 ip 地址本身争议很大),任何人都不需要对说过的话负责,互联网事实上是一个准匿名世界。然而实名制,防火墙等措施在另一方面又违背的网络中立原则,左右都是错。
物理世界的不与陌生人说话的零信任原则在互联网世界其实并不适用,它和互联网 ip 地址互联互通相违背,互联网架构让零信任的实施过程非常不便。
总之,信任和安全的话题非常大。从技术上讲,目前的互联网安全都属于案例,案例终究还是案例,并不会改变互联网根基,这些案例,以及其涉及到的算法,注入互联网的复杂性,我们可以从过往的 pki,ipsec,ssl/tls 等术语从可见一斑。很多人争论,互联网安全永远是最后贴上去的 patch,从来不是内置的,从这个视角看,物理世界也一样,出了事再说,规则和法律在不断完善,而不是被设计好。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
《互联网的世界》第五讲-信任和安全(第一趴:物理世界的非对称加密装置)
信任和安全的话题过于庞大,涉及很多数学知识,直接涉及 “正事” 反而不利于理解问题的本质,因此需要先讲一个前置作为 part 1。 part 1 主要描述物理世界的信任和安全,千万不要觉得数字世界是脱离物理世界的另一天堂,…...
JavaScript使用
文章目录 一、JavaScript简介二、JavaScript引入方式1、内部脚本2、外部脚本 三、JavaScript基础语法1、书写语法&输出语句2、变量&数据类型3、运算符4、流程控制语句&函数 四、JavaScript对象1、Array2、String3、自定义对象 五、BOM1、Window2、History3、Locati…...
区块链和人工智能的关系以及经典案例
目录 1.区块链与人工智能的关系 2.应用案例:基于区块链的医疗数据共享平台 2.1背景 2.2方案 2.3优势 2.4挑战 区块链技术和人工智能(AI)是两种不同的技术,但它们之间存在着互补关系。区块链技术提供了一种安全、透明、去中心…...
【深度学习笔记】优化算法——Adam算法
Adam算法 🏷sec_adam 本章我们已经学习了许多有效优化的技术。 在本节讨论之前,我们先详细回顾一下这些技术: 在 :numref:sec_sgd中,我们学习了:随机梯度下降在解决优化问题时比梯度下降更有效。在 :numref:sec_min…...
sql注入
注入的介绍 将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。 注入能导致 数据丢失 、 破坏 或 泄露 给无授…...
Leetcode : 1137. 高度检查器
学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。 排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。 给你一个整数…...
Mybatis从入门到CRUD到分页到日志到Lombok到动态SQL再到缓存
Mybatis 入门 1.导入maven依赖 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version> </dependency>2.配置核心文件 <?xml version"1.0" encoding"U…...
四节点/八节点四边形单元悬臂梁Matlab有限元编程 | 平面单元 | Matlab源码 | 理论文本
专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…...
机器视觉学习(一)—— 认识OpenCV、安装OpenCV
目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个跨平台的计算机视觉库,最初由威尔斯理工学院的Gary Bradski于199…...
web3 DePIN赛道之OORT
文章目录 什么是DePIN什么是oort背景:去中心化云计算场景团队OORT AIOORT StorageOORT Compute 参考 什么是DePIN DePIN是Decentralized Physical Infrastructure Networks的简称,中文意思就是去中心化的网络硬件基础设施,是利用区块链技术和代币奖励来调动分散在世…...
QString 与 字符编码 QTextCodec
为了理解编码,我们要先区分 文件中字符编码 和 程序运行时字符编码 的区别。 文件中字符编码 顾名思义 就是 文字保存在文件中的采用的字符编码方式,可以在IDE中看到程序运行时字符编码,是编译器读取从源文件中读取到字符串后再按要求做的一次…...
【STA】SRAM / DDR SDRAM 接口时序约束学习记录
1. SRAM接口 相比于DDR SDRAM,SRAM接口数据与控制信号共享同一时钟。在用户逻辑(这里记作DUA(Design Under Analysis))将数据写到SRAM中去的写周期中,数据和地址从DUA传送到SRAM中,并都在有效时…...
Git的基础使用
几条铁令!!!!! 切换分支前先提交本地的修改代码及时提交,提交过就不会丢遇到任何问题都不要删除文件目录,第一时间找人请教push前和merge前一定要pull保证代码为最新的,有冲突解决冲…...
贪吃蛇(C语言实现)
贪食蛇(也叫贪吃蛇)是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能: • 贪吃蛇地图的绘制 • 蛇吃食物的功能(上、…...
使用 mysqldump 迁移 MySQL 表 OceanBase
使用 mysqldump 迁移 MySQL 表 OceanBase 一、什么是mysqldump二、使用mysqldump导出MySQL数据三、将数据导入到OceanBase四、注意 一、什么是mysqldump mysqldump 是 MySQL 数据库管理系统中的一个工具,用于将数据库中的数据导出为文本文件。它可以将整个数据库、…...
谷粒学院--在线教育实战项目【一】
谷粒学院--在线教育实战项目【一】 一、项目概述1.1.项目来源1.2.功能简介1.3.技术架构 二、Mybatis-Plus概述2.1.简介2.2.特性 三、Mybatis-Plus入门3.1.创建数据库3.2.创建 User 表3.3.初始化一个SpringBoot工程3.4.在Pom文件中引入SpringBoot和Mybatis-Plus相关依赖3.5.第一…...
Power Design【数据库设计】
Power Design【数据库设计】 前言版权推荐Power Design【数据库设计】推荐11. PowerDesigner的使用11.1 开始界面11.2 概念数据模型11.3 物理数据模型11.4 概念模型转为物理模型11.5 物理模型转为概念模型11.6 物理模型导出SQL语句补充:sqlyog导入sql文件 最后 前言 2024-3-11…...
Spring Boot中Excel数据导入导出的高效实现
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
采购代购系统独立站,接口采集商品上货
采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目,涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素: 一、系统规划与需求分析 明确业务需求:确定代购系统的核心功能&…...
Redis精讲
redis持久化 RDB方式 Redis Database Backup file (redis数据备份文件), 也被叫做redis数据快照. 简单来说就是把内存中的所有数据记录到磁盘中. 快照文件称为RDB文件, 默认是保存在当前运行目录. [rootcentos-zyw ~]# docker exec -it redis redis-cli 127.0.0.1:6379> sav…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...
6.9本日总结
一、英语 复习默写list11list18,订正07年第3篇阅读 二、数学 学习线代第一讲,写15讲课后题 三、408 学习计组第二章,写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语:复习l默写sit12list17&#…...
vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能
vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能 查看官网:https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...
