当前位置: 首页 > news >正文

《互联网的世界》第五讲-信任和安全(第一趴:物理世界的非对称加密装置)

信任和安全的话题过于庞大,涉及很多数学知识,直接涉及 “正事” 反而不利于理解问题的本质,因此需要先讲一个前置作为 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源码 | 理论文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…...

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉库&#xff0c;最初由威尔斯理工学院的Gary Bradski于199…...

web3 DePIN赛道之OORT

文章目录 什么是DePIN什么是oort背景&#xff1a;去中心化云计算场景团队OORT AIOORT StorageOORT Compute 参考 什么是DePIN DePIN是Decentralized Physical Infrastructure Networks的简称,中文意思就是去中心化的网络硬件基础设施,是利用区块链技术和代币奖励来调动分散在世…...

QString 与 字符编码 QTextCodec

为了理解编码&#xff0c;我们要先区分 文件中字符编码 和 程序运行时字符编码 的区别。 文件中字符编码 顾名思义 就是 文字保存在文件中的采用的字符编码方式&#xff0c;可以在IDE中看到程序运行时字符编码&#xff0c;是编译器读取从源文件中读取到字符串后再按要求做的一次…...

【STA】SRAM / DDR SDRAM 接口时序约束学习记录

1. SRAM接口 相比于DDR SDRAM&#xff0c;SRAM接口数据与控制信号共享同一时钟。在用户逻辑&#xff08;这里记作DUA&#xff08;Design Under Analysis&#xff09;&#xff09;将数据写到SRAM中去的写周期中&#xff0c;数据和地址从DUA传送到SRAM中&#xff0c;并都在有效时…...

Git的基础使用

几条铁令&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 切换分支前先提交本地的修改代码及时提交&#xff0c;提交过就不会丢遇到任何问题都不要删除文件目录&#xff0c;第一时间找人请教push前和merge前一定要pull保证代码为最新的&#xff0c;有冲突解决冲…...

贪吃蛇(C语言实现)

贪食蛇&#xff08;也叫贪吃蛇&#xff09;是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能&#xff1a; • 贪吃蛇地图的绘制 • 蛇吃食物的功能&#xff08;上、…...

使用 mysqldump 迁移 MySQL 表 OceanBase

使用 mysqldump 迁移 MySQL 表 OceanBase 一、什么是mysqldump二、使用mysqldump导出MySQL数据三、将数据导入到OceanBase四、注意 一、什么是mysqldump mysqldump 是 MySQL 数据库管理系统中的一个工具&#xff0c;用于将数据库中的数据导出为文本文件。它可以将整个数据库、…...

谷粒学院--在线教育实战项目【一】

谷粒学院--在线教育实战项目【一】 一、项目概述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数据导入导出的高效实现

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

采购代购系统独立站,接口采集商品上货

采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目&#xff0c;涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素&#xff1a; 一、系统规划与需求分析 明确业务需求&#xff1a;确定代购系统的核心功能&…...

Redis精讲

redis持久化 RDB方式 Redis Database Backup file (redis数据备份文件), 也被叫做redis数据快照. 简单来说就是把内存中的所有数据记录到磁盘中. 快照文件称为RDB文件, 默认是保存在当前运行目录. [rootcentos-zyw ~]# docker exec -it redis redis-cli 127.0.0.1:6379> sav…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...