2013-09-23 4 views
-1

Скажем, на секунду, что я хотел реализовать одноразовый блокнот. Предположим, что у меня есть защищенный генератор случайных чисел, и я создал одноразовый блок со случайными числами. Скажем, я хочу сохранить это на USB-накопителе или на каком-то месте в моей файловой системе.Как полностью стереть данные?

Теперь у меня есть сценарий или программа, которые могут принимать сообщение и шифровать или расшифровывать сообщение, используя один временной пробел. После того, как это было сделано, я хочу программно уничтожить одно время.

Что вы хотите сделать? Я знаю, что просто удалить файлы недостаточно, поскольку данные все еще находятся на диске. Достаточно ли перезаписать одноразовый блок с 0 или каким-то другим днем. Это сделает его действительно безвозвратным.

Также пэд нужно будет прочитать в ОЗУ и на какой-то стадии сделать модульную арифметику. Какова наилучшая практика, чтобы убедиться, что ОЗУ также не может быть восстановлена?

Может ли одноразовая панель действительно быть реализована в программном обеспечении. Какие еще факторы я теряю, думая о том, как реализовать одноразовый блокнот?

+0

Самая большая проблема не равна нулю начинка. Скорее, он следит за тем, чтобы обе стороны синхронизировали свои клавиши даже в случае сбоя, потери связи и т. Д. –

+0

Как правило, лучше всего объяснить нижний предел, чтобы можно было уточнить вопрос. –

ответ

3

Я не эксперт. Вот мои мысли.

Одноразовая прокладка между двумя сторонами требует, чтобы обе стороны использовали одну и ту же площадку. Для каждого сообщения, обмениваемого между сторонами, каждая сторона удалит одну «страницу» с пэда. В случае программного обеспечения «страница» является ключом шифрования. Поскольку ошибки могут произойти вам нужно несколько вещей, чтобы сделать его работу:

  1. Вам нужен способ, чтобы стороны синхронизировать которые «страница» они идут. Обычно во время обмена сообщениями обе стороны просто знают, какую страницу использовать (текущую страницу), , но если они не синхронизированы, им нужно решить, какую страницу использовать.

  2. Когда заканчивается блок, стороны должны решить, что пришло время использовать следующий пэд. Очень понравился номер страницы, им просто нужен способ сигнала «использовать новую панель».

  3. Похоже, что сторонам понадобится способ определить, что они используют одну и ту же площадку. Возможно, вам нужен способ сделать это, не сжигая страницы в пэде; это кажется правильным, , но может не потребоваться.

  4. Удаление пусковой площадки (или страницы в пэде) является сложным. Вам нужно будет ознакомиться с классикой «как стереть диск, такой как nsa can not recover it». Я думаю, что это связано с неоднократным написанием разного мусора в тех же секторах на диске.

  5. Помните, что никогда не используйте одну и ту же страницу «дважды». Страница для запроса отличается от страницы для ответа на запрос.

+0

На самом деле, я думаю, что точка 4 является той, которую меня больше всего интересует. В сущности, мне нужно найти информацию о самых современных и безопасных способах удаления пэда. – KennyBartMan

+1

Рекомендации по удалению нескольких проходов основаны на очень старых исследованиях. В настоящее время диски намного плотнее, а электронные микроскопы уже недостаточно чувствительны для восстановления перезаписанных данных.Информацию о высоком уровне охвата темы см. На странице https://www.anti-forensics.com/disk-wiping-one-pass-is-enough/ Это, как говорится, по нетехническим причинам. Может быть полезно иметь возможность сказать, что вы используете многопроходное удаление, чтобы люди чувствовали себя лучше. – Aurand

0

RAM

Физический путь

Выключение ПК сотрет его после небольшого периода времени. ОЗУ будет подозреваться в cold boot attack в течение нескольких секунд/минут, но тогда данные будут физически исчезнуть.

записать программное путь

/*C code*/ 

//Ask OS for some ram, the size of our data. 
char * SensitiveData = malloc(myDataSize); 

//Copy data from hard drive to the ram memory we 
//...just allocated. Implement this function your own way. 
load_key_from_hardrive(SensitiveData); 

/*Use key here*/ 

//Now let's overwrite the key: 
for (i=0;i<myDataSize;i++) 
{ 
    SensitiveData[i]='\0'; //Fill it with zeros. 
} 

free (SensitiveData); //Give the memory back to the OS. 

Жесткий диск

Физический путь

Сохранение ключа на USB палку, а затем физически уничтожить его будет г uarantee удаление ключа.

способ записать программное

Есть много способов. Вот один для Linux: создайте новый раздел, поставьте туда ключ. Обратите внимание на номер раздела, в этом примере это sda2.

Чтобы избавиться от ключа, ноль заполнить раздел:

#Linux bash code 
dd if=/dev/zero of=/dev/sda2 bs=1M 

Если вы предпочитаете заполнение случайными данными для отрицания, использование:

#Linux bash code 
dd if=/dev/urandom of=/dev/sda3 bs=1M 

Другие ноты

Нулевая однократное заполнение поршня. Как правило, нулевого заполнения современного жесткого диска достаточно, но некоторые делают это более одного раза.

Некоторые операционные системы кэшируют дисковый ввод-вывод в оперативной памяти, для обеспечения безопасности после вытирания жесткого диска вы также должны обратиться к Ram> Физический путь. Я могу быть здесь слишком параноидальным. У меня нет глубокого знания кеша IO, возможно, кто-то еще отредактирует этот раздел лучше.

Если некоторые другие части оперативной памяти могут быть использованы для вывести ключ, убедитесь, что ноль заполнить их тоже таким же образом, чтобы Ram> записать программное путь

Смежные вопросы