Сегодня мы будем учиться защищать информацию с помощью простой электроники.
Мы частично рассмотрим такую больную тему как защита компьютерной информации от кражи физическим доступом. Предполагается что защищаемая информация хранится в компьютере к которому могут внезапно получить доступ всякие враждебные люди: конкуренты, менты, любопытный админ хостера, Петя хакер пробравшийся в помещение и так далее. Нужно оставить врага с носом, чтобы при любых раскладах получил он хуй да нихуя. В общем случае, если вам нужна защита "от всего на свете" - нужно заебаться, однако реальные атаки ограничены несколькими основными вариантами и от них можно защититься несложной комбинацией программных, аппаратных средств и административных мер.
Итак, самая первая и основная атака - переписывание данных с незалоченного компьютера на внешний носитель. Мера безопасности - вбить себе в привычку всегда лочить, даже если отходишь на минуту в другой конец комнаты. У меня это уже рефлекс, советую обзаводиться таким-же рефлексом и вам. Отходишь от компьютера - заблокируй его, даже если сидишь в своей квартире за железной дверью, даже если отошел на минуту поссать. Это должно быть безусловно вбито в голову как обязательное действие. Вернулся, набрал пароль, работаешь дальше.
Более сложная атака - загружаем компьютер с лайвсиди и переписываем все данные. Это требует времени и может быть замечено, но такую атаку можно незаметно провести когда компьютер выключен, ну а хостер может выключить сервер, загрузить с лайвсиди, скопировать данные, ну а после объяснить незапланированное отключение аварией. Мера безопасности - шифруем диски. Желательно - вообще все. Под Windows обязательно нужно шифровать системный раздел, в процессе работы прикладных программ на него может утекать информация с криптотомов. Проверенные программы для шифрования: TrueCrypt, DiskCryptor, dm-crypt (cryptsetup, LUKS), это то что я могу посоветовать будучи уверен в отсутствии серьёзных косяков. Новомодную VeraCrypt используйте на свой страх и риск, я её не проверял. Коммерческие программы без открытых исходников - использовать нельзя (если используете - вы корпоративный пользователь либо просто очередной идиот верящий рекламе).
Итак, вы шифруете информацию, не оставляете компьютер незалоченным, используете стойкие пароли и нигде их не записываете. Что может сделать враг в такой ситуации, помимо очевидного выбивания пароля кулаками? Он может прочитать память и получить ключ шифрования, либо чтением-записью памяти похакать скринсейвер и разлочить компьютер без пароля. Это не фантастика, технология чтения памяти через порт IEEE1394 анонсирована много лет назад, конкретная реализация взлома шифрования таким способом - есть в продуктах ElcomSoft, такую атаку можно считать практически применяемой. Мера безопасности - отключаем в BIOS порты 1394 и на всякий случай физически заливаем их эпоксидкой. Однако память всё равно можно прочитать с использованием спец средств в виде PCI карты инициирующей циклы доступа в ОЗУ. То-же самое можно сделать с шины LPC, обычно используемой для подключения TPM модуля и диагностических карт. Наконец - память можно заморозить жидким азотом, перенести в другой компьютер и там прочитать, при низких температурах информация в ячейках ОЗУ может сохраняться на десятки минут после отключения питания. Эти атаки - не фантастика, всё было реализовано исследователями и может быть повторено (рядовыми ментами - вряд ли, но у ФБР, АНБ, ФСБ и прочих ГеБэ может быть нужная аппаратура и специалисты в штате, следовательно такой вариант нужно учитывать). Мера безопасности - активная электронная защита обесточивающая систему при обнаружении вскрытия, аномальном понижении температуры и других подозрительных воздействиях. Её мы и будем делать сейчас.
Выключатель питания
Система активной защиты будет разделена на две основные части: блок датчиков и выключатель питания. Первый - должен обнаруживать вторжение, второй - выключать питание компьютера по электрическому сигналу и обеспечивать питающее напряжение для блока датчиков. Начнём мы со второй части.
Схема распайки 24х контактного разъема ATX блока питания:
Первый вариант выключателя питания предназначенный для ATX блоков питания разрывает линию PS_ON между блоком питания и материнской платой. ATX блок питания в покое выдаёт только напряжение 5VSB, так называемое "дежурное питание", остальные напряжения включаются замыканием линии PS_ON на землю. Мы включим в разрыв этой линии полевой транзистор управляемый оптопарой (полевик нужен потому что биполярный транзистор оптрона "не дотягивает" до земли, не может обеспечить надёжное включение БП).
Принципиальная схема:
Печатная плата не делалась ввиду крайней простоты схемы. Она собирается на кусочке макетной платы под пайку, после сборки фиксируется термоклеем и помещается в термоусадочную трубку. От блока выходит трехконтактный разъём с контактами "земля" "5в питание" и "датчик". Для разрешения включения БП нужно притянуть линию "датчик" на землю, тогда зажигается светодиод оптопары, открывается полевик и разрешается прохождение сигнала PS_ON. Применённый полевой транзистор - IRLML6244, но вы можете применять любые другие полевики открывающиеся от 5ти вольт, токовая нагрузка там считай что отсутствует.
фото модуля:
Для неттопов и микрокомпьютеров, питающихся от внешнего адаптера, нужна другая схема коммутирующая входное напряжение питания. Она так-же собирается на макетке под пайку и коммутирует плюс P-канальным полевым транзистором IRF4905. В схеме так-же присутствует линейный 5в стабилизатор L78L05, с него идет пятивольтовая линия питания датчиков.
Принципиальная схема:
Фото модуля:
Датчики обнаружения вторжения
Простейший тип датчиков - пружинный контакт. Это пружина распаянная на кусочке макетной платы, она монтируется в системный блок таким образом, чтобы при закрытой крышке пружина прижималась к ней, а при вскрытии происходило размыкание цепи. Можно ставить несколько пружинных контактов на одну крышку корпуса. Ими же защищаем отсеки с CDROM и любые другие отверстия, через которые может быть произведен доступ к внутренностям компа. Если пружина получается слишком длинной и есть риск замыкания на окружающие детали - изолируем её нижнюю часть термоусадочной трубкой.
Фото пружинных контактов:
Надеюсь вы не забыли про возможность замораживания памяти жидким азотом? Необходимо добавить термодатчик реагирующий на сильное понижение температуры. Враги так-же могут попытаться разглядеть конфигурацию датчиков и деактивировать их используя эндоскоп. А мы заодно сделаем фотодатчик реагирующий на появление света внутри корпуса. Удаляем всякие светящиеся моддинговые штучки, корпус должен глухо закрываться и в норме внутри почти полная темнота. Появление яркого света свидетельствует о постороннем доступе.
Принципиальная схема:
В качестве собственно датчиков используются терморезистор и фоторезистор. Они включены в верхнее плечо делителя напряжения. При похолодании либо появлении света, сопротивление верхнего плеча уменьшается и увеличивается напряжение на выходе делителя. Это напряжение сравнивается компаратором LM2903 (двойной компаратор с открытым коллектором на выходе) с опорным напряжением от подстроечника. В норме компаратор находится в нулевом состоянии, выход притянут к земле. При срабатывании датчика - компаратор переключается в единичное состояние и отпускает выход. У этого датчика два выхода, от термо и от фото секций.
Фото модуля:
Резисторы в нижних их плечах делителей напряжения должны быть примерно равны номинальному сопротивлению фото и терморезисторов. Подстроечниками настраиваем пороги чувствительности датчиков, так чтобы не было ложных срабатываний.
Прочие датчики:
На фото показаны инфракрасный датчик приближения и датчик движения из серии так называемых "датчиков для Arduino". Подобные датчики можно использовать для лучшей защиты, если они подходят к вашему корпусу.
Объединение сигналов от нескольких датчиков
Итак, мы понаставили всяких разных датчиков, теперь нам нужно объединить их сигналы в один сигнал подаваемый на выключатель питания. Сигналы датчиков могут быть как нашего формата (притяжка на землю при отсутствии срабатывания, отпускание при срабатывании) так и инверсного (в случае применения датчиков "для Arduino"). Наиболее простым и удобным способом объединения сигналов является оптронная логика. Берем нужное количество оптронов, соединяем их транзисторы последовательно, аноды фотодиодов соединяем с линией питания +5в через резисторы 1к, а на катоды заводим сигналы с датчиков. Если датчик выдает сигнал в другом формате - включаем фотодиод соответствющего оптрона иначе, так чтобы он зажигался при отсутствии срабатывания и потухал при срабатывании датчика. Удобно использовать микросхему TLP521-4, которая содержит 4 оптрона в одном корпусе, она позволяет объединять до 5ти входных сигналов (пятый заводим на эмиттер транзистора последнего оптрона в цепочке).
Принципиальная схема:
Датащиты на применяемые детали
IRLML6244
IRF4905
TLP521