Если бы мне пришлось это сделать (и опять же, я бы не хотел оказаться в этой ситуации, во-первых, согласно моему комментарию), я бы использовал внутрипроцессный механизм базы данных с собственной поддержкой шифрования и больших форматировать двоичные данные. Я думаю, что sql compact или sqlite оба подходят для этого.
Я бы не использовал xml, потому что это обычный текст, и двоичные данные можно было легко извлечь, и я бы не просто изменил расширение, потому что файл все еще можно было легко выполнить. Не так уж много карантина.
Обратите внимание, что вариант переименования, вероятно, является наиболее "эффективным" из того, что я видел до сих пор, но при работе с программным обеспечением безопасности правильность всегда должна быть вашей первой заботой об эффективности. Есть моменты, когда вы можете поставить под угрозу правильность производительности (программное обеспечение для рендеринга 3D-игр делает это постоянно, с большим эффектом), но программное обеспечение безопасности не относится к этой категории.
То, что вы можете сделать, это оптимизировать позже. Например, антивирусные движки используют эвристику (эмпирические правила, которые будут придерживаться только большую часть времени), чтобы сделать свое программное обеспечение быстрее, они делают это таким образом, что предпочитают ложные срабатывания, которые затем должны быть более тщательно проверены, а не пропущены угроза. Это работает только потому, что код, который более тщательно проверяет каждый элемент, был сначала написан и проверен в бою.