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

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

但互联网上的主流业务却是 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 提派池,可以自动涌现出更多的妹忒呢儿,奉献时间是一个天然的妹忒呢儿度量指标,妹忒呢儿数量永远正比例于贡献者数量,这一切是自然而然发生的。去中心化模式天然避免了时延差异对突发的放大效应。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【教程】APP备案全攻略:确保你的应用合规上线

【教程】APP备案全攻略&#xff1a;确保你的应用合规上线 摘要 本文详细介绍了中国大陆地区互联网信息服务提供者&#xff08;AP&#xff09;进行APP备案的流程、要求和注意事项。包括备案对象、备案方式、备案内容、备案流程等方面的详细说明&#xff0c;帮助开发者顺利完成…

sensitive-word 敏感词 违规文字检测

1、快速开始 - JDK1.7- Maven 3.x 2、Maven 引入 <!-- https://mvnrepository.com/artifact/com.github.houbb/sensitive-word --><dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version…

基于PLC除尘设备控制系统的设计

摘要 工业作为我国第二支柱产业&#xff0c;在近十几年来发展非常迅速&#xff0c;虽然带了了可观的经济效益&#xff0c;但在工业生产中所产生的大量粉尘气体对大气的污染现象也不容忽视。为减少工业粉尘对环境的污染&#xff0c;世界各国制定了严格的环境保护要求。为了减少…

金山办公内推

作为金山办公刚刚校招等待入职的一员&#xff0c;我诚挚地邀请您加入我的内推计划&#xff0c;与我一起共同打造卓越的工作环境和未来。 我能帮你 &#xff08;与直接填我的内推码不同&#xff0c;我直接通过内部问卷帮你投&#xff09; 1&#xff0c;直接通过校招群里的连接…

异步编程和asyncio

介绍异步编程的重要性和在Python中的应用&#xff0c;特别是在I/O密集型任务和网络编程场景下。 目录 理解异步编程 异步编程基本概念 任务与Future 异步编程的工作原理 事件循环 协程&#xff08;Coroutines&#xff09; 异步与同步代码的结合 深入asyncio模块 事件循…

数据库查询操作

数据库查询操作 数据准备查询的基本操作查询部分字段的值取别名去重 条件查询比较运算符逻辑运算符模糊查询范围查询为空判断 排序分组聚合count(*) : 求表的总的记录数max(字段名): 查询对应字段的最大的值min(字段名): 查询对应字段的最小的值sum(字段名): 查询对应字段的值的…

宝塔 Let‘s Encrypt 该帐户1小时内失败的订单次数超过5次,解决办法

今日用宝塔申请SSL证书时候提示失败&#xff1a;内容如下 {x} 我信了&#xff0c;当我等了一个小时&#xff0c;再次申请时候依然是同样的错误 {x} 我信了&#xff0c;当我等了一天&#xff0c;再次申请时候依然是同样的错误 不等了 当遇到这种情况该怎么办呢&#xff1f;这时候…

@RequestBody

目录 概述 深入细节 案例 RequestBody与前端传过来的json数据的匹配规则 指定模型中的属性对应什么key 用Valid校验RequestBody的参数 根据RequestBody的内容来区分使用哪个资源 概述 RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)而最常…

【中级软件设计师】上午题02-程序设计语言

上午题02-程序设计语言 1 编译程序和解释程序2 程序设计语言基本成分3 传值调用与传引用调用4 编译器的工作阶段4.1 编译方式和解释方式4.2 符号表4.3 词法、语法、语义分析与目标代码生成4.4 程序异常和错误4.5 中间代码 5 正规式 1 编译程序和解释程序 解释器&#xff1a; 翻…

LeetCode - 寻找数组的中心

先学习一下前缀和吧 LCR 012.寻找数组的中心LCR 012. 代码解析 在读题读到左侧元素之和等于右侧所有元素之和的时候&#xff0c;我觉得可以用前缀和&#xff0c;然后结合下面的示例&#xff0c;模拟了一下发现确实可以。 我的想法是搞两个数组&#xff0c;一个来存从左到右数…

Halcon测量专栏-圆弧测量

1.前言 1.1什么是圆弧 圆上任意两点间的部分叫做圆弧。由于圆弧有正反的特性&#xff0c;即为有顺时针方向和逆时针方向&#xff0c;在确定圆弧时&#xff0c;也需要确定圆弧的方向。 1.2halcon实现方式 针对圆弧的问题。1&#xff1a;它与圆是相似的&#xff0c;都具备中心…

视频监控汇聚管理系统EasyCVR平台RTMP推流异常是什么原因?

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff08;专网、内网、局域网、广域网、公网等&#xff09;&#xff0c;支持设备通过4G、5G、WIFI、有线等方式接入&#xff0c;并将设备进行统一集中接入与视频汇聚管理&#xff0c;经平台接入的视频流能实现多…

王道机试C++第 5 章 数据结构二:队列queue和21年蓝桥杯省赛选择题Day32

目录 5.2 队列 1&#xff0e;STL-queue 课上演示&#xff1a; 基本代码展示&#xff1a; 2. 队列的应用 例:约瑟夫问题 No. 2 题目描述&#xff1a; 思路提示&#xff1a; 代码展示&#xff1a; 例&#xff1a;猫狗收容所 题目描述&#xff1a; 代码表示&#xff1…

安防视频监控汇聚平台EasyCVR使用RTMP推流出现异常的原因排查与解决

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff08;专网、内网、局域网、广域网、公网等&#xff09;&#xff0c;支持设备通过4G、5G、WIFI、有线等方式接入&#xff0c;并将设备进行统一集中接入与视频汇聚管理&#xff0c;经平台接入的视频流能实现多…

大数据开发 hadoop集群 2.hadoop框架入门

自从我学会了寻找&#xff0c;我就已经找到 ——史铁生 —— 24.3.10 内容简介 Hadoop入门&#xff1a; ①概念 ②环境准备 ③hadoop生产集群搭建 ④常见错误的解决方案 ①概念&#xff1a;1.Hadoop是什么 2.Hadoop发展历史 3.Hadoop…

【Linux】线程封装_互斥

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;线程封装Thread.cpp &#x1f449;&am…

骨传导耳机哪个牌子好?五大热门品质机型盘点,体验超赞!

在蓝牙耳机中&#xff0c;骨传导耳机凭借不入耳佩戴更健康等优点&#xff0c;迅速成为当下的热门款式&#xff0c;但随着骨传导耳机市场的品牌日渐增多&#xff0c;以及市场上不专业的骨传导耳机泛滥成灾的问题&#xff0c;有很多消费者在选择骨传导耳机的时候&#xff0c;都出…

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b; Q x&#xff0c;询问整数 x是否在集合中出现过&#xff1b; 现在要进行 N次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…

代码随想录 贪心算法-中等题目-序列问题

376.摆动序列 376. 摆动序列 中等 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7…

spring boot 访问 static public 目录下的静态资源报404解决办法

1.前提是你没有修改spring boot 默认拦截路径&#xff0c;跟默认访问资源的目录。 在idea 设置中 把 compiler 下的 Buid project automatically 勾选上