简谈 Rust 与国密 TLS - 王江桐OpenSSL 页面 Vulnerabilities 以及 CVE Details,截止 至2023.6.3,统计 2020 – 2023 近四年的 OpenSSL 相关安全漏 洞: • 内存安全问题包括解引用空指针、缓冲区溢出、内存损坏,占总问题 的 43.2%,High 及 Critical 问题的 46.7%。 Low Medium High Critical Total 解引用空指针 • 谷歌: Chromium项目中,70%的安全问题是内存安全问题,非安全的bug根错误也与此相同; 90%的安卓漏洞是内存安全问题; • 苹果:iOS和macOS中60-70%的漏洞是内存安全漏洞; • 总体来说,80%被利用的漏洞是内存安全问题相关的漏洞; • 密码系统问题发现时间长 • 谷歌: Chromium项目中,超过50%的安全问题发现时间超过1年,约25%超过3年; • Rust: Rust: • 内存安全; • 性能与 C 持平。 Rust:解决内存安全问题 Advantages in Programming in Rust Rust China Conf 2022 – 2023, Shanghai, China 类型安全 内存安全 并发安全 静态类型 类型大小 类型推导 强类型 借用检查 智能指针 && RAII 生命周期 所有权系统 Channel0 码力 | 44 页 | 3.70 MB | 1 年前3
Rust 语言学习笔记笔记。这份学习笔记的主要贡献在于涵盖了所有工程上基于 Rust 进行开发需要 掌握的基础知识,并且重新调整了目录结构。 我个人对 Rust 语言设计的看法主要是:重大创新,却又博采众长。 Rust 为了解决内存安全问题重新设计了类型系统,提出了所有权的概念,同时 为了能够解决当前大多数语言无法检测到的运行时错误,rust 创造性地设计了 无畏并发。Rust 借鉴了很多优秀语言的设计理念,以及快速迭代的社区,这些 的问题。这是一个非常典型的内存安全问题。很多编程语言都存在类 似这样的内存安全问题。 再来看变量 c,c 的值是常量字符串,存储于常量区,可能这个函数我们只调用 了一次,我们可能不再想使用这个字符串,但 xyz 只有当整个程序结束后系统 才能回收这片内存,这点让程序员是不是也很无奈? 所以,内存安全和内存管理通常是程序员眼中的两大头疼问题。令人兴奋的是, Rust 却不再让你担心内存安全问题,也不用再操心内存管理的麻烦,那 println!("Got: {}", received); } 例如上述代码编译通过,但是在运行过程中会死锁。而 rust 的编译器无法识别 此类错误。Rust 对安全的理解是死锁不属于内存安全问题。 Rust 在并发上的改进是: 通过改进所有权和类型检查,Rust 很多并发错误都是 编译时 错误,而非运 行时错误。 更强大的编译器和类型检查排除了很多并发问题,但并不能解决所有并发问题。0 码力 | 117 页 | 2.24 MB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究Foundation成立 2020年 2021年 Mozilla裁员Servo团队 AWS, Huawei, Google, Microsoft, Mozilla… Rust如何保障内存安全? ❑ 内存安全问题产生的主要原因之一是指针别名导致悬空指针 ▪ 手动释放内存或调用析构函数 ▪ 函数返回时发生的自动析构或内存释放 ❑ Rust设计的目标之一是编译时检查指针别名(共享可变引用) ▪ 但一般意义上的指针分析是NP-hard问题0 码力 | 28 页 | 1.55 MB | 1 年前3
Rust语言核心竞争力-庄晓立重创全球IT行 业 • ……源于OpenSSL【越界访问内存】 • OS/GLIBC/JAVA/浏览器等频繁爆出重大安全漏洞 • ……多与错误使用内存有关 • 传统C/C++语言放弃解决内存安全问题 • 程序员因疏忽或犯错很容易制造内存安全漏洞 • GC能基本保证内存安全,但牺牲了运行时性能 内存安全? 安全地读写内存 • 在限定时间和空间范围内读写内存 • 防止被他人意外修改或释放0 码力 | 51 页 | 1.09 MB | 1 年前3
Hello 算法 1.1.0 Rust版不难发现,以上介绍的简单哈希算法都比较“脆弱”,远远没有达到哈希算法的设计目标。例如,由于加法和 异或满足交换律,因此加法哈希和异或哈希无法区分内容相同但顺序不同的字符串,这可能会加剧哈希冲突, 并引起一些安全问题。 在实际中,我们通常会用一些标准哈希算法,例如 MD5、SHA‑1、SHA‑2 和 SHA‑3 等。它们可以将任意长 度的输入数据映射到恒定长度的哈希值。 近一个世纪以来,哈希算法处在不断0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版不难发现,以上介绍的简单哈希算法都比较“脆弱”,远远没有达到哈希算法的设计目标。例如,由于加法和 异或满足交换律,因此加法哈希和异或哈希无法区分内容相同但顺序不同的字符串,这可能会加剧哈希冲突, 并引起一些安全问题。 在实际中,我们通常会用一些标准哈希算法,例如 MD5、SHA‑1、SHA‑2 和 SHA‑3 等。它们可以将任意长 度的输入数据映射到恒定长度的哈希值。 近一个世纪以来,哈希算法处在不断0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版不难发现,以上介绍的简单哈希算法都比较“脆弱”,远远没有达到哈希算法的设计目标。例如,由于加法和 异或满足交换律,因此加法哈希和异或哈希无法区分内容相同但顺序不同的字符串,这可能会加剧哈希冲突, 并引起一些安全问题。 在实际中,我们通常会用一些标准哈希算法,例如 MD5、SHA‑1、SHA‑2 和 SHA‑3 等。它们可以将任意长 度的输入数据映射到恒定长度的哈希值。 近一个世纪以来,哈希算法处在不断0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言简体中文版全代码中使用引用,它仍会被检查。unsafe 关键字只是提供了那五个不会被编译器检查内存 安全的功能。你仍然能在不安全块中获得某种程度的安全。 再者,unsafe 不意味着块中的代码就一定是危险的或者必然导致内存安全问题:其意图在于 作为程序员你将会确保 unsafe 块中的代码以有效的方式访问内存。 人是会犯错误的,错误总会发生,不过通过要求这五类操作必须位于标记为 unsafe 的块中, 就能够知道任何与内存安全相关的错误必定位于0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0代码中使用引用,它仍会被检查。unsafe 关键字只是提供了那五个不会被编译器检查内存安 全的功能。你仍然能在不安全块中获得某种程度的安全。 再者,unsafe 不意味着块中的代码就一定是危险的或者必然导致内存安全问题:其意图在于 作为程序员,你将会确保 unsafe 块中的代码以有效的方式访问内存。 人难免出错,错误总会发生,不过通过要求这五类不安全操作必须位于标记为 unsafe 的块中, 就能够知道任何与内存安全相关的错误必定位于0 码力 | 562 页 | 3.23 MB | 28 天前3
共 9 条
- 1













