Oblivious Sorting and Queues (1612.03343v1)
Abstract: We present a deterministic oblivious LIFO (Stack), FIFO, double-ended and double-ended priority queue as well as an oblivious mergesort and quicksort algorithm. Our techniques and ideas include concatenating queues end-to-end, size balancing of multiple arrays, several multi-level partitionings of an array. Our queues are the first to enable executions of pop and push operations without any change of the data structure (controlled by a parameter). This enables interesting applications in computing on encrypted data such as hiding confidential expressions. Mergesort becomes practical using our LIFO queue, ie. it improves prior work (STOC '14) by a factor of (more than) 1000 in terms of comparisons for all practically relevant queue sizes. We are the first to present double-ended (priority) and LIFO queues as well as oblivious quicksort which is asymptotically optimal. Aside from theortical analysis, we also provide an empirical evaluation of all queues.