A method (700) for obliviously moving N data blocks (102) stored in memory hardware (114) includes organizing memory locations (118) of the memory hardware into substantially formula (I) data buckets (350) each containing formula (I) data blocks, and allocating substantially formula (I) buffer buckets (360) associated with new memory locations in the memory hardware. Each buffer bucket is associated with a corresponding cache slot (370) allocated at the client (104) for storing cached permutated data blocks. The method further includes iteratively providing the substantially formula (I) data blocks to the client. The client is configured to apply a random permutation on the substantially formula (I) data blocks within each corresponding received data bucket to generate permutated data blocks and determine a corresponding buffer bucket and a corresponding cache slot for each permutated data block.
展开▼