По сути, мне нужен какой-то способ для генерации и хранения случайной строки (скажем, длиной 20 символов) в течение некоторого периода времени, чтобы у меня не было возможности восстановить строку до конца этого периода. Я использую стандартную Ubuntu 12.10.
Вещи, которые делают это трудно:
- У меня есть root-доступ.
- Компьютер может выключиться и запустить в течение периода.
- У меня не должно быть никакого способа восстановить строку до окончания периода.
- У меня не будет доступа в интернет в течение всего периода.
Причина мне нужно сделать, это то, что у меня есть склонность к интернет-порно. Большую часть времени я могу это контролировать, но я испытываю тягу поздно ночью. Это еще сложнее, потому что я использую компьютер для своей работы, и я работаю из дома. Поэтому в последнее время я начал удалять /sbin /dhclient, который отключает подключение к Интернету (пока я не могу получить liveCD и скопировать файл обратно, но это занимает некоторое время). Вместо этого я хочу сгенерировать пароль для dhclient (зашифровав dhclient или просто создав zip-файл с этим паролем), а затем вернуть мне пароль только на следующее утро. По сути, я пытаюсь найти обязательное устройство, немного похожее на алкоголика, наливающего свой ликер в раковину.
Некоторые возможные пути атаки:
- Запустите программу, которая генерирует строку и сохраняет ее в памяти, ждет n секунд, а затем печатает строку. Это не сработает, потому что процесс перестанет работать, если компьютер перезагрузится, и я могу посмотреть в памяти программы, чтобы найти строку.
- Позвольте программе изменить пароль root на случайно сгенерированную строку, удалив мне root-доступ; пусть он хранит строку в файле, к которому только у пользователя root есть права доступа, и пусть root многократно запускает программу, которая проверяет, закончился ли период, и, если да, дает мне строку (и, таким образом, доступ с правами root). Похоже, это будет работать, но я могу обойти это, изменив время в BIOS.
- У меня только что возникла идея: написать одну программу, которая удаляет root-доступ и сохраняет пароль в файле, который требует root для чтения. Затем позвольте root использовать cron для запуска программы каждую минуту, которая проверяет наличие файла с именем delayed_root_request. Каждый раз, когда он запускается, если существует delayed_root_request, он увеличивает число, хранящееся в файле "root_timer", который только root может читать / писать. (Если этого не существует, он создает его и содержит "0".) Когда число в root_timer достигает примерно 60 * 8 = 480, это дает мне доступ на чтение к файлу, в котором хранится пароль root и, таким образом, доступ с правами root. Поэтому я могу запустить скрипт, который удаляет root-доступ, сохраняет случайно сгенерированный пароль в файле только для root-доступа и разбивает dhclient. Когда я хочу получить доступ в Интернет, я создаю файл delayed_root_request и должен ждать пароль 8 часов. Если в любое время в течение этих 8 часов я решу, что root-доступ просто заставит меня откладывать, я просто удаляю файл, и мне нужно начать отсчет заново. Если компьютер перезагружается, отсчет просто приостанавливается. Я должен был бы дать GRUB пароль (например, http://sourceforge.net/projects/grubpass/). Я все еще могу войти с оптического носителя или просто вынуть жесткий диск, но я могу сделать это неудобным, удалив все копии iso-файла Ubuntu, которые у меня есть, и я могу отдать все свои liveCD-диски (и не буду возможность сделать больше без доступа в интернет).
Там может быть очень простой способ сделать это, что я скучаю - пожалуйста, скажите мне, какие у вас есть идеи.
Любая помощь с этим действительно будет оценена!