Нужен метод симметричного шифрования для которого было бы справедливо что данные последовательно зашифрованные несколькими ключами, можно было бы расшифровать теми же ключами в произвольном порядке, то есть что-то вроде:
val == encrypt key1 val >>= encrypt key2 >>= encrypt key3 >>= uncrypt key1 >>= uncrypt key3 >>= uncrypt key2