profile picture

Blog

[翻译]Rust中的密码验证,攻击和最佳实践

August 15, 2022 - 13973 words - 70 mins
本文翻译自书Zero To Production In Rust作者的blog章节Rust中的密码验证 机器翻译味道浓厚,如有不妥请麻告知。 本文讲了支付系统中遇到的安全问题,层层深入问题,遇到的业务及安全知识逐步推开,再辅之以代码就单元测试,学起来不会就不会从入门到放弃了。 我再其中学到安全知识如下 密码认证, Basic Auth 密码存储,(本文重点),加密密码及其攻击方式和预防方法 密码网络交换,TLS 认证流程, OAuth 主要用到RustCrypto crate,其中sha3,base64,argon2 以下正文开始 本文是Rust中从零到生产的示例,一本关于Rust后端开… read more

Forest的daemon、cli流程和钱包结构

July 05, 2022 - 905 words - 5 mins
去年了解过Filecoin,对其Go版的实现lotus运行和分析过,源于对IPFS的兴趣。 今年学习零知识证明时,简单过了下ref_fvm,同时分析Filecoin的Rust版forest时,提交2个小PR,都是关于wallet的。顺带记录了些学习笔记如下。 forest的目的很明确,为了充分验证lotus对spec实现的完整性和缺陷,可能是21年的那场"双花"问题 简单来说,就是人们对链的检查方式,这会呈现出消息被处理了两次的样子,进而产生了误解。 具体来说,就是部分数字资产平台使用了一种错误的处理链状态的方式——在tipset的每个块上调用ChainGetBlockM… read more

IPFS与web2.0的简单比较

June 18, 2022 - 2898 words - 15 mins
对IPFS技术的好奇,源于2点 已有经验,原来做视频会议时有p2p的通话,多人会议就是多p2多p(基于WebRTC的SFU)。 web3.0的好奇,通过IPFS检验订正下自己设计一套网络系统的能力 历史成因 2008年中本聪对英国政府增发货币不满,认为国家不发币也可以规避通货膨胀带来的恶果,就开发了比特币 2010年Vitalik对暴雪擅自削弱魔兽世界里术士的魔法,担心中心化服务的问题,2013年开发了以太坊 2014年以太坊的Gavin Wood提出web3.0(去中心化、互通增强、所有权) 2014年开始由Juan Benet设计IPFS,后由Protocol Labs在开源社区的帮… read more

CWPP中Audit的升级换代

May 09, 2022 - 1359 words - 7 mins
技术背景是CWPP(Cloud Workload Protection Platforms)云工作负载保护平台,通常基于代理在计算机中永久运行,收集与安全相关的数据和事件,并将其发送到基于云服务分析后通知用户相应的潜在安全威胁。 其中的一个子系统audit,是一个用于收集记录系统、内核、用户进程发生的行为事件的被动防御的安全审计系统。该系统可以可靠地收集有关上任何与安全相关事件的信息,如记录文件访问、网络访问、用户指令、系统调用和系统安全事件。 随着时间的推移,内核的发展,其存在问题日显突出 性能开销大:开启服务的支付卡安全标准,系统吞吐率下降30%,系统调用开销下降50%,上下文切换下降1… read more

终端资产的全面发现管理

April 13, 2022 - 1272 words - 7 mins
终端资产的全面清理发现和管理是精细化管理也是安全办公生产的前提, 困难之处在于设备类型复杂(固定、移动、网络设备、摄像头、打印机等), 人员角色多变赋予设备自身权限及可见度变化, 最后长时间使用,设备和人员的更替,再时间上追溯困难。 问题重点表现在 主流资产发现及管理系统,使用的技术,主动扫描和被动流量发现各自都有缺陷 主动扫描发现不了未开机和休眠资产设备 被动流量分析发现不了数据未经过核心交换机的设备(因为被动流量分析的服务设备接在核心交换机上,见下图) 被动流量分析发现不了分析前接入的设备 设备资产间的在时间上的关系无法确定,也就不能评估出安全风险 常用技术名词概念 终端资产:用户单… read more

基于Rust和BPF技术的网络TCP水印

March 23, 2022 - 2372 words - 12 mins
网络水印用于防DDoS攻击和网络流量等安全领域,原理是给报文增加特征信息,基于TCP options的增加字段不会被防火墙等修改去除,本文正是使用BPF和Rust来达到高效的实现的具体描述。1 源码参见[] 保护知识产权的图片水印不在此列 BPF驱动使用c开发 用户态的配置和加载器使用rust和libbpf-rs加速开发 依赖封装关系 基于libbpf-rs开发, libbpf-rs提供用于开发的API抽象,包括驱动object和其静态程序、通讯、挂载上程序的资源抽象 同时libbpf-sys封装了unsafe的libbpf和libelf、zlib,其中核心是基于内核的一部分libbpf… read more

HTTPS下强制认证

January 10, 2022 - 1912 words - 10 mins
网络安全准入对终端设备最开始和直接的就是强制其认证合法性。 原有基于HTTP重定向认证已失效,因为HTTP不安全。且浏览器都强制HSTS技术只能HTTPS。 怎么在HTTPS下还能重定向来认证? 住宿酒店和搭乘飞机时会对我们有所启发。接入提供的免费WIFI后会重定向。 结论就是诱使OS发出HTTP。 技术背景 网络准入产品可以验证终端设备是否安全,使用强制网络门户认证技术实现此验证 强制网络门户认证(captive portal),终端入网后,强制弹出浏览器的认证页面,强制用户认证后使用网络 HSTS(HTTP Strict Transport Security), 防止MiTM中间人攻击,… read more

开发minidhcp的感受记录

December 03, 2021 - 861 words - 5 mins
开发minidhcp的感受记录 开发此服务目的是为网络流量分析和控制提供一种支持手段。具体方法是增加基于角色分配IP段的dhcp,并记录分配的设备的信息。 为了快速验证,在github上找到了coredhcp,去掉了dhcp6及其繁冗的插件系统,优化重构了网络收发部分代码,重写了option的分配,加入了基于角色分配IP的功能,角色策略通过配置文件生效。1 dhcp协议流程 2 DHCP lease 生命周期 流程类似打工人租房,先电线杆子广播需求,收到房源电话后签合约,住到期后再续租。 在DHCP协议里描述的更严谨,用编程语言描述就是会有多个if else。 在计算机网络里会是一来一回的消息… read more

BPF技术介绍 - 生态和历史

November 17, 2021 - 2372 words - 12 mins
BPF技术介绍 - 生态和历史 本文图片都源于网上公开资料,未注明来源。内容源于对网络检测与响应NDR的开发。 历史成因 图1:Linux内核的代码量增长 DPDK、PF_RING和BPF的共同点 分离出网络的数据平面 网络功能扩展的代价是牺牲性能 都在突破内核复杂度的限制 -kernel bypass 从内核中分离出数据平面 向上交给用户态开发 -DPDK、PF_RING和BPF 向下卸载到网卡执行 -BPF的XDP DPDK、PF_RING和BPF的差异点:生态目标不同 DPDK DPDK 独立的平台 独占内核网络栈 专用的SDK API 生态面向硬件 应用隔离和安全机制失效 … read more