腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

OpenSSL 公开项目路线图

  • 2014-07-03
  • 本文字数:1803 字

    阅读完需:约 6 分钟

几个月前,OpenSSL 的“Heartbleed”安全漏洞波及整个互联网,令人怵目惊心。事后,公众开始关注 OpenSSL 项目并给予资金援助。目前 OpenSSL 项目发展迟缓,并且存在很多急需解决的问题。近日,OpenSSL 官方网站公布了 OpenSSL 项目的路线图,旨在通过详细的项目计划来解决目前 OpenSSL 存在的问题。

OpenSSL 是目前移动互联网上应用最广泛的安全传输方法(基于 SSL 即安全套接层协议)。它为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及 SSL 协议,并提供了丰富的应用程序供测试或其它目的使用。

官方首先总结了 OpenSSL 项目目前存在的一些问题:

  1. 未解决的 Bug
    在 RT(Bug 追踪系统)中有很多的 Bug 未得到解决,并且其中一部分已经存在了很多年。另外有小部分 Bug 虽然已经解决,但未更新到系统中。
  2. 不完善 / 错误的文档
    OpenSSL 的文档比较乱,有的部分文档不完整或者有错误,有的部分甚至都没有文档。
  3. 复杂的库
    不管是从维护的角度还是从用户的角度,OpenSSL 库和程序都很复杂。公开的 API 中包含了很多内部功能。之前代码被移植到了很多平台,但是现在很多平台已经不在支持范围之内,所以有些代码是可以简化的。另外对 FIPS 的支持更复杂。复杂的代码不利于维护,并且也不易于定位漏洞代码。目前的内存管理部分代码已经是问题和漏洞的多发地了。
  4. 不一致的编码风格
    过去的几年里有不少的开发者参与了 OpenSSL 项目的开发,这使得 OpenSSL 有多种代码风格,混乱的代码让维护变得更加困难。
  5. 缺少代码审查
    没有也不重视代码审查。
  6. 没有清晰的发布计划
    OpenSSL 的新特性发布毫无规律,并且没有相关计划。用户根本不知道新版本的规划以及什么时候可以使用新的特性、什么时候会结束对某个版本的支持。OpenSSL 团队目前仍维护着很多的发布版本,这也耗费了较多的开发精力。
  7. 没有清晰的平台支持计划
    OpenSSL 支持很多平台,对每一个平台的支持都会对应一个“ifdef”条件语句,这种方式有很多问题:
  • 代码混乱且很难维护
  • 代码依然对一些不被大规模使用的遗留平台提供支持
  • 实际上开发团队并没有处理如此多的平台,代码库的支持和测试仅仅只有几个平台,通常是 Linux, FreeBSD 和 Windows。
  1. 没有安全的发布策略
    发布时没有通知对此感兴趣的组织和安全专家。

OpenSSL 团队已经意识到目前项目存在的问题,接下来将重点解决这些问题。下面是博客中提到的解决方案以及目标:

  1. 处理积压的 Bug
  • 管理所有新提交的 Bug 并及时响应。(现在开始)
  • 减少 RT 中积压的 Bug。(正在进行)
  1. 文档完善
    一年之内为所有公开且未过时的 API 提供完整的文档。可能需要引入一个文档系统,另外需要处理一些公开但未被使用的 API。
  2. 复杂的库
  • 审查并修订公共 API,以降低其复杂度。 (一年之内)
  • 提供一份平台支持计划文档:见下文。(三个月之内)
  • 审查并重构 FIPS 代码,增加其准确性,避免外界因素的影响。(一年之内)
  • 审查和重构内存管理代码。(六个月之内)
  1. 不一致的代码风格
  • 为项目制定一套清晰的编码规范。规范将覆盖代码布局、平台依赖、单元测试和可选代码。(三个月之内)
  • 根据规范重构代码(规范定义后的三个月之内)
  1. 代码审查
  • 所有新提交的代码必须被熟悉相关代码的团队成员审查通过并将审查者提出的问题都解决才能提交。(三个月之内)
  • 引入代码审查系统。(六个月之内)
  1. 审计
    外部人员审计当前代码库。(依据外部人员数量)
  2. 静态 / 动态分析
    使用合适的分析工具定期对代码进行审查。(六个月之内)
  3. 发布策略
    制定一个发布策略,以确定版本的迭代周期,确定某个版本的支持时间以及生命周期。
    在版本发布方面有以下几个目标:
  • 在不引入其他问题的情况下发布安全补丁
  • 如果某个发布版本中出现了 Bug,应该尽快发布修正版本
  • 在 OpenSSL 中加入二进制兼容特性
  • 不希望维护太多分支,这可能意味着 0.9.8 版本的生命期的结束。
  1. 平台战略
  • 确定优先支持的平台:Linux 和 FreeBSD。
  • 列出将会被开发团队支持的二级平台。
  • 平台相关的代码将从主代码库中移除
  • 没有被大规模使用的平台支持代码将被移除
  1. 安全策略
    撰写安全策略文档,包括以下问题:
  • 如何修复安全问题
  • 新版本发布之前向谁以及提供什么样的通知 (两个月之内)

最后,OpenSSL 团队也列出了规划中的一些新特性:

  • IPv6 支持
  • AEAD 更新 (API 审查、Poly/ChaCha 支持、/dev/crypto 操作聚合)
  • 新的加密算法的支持,如 CCM
  • 扩展 SSL_CONF 支持
  • DANE 支持
  • 安全级别
  • OCB
  • FIPS 代码审查和重构
  • 对新兴平台的支持,如 ARMv8、POWER
  • 为两个主要的线程内建 MT 支持,POSIX 线程和 Win32
2014-07-03 01:101267
用户头像
郭蕾 关注我视频号:极客时间小盖

发布了 219 篇内容, 共 126.7 次阅读, 收获喜欢 182 次。

关注

评论

发布
暂无评论
发现更多内容

手撸二叉树之平衡二叉树

HelloWorld杰少

数据结构与算法 8月日更

秒杀系统设计

Vincent

架构训练营

跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架

华为云开发者联盟

AI 仿真 分子动力学 分子 建模

聊聊Go语言中的数组与切片

架构精进之路

8月日更

kafka日志写入logstash

Rubble

Logstash Kafk 8月日更

中国大学 MOOC Android 性能优化:冷启动优化总结

有道技术团队

大前端 安卓 网易有道

oeasy教您玩转vim - 3 - # 打开文件

o

云计算重塑生命科学行业,北鲲云加速生物制药企业转型

北鲲云

大佬分享开发经验!2021年华为Android面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

十大排序算法--归并排序

Ayue、

排序算法 8月日更

Python代码阅读(第3篇):列表的最小公倍数

Felix

Python 编程 Code Programing 阅读代码

架构实战营 毕业设计

👈

架构实战营

为什么将网络虚拟化与实现服务器虚拟化不同?

九河云安全

团队对质量负责,“我”可以不负责?

BY林子

敏捷测试 责任流程模型

沙场秋点兵——MySQL容器化性能测试对比

焱融科技

MySQL 云计算 容器 高性能 分布式存储

架构实战营 学习总结

👈

架构实战营

测试开发之系统篇-按需创建测试虚拟机

禅道项目管理

虚拟机 自动化测试 测试开发

基于香港云服务器的解决方案可以增强金融服务公司在降低成本的同时降低风险

九河云安全

netty系列之:netty架构概述

程序那些事

Java Netty nio 程序那些事

互联网寒冬!大厂Android开发面试解答

欢喜学安卓

android 程序员 面试 移动开发

oeasy教您玩转vim - 2 - # 使用帮助

o

vim

oeasy教您玩转vim - 3 - # 打开文件

o

kubernetes入门:使用kubeadm搭建master,亲测无异常

小鲍侃java

8月日更

Vue进阶(七):走近 package.json

No Silver Bullet

Vue npm 8月日更

手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

Regan Yue

redis Linux windows 8月日更

Zilliz 陈室余:音视频相似性检索的技术实现丨ECUG Meetup 回顾

七牛云

AI 音视频 ECUG 七牛云

怎样评估选型一个企业软件产品?

明道云

Flutter 的 runApp 与三棵树诞生流程源码分析

工匠若水

flutter android 8月日更

Nginx的常用功能总结

程序员阿杜

Java nginx 8月日更

YYDS!浪潮云蝉联中国政务云服务运营市场占有率第一

浪潮云

云计算

OpenSSL公开项目路线图_DevOps_郭蕾_InfoQ精选文章