Hasty Briefsbeta

双语

Fast sorting networks, branchless by design

3 months ago
  • #computer-science
  • #algorithms
  • #cryptography
  • 排序是计算机科学中的关键问题,性能是大多数应用的核心考量因素。
  • 传统排序算法如快速排序、归并排序和pdqsort容易受到时序侧信道攻击,可能导致敏感数据泄露。
  • 排序网络通过提供固定操作序列来解决这个问题,使其具有数据无关性并能抵抗时序攻击。
  • 冒泡排序是简单排序网络的代表,但对大型数据集效率低下。
  • 奇偶置换排序通过引入并行性改进了冒泡排序,但仍保持O(n²)的时间复杂度。
  • 双调序列和Batcher双调排序提供了更高效的O(n log²n)复杂度方案,使其适用于密码学应用。
  • 由Daniel J. Bernstein开发的djbsort实现了Batcher排序网络,并针对速度、恒定时间执行和形式化验证进行了优化。
  • Zig语言实现的djbsort相比传统排序算法展现出显著性能提升,尤其对原生数值类型和SIMD优化场景。
  • djbsort中的浮点数排序采用巧妙的位操作技术建立全序关系,保持接近整数排序的性能。
  • 尽管排序网络理论复杂度更高,但在实际应用中(尤其是安全敏感场景)可能超越传统排序算法。