A system, comprising: a random number generator configured to generate a random number in response to an event; a volatile storage; and control logic configured to: generate hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]) from the random number; for each of a plurality of secure data blocks (BlockO,..., BlockB) to be stored in the volatile storage: set a physical address of a first logical address for that secure data block (BlockO,..., BlockB) within the volatile storage based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); for each of a plurality of data words within that secure data block (BlockO,..., BlockB): set a physical address of a first logical address for that data word based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); characterised in that: for each of a plurality of data bytes within that data word set a physical address of a first logical address for that data byte based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); and set a physical address of a logical address for a first of a plurality of data bits within that data byte based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); and store each data bit, data byte, data word, and secure data block (BlockO,..., BlockB) in the volatile storage according to the set physical addresses therefor. a random number generator configured to generate a random number in response to an event; a volatile storage; and control logic configured to: generate hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]) from the random number; for each of a plurality of secure data blocks (BlockO,..., BlockB) to be stored in the volatile storage: set a physical address of a first logical address for that secure data block (BlockO,..., BlockB) within the volatile storage based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); for each of a plurality of data words within that secure data block (BlockO,..., BlockB): set a physical address of a first logical address for that data word based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); characterised in that: generate hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]) from the random number; for each of a plurality of secure data blocks (BlockO,..., BlockB) to be stored in the volatile storage: set a physical address of a first logical address for that secure data block (BlockO,..., BlockB) within the volatile storage based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); for each of a plurality of data words within that secure data block (BlockO,..., BlockB): set a physical address of a first logical address for that data word based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); characterised in that: set a physical address of a first logical address for that secure data block (BlockO,..., BlockB) within the volatile storage based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); for each of a plurality of data words within that secure data block (BlockO,..., BlockB): set a physical address of a first logical address for that data word based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); characterised in that: set a physical address of a first logical address for that data word based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); characterised in that: for each of a plurality of data bytes within that data word set a physical address of a first logical address for that data byte based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); and set a physical address of a logical address for a first of a plurality of data bits within that data byte based upon the hierarchical part alignment selectors (BLK_RND[b:0], WRD_RND[w:0], BYT_RND[m:0], and BIT_RND[7:0]); and store each data bit, data byte, data word, and secure data block (BlockO,..., BlockB) in the volatile storage according to the set physical addresses therefor.