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

news2024/12/27 0:28:45

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

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

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

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

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

相关文章

ansible基础与基础命令模块

一Ansible 1. ansible 的概念 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、…

Power Apps 学习笔记 -- Action

文章目录 1. Action 简介2. Action 配置3. 待补充 1. Action 简介 Action基础教程 : Action概述 操作Action: 1. 操作Action类似于工作流Workflow&#xff0c;提供一些重用性的操作&#xff0c;允许工作流或其他Web服务端点调用(例如javascript). 2. Action 类似于c#当中的一个…

HTML:注释的 5 种场景和 5 点注意事项

你好&#xff0c;我是云桃桃。 HTML 代码注释是用来在 HTML 源代码中添加一些说明性文字&#xff0c;而不会显示在页面中的内容。它们不会在浏览器中显示或渲染。 现在我们一起来看看它的语法&#xff0c;用途和注意事项吧。 注释语法 HTML 注释的基本语法格式是: <!--…

微信小程序-分包

分包 1.什么是分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 2.分包的好处 对小程序进行分包的好处主要有以下两点&#xff1a; 可以优化小程序首次启动的下载时间…

从焦虑到成功:一个软件测试工程师的逆袭之路

日常大家聊天时经常提及一个关键词——大环境不好&#xff0c;由此带来了很多行为的变化&#xff0c;有的人迷茫&#xff0c;有的人躺平。本文给大家介绍发生在我身上和身边的真实案例&#xff0c;希望能带给你一些输入。 案例一&#xff1a;曾经的我也极度焦虑 我是2008年参加…

java(框架) springboot-1 基础使用+mybaits使用

学习视频&#xff1a;b站黑马java教程 tomcat spring-boot工程内嵌了tomcat服务器 所有请求经过DispatcherServlet(实现servlet接口的类)(核心控制器/前端控制器)处理&#xff0c;再通过DispatcherServlet转发给各个controller。 最后通过DispatcherServlet给浏览器响应数据…

笔记79:ROS入门之前的准备

一、ROS是什么 ROS其实是一个伪操作系统&#xff0c;是基于Liunx操作系统的一个用于机器人各个节点之间通信的系统&#xff1b;ROS制定了一系列规则使得每个节点之间遵循相同的通信规则&#xff0c;使得每个人都可以有一个守则区遵守开发自己的节点&#xff0c;也能和别人开发…

【组合回溯递归】【树层去重used标记】Leetcode 40. 组合总和 II

【组合回溯递归】【树层去重used标记】Leetcode 40. 组合总和 II 解法 组合问题常用解法 树层去重 ---------------&#x1f388;&#x1f388;40. 组合总和 II 题目链接&#x1f388;&#x1f388;------------------- 解法 组合问题常用解法 树层去重 问题描述&#xff1…

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

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

植物病害识别:YOLO水稻病害识别数据集(11000多张,yolo标注)

YOLO水稻病害识别数据集&#xff0c;包含叶斑病&#xff0c;褐斑病&#xff0c;细菌性枯萎病&#xff0c;东格鲁病毒病4个常见病害类别&#xff0c;共11000多张图像&#xff0c;yolo标注完整&#xff0c;可直接训练。 适用于CV项目&#xff0c;毕设&#xff0c;科研&#xff0c…

手机怎么剪辑音频?不可错过的6款音频剪辑好物

随着移动设备的普及和功能的日益强大&#xff0c;越来越多的人开始使用手机来创作和处理音频。无论你是音乐爱好者、播客还是视频制作者&#xff0c;一款优秀的音频剪辑应用都是不可或缺的。今天&#xff0c;就为大家推荐六款不可错过的手机音频剪辑好物。 1. 金舟音频大师 金…

STM32——FreeRTOS移植裸机外部中断不能使用原因

今天要在RTOS配置外部中断&#xff0c;为了省事&#xff0c;直接copy的裸机的外部中断例程&#xff0c;结果不能用&#xff0c;把可能出现的问题全部都查了一遍。 首先FreeRTOS可管理优先级是5~15&#xff0c;这个注意到了&#xff0c;但是还是不行。 是因为少了一个重要的参数…

数据库连接池-Durid连接池

数据库连接池是一个存放数据库连接的缓冲池&#xff0c;它能够管理和重用数据库连接&#xff0c;从而提高数据库访问的性能和效率。数据库连接是一种资源&#xff0c;它的创建和销毁是比较耗时的操作&#xff0c;因此使用连接池可以避免频繁地创建和销毁连接&#xff0c;从而减…

C++ 作业 24/3/11

1、提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff08;要求使用C风格字符串完成&#xff09; #include <iostream>using namespace std;int main() {string str;cout << "please enter str:&…

“离比特币减半还剩40天”!周期论到底是不是“刻舟求剑”?玄学还是现实?

作为周期论标志性重大事件&#xff0c;历史上的比特币减半似乎每每都能在市场上掀起风浪&#xff0c;但有一些人试图拿着放大镜抠细节&#xff0c;找出各种周期论地纰漏来试图打碎“比特币减半周期论”。那么“减半周期论”&#xff0c;到底是不是刻舟求剑&#xff1f; 事实上&…

RK3568驱动指南|第二篇 字符设备基础-第8章 驱动模块编译进内核实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

基于element-plus的Dialog选择控件

翻看之前工程师写的vue2的代码&#xff0c;很多都是复制、粘贴&#xff0c;也真是搞不懂&#xff0c;明明可以写一个控件&#xff0c;不就可以重复使用。很多前端总喜欢element搞一下&#xff0c;ant-design也搞一下&#xff0c;有啥意义&#xff0c;控件也不是自己写的&#x…

嵌入式Qt 标准对话框 - 颜色对话框QColorDialog-输入对话框QInputDialog

一.颜色对话框QColorDialog 颜色对话框使用&#xff1a; //构造颜色对话框对象 并指定父窗口 QColorDialog dlg(this);//设置颜色对话框的相关属性 dlg.setWindowTitle("Color Editor");//设置标题 dlg.setCurrenColor(Qt :: red);// 初始颜色//以模态方式打开颜色对…

自定义sql语句,但复杂的where部分由条件构造器wrapper来完成

我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。 步骤&#xff1a; 实现&#xff1a; Testvoid testCustomSqlUpdate(){//update tb_user set balance balance - #{amount} where id in(?,?,?,?,...)List<Long> ids …

0基础、适合转行学Python吗?

01 对于0基础的人&#xff0c;直接学 Python 编程合适吗&#xff1f; 在目前的编程语言中&#xff0c;Python的抽象程度是最高的&#xff0c;是最接近自然语言的&#xff0c;非常容易上手&#xff0c;Python 可以让你更好的理解编程这件事情。 所以&#xff0c;我只能说非常…