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

信任和安全的话题过于庞大,涉及很多数学知识,直接涉及 “正事” 反而不利于理解问题的本质,因此需要先讲一个前置作为 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,从来不是内置的,从这个视角看,物理世界也一样,出了事再说,规则和法律在不断完善,而不是被设计好。

浙江温州皮鞋湿,下雨进水不会胖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++庖丁解牛】实现string容器的增删查改 | string容器的基本接口使用

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 前言📖pu…

MACBOOK PRO M2 MAX 安装Stable Diffusion及文生图实例

以前偶尔会使用Midjourney生成一些图片,现在使用的头像就是当时花钱在Midjourney上生成的。前段时间从某鱼上拍了一台性价比还不错的macbook,想着不如自己部署Stable Diffusion(以下简称SD)尝试一下。 网上有很多教程&#xff0c…

业务能力技术栈 —— 树立层次思维,专注于本层面的事物

Q:根据目前的物理学,世间万物是由夸克等基本粒子构成的,会有人想从基本粒子推演出万物的运行规律吗?如社会规律,历史规律,即便是考虑了量子力学的概率与不确定性。 肯定有人想,但是目前做不到,不…

ES6语法(七)Promise

1. Promise ECMAscript 6 原生提供了 Promise 对象。Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。 1.1. 说明 1.1.1. 单个异步程序 //检测机构//resolve : 表示成功的状态//reject : 表示失败的状态new Promise((resolve,reject) > {if(处理…

Apache POI 解析和处理Excel

摘要:由于开发需要批量导入Excel中的数据,使用了Apache POI库,记录下使用过程 1. 背景 Java 中操作 Excel 文件的库常用的有Apache POI 和阿里巴巴的 EasyExcel 。Apache POI 是一个功能比较全面的 Java 库,适合处理复杂的 Offi…

机器学习(2_1)经验误差,拟合度,评估方法

前言 大部分概念都会给出解释,如果你有不懂的概念,请你在评论中写出 训练集(Training Set) 用于模型拟合的数据样本。这部分数据集主要用于训练模型,使模型通过学习数据的特征来产生一个可以用于预测的模型。在训练…

来,聊聊前端框架发展史

文章目录 前言一、阶段1. 早期阶段:原生HTML/CSS/JavaScript2. jQuery时代3. MVC/MVVM框架的兴起4. 现代前端框架与工具链4.1. React Webpack Babel4.1.1. 安装依赖4.1.2. 配置Webpack4.1.3. Babel配置4.1.4. React组件和入口文件4.1.5. 运行开发服务器 4.2. Vue.…

qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

qt-C笔记之使用Cmake来组织和构建QWidget工程项目 —— 杭州 2024-03-10 code review! 文章目录 qt-C笔记之使用Cmake来组织和构建QWidget工程项目1.运行2.文件结构3.CMakeLists.txt4.main.cpp5.widget.h6.widget.cpp7.widget.ui 1.运行 2.文件结构 3.CMakeLists.txt 代码 c…

中国联通云联网在多元行业应用中的核心地位与价值体现

在全球化浪潮与数字化转型的时代背景下,中国联通积极响应市场需求,推出以云联网为核心的全球化智能组网解决方案,突破地理限制,为各行业提供高效、安全、灵活的网络服务。该方案不仅涵盖传统的通信连接,更是深入到能源…

day54(reactJS)关于事件处理函数 props方法 合成事件 严格模式 组件声明周期 纯组件以及性能优化以及网络请求

(reactJS)关于事件处理函数this指向的 props与state,setState方法 合成事件与事件对象 严格模式标签 组件声明周期 纯组件以及性能优化以及关于网络请求 1.关于事件处理函数this指向2.关于合成事件与事件对象3.props与state,setSt…

【神经网络与深度学习】深度神经网络(DNN)

概述 深度神经网络(Deep Neural Networks,DNN)是一种由多个隐藏层组成的神经网络模型。每个隐藏层由多个神经元组成,这些神经元通过权重和激活函数进行信息传递和计算。 深度神经网络通过多层的非线性变换,可以学习到…

数据结构---C语言版 408 2019-41题代码版

题目: 2019 年 ( 单链表 ) 41 .( 13 分)设线性表 L ( a 1 , a 2 , a 3 ,…… ,an2, a n 1 , a n ) 采用带头结点的单链表保存,链表中 的结点定义如下: typedef struct node { int data; struc…

Smart PLC模拟量采集和低通滤波器组合应用

SMART PLC模拟量采集功能块"S_ITR"算法公式和详细代码请参考下面文章: 1、模拟量采集功能块"S_ITR" https://rxxw-control.blog.csdn.net/article/details/121347697https://rxxw-control.blog.csdn.net/article/details/1213476972、线性转换…

ARM-v7 程序计数器PC的相关指令与应用

1. 前言 如图1所示,R14是连接寄存器(Link Register),在汇编指令中通常也写为LR,用于存储函数调用和异常等的返回信息,复位时,默认值为0xFFFFFFFF; 图1 Core register R15是程序计数…

vscode 配置 c 语言 问题解决

1.VS code调试时显示Unable to start debugging.The value of miDebuggerPath is invalid。 解决方法: VS code调试时显示Unable to start debugging.The value of miDebuggerPath is invalid_unable to start debugging. the value of midebugger-CSDN博客 2.VSCode运行C终端…

提示词工程技术:类比、后退、动态少样本、自动生成CoT

类比提示 “类比提示”利用类比推理的概念,鼓励模型生成自己的例子和知识,从而实现更灵活和高效的解决问题。 后退提示 “后退提示”专注于抽象,引导模型推导出高级概念和原理,进而提高其推理能力。 使用一个基本的数学问题来…

isdigit 是 Python 中字符串对象的一个方法,用于检查字符串中的所有字符是否都是数字。

如果字符串中的所有字符都是数字,则返回 True,否则返回 False。这个方法只能用于检查整数,并且它只能识别 0-9 的数字字符。 这里有一个使用 isdigit 方法的例子: s "12345" if s.isdigit(): print("字符串只包…

npm下载时下载失败解决方法

1.清楚缓存 npm cache clean --force2.切换下载镜像 1.查看当前使用的镜像地址命令 npm config get registry切换为淘宝镜像命令(安装一些package容易报错) npm config set registry https://registry.npm.taobao.org或官方: npm config…

分类算法(Classification algorithms)

逻辑回归(logical regression): 逻辑回归这个名字听上去好像应该是回归算法的,但其实这个名字只是在历史上取名有点区别,但实际上它是一个完全属于是分类算法的。 我们为什么要学习它呢?在用我们的线性回归时会遇到一…

读书·基于RISC-V和FPGA的嵌入式系统设计·第3章

72.8051单片机的弊端和指令集架构CISC的缺点 76.RV指令集的特征(⭐) 特权架构和特权指令集是相关但不完全相同的概念。 特权架构(Privileged Architecture)指的是计算机体系结构中用于实现特权级操作的硬件和软件机制。特权架构定…