中文

关于更安全的C库ISO/IEC TR 24731的实现

软件工程 2009-07-27 v2 密码学与安全

摘要

作为ISO C 1999标准一部分的函数及其增补,与之前可用的库相比,在安全选项方面改进甚微。最大的缺陷仍然是,对于任何将数据复制到用户提供的缓冲区的函数,都没有要求提供目标缓冲区的缓冲区大小。根据我们之前进行的研究,我们知道错误条件处理是安全漏洞的首要解决方案,其次是前提条件验证。标准的C函数通常很少进行前提条件验证和错误处理,从而导致在其使用中引入广泛的安全问题。ISO/IEC TR 24731,标题为“TR 24731:更安全的C库函数”,定义了41个新的库函数,用于内存复制、字符串处理(包括普通和宽字符串)、时间打印、排序、搜索等。它带来的另一个创新是约束处理架构,当调用函数时违反某些与安全相关的前提条件时,强制进行错误处理。它还规定了通过其函数操作的所有字符串的空终止,并引入了一种新的无符号整数类型,有助于防止整数上溢和下溢。目前,微软在其Visual Studio 2005及更高版本中实现了该标准。我们检查了我们实现的ISO/IEC TR 24731的架构。我们首先介绍我们的架构理念,然后向读者介绍西门子四视图模型,这是一种用于构思大规模软件系统的架构方法论。之后,我们检查了为我们的库架构的每个视图。最后,我们总结了在我们的实现开发中非常重要的其他软件工程问题。

关键词

引用

@article{arxiv.0906.2512,
  title  = {On Implementation of a Safer C Library, ISO/IEC TR 24731},
  author = {Marc-André Laverdière and Serguei A. Mokhov and Djamel Benredjem},
  journal= {arXiv preprint arXiv:0906.2512},
  year   = {2009}
}

备注

33 pages, 6 figures, 16 listings, index; a report document on the open source project. April 2006. v2 adds missing .ind file for the index