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

《互联网的世界》第六讲-去中心化和安全

互联网构建于开放互联的中立原则之上,公平接入,数据互联互通,流量被无差别对待,这意味着互联网本质上是匿名,去中心的,这与我们的现实世界完全不同。

但互联网上的主流业务却是 c/s 产销模式,试图在互联网世界复刻现实世界。我们对比开放互联的中立原则和现实世界的本质差异,便能发现互联网安全相关问题的原因和解法。

人们在现实世界的行为分两类,私人行为和公共行为,私人行为需要明确的身份认证,而公共行为则需要为该行为支付成本,无论私密行为还是公共行为,都是曝光的,区别在于仅曝光身份还是曝光在光天化日之下。

朋友聚餐,大家都相互熟识,购买商品,需要为商品付费,进入场馆,需要核验证件或票据,在街上殴打他人,会暴露在众目睽睽之下。在互联网的上层,绝大多数应用模仿了现实世界,比如限制未登录用户的操作,要求对服务付费等,简单将线下服务搬到了线上,就好像用计算器代替算盘。

但在互联网本身,ping 某个域名,telnet 某个 ip:port,可以随时随地零成本发生,这是互联网 ddos 发生的本质原因。

简单设想一个类似互联网的现实世界,每个人都蒙面潜行,被允许进入任何地方,世界会成为什么样子。只要行为不曝光,坏事自然而然就会发生。

看看 ip 报头里有什么,sip,dip 可以随意改变,snat,dnat 还竟然利用此灵活性成立 tcp/ip 基础操作,基于 dip 逐跳转发将状态从传输行为中剥离,这些开放互联的中立原则所要求的结果重在让扩展变得容易,但也是大多数网络安全问题的温床。

安全问题显而易见的方案是模仿现实世界。稍微扩展一下 ip 报头的 checksum 字段,让它不仅对自然误码 robust,也对恶意修改 robust。

当终端接入,注册 ip 被激活,运营商以该 ip 为内容签一个签名返还给终端,终端发送数据时将该签名作为 checksum 置入 ip 报头。只有运营商设备允许对报文做 snat,而运营商拥有私钥可以在修改 sip 后重新签名,而不仅仅是单机计算 checksum。

内容提供商入口设备配置运营商证书链以做辅助验证,只要运营商本身不作恶,此举将消除包括 ddos 在内的大多数恶意访问。

正常时段,任何转发设备无需对运营商签名做任何操作,当流量发生异常,设备启用验证,丢弃并审计所有验签不通过的报文。此举并非将攻击目标转移到转发设备,有人说验签是个耗时操作,这是一种自找的 ddos。但事实上在实际攻击奏效前,抑制甚至溯源工作就已完成,此举将大大减轻流量清洗的压力。

sip 所在的运营商接入网出口设备的验签是可选的,此举进一步加大了 ip 报文伪造的难度,除非从骨干网直接注入伪造报文。运营商有责任对自己客户的行为负责,攻击者首先要过自家的关,这是背后的原理。2022 年,出城要验一次,进入对方地界还要再验一次,出城核验不通过不让出而已,入城核验不通过再抓人。

这意味着,每个 ip 报文都携带了自己的家门信息,曝光于天下,如果恶意攻击者伪造了签名,在攻击端倪出现时,这些报文将成为第一批审计对象。当然,在无事发生时,没人在乎这个签名。

在现实世界,这是常规操作。在机场,车站和码头等枢纽地,随机的抽查身份证会对恶意行为造成威慑,当有事件发生时,几乎在场的每个人都会被查身份证,如果无事发生,人们会忽略查身份证这件事。

堵门,医闹,发诽谤传单,属于现实世界的 ddos,之所以很容易成功,原因就在于身份不曝光,行为零成本,都是一些无所事事的人,还能赚些钱。而丰巢快递柜超时收费策略则是针对另一种 ddos 的反制措施,为了防止驿站恶意将空纸箱长期占据快递柜而无法存在正常物品,丰巢实施超时收费,让攻击者付出成本,攻击也就缓解了。

在这意思上扩展,可把那些使用激进发包算法的 tcp 魔改也列入恶意行为,所有此类算法导致的网络拥塞都可列为 ddos 范畴,而它们在曝光机制下非常容易被审计,比如把操作系统和传输算法和 ip 一起置入 “身份证” 被运营商签名。光天化日之下,信息公开,恶事很难得逞。

然而进一步思考互联网安全的本质,为什么会有这些攻击,无论是 ddos 还是恶意篡改数据,难道不是因为它们能得逞才有这些攻击的么?回到 ip 协议的最初,它本就构建于开放互联的中立原则上,而此原则和我们的现实世界大相径庭,我们非要在 ip 上模拟一个现实世界,难道这不才是很多恶意攻击的根源吗?而我上面提到的 身份曝光 方案,本质上也是在支撑这种开放互联的世界对现实世界的模拟,显然事情搞复杂了。

互联网的世界本就去中心化,它有它自己不同于现实世界的玩法。维基百科,以 linux kernel 为代表的开源社区,区块链技术均透露了去中心玩法的本质。

数据分布式备份在各处,没有任何一个单独主体拥有超过 50% 的控制力,信息全部公开透明,这意味着所有针对单点的攻击都不会起到效果,而又没人可以实施压倒性的控制力,这让任何有效攻击都难以实施。

如何攻击 linux kernel,代码分布在所有社区成员自己的电脑上,通过 git 合作开发,提交几行恶意代码,需要通过所有妹忒呢儿的 review,所有代码的修改都在众目睽睽之下。同样的道理,攻击区块链也很难得逞。去中心化应用本身自带抗攻击属性。

大胆点说,互联网一开始就没考虑安全并不是缺陷,而是构建互联网应用的方式不对。我们现在的互联网应用无异于将一个珠宝店搬到了一个遍地黑衣潜行无身份村民的村落。

一种有趣的社工学拥塞控制的方法,将每个站点的月流量,峰值流量,平峰流量,均差,占比,用户数等信息公示出来并排名,如果出现一个巨无霸流量大户被曝光,它自行优化整改的概率会很大。因为在许诺公平的公开环境,风头过于突出往往会带来内心的焦虑甚至恐惧。去中心化的根基就是曝光,公开。

现实世界的典型去中心化案例,比如宗教社会,恐怖组织。

再次强调,目前构建的大多数互联网应用,几乎在模拟现实世界,这注定它们易于被攻击。即便摘掉曝光性,成本的差别,互联网攻击也比现实世界的攻击要容易很多。因为准光速运作的互联网是一个四两拨千斤的放大器。

这很容易理解。

假设分别来自全国 290 个地级市的 290 个人同时步行出发去往位于深圳的一位经理的家门口堵门,每人在经理家门口堵 1 天,你觉得经理家门口最多会堵多少人,假设是 a,如果步行换成开车,同样的数字是 b,可以想象,a < b,如果每人坐飞机前去,这个数字几乎就是 290。毫无疑问,速度会削弱距离差异。

在互联网世界,排队时间,事务处理时间均在 100ms~1000ms 级别,这个时间大于绝大多数传播时延,有理由认为在世界任何地方同时触发的报文几乎在同一时间到达任何目标,这就是潜在的 ddos 温床。

互联网的各类操作时延之间的占比并没有恰好平滑掉突发,它们并不是同质的。信号以准光速传播,而排队和处理时延则取决于带宽和 cpu 以及事务逻辑的复杂程度。反过来看现实世界,各类操作时延即使不是同质,差异也不大。

某个操作时延变快,而其它操作没有等比例变快,突发造成的拥塞就会严重一些,严重到一定程度,就可算为攻击,我们发现,汽车提高了出行速度,但办事速度没有提升,所以服务大厅排队就会更严重,而互联网定制的导航,旅游,购物等行为,会造成更大程度的拥堵,背后也是这个原理。这是中心化 c/s 模式的内在属性。

下图是一个同样的波动在不同基数下的实际效果,基数足够大,波动效果就足够小:
在这里插入图片描述

皮鞋店一个店员,经理们从步行来买皮鞋,距离差异会给店员足够的时间错开突发,当经理们开车来买皮鞋时,排队就不可避免了,服务质量就会下降。如果是分布式去中心化皮鞋店,经理们自然无需集中到同一个皮鞋店,经理速度的提升可用增加分布站点来平滑。

如果有更多的人为 linux kernel 提派池,可以自动涌现出更多的妹忒呢儿,奉献时间是一个天然的妹忒呢儿度量指标,妹忒呢儿数量永远正比例于贡献者数量,这一切是自然而然发生的。去中心化模式天然避免了时延差异对突发的放大效应。

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

相关文章:

《互联网的世界》第六讲-去中心化和安全

互联网构建于开放互联的中立原则之上&#xff0c;公平接入&#xff0c;数据互联互通&#xff0c;流量被无差别对待&#xff0c;这意味着互联网本质上是匿名&#xff0c;去中心的&#xff0c;这与我们的现实世界完全不同。 但互联网上的主流业务却是 c/s 产销模式&#xff0c;试…...

nginx代理参数proxy_pass

proxy_pass参数用于配置反向代理&#xff0c;指定客户端请求被转发到后端服务器&#xff0c;后端地址可以是域名、ip端口URI 代理后端报错提示本地找不到CSS文件、JavaScript文件或图片 例如&#xff1a; nginx &#xff1a;10.1.74.109 后端服务&#xff1a;http://10.1.74.…...

_note_01

1.什么是跨平台 跨平台是指一个应用程序或一个编程语言&#xff0c;可以在不同的操作系统或平台上运行&#xff0c;而不需要对代码进行修改或重新编译。 跨平台应用程序或编程语言的设计和实现可以使开发者减少对特定平台的依赖&#xff0c;从而降低维护和开发的成本。同时&am…...

聊聊python中面向对象编程思想

面向对象编程思想 1、什么是面向过程 传统的面向过程的编程思想总结起来就八个字——自顶向下&#xff0c;逐步细化&#xff01; → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤&#xff0c;如果某一个步骤的难度较大&#xff…...

MySQL-视图:视图概述、使用视图注意点、视图是否影响基本表

视图 一、视图概述二、使用视图注意点三、视图操作是否影响基本表 一、视图概述 在数据库管理系统中&#xff0c;视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;它并不实际存储数据&#xff0c;而是基于一个或多个实际表的查询结果。视图提供了一种对数据库中数据…...

鸿蒙开发(四)-低代码开发

鸿蒙开发(四)-低代码开发 本文主要介绍下鸿蒙下的低代码开发。 鸿蒙低代码是指在鸿蒙操作系统进行应用开发时&#xff0c;采用简化开发流程和减少编码量的方式来提高开发效率。 1&#xff1a;开启低代码开发 首先我们打开DevEco Studio .然后创建工程。 如图所示&#xff…...

BUU [网鼎杯 2020 半决赛]AliceWebsite

BUU [网鼎杯 2020 半决赛]AliceWebsite 开题&#xff1a; hint附件是源码。在index.php中有一个毫无过滤的本地文件包含 <?php $action (isset($_GET[action]) ? $_GET[action] : home.php); if (file_exists($action)) {include $action; } else {echo "File not…...

超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界

揭秘LLM&#xff1a;语言模型新革命&#xff0c;智能交互的未来趋势 近年来&#xff0c;虚拟助手的世界发生了重大转变。 虽然 Siri 和 Alexa 本身就是革命性的&#xff0c;但一种称为大型语言模型 (LLM) 的新型人工智能正在将虚拟助手的概念提升到一个全新的水平。 在这篇博文…...

Linux删除Mysql

//rpm包安装方式卸载 查包名&#xff1a;rpm -qa|grep -i mysql 删除命令&#xff1a;rpm -e –nodeps 包名//yum安装方式下载 1.查看已安装的mysql 命令&#xff1a;rpm -qa | grep -i mysql 2.卸载mysql 命令&#xff1a;yum remove mysql-community-server-5.6.36-2.el7.x86…...

CNN中常见的池化操作有哪些,作用是什么?

CNN中常见的池化操作有哪些&#xff0c;作用是什么&#xff1f; CNN中常见的池化操作只要是两种&#xff0c;平均值池化和最大值池化最大值池化常用于分类任务&#xff0c;是指在输入数据的局部区域内取最大值作为输出。最大池化的作用是降低特征图的尺寸&#xff0c;减少参数…...

能打印单据的软件,如进出库单据,物流快运单据,定制单据样式

能打印单据的软件&#xff0c;如进出库单据&#xff0c;物流快运单据&#xff0c;定制单据样式 一、前言 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、不同行业打印的单据不同 2、同一个行业打印的样式可能不同 3、有的行业已经印刷好了许多打印…...

uniapp列表进入动画

app列表入场动画 - DCloud 插件市场 列表入场动画https://ext.dcloud.net.cn/plugin?id16957...

FPGA TestBench编写学习

1 timescale 1.1 简介 timescale指令用于指定编译器在处理仿真时的时间单位和时间精度。这个指令通常在模块的顶层声明中使用&#xff0c;它告诉编译器和仿真器如何解释代码中的时间值。 timescale指令的语法如下&#xff1a; timescale <time_unit> <time_precis…...

Centos7 安装mongoDB

下载安装包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz 解压 tar -zxvf mongodb-linux-x86_64-3.2.12.tgz移动到指定位置 mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb在/usr/local/mongodb下创建文件夹 cd /usr/local/mongodb m…...

Redis冲冲冲——Redis持久化方式及其区别

目录 引出Redis持久化方式Redis入门1.Redis是什么&#xff1f;2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证码4.R…...

谷粒商城【成神路】-【10】——缓存

目录 &#x1f9c2;1.引入缓存的优势 &#x1f953;2.哪些数据适合放入缓存 &#x1f32d;3.使用redis作为缓存组件 &#x1f37f;4.redis存在的问题 &#x1f9c8;5.添加本地锁 &#x1f95e;6.添加分布式锁 &#x1f95a;7.整合redisson作为分布式锁 &#x1f697…...

Facebook、亚马逊账号如何养号?

之前我们讨论过很多关于代理器的问题。它们的工作原理是什么?在不同的软件中要使用那些代理服务器?这些代理服务器之间的区别是什么?什么是反检测浏览器等等。 除了这些问题&#xff0c;相信很多人也会关心在使用不同平台的时代理器的选择问题。比如&#xff0c;为什么最好…...

Milvus的相似度指标

官网&#xff1a;https://milvus.io/docs/metric.md版本: v2.3.x 在 Milvus 中&#xff0c;相似度度量用于衡量向量之间的相似度。选择良好的距离度量有助于显着提高分类和聚类性能。下表展示了这些广泛使用的相似性指标如何与各种输入数据形式和 Milvus 索引相匹配。 一、浮…...

如何在unity中实现倒计时

public class showtime : MonoBehaviour {public TextMeshProUGUI Countdown;void Update(){if (Input.GetKeyDown(KeyCode.Space))//如果按下空格后开始倒计时{StartCoroutine(hahaha());}}IEnumerator hahaha()//声明了一个协程函数 hahaha{int time 10;Countdown.text tim…...

蓝桥杯简单题,公司名称

题目链接&#xff08;需要登录&#xff09; #include <iostream> #include <cstring> #include <algorithm> using namespace std; bool lanqiao(string str,int len){ sort(str.begin(),str.end());//对str按照ascii排序if(str.find("Laainoq")s…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

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

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...

React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?

系列回顾&#xff1a; 在上一篇《React核心概念&#xff1a;State是什么&#xff1f;》中&#xff0c;我们学习了如何使用useState让一个组件拥有自己的内部数据&#xff08;State&#xff09;&#xff0c;并通过一个计数器案例&#xff0c;实现了组件的自我更新。这很棒&#…...