Когда я задаю этот вопрос в Google, я получаю только всевозможную информацию о том, как защитить конфиденциальные данные, как зашифровать своп и насколько опасным может быть «обычный» своп в системе linux.
Но я не мог найти никакого программного обеспечения, метода или «как», чтобы действительно получить (прочитать) любой фрагмент данных из раздела подкачки.
Итак, мой вопрос, будучи «нормальным» гражданином, живущим в Западной Европе, действительно ли необходимо стереть или зашифровать файл подкачки на моем компьютере? И прежде чем кто-то ответит «да», могу ли я получить пример того, как я мог бы протестировать и пропустить свой собственный своп, чтобы я мог реально увидеть, какие данные незащищены, несмотря на мой зашифрованный дом?
encryption
swap
боб
источник
источник
Ответы:
Это личное суждение, которое зависит от того, насколько вы цените конфиденциальность ваших данных и насколько вы хотите защитить свои данные от раскрытия, если они попадут в руки злоумышленника. Предположим, у вас есть ноутбук, и однажды его украдут - насколько вероятно, что вор попытается извлечь пароли или ключи шифрования или другие личные данные, и вас это волнует? Многим людям все равно, а некоторым это все равно. По общему признанию, большинство воров просто продало бы ноутбук для немедленной финансовой выгоды, но есть случаи, когда злоумышленник может быть мотивирован пойти дальше в попытке получить доступ к самим данным.
Память любого процесса потенциально может быть выгружена в пространство подкачки. Утечка памяти может быть опасной - очевидный пример - Heartbleed - посмотрите, как я использовал Heartbleed для кражи закрытого крипто-ключа сайта . Память, предоставляемая Heartbleed, принадлежит только одному процессу, тогда как память, потенциально доступная вашему пространству подкачки, принадлежит каждому процессу. Представьте, что процесс, содержащий закрытый ключ или список паролей (например, веб-браузер), заменяется - эти элементы будут отображаться в открытом виде в пространстве подкачки. Их извлечение - это просеивание в памяти определенных шаблонов данных - это могут быть незашифрованные ASCII-данные, видимые через
strings
или он может быть более сложным, как в Heartbleed (где тест состоит в том, что некоторые последовательные байты являются делителем открытого криптографического ключа). Если у вас есть зашифрованный / домашний раздел, то очевидной вещью, которую нужно искать, является блок данных, который формирует ключ шифрования, который разблокирует данные пользователя.Рабочий пример:
сделать,
bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'
чтобы создать процесс bash с некоторыми секретными данными в его стекесделать,
sysctl vm.swappiness=100
чтобы увеличить swappiness (не обязательно, но может сделать пример проще)запустите
top -c
, нажмите f, включите столбец SWAP, нажмите q, чтобы вернуться к верхнему виду процесса, прокрутите вниз, пока не увидитеbash -c
процессв другом терминале сохраните программу Chimnay Kanchi из Linux: как загрузить системную память? чтобы
usemem.c
скомпилироватьgcc -o usemem usemem.c
и запуститьusemem &
несколько раз в терминале. Это будет использовать 512 МБ блоков памяти одновременно. (Неважно, что вызывает замену памяти, это может быть нормальное использование системы, процесс запуска или преднамеренная атака, конечный результат тот же)смотреть сверху, дождаться пока
bash -c
меняются местами (значение столбца SWAP> 0)Теперь беги,
strings /dev/sdaX | grep SECRET
где X - твой обменный парититонПоздравляем - вы только что извлекли «секретные» данные из раздела подкачки. вы увидите несколько копий текста SECRET, за которым следует «пароль», копии, включающие полную командную строку, просочившуюся из родительского процесса bash, процесса top и процесса «bash -c». Строки, которые не включают полную командную строку, просочились из процесса 'bash -c'.
Чтобы доказать утечку секретов из памяти процесса, а не только из командной строки, добавьте строку
unsigned char secret[] = "SECRET=XXXX";
в usemem.c (чуть нижеunsigned long mem;
строки). Перекомпилируйте и запуститеusemem &
несколько раз, иstrings /dev/sdaX | grep SECRET
снова. На этот раз вы увидите утечку секрета «XXXX».источник
Этот вопрос приводит нас к обсуждению проблем между разработкой программного обеспечения, таких как программное обеспечение хранения конфиденциальных данных в памяти и шифрование данных.
Итак, для начала вам следует прочитать несколько статей о практической разработке программного обеспечения и шифровании данных.
Начните читать эту статью: http://www.ibm.com/developerworks/library/s-data.html?ns-311
Надеюсь, поможет.
источник