技术的极限(8): 集成与分离
上一篇:技术的极限(7): 处理复杂与分层
下一篇:技术的极限(9): 看见数学
目录:
** 0x01 调试神器:Windows支持DTrace
** 0x02 互联网GCC合约 | Tim Berners-Lee: Stop web's downward plunge to dysfunctional future
** 0x03 过期删除,点对点,加密文件共享 | send.firefox.com
** 0x04 伯克利技术报告 | A Berkeley View ...
** 0x05 通用漏洞披露 | CVE (Common Vulnerabilities and Exposures)
** 0x06 UUID简史
** 0x07 边缘计算 | Edge computing
** 0x08 编程语言的代码仓库 | Central Package Repository
** 0x09 编程调试利器| Hacker Tools
** 0x10 人物:Ada Lovelace
0x01 调试神器:Windows支持DTrace
原文:
[1] DTrace-on-Windows
[2] github:opendtrace
[3] github:opendtrace4windows
OpenDTrace从2016年开始致力于把dtrace工具移植到各种操作系统上([2])。微软的工程师在OpenDtrace的基础上,创建了一个分支([3]),给Windows系统提供了官方dtrace支持,并提供了一些独家特性([1]).
- 下载安装:microsoft:dtrace.msi
- 创建符号缓存目录:
mkdir c:\symbols
- 添加环境变量到
PATH
:C:\Program Files\DTrace
- 添加环境变量到
_NT_SYMBOL_PATH
:
srv*C:\symbols*http://msdl.microsoft.com/download/symbols
用例:
# Syscall summary by program for 5 seconds:
dtrace -Fn "tick-5sec { exit(0);} syscall:::entry{ @num[pid,execname] = count();} "
# Summarize timer set/cancel program for 3 seconds:
dtrace -Fn "tick-3sec { exit(0);} syscall::Nt*Timer*:entry { @[probefunc, execname, pid] = count();}"
# Dump System Process kernel structure: (requires symbol path to be set)
dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit(0);}"
# Tracing paths through NTFS when running notepad.exe (requires KD attach): Run below command and launch notepad.exe
dtrace -Fn "fbt:ntfs::/execname==\"notepad.exe\"/{}"
# List all the probes and their parameters available from the syscall provider.
dtrace -lvn syscall:::
Windows专有指令:
- syscall – NTOS system calls
- fbt (Function Boundary Tracing) – Kernel function entry and returns
- pid – User-mode process tracing. Like kernel-mode FBT, but also allowing the instrumentation of arbitrary function offsets.
- etw (Event Tracing for Windows) – Allows probes to be defined for ETW This provider helps to leverage existing operating system instrumentation in DTrace.
0x02 互联网GCC合约 | Tim Berners-Lee: Stop web's downward plunge to dysfunctional future
原文:
[1] bbc:Stop web's downward plunge to dysfunctional future
[2] On web’s 30th birthday, its inventor says we need to stop its ‘downward plunge’
互联网30周年,蒂姆·伯纳斯-李认为:
I think it’s been a force for good for the first 15 [years], and right now it’s really in the balance. I’m very concerned about nastiness and misinformation spreading. I think with a mid-course correction, the ‘contract for the web’ is about: let’s all stop this downward plunge to a dysfunctional future.
其中,contract for the web目标应该是“establish clear norms, laws and standards that underpin the web”,具体来说,Governments/Companies/Citizens三方应该个有职责。我认为有点意思的是,根据头字母,可以简写为“互联网GCC合约”。
- Governments Will:
- Ensure everyone can connect to the internet so that anyone, no matter who they are or where they live, can participate actively online. 保证每个人都可以连接网络,无论Ta是谁,在哪里生活,都可以联网。
- Keep all of the internet available, all of the time so that no one is denied their right to full internet access. 保持所有时段互联网可用,使得没有人被拒绝了访问互联网的权利。
- Respect people’s fundamental right to privacy so everyone can use the internet freely, safely and without fear. 尊重人们基本的隐私权利,使得每个人都能自由、安全地使用互联网而不害怕。
- Companies Will:
- Make the internet affordable and accessible to everyone so that no one is excluded from using and shaping the web. 让互联网对任何人可访问以及可支付的起,使得没人被排除在使用并塑造网络之外。
- Respect consumers’ privacy and personal data so people are in control of their lives online. 尊重用户的隐私和个人数据,让人们控制自己的线上生活。
- Develop technologies that support the best in humanity and challenge the worst so the web really is a public good that puts people first. 开发最好的技术以支持人性并挑战最糟糕的情况,使得网络真正开放友好、以人为本。
- Citizens Will:
- Be creators and collaborators on the web so the web has rich and relevant content for everyone. 成为网络上的创造者和协作者,使得网络为所有人提供丰富而互相关联的内容。
- Build strong communities that respect civil discourse and human dignity so that everyone feels safe and welcome online. 构建尊重公民言论和人类尊严的强大社区,使得每个人在网络上都感觉安全和受欢迎。
- Fight for the web so the web remains open and a global public resource for people everywhere, now and in the future. 为保持网络开放、成为全球人民的公共资源而战,无论现在还是未来。
0x03 过期删除,点对点,加密文件共享 | send.firefox.com
原文:
[1] Introducing Firefox Send, Providing Free File Transfers while Keeping your Personal Information Private
[2] send.firefox.com
[3] Private by Design
如果你要给你的家人或者朋友发一个私密的文件,你可能会使用下面这些工具:
- 发邮箱
- 通过手机短信
- 通过QQ/微信等IM工具
但是邮箱/短信/IM都存在这些问题
- 会持久存储这些文件,即使用户选择删除,你也不能确定邮箱服务器上是否真删除了
- 这些文件可能没有被加密传输,也没有加密存储
- 即使做了加密传输,IM也可能在服务端也保留了一份该文件的副本
- 这些传输不是直接在用户终端之间点对点传输
从密码学的角度来说,这些文件的安全传输应该满足:
- 直接在用户终端之间点对点传输
- 文件传输应该有密码保护,做加密传输
- 文件应该有明确的有效期,有效期过后被确定性的删除
- 便利,用户可不需要账号就能使用,并获得同等安全保证
以上这些,就是send.firefox.com提供的能力,用户只需
- 上传文件,设置可以下载几次,设置过期时间,设置密码保护
- 发密码和链接给你的朋友,朋友通过密码在有效期内下载
- 支持1G的大文件
只要你设置的次数很少,例如只能下载一次,在10分钟内有效,需要密码保护,那么你把密码和链接通过其他IM发给你的朋友,就可以获得明确的私密文件传输安全。当然,这里的发送密码和链接给朋友,还是通过IM来发,理论上存在也存在被中间人攻击的可能。但是和直接通过IM来发在安全上的优点是:
- Mozilla Firefox的信誉值得信赖
- 确定性的过期时间
- 确定性的点对点传输
- 支持最多1G的大文件
特别地,Mozilla 是非营利性的开源公司,在整个产品线上贯彻了Private by Design 策略。
0x04 伯克利技术报告 | A Berkeley View ...
原文:
[1] Berkeley TechRpts
[2] Berkeley Blogs
伯克利几个比较出名的报告,伯克利的博客站点上还有按年份列出了每年的各种技术文档/报告,并提供站内搜索,是一个重要的技术报告文档库:
- 2009,云计算:Above the Clouds: A Berkeley View of Cloud Computing
- 2017,人工智能:A Berkeley View of Systems Challenges for AI
- 2019,无服务开发:Cloud Programming Simplified: A Berkeley View on Serverless Computing
0x05 通用漏洞披露 | CVE (Common Vulnerabilities and Exposures)
原文:
[1] wiki:CVE_zh_cn
[2] wiki: CVE_en
[3] baike: CVE
[4] CVE查询站点
经常在安全和漏洞事件发生的新闻稿里会看到CVE编号,但是CVE编号具体是指什么呢?也许你从来没有注意到这点。
通用漏洞披露(英语:CVE, Common Vulnerabilities and Exposures)又称常见弱点与漏洞,是一个与资讯安全有关的数据库,收集各种资安弱点及漏洞并给予编号以便于公众查阅。此数据库现由美国非营利组织MITRE所属的National Cybersecurity FFRDC所营运维护。
每一个通用漏洞披露都赋予一个专属的编号,格式如下:
CVE-YYYY-NNNN
CVE为固定的前缀字,YYYY为西元纪年,NNNN为流水编号(原则上为四位数字,但必要时可编到五位数或更多位数)。例如于2014年发现的心脏出血漏洞编号为CVE-2014-0160。
对一类有公共属性的事物进行公共编号,并提供公共的查询站点,是十分有利的。例如出现公共漏洞时,不同的安全公司和安全工具可能对同一个漏洞的名称和描述都不同,提供公共的CVE编号则可以让该过程标准化,不同的安全公司和工具也会提供对公共CVE数据集的兼容和支持。
0x06 UUID简史
原文:A brief history of the UUID
0x07 边缘计算 | Edge computing
原文1:wiki: 边缘计算
原文2: wiki: Edge computing
边缘运算(英语:Edge computing),又译为边缘计算,是一种分散式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理[1]。边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端装置,可以加快资料的处理与传送速度,减少延迟。在这种架构下,资料的分析与知识的产生,更接近于数据资料的来源,因此更适合处理大数据。
微软的浏览器叫Edge Browser,这名字起的真不好,越来越边缘,现在连内核都用Chromium了。开玩笑,也许“边缘浏览器”还真是个不错的点子呢:D
国内的云存储厂商和CDN厂商等拥有靠近用户存储设备的厂商,更倾向于使用边缘计算这个名词来表达自己的计算概念,例如七牛云/网宿等。边缘计算,给我们的一个角度是,“XX计算”这个词,实际上代表了程序在哪里执行,例如“云计算”说明程序在云上执行,“P2P计算”说明程序在客户端和客户端之间执行和通信,“边缘计算”则代表了程序在靠近用户的机房设备上执行,可以在这些地方计算的原因,首先还是数据在这些地方存储,可以说哪里有数据,哪里就有计算。
0x08 编程语言的代码仓库 | Central Package Repository
原文:Does every programming language have a central package repository
不是所有语言都有中心代码仓库,下图是这些语言的中心代码仓库分布图。其中JavaScript(NodeJS, NPM),Java(Maven),CSharp(NuGet),三个语言可以看到它们的中心代码仓库上的包是比较多的。这图里没有C/C++,事实上微软提供的vcpkg包管理器很不错,并且已经跨平台。
编程语言自带官方代码仓库的做法是一种不错的选择,实际上在Serverless编程中,Serverless平台是需要设计其自己的代码仓库,从这个角度来说,如果编程语言从设计的时候就为通用Serverless编程设计性能优良的代码仓库基础组件,不失为一种优势。
0x09 编程调试利器| Hacker Tools
比较全面的工具库资源:
As hackers, we spend a lot of time on our computers, so it makes sense to make that experience as fluid and frictionless as possible. In this class, we’ll help you learn how to make the most of tools that productive programmers use.
- Course overview
- Virtual machines and containers
- Shell and scripting
- Command-line environment
- Data wrangling
- Editors
- Version control
- Dotfiles
- Backups
- Automation
- Machine introspection
- Program introspection
- Package/dependency management
- OS customization
- Remote machines
- Web and browsers
- Security and privacy
0x10 人物:Ada Lovelace
原文:
[1] wiki: Ada Lovelace
[2] wiki: Ada Lovelace, zh-cn
许多人提起程序员鼻祖的时候,会提到Ada是诗人拜伦的女儿。其实看维基百科上的介绍,在Ada小的时候,Ada的父母就婚姻关系破裂,Ada的才华主要是受她母亲的教育和影响,Ada的母亲是温特沃斯女爵安妮·伊莎贝拉·米尔班奇(安娜贝拉),致力栽培Ada的数学逻辑兴趣。Ada从小认识很多有名的科学家,还接受过英国数学家和逻辑学家奥古斯都·德·摩根的教导。
Ada最出名的成就是:
在1842年与1843年期间,埃达花了9个月的时间翻译意大利数学家路易吉·米那比亚讲述查尔斯·巴贝奇计算机分析机的论文。在译文后面,她增加了许多注记,详细说明用该机器计算伯努利数的方法,被认为是世界上第一个计算机程序;因此,埃达也被认为是世界上第一位程序员。
--end--