Це друга стаття, присвячена криптографічним файловим системам. Перша стаття цієї серії описувала процес шифрування, основні концепції та деякі механізми цих систем. Ця стаття присвячена використанню криптографічних файлових систем Microsoft's EFS under Windows 2000 і Linux CryptoAPI.
TECKLORD , За матеріалами SecurityFocus
Це друга стаття, присвячена криптографічним файловим системам. Перша стаття цієї серії описувала процес шифрування, основні концепції та деякі механізми цих систем. Ця стаття присвячена використанню криптографічних файлових систем Microsoft's EFS under Windows 2000 і Linux CryptoAPI.
Нагадаємо, що в першій статті йшлося про те, що Microsoft's EFS не підтримує симетричний алгоритм, заснований на паролі, так як такі схеми є вразливими до атак за словником. У EFS для шифрування і дешифрування інформації використовуються відкриті ключі. Дані зашифровуються за допомогою симетричного алгоритму із застосуванням ключа шифрування файлу (File Encryption Key, FEK), FEK - це згенерований випадковим чином ключ, який має певну довжину. Для дешифрування FEK, потрібне використання пароля, і хоча вхід, заснований на ньому, повністю заборонений, найчастіше для аутентифікації використовується пароль користувача домену.
Microsoft Windows 2000, EFS
Оскільки деякий час використовувалося альтернативне програмне забезпечення для шифрування інформації інших виробників, було прийнято рішення інтегрувати EFS в Windows 2000. Microsoft Windows 2000, EFS підтримує лише алгоритм DESX, в той час як Windows XP включає вже як алгоритм шифрування 3DES, так і алгоритм AES (Advanced Encryption Standard).
Загальна
Використовувати EFS дуже легко. Windows 2000 підтримує два методи шифрування файлів: командний рядок і графічний інтерфейс. Вся хитрість шифрування проявляється тоді, коли зашифровані файли переносяться на інший комп'ютер, оскільки, для того, щоб розшифрувати файл, сертифікат і приватні ключі користувача повинні бути збережені разом з файлом на тому ж комп'ютері.
Шифрування / Дешифрування файлу: графічний метод
Щоб зашифрувати файл слід правою кнопкою миші натиснути на файл і вибрати меню Властивості (Properties), як показано на наступному малюнку.
Потім натисніть на кнопку Додатково (Advanced) справа внизу. У самому низу нового вікна поставте галочку біля Зашифрувати (Encrypt Contents to secure data), і натисніть ОК.
Коли вийдете з діалогового вікна додаткових атрибутів, натисніть Застосувати і ОК (Apply і OK). Після цього з'явиться діалогове вікно з пропозицією зашифрувати тільки даний файл, або папку, в якій знаходиться цей файл. Потім знову натисніть ОК. Якщо файл знаходиться в кореневому каталозі, діалогового вікна не буде.
Після того, як файл був зашифрований, він доступний, як і будь-який інший файл. Для перегляду, його не потрібно розшифровувати вручну, так як весь процес шифрування / дешифрування є автоматичним і прозорим. Щоб повністю дешифрувати файл, просто відкрийте меню Властивості за допомогою правої кнопки миші. Натисніть на кнопку Додатково і зніміть галочку біля Зашифрувати. Потім застосуєте властивості до файлу, і він буде доступний також іншим користувачам (звичайно, в залежності від атрибутів файлу).
Шифрування / Дешифрування файлу: командний рядок
Шифрувати і дешифрувати дані, користуючись командним рядком ще простіше. Програма cipher. exe служить для шифрування і дешифрування файлу, папки і їх вмісту. Приклад використання командного рядка для цих цілей наведено нижче.
cipher / e "D: \ crypto \ file.txt"
Щоб розшифрувати папку і всі вкладені папки:
cipher / e / s "D: \ crypto"
Щоб просто розшифрувати, змініть атрибут / e на / d:
cipher / d / s "D: \ crypto"
Запам'ятайте, щоб просто дешифрувати файл не потрібно використовувати атрибут / S.
Щоб отримати додаткову довідку по атрибутам введіть у командному рядку
cipher /?
Труднощі виникають при перенесенні зашифрований даних з одного комп'ютера на інший. Щоб користуватися цією можливістю, користувачам необхідно імпортувати свої ключі з однієї машини на іншу, використовуючи MMC (Microsoft Management Console). Можна скористатися майстром підказок Майкрософт з імпорту та експорту FEK. він доступний тут .
Реалізація Linux CryptoAPI
Принцип використання криптографічного файлової системи в Linux так само простий, як і в Windows 2000. Для використання CryptoAPI вам знадобляться три (може 4 - в залежності від обраної вами дистрибуції) компонента: вихідний код ядра, вихідний код CryptoAPI і cryptoloop . Два останні потрібно завантажити, перевірити їх підписи, і потім розпакувати. Версія CryptoAPI повинна відповідати версії ядра операційної системи.
[Root @ charybdis cryptoapi-0.1.0] # bzip2 -dc /opt/software/kernel/linux-2.4.20.tar.bz2 | tar -xvf -
[Root @ charybdis cryptoapi-0.1.0] # bzip2 -dc cryptoapi-0.1.0.tar.bz2 | tar -xvf -
[Root @ charybdis cryptoapi-0.1.0] # bzip2 -dc cryptoloop-0.0.1-pre1.tar.bz2 | tar -xvf -
Разом з вихідним кодом CryptoAPI поставляються два патча для файлової системи на пристрої зворотного петлі. Перший патч - loopiv (iv означає вектор ініціалізації - initialization vector) - забезпечує мінімальну підтримку для CryptoAPI, і другий патч - loop-jari, також забезпечує роботу CryptoAPI і містить кілька виправлень для багів.
Після того, як ядро і вихідні CryptoAPI будуть розпаковані, слід настроїти ядро перед установкою патчів CryptoAPI. Цей процес можна здійснити, використовуючи поточні конфігурації ядра. Нижче йде опис зборів нового ядра з CryptoAPI. Після того, як ядро буде налаштоване, слід застосувати патчі CryptoAPI наступним чином:
[Root @ charybdis cryptoapi-0.1.0] # make patch-kernel KDIR = LOOP =
[Root @ charybdis cryptoloop-0.0.1-pre1] # make patch-kernel KDIR = LOOP =
Після цього перейдіть до директорії з вихідним кодом, скомпілюйте ядро і встановіть його. Рекомендуємо перезавантажити машину перед встановленням модулів CryptoAPI. Установка модулів:
[Root @ charybdis cyrptoapi-0.1.0] # make modules KDIR =
Після компіляції модулів, їх потрібно встановити:
[Root @ charybdis cyrptoapi-0.1.0] # make modules_install
Останній шматочок пазла - патч для losetup. Залежно від дистрибуції, це програма може вимагати окремого патча, який повинен повідомляти ядру про шифр і ключі, які використовуються для зашифрованих пристроїв. Цей патч доступний на SourceForge . У деяких останніх релізах Linux цей патч входить до складу дистрибутива.
Після установки, необхідно вирішити, яка файлова система буде використовуватися: фізична або віртуальна файлова система. Фізична файлова система вимагає створення кодованої файлової системи на фізичному носії. Віртуальна файлова система - це великий порожній файл, змонтований на пристрої зворотного петлі. Нижче описаний другий метод. Створення порожнього файлу вимагає наявність простору всередині фізичної файлової системи.
[Root @ charybdis cyrptoapi-0.1.0] # dd if = / dev / zero if = / oracle / testfs bs = 1M count = 50
Можна також використовувати / dev / urandom для заповнення порожнього файлу випадковими даними. Після цього потрібно завантажити cryptoapi, cryptoloop, і модулі шифрування ядра.
[Root @ charybdis cyrptoapi-0.1.0] # modprobe cryptoloop
[Root @ charybdis cyrptoapi-0.1.0] # modprobe cryptoapi
[Root @ charybdis cyrptoapi-0.1.0] # modprobe cipher-des
І, нарешті, можна змонтувати пристрій задньою петлі:
[Root @ charybdis cyrptoapi-0.1.0] # losetup -e des / dev / loop0 / oracle / testfs
Password:
Init (up to 16 hex digits):
Після монтування слід створити на пристрої зворотного петлі файлову систему:
[Root @ charybdis cyrptoapi-0.1.0] # mkfs -t ext3 / dev / loop0
А тепер файлова система готова до монтування:
[Root @ charybdis cyrptoapi-0.1.0] # mount -t ext3 / dev / loop0 / mnt / testfs
Всі файли, розмішені в цій файлової системи, будуть зашифровані. Не рекомендується робити занадто велику файлову систему, через можливе збою в роботі системи. За допомогою CryptoAPI можна створювати кодовані файлові системи, які будуть невидимі користувачам.
висновок
Головна перевага використання шифрованих файлових систем - це можливість захисту важливої інформації серед звичайних файлів в системі. Додаткова безпека залежить не тільки від складності алгоритму кодування, але і від обережного поводження з даними користувачів і адміністраторів. Кодована файлова система марна, якщо користувач або адміністратор не вміють поводитися в достатній мірі з ключами, використовуваними для шифрування інформації в файлової системі.