Софт-Портал

как зашифровать файл

Рейтинг: 4.7/5.0 (577 проголосовавших)

Категория: Windows

Описание

Как зашифровать файл

Как зашифровать файл

У каждого человека есть личные данные, которые он хранит на своем компьютере. В случае, если они попадут к посторонним лицам, это может нанести немалый ущерб. Один из главных способов борьбы с этим - шифрование. В операционную систему Windows 7 уже встроены довольно мощные средства, которые позволяют зашифровать файл, папку или целый диск. Процедура довольно простая и занимает всего несколько минут. С его помощью можно зашифровать свои данные на флешке и никто кроме Вас не сможет их прочитать, даже если Вы забудете ее где-либо.

Обратите внимание, что при шифровке Windows создает специальный ключ с помощью которого производится дешифровка файла. Если этот ключ будет утерян или поврежден (в результате переустановки операционной системы или любой другой причины), то прочитать файл не сможет уже никто. Поэтому рекомендуется сделать резервную копию ключа. Итак, рассмотрим как можно зашифровать файл.

Шифруем файл

Сначала выделяем файл, щелкаем по нему правой кнопкой для появления контекстного меню и выбираем строку Свойства .

В окне свойств жмем по кнопке Другие .

Откроется окно с названием "Дополнительные атрибуты". Ставим флажок в строчке Шифровать содержимое для защиты данных и жмем кнопку Ок два раза подряд.

Если файл находится в незашифрованной папке, то операционная система предложит зашифровать ее (так как при редактировании шифрованного файла в папке остается его незашифрованная копия). Рекомендуется согласиться и выбрать рекомендуемый вариант Шифровать файл и родительскую папку(рекоменд.) В результате файл будет зашифрован. После нажатия на кнопку Ок файл будет отображаться зеленым цветом. Доступ к нему будет только из вашей учетной записи. Никто другой прочитать этот файл не сможет. Дешифровать файл можно таким же образом, сняв галочку о шифровании в свойствах файла.

Возможно, вас заинтересуют подобные статьи:

как зашифровать файл:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Как защитить файлы и папки шифрованием с паролем


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

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

    Создание зашифрованных томов с помощью TrueCrypt

    TrueCrypt позволяет создавать зашифрованные тома. Программа очень гибкая и может использоваться разными способами:

    1. Создание небольшого зашифрованного файла-контейнера на жестком диске. Для просмотра и изменения содержимого такого файла его требуется «подключить» как особый раздел диска, введя пароль. После «отключения» никто не может посмотреть содержимое раздела без ввода пароля.

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

    3. Шифрование системного раздела Windows. В таком случае при включении компьютера или выходе из спящего режима для входа в систему потребуется ввести пароль. Это гарантирует, что никто не сможет получить доступ к содержимому жесткого диска, – нужно только блокировать или выключать за собой компьютер. Единственный способ взломать подобную защиту – засунуть диск в морозилку. но в реальности мало кто так делает.

    Использование встроенных в Windows функций шифрования

    В изданиях Windows Professional и Enterprise предусмотрены особые функции шифрования. В версиях Home (и в базовом издании Windows 8. которое такой пометки не имеет) этих функций нет. А вот профессиональные издания включают в себя две возможности шифрования:

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

    • Encrypting File System (EFS) позволяет шифровать отдельные папки и файлы. Для этого нажмите на файле или папке правой кнопкой мыши, выберите пункт «Свойства» (Properties) и в появившемся окне на вкладке «Общие» (General) нажмите кнопку «Другие» (Advanced). В следующем окне поставьте флажок «Шифровать содержимое для защиты данных» (Encrypt contents to secure data option) – в базовых изданиях Windows эта опция будет недоступна. Файлы шифруются с использованием пароля к вашей учетной записи Windows, так что если вы забудете его, вы лишитесь доступа к данным. Имейте в виду, что файлы остаются зашифрованными только при хранении на вашем компьютере – для безопасной пересылки их необходимо зашифровать другим способом.

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

    Похожие новости

    Шифрование файлов и папок

    Шифрование файлов и папок в Windows 7

    Файловая система NTFS поддерживает шифрование папок и файлов. Зашифрованные файлы и папки невозможно будет просмотреть на другом компьютере. То есть, если кто-то украдет ваши данные, например, ваш ноутбук, а потом попытается подключить его жесткий диск к своему компьютеру, то у него ничего не получится - ведь файлы будут зашифрованными.

      Вот что следует помнить о шифровании файлов и папок:
    • Из-за легкости самого процесса шифрования легко поддаться соблазну и шифровать все свои данные. Но это не нужно делать, поскольку снижение производительности вам гарантировано.
    • Вы можете зашифровать отдельные файлы, но лучше все ваши секретные файлы переместить в одну папку и зашифровать папку - тогда будут автоматически зашифрованы все файлы, содержащиеся в ней.
    • Если вы сами скопируете зашифрованный файл на раздел, который не поддерживает шифрование (FAT32), то файл будет автоматически расшифрован, и его сможет просмотреть злоумышленник на FAT32-разделе.

    Зашифровать файл очень просто. Щелкните на нем правой кнопкой мыши, выберите команду Свойства, на вкладке Общие окна свойств щелкните на кнопке Другие. В появившемся окне включите параметр Шифровать содержимое для защиты данных.

    Затем щелкните на кнопке ОК, а после этого - еще раз на кнопке ОК (в окне свойств файла). Если файл находится в незашифрованной папке, то Windows предложить зашифровать всю папку (вы можете зашифровать только файл).

    Расшифровать файл просто: для этого его достаточно скопировать на FАТ32-раздел, например, на флешку, или же снять атрибут Шифровать содержимое для защиты данных.

    Как зашифровать файл

    Как зашифровать файл

    В этом видео рассказываю о том, как скрыть, зашифровать и сохранить файлы или папки в безопасности.

    1. rar архив запароленный

    Нажимаем правой кнопкой на файле или папке выбираем ДОБАВИТЬ В АРХИВ. Заходим во вкладку ДОПОЛНИТЕЛЬНО, нажимаем кнопку УСТАНОВИТЬ ПАРОЛЬ. Придумываем пароль и подтверждаем его, ставим галочку ШИФРОВАТЬ ИМЕНА ФАЙЛОВ, жмем ОК. Переходим во вкладку ОБЩИЕ, тут можно сделать архив .rar либо .zip, сжать архив, разделить его несколько частей по размеру

    — нажимаем на файле или папке правой кнопкой и выбираем СВОЙСТВА. В атрибутах ставим галочку на СКРЫТЫЙ и нажимаем ОК. Если файл пропал нажмите сверху меню ВИД — ПОКАЗАТЬ ИЛИ СКРЫТЬ и поставьте галочку на СКРЫТЫЕ ЭЛЕМЕНТЫ, чтобы видеть скрытые файлы и папки. Полупрозрачные файлы и папки это и есть скрытые файлы и папки. Теперь можете переместить скрытый файл куда-нибудь подальше и отключить СКРЫТЫЕ ЭЛЕМЕНТЫ, чтобы скрытые элементы не показывались

    3. Защищенная папка с помощью outpost firewall

    — заходим в настройки outpost firewall и переходим во вкладку ЗАЩИТА ФАЙЛОВ И ПАПОК ставим галочку на ВКЛЮЧИТЬ ЗАЩИТУ ФАЙЛОВ И ПАПОК. Нажимаем ДОБАВИТЬ и выбираем папку кот. необходимо защитить от открытия и нажимаем ОК. Также не забудьте установить пароль на доступ к настройкам outpost firewall

    4. Закопать файл глубокого в системную папку

    — например C:/Windows/System32/DriverStore/File/Repositoryacpitime.inf_amd64_29b0a8cd9e06aad1/Новая папка

    чтобы никто не догадался там искать.

    5. С помощью программы TrueCrypt

    Программа является бесплатной и скачать ее можно с официального сайта truecrypt.org/downloads

    русифицировать ее можно скачав архив truecrypt.org/localizations

    Итак скачав установочный файл и архив с русским языком кладем всё в одну папку, распаковываем архив с русским языком в ту же папку что и установщик и устанавливаем программу. Установщик автоматически подхватит русский язык и установит программу с русским языком. После установки запускаем программу и нажимаем СОЗДАТЬ ТОМ. Выбираем тип тома СОЗДАТЬ ЗАШИФРОВАННЫЙ ФАЙЛОВЫЙ КОНТЕЙНЕР и жмем ДАЛЕЕ. Выбираем СКРЫТЫЙ ТОМ TRUECRYPT и жмем далее. Выбираем ОБЫЧНЫЙ РЕЖИМ и жмем ДАЛЕЕ. Нажимаем ФАЙЛ и указываем куда сохранить наш файл с зашифрованной информацией и как он будет называться.

    Написав имя и выбрав расположение нажимаем СОХРАНИТЬ. Нажимаем ДАЛЕЕ и еще раз ДАЛЕЕ. Здесь выбираем алгоритм шифрования и алгоритм хеширования. Выбираем по умолчанию: AES и RIPEMD-160 и нажмем ДАЛЕЕ. Выберем размер внешнего тома для наших зашифрованных нужд. Поставим 5 ГБ. в дальнейшем если надо можно будет увеличить его. Придумаем пароль для зашифрованного тома, советую придумать пароль из более 10 знаков, использовать большие и маленькие буквы и спец. символы. Например Podpishis87-.NaKanal, только не забудьте потом свой пароль.

    Нажмем ДАЛЕЕ. Если мы будем хранить здесь файлы размер кот. превышает 4 ГБ. то ставим точку на пункте ДА и жмем ДАЛЕЕ. Нажимаем РАЗМЕТИТЬ если нас программа снова спросить про систему NTFS то жмем ДА и ждем пока программа создаст и разметить новый том для наших зашифрованных нужд. Спустя время создастся новый диск и ему присвоится определенная буква, в моем случае Z. Войдем в компьютер и увидим новый диск. Далее для вида можно накидать туда файлов всяких которые скрывать не нужно, это нужно просто для вида, что на этом диске что-то ест и он используется.

    Итак вернемся к программе нажмем ДАЛЕЕ и еще раз ДАЛЕЕ. Вновь выберем здесь алгоритм шифрования и алгоритм хеширования. Выберем по умолчанию: AES и RIPEMD-160 и нажмем ДАЛЕЕ. Установим размер для скрытого тома и выберем его размер (установим его меньше на 1 ГБ. от места что нам доступно), нажмем ДАЛЕЕ. Нажмем ДА если программа попросит подтвердить операцию. Теперь придумаем пароль для скрытого тома например EsheNePodpisanNaKanal?Apochemu? нажмем ДАЛЕЕ. Нажмем РАЗМЕТИТЬ.

    Нажмем ДАЛЕЕ. После того как мы создали скрытый том закрываем программу. Программа теперь будет отображаться справа снизу нажимаем на нее правой кнопкой и выбираем ПОКАЗАТЬ TRUECRYPT. Выберем букву диска на кот. смонтировать наш том, нажимаем ФАЙЛ и выбираем тот файл что мы создавали и нажимаем ОТКРЫТЬ. Далее жмем СМОНТИРОВАТЬ, нас просит программа ввести пароль введя первый пароль Podpishis87-.NaKanal, мы попадем в открытый том, введя второй пароль EsheNePodpisanNaKanal?Apochemu? мы попадем в скрытый том. Нажмем ОК.

    Вот и появилось наше зашифрованное хранилище, теперь можно сюда сохранять те файлы что мы хотим скрыть. После того как вы скопировал туда ваши файлы и хотите скрыть их нажмите в программе РАЗМОНТИРОВАТЬ чтобы размонтировать скрытый том.

    Мда, понимаю, способ мягко говоря не из простых.

    6. Комбинировать эти способы

    — скройте файл, засуньте его глубокого в системную папку, зашифруйте его, добавьте в архив зашифрованный, добавьте в зашифрованный архив еще один зашифрованный архив с другим паролем и все это поместите в скрытый том.

    7. Зашифровать с помощью Windows

    — нажмите правой кнопкой по файлу или папке и выберите ЗАШИФРОВАТЬ (доступно не во всех версиях windows, только в максимальных версиях Windows). Windows предложит ввести пароль для ключа шифрования, подтвердить его, потом предложить экспортировать файл ключа, выберите имя файла для ключа и нажмите СОХРАНИТЬ чтобы вы могли открывать зашифрованные файлы после переустановки windows или на другом компьютере с помощью этого ключа.

    Вот видео урок на тему шифрования файлов.

    1. rar архив запароленный (00:11)
    2. скрытый файл (01:28)
    3. Защищенная папка с помощью outpost security suite (02:08)
    4. «Закопать» файл глубокого в системную папку (03:22)
    5. С помощью программы TrueCrypt (04:01)
    6. Комбинировать эти способы (10:40)

    Другие статьи на эту тему:

    Шифрование файлов

    Командная строка Windows Шифрование файлов Шифрование файлов и папок в Windows 7

    Шифрование добавляет еще один уровень защиты, гарантируя, что файл сможет прочитать только его создатель. Если любой другой пользователь — даже имеющий привилегии администратора — попробует открыть такой файл, он увидит или бессмысленный набор символов, или вообще ничего. Другими словами, ваши зашифрованные данные прочитать невозможно, если только вы не работаете в системе под своей учетной записью.

    Шифрование файлов и папок в Windows 7 — это удобный способ защиты конфи­денциальных данных, но если хранить на одном диске зашифрованные и незаши­фрованные данные, это может привести к непредсказуемым результатам, как написано в разделе «Шифрование файлов». Однако владельцы версий Windows 7 Ultimate и Enterprise могут решить эту проблему, воспользовавшись преимущества­ми инструмента шифрования диска BitLocker.

    Bit Locker помещает все данные на диске в один огромный архив и обращается к нему как к виртуальному жесткому диску. В Проводнике Windows вы обращаетесь к зашифрованным с помощью BitLocker файлам как к любым другим данным — Windows выполняет шифрование и дешифрование незаметно для вас в фоновом режиме. Большое преимущество BitLocker в том, что он шифрует файлы Windows и все системные файлы, и это значительно затрудняет взлом вашего пароля и не­санкционированный доступ в систему. Кроме того, когда шифруется весь диск, шифровать файлы по отдельности не требуется.

    Чтобы зашифровать диск, откройте страницу Шифрование диска BitLocker (BitLocker Drive Encryption) на Панели управления. Если отображается ошибка ТРМ не найден (ТРМ was not found), проверьте, есть ли для вашего компьютера обновление BIOS с поддержкой ТРМ.

    ТРМ, Trusted Platform Module (модуль доверенной платформы), — это микросхема на материнской плате, в которой хранится ключ шифрования BitLocker, Благодаря ей компьютер может загружаться с зашифрованного диска. Если BIOS не поддер­живает ТРМ, то в качестве такой микросхемы можно использовать обычный USB-диск.

    Вы только помечаете файл как предназначенный для шифрования. Windows шиф­рует и дешифрует файлы в фоновом режиме, когда создатель файла записывает его или просматривает соответственно. Правда, в Windows 7 шифрование на лету может иногда преподносить сюрпризы, а безопасность — это не та область, в которой можно полагаться на авось.

    Шифрование файла

    Шифрование — это функция файловой системы NTFS (о которой говорилось в разделе «Выберите правильную файловую систему»), недоступная в любых других файловых системах. Это означает, что если скопировать зашифрованный файл, скажем, на карту памяти, USB-диск или компакт-диск, расшифровать его будет невозможно, так как на этих устройствах файловая система NTFS не поддерживается.

    Как зашифровать файл:

    1. Правой кнопкой мыши щелкните на одном или нескольких файлах в Проводнике и в контекстном меню выберите пункт Свойства (Properties).
    2. На вкладке Общие (General) нажмите Дополнительно (Advanced).
    3. Установите флажок Шифровать содержимое для защиты данных (Encrypt contents to secure data), нажмите OK, потом закройте окно, снова щелкнув на кнопке ОК.

    Рекомендуем для просмотра:

    Как зашифровать файл или папку?

    Встроенная в windows система efs легко и быстро позволит вам зашифровать файл или нужную папку таким образом, что доступ к зашифрованной папке будет только у вашего пользователя. При этом любой другой пользователь (даже администратор) не может получить доступ.

    Итак! Как же зашифровать файл или папку не прибегая к использованию сторонних программ?

    Чтобы зашифровать файл выполните следующие действия по порядку:

    • Войти в систему под учетной записью с правами администратора и включить шифрование данных, хранящихся на диске, по алгоритму 3DES, для этого с помощью редактора реестра добавить следующий параметр типа DWORD: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows NT\CurrentVersion\EFS.”AlgorithmID “=dword: 0×6603.
    • Создать учетную запись основного пользователя, под которой будет осуществляться повседневная работа. Войти с помощью учетной записи основного пользователя, под которой будет осуществляться повседневная работа (на период настройки необходимо дать права администратора).
    • Нажать «Пуск» -> выбрать иконку «Мой компьютер» -> в левой части окна нажать правой клавишей на иконке «Мои документы» -> выбрать «Свойства» -> перейти на закладку «Общие» -> нажать кнопку «Другие…» -> выделить «Шифровать содержимое для защиты данных» -> нажать 2 раза «ОК» -> в открывшемся окне выбрать «к этой папке и ко всем вложенным файлам» -> нажать ОК. Таким образом можно зашифровать любой файл или папку.
    • Нажать «Пуск» > «Выполнить» -> набрать команду mmc и нажать ОК.
    • В открывшемся окне в меню выбрать «Консоль» -> «Добавить или удалить оснастку…» -> нажать кнопку «Добавить…» -> выбрать «Сертификаты» и нажать «Добавить» -> выбрать пункт «моей учетной записи пользователя» -> нажать «Готово» -> «Закрыть» -> ОК.
    • Открыть ветку «Сертификаты» -> «Личные» -> «Сертификаты».
    • Нажать правой клавишей мыши на сертификат пользователя -> выбрать «Все задачи» -> «Экспорт…»
    • В открывшемся окне нажать «Далее» -> выбрать «Да», «экспортировать закрытый ключ» -> «Далее» -> «Далее» -> ввести пароль для закрытого ключа (минимально 8 символов) -> «Далее» -> ввести имя файла и указать путь, куда он будет записан -> нажать «Далее» -> «Готово» -> «OK.
    • Сохранить созданный файл на внешний носитель информации (CD-R, ГМД,…), после чего удалить файл сертификата с жесткого диска. Также рекомендуется записать пароль для закрытого ключа на бумаге и поместить его в запечатываемый конверт. Сертификат пригодится в следующих случаях: если пользователь забыл пароль и вам пришлось его сменить; если пользователь, под которым был зашифрован файл, удален; если вы хотите снять защиту из под другой учетной записью.
    • Внешний носитель информации с ключами агента восстановления и пароль для закрытого ключа в запечатанном конверте должны храниться в сейфе у руководителя отдела, которому прописан данный сертификат защиты папки.
    • Учётной записи пользователя назначить права непривилегированного пользователя.

    Аналогичным образом зашифровать папки «C:\Documents and Settings\<имя пользователя>\Рабочий стол» «C:\Documents and Settings\<имя пользователя>\Local Settings\Temp» и «C:\Documents and Settings\<имя пользователя>\Local Settings\Temporary Internet Files» а также все папки, в которых предполагается хранить конфиденциальную информацию.

    ВНИМАНИЕ!При утери сертификата защиты восстановить доступ к зашифрованным папкам будет не возможно.


    Популярные статьи: Оставить комментарий:

    ПОПУЛЯРНОЕ:

    Метки

    Копирайт © Wa7.ru

    Шифрующая файловая система (EFS)

    Редакция сайта iXBT.com обращается к вам с просьбой отключить блокировку рекламы на нашем сайте.

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

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

    Спасибо вам за поддержку!

    Шифрующая файловая система (EFS) Encrypting file system

    Шифрующая файловая система это тесно интегрированная с NTFS служба, располагающаяся в ядре Windows 2000. Ее назначение: защита данных, хранящихся на диске, от несанкционированного доступа путем их шифрования. Появление этой службы не случайно, и ожидалось давно. Дело в том, что существующие на сегодняшний день файловые системы не обеспечивают необходимую защиту данных от несанкционированного доступа.

    Внимательный читатель может возразить мне: а как же Windows NT с ее NTFS? Ведь NTFS обеспечивает разграничение доступа и защиту данных от несанкционированного доступа! Да, это правда. Но как быть в том случае, когда доступ к разделу NTFS осуществляется не с помощью средств операционной системы Windows NT, а напрямую, на физическом уровне? Ведь это сравнительно легко реализовать, например, загрузившись с дискеты и запустив специальную программу: например, весьма распространенную ntfsdos. В качестве более изощренного примера можно указать продукт NTFS98. Конечно, можно предусмотреть такую возможность, и задать пароль на запуск системы, однако практика показывает, что такая защита малоэффективна, особенно в том случае, когда за одним компьютером работают сразу несколько пользователей. А если злоумышленник может извлечь жесткий диск из компьютера, то здесь уже не помогут никакие пароли. Подключив диск к другому компьютеру, его содержимое можно будет прочитать с такой же легкостью, что и эту статью. Таким образом, злоумышленник свободно может овладеть конфиденциальной информацией, которая хранится на жестком диске.

    Единственный способ защиты от физического чтения данных это шифрование файлов. Простейший случай такого шифрования — архивирование файла с паролем. Однако здесь есть ряд серьезных недостатков. Во-первых, пользователю требуется каждый раз вручную шифровать и дешифровать (то есть, в нашем случае архивировать и разархивировать) данные перед началом и после окончания работы, что уже само по себе уменьшает защищенность данных. Пользователь может забыть зашифровать (заархивировать) файл после окончания работы, или (еще более банально) просто оставить на диске копию файла. Во-вторых, пароли, придуманные пользователем, как правило, легко угадываются. В любом случае, существует достаточное количество утилит, позволяющих распаковывать архивы, защищенные паролем. Как правило, такие утилиты осуществляют подбор пароля путем перебора слов, записанных в словаре.

    Система EFS была разработана с целью преодоления этих недостатков. Ниже мы рассмотрим более подробно детали технологии шифрования, взаимодействие EFS с пользователем и способы восстановления данных, познакомимся с теорией и реализацией EFS в Windows 2000, а также рассмотрим пример шифрования каталога при помощи EFS.

    Технология шифрования

    EFS использует архитектуру Windows CryptoAPI. В ее основе лежит технология шифрования с открытым ключом. Для шифрования каждого файла случайным образом генерируется ключ шифрования файла. При этом для шифрования файла может применяться любой симметричный алгоритм шифрования. В настоящее же время в EFS используется один алгоритм, это DESX, являющийся специальной модификацией широко распространенного стандарта DES.

    Ключи шифрования EFS хранятся в резидентном пуле памяти (сама EFS расположена в ядре Windows 2000), что исключает несанкционированный доступ к ним через файл подкачки.

    Взаимодействие с пользователем

    По умолчанию EFS сконфигурирована таким образом, что пользователь может сразу начать использовать шифрование файлов. Операция шифрования и обратная поддерживаются для файлов и каталогов. В том случае, если шифруется каталог, автоматически шифруются все файлы и подкаталоги этого каталога. Необходимо отметить, что если зашифрованный файл перемещается или переименовывается из зашифрованного каталога в незашифрованный, то он все равно остается зашифрованным. Операции шифрования/дешифрования можно выполнить двумя различными способами — используя Windows Explorer или консольную утилиту Cipher.

    Для того чтобы зашифровать каталог из Windows Explorer, пользователю нужно просто выбрать один или несколько каталогов и установить флажок шифрования в окне расширенных свойств каталога. Все создаваемые позже файлы и подкаталоги в этом каталоге будут также зашифрованы. Таким образом, зашифровать файл можно, просто скопировав (или перенеся) его в «зашифрованный» каталог.

    Зашифрованные файлы хранятся на диске в зашифрованном виде. При чтении файла данные автоматически расшифровываются, а при записи — автоматически шифруются. Пользователь может работать с зашифрованными файлами так же, как и с обычными файлами, то есть открывать и редактировать в текстовом редакторе Microsoft Word документы, редактировать рисунки в Adobe Photoshop или графическом редакторе Paint, и так далее.

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

    Важно также помнить о том, что зашифрованные файлы не могут быть сжаты средствами Windows 2000 и наоборот. Иными словами, если каталог сжат, его содержимое не может быть зашифровано, а если содержимое каталога зашифровано, то он не может быть сжат.

    В том случае, если потребуется дешифровка данных, необходимо просто снять флажки шифрования у выбранных каталогов в Windows Explorer, и файлы и подкаталоги автоматически будут дешифрованы. Следует отметить, что эта операция обычно не требуется, так как EFS обеспечивает «прозрачную» работу с зашифрованными данными для пользователя.

    Восстановление данных

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

    Немного теории

    EFS осуществляет шифрование данных, используя схему с общим ключом. Данные шифруются быстрым симметричным алгоритмом при помощи ключа шифрования файла FEK (file encryption key). FEK — это случайным образом сгенерированный ключ определенной длины. Длина ключа в североамериканской версии EFS 128 бит, в международной версии EFS используется уменьшенная длина ключа 40 или 56 бит.

    FEK шифруется одним или несколькими общими ключами шифрования, в результате чего получается список зашифрованных ключей FEK. Список зашифрованных ключей FEK хранится в специальном атрибуте EFS, который называется DDF (data decryption field — поле дешифрования данных). Информация, при помощи которой производится шифрование данных, жестко связана с этим файлом. Общие ключи выделяются из пар пользовательских ключей сертификата X509 с дополнительной возможностью использования «File encryption». Личные ключи из этих пар используются при дешифровке данных и FEK. Личная часть ключей хранится либо на смарт-картах, либо в другом надежном месте (например, в памяти, безопасность которой обеспечивается при помощи CryptoAPI).

    FEK также шифруется при помощи одного или нескольких ключей восстановления (полученных из сертификатов X509, записанных в политике восстановления зашифрованных данных для данного компьютера, с дополнительной возможностью «File recovery»).

    Как и в предыдущем случае, общая часть ключа используется для шифрования списка FEK. Список зашифрованных ключей FEK также хранится вместе с файлом в специальной области EFS, которая называется DRF (data recovery field — поле восстановления данных). Для шифрования списка FEK в DRF используется только общая часть каждой пары ключей. Для нормального осуществления файловых операций необходимы только общие ключи восстановления. Агенты восстановления могут хранить свои личные ключи в безопасном месте вне системы (например, на смарт-картах). На рисунке приведены схемы процессов шифрования, дешифрования и восстановления данных.

    Процесс шифрования

    Незашифрованный файл пользователя шифруется при помощи случайно сгенерированного ключа FEK. Этот ключ записывается вместе с файлом, файл дешифруется при помощи общего ключа пользователя (записанного в DDF), а также при помощи общего ключа агента восстановления (записанного в DRF).

    Процесс дешифрования

    Сначала используется личный ключ пользователя для дешифрации FEK — для этого используется зашифрованная версия FEK, которая хранится в DDF. Расшифрованный FEK используется для поблочного дешифрования файла. Если в большом файле блоки считываются не последовательно, то дешифруются только считываемые блоки. Файл при этом остается зашифрованным.

    Процесс восстановления

    Этот процесс аналогичен дешифрованию с той разницей, что для дешифрования FEK используется личный ключ агента восстановления, а зашифрованная версия FEK берется из DRF.

    Реализация в Windows 2000

    На рисунке показана архитектура EFS:

    EFS состоит из следующих компонентов:

    Драйвер EFS

    Этот компонент расположен логически на вершине NTFS. Он взаимодействует с сервисом EFS, получает ключи шифрования файлов, поля DDF, DRF и другие данные управления ключами. Драйвер передает эту информацию в FSRTL (file system runtime library, библиотека времени выполнения файловой системы) для прозрачного выполнения различных файловых системных операций (например, открытие файла, чтение, запись, добавление данных в конец файла).

    Библиотека времени выполнения EFS (FSRTL)

    FSRTL — это модуль внутри драйвера EFS, который осуществляет внешние вызовы NTFS для выполнения различных операций файловой системы, таких как чтение, запись, открытие зашифрованных файлов и каталогов, а также операций шифрования, дешифрования, восстановления данных при записи на диск и чтении с диска. Несмотря на то, что драйвер EFS и FSRTL реализованы в виде одного компонента, они никогда не взаимодействуют напрямую. Для обмена сообщениями между собой они используют механизм вызовов NTFS. Это гарантирует участие NTFS во всех файловых операциях. Операции, реализованные с использованием механизмов управления файлами, включают запись данных в файловые атрибуты EFS (DDF и DRF) и передачу вычисленных в EFS ключей FEK в библиотеку FSRTL, так как эти ключи должны устанавливаться в контексте открытия файла. Такой контекст открытия файла позволяет затем осуществлять незаметное шифрование и дешифрование файлов при записи и считывании файлов с диска.

    Служба EFS

    Служба EFS является частью подсистемы безопасности. Она использует существующий порт связи LPC между LSA (Local security authority, локальные средства защиты) и работающим в kernel-mode монитором безопасности для связи с драйвером EFS. В режиме пользователя служба EFS взаимодействует с программным интерфейсом CryptoAPI, предоставляя ключи шифрования файлов и обеспечивая генерацию DDF и DRF. Кроме этого, служба EFS осуществляет поддержку интерфейса Win32 API.

    Win32 API

    Обеспечивает интерфейс программирования для шифрования открытых файлов, дешифрования и восстановления закрытых файлов, приема и передачи закрытых файлов без их предварительной расшифровки. Реализован в виде стандартной системной библиотеки advapi32.dll.

    Немного практики

    Для того чтобы зашифровать файл или каталог, выполните следующие операции:

    1. Запустите Windows Explorer, нажмите правую кнопку мыши на каталоге, выберите пункт Properties (Свойства).
    2. На закладке General (Общие) нажмите кнопку Advanced.
    1. Отметьте галочкой пункт «Encrypt contents to secure data». Нажмите OK, затем нажмите Apply (применить) в диалоге Properties. Если Вы выбрали шифрование отдельного файла, то дополнительно появится диалоговое окно следующего вида:

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

    На этом процесс шифрования данных можно считать законченным.

    Чтобы расшифровать каталоги, просто снимите выделение в пункте «Encrypt contents to secure data». При этом каталоги, а также все содержащиеся в них подкаталоги и файлы будут расшифрованы.

    Выводы
    • Система EFS в Windows 2000 предоставляет пользователям возможность зашифровывать каталоги NTFS, используя устойчивую, основанную на общих ключах криптографическую схему, при этом все файлы в закрытых каталогах будут зашифрованы. Шифрование отдельных файлов поддерживается, но не рекомендуется из-за непредсказуемого поведения приложений.
    • Система EFS также поддерживает шифрование удаленных файлов, доступ к которым осуществляется как к совместно используемым ресурсам. Если имеют место пользовательские профили для подключения, используются ключи и сертификаты удаленных профилей. В других случаях генерируются локальные профили и используются локальные ключи.
    • Система EFS предоставляет установить политику восстановления данных таким образом, что зашифрованные данные могут быть восстановлены при помощи EFS, если это потребуется.
    • Политика восстановления данных встроена в общую политику безопасности Windows 2000. Контроль за соблюдением политики восстановления может быть делегирован уполномоченным на это лицам. Для каждого подразделения организации может быть сконфигурирована своя политика восстановления данных.
    • Восстановление данных в EFS — закрытая операция. В процессе восстановления расшифровываются данные, но не ключ пользователя, при помощи которого эти данные были зашифрованы.
    • Работа с зашифрованными файлами в EFS не требует от пользователя каких-либо специальных действий по шифрованию и дешифрованию данных. Дешифрование и шифрование происходят незаметно для пользователя в процессе считывания и записи данных на диск.
    • Система EFS поддерживает резервное копирование и восстановление зашифрованных файлов без их расшифровки. Программа NtBackup поддерживает резервное копирование зашифрованных файлов.
    • Система EFS встроена в операционную систему таким образом, что утечка информации через файлы подкачки невозможна, при этом гарантируется, что все создаваемые копии будут зашифрованы
    • Предусмотрены многочисленные меры предосторожности для обеспечения безопасности восстановления данных, а также защита от утечки и потери данных в случае фатальных сбоев системы.

    26 января 2001 г.

    Станислав Коротыгин

    Как зашифровать файл

    3. Как зашифровать файл? Руки прочь от моих файлов!

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

    Вы, конечно, можете объяснить брату, что он не прав, подкрепив свои слова парой подзатыльников и другими весомыми аргументами. Это называется административные меры защиты.

    Вы можете поставить пароль на включение компьютера. Как думаете, сколько времени продержится такая защита? Правильно. Дня три-четыре. Потом ваш брат замучает вас просьбами разрешить ему поиграть в WarCraft, и вам придется поделиться с ним паролем.

    Было бы хорошо сделать так, чтобы ваш брат мог бы беспрепятственно играть в любимые игры, а доступ к чужим файлам был бы для него закрыт. Это называется разграничение доступа.

    Как же организовать разграничение доступа на своем компьютере? Если бы у вас была установлена не Windows 95, a Windows NT или UNIX, вы легко могли бы ограничить доступ к своим файлам. В UNIX вам пришлось бы набрать команду chmod с нужными параметрами, а в Windows NT хватило бы нескольких движений мышью. Но у вас стоит Windows 95, a Windows 95 разграничение доступа не поддерживает. Так что же вам делать? Неужели нельзя защитить свои файлы от других пользователей?

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

    кто-то, кроме вас, прочитает этот файл, он увидит не содержимое файла, а шифртекст. Конечно, используемый шифр должен быть достаточно стойким.

    Как вводить ключ?

    Как вы собираетесь вводить ключ в программу шифрования? Проще всего — с клавиатуры. Именно этот вариант реализован в большинстве готовых программ, и знакомство с ними начинается с вежливого приглашения: «enter your password. ». Только имейте в виду, что пароль, вводимый с клавиатуры, можно подсмотреть. Если программа шифрования при вводе пароля отображает его на экране, такой программой лучше не пользоваться. Когда при зашифровании файла вы вводите пароль, он тоже не должен отображаться на экране.

    А что случится, если при вводе пароля вы случайно нажали не ту клавишу? Вы думаете, что ввели один пароль, а на самом деле ввели другой. Пробуете расшифровать файл, а программа говорит: «Пароль неправильный». Чтобы такого не было, обычно программы шифрования при вводе пароля для зашифрования файла просят ввести пароль дважды. Если пользователь в первый раз ввел один пароль, а во второй раз — другой, значит, по крайней мере один раз он ошибся. А если оба раза пользователь ввел одно и то же, значит, все нормально. Вряд ли пользователь дважды ошибется одинаково.

    Как проверять правильность ключа?

    Кстати, а как программа при расшифровании файла определяет, что пароль неправильный? По-разному. Некоторые программы вообще не проверяют правильность пароля. В этом случае, если вы ввели неправильный пароль, файл как бы расшифруется, но вы увидите совсем не то, что зашифровали. Это неудобно. Предположим, вы зашифровали файл мегабайт в 50 с помощью алгоритма ГОСТ. Сколько времени он будет расшифроваться? Если у вас дома стоит обычный Pentium, то, по крайней мере, минуту. А скорее всего, минуты три. Вы все это время сидите, ждете, а потом оказывается, что зря ждали — пароль-то ввели неправильный. А если вы ехе-файл неправильно расшифровали, а потом запустили на выполнение? Скорее всего, придется давить Reset. Так что лучше, когда перед расшифрованием программа проверяет правильность пароля.

    Остается вопрос: как проверять правильность пароля? Можно просто вписать пароль в начало зашифрованного файла перед шифртекстом. При расшифровании вы вводите пароль, программа читает начало зашифрованного файла и сравнивает то, что вы ввели, и то, что в файле. Если совпало, значит, пароль правильный. А если не

    совпало — неправильный. Просто и удобно. Только что произойдет, если кто-нибудь другой случайно просмотрит зашифрованный файл, например, с помощью Norton Commander? Весь файл — сплошная абракадабра, а в начале файла — осмысленное слово. Не нужно быть семи пядей во лбу, чтобы догадаться, что это и есть пароль. Так что нужно придумывать что-то другое.

    Очевидно, эталон пароля, который хранится в зашифрованном файле, тоже надо зашифровать. Только как? Проще всего шифровать пароль по той же схеме, что и текст исходного файла. Если шифр стойкий (а иначе его и не стоит использовать), пароль будет закрыт надежно. А что брать в качестве ключа? Можно взять константу. Тогда в каждом зашифрованном файле эталон пароля будет зашифрован на одном и том же ключе. Так, например, делает встроенная система шифрования файлов электронной почты Sprint Mail. Только там зашифрованный пароль хранится не в начале зашифрованного файла, а в конце. Но что будет, если кто-то узнает ключ, на котором шифруются все пароли? Он сможет расшифровывать все файлы, которые вы зашифруете. И не важно, что пароли разные — злоумышленник возьмет нужный пароль прямо из файла, который хочет прочесть.

    Вы, скорее всего, подумали: а откуда злоумышленник узнает ключ, на котором шифруются эталоны паролей? Этот ключ встроен в программу шифрования, его никто не знает, даже вы его не знаете. Тем не менее, если злоумышленник достаточно квалифицирован, если он умеет пользоваться дизассемблером и отладчиком, этот ключ он узнает без труда. Обычно на решение такой задачи уходит всего несколько часов. Как это можно сделать — тема отдельной статьи. Пока поверьте на слово — имея только ехе-файл, определенные навыки и много свободного времени, можно разобраться в том, что делает программа, до мельчайших подробностей.

    Лучше шифровать эталон пароля сам на себе. Взять пароль в качестве открытого текста и взять тот же пароль в качестве ключа. При расшифровании файла, когда вы вводите пароль, программа пытается расшифровать только начало файла. Если в результате получилась строка, совпадающая с паролем, значит, пароль правильный, и можно расшифровывать файл дальше. А если получилось что-то другое, значит, пароль неправильный.

    Некоторые программы шифрования шифруют пароли иначе. Берется какая-то строка, всегда одна и та же, шифруется на пароле и записывается в зашифрованный файл. Diskreet, например, шифрует на пароле строку «ABCDEFGHENRIXYZ» (эта строка завершается нулевым байтом, как принято в языке С). Когда Diskreet проверяет пароль, он берет начало зашифрованного файла (точнее, байты с 16-го по 31-й) и расшифровывает их на пароле, который ввел пользователь. Если после

    расшифрования получилось «ABCDEFGHENRIXYZ» - пароль правильный, если не получилось — неправильный.

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

    Какой должен быть пароль?

    Какой длины должен быть пароль, чтобы защита была стойкой? Число различных вариантов пароля должно быть не меньше числа различных ключей. Если вы шифруете файл с помощью алгоритма ГОСТ, а для пароля используете только строчные английские буквы и хотите, чтобы стойкость защиты была не ниже стойкости ГОСТа, то длина пароля должна быть не меньше, чем (Здесь 2256 — число различных ключей число различных английских букв.) Так что вам придется придумывать -буквенный пароль. К тому же учтите, что если вы используете в качестве пароля не хаотичную последовательность букв, а осмысленную фразу, то нужно сделать поправку на избыточность языка. Если в пароль входят не только строчные буквы, но и заглавные, то для обеспечения необходимого числа ключей ГОСТ достаточно 51 символа. Только имейте в виду, что некоторые программы шифрования, получив пароль, преобразуют все его буквы к одному регистру. Например, Diskreet делает все английские буквы, входящие в пароль, заглавными. Вы можете использовать в пароле русские буквы, но будьте осторожны! Не все программы шифрования корректно работают с русскими паролями. Таблица 1 поможет вам оценить требуемую длину пароля в различных ситуациях.

    Имейте в виду, что данные в этой таблице относятся к тому случаю, когда в качестве пароля берется равномерно распределенная случайная последовательность символов. Если в качестве пароля вы используете только осмысленные слова и фразы, количество возможных вариантов пароля будет гораздо меньше. Если в качестве пароля используется длинная фраза русского языка, то, как показывают теоретико-информационные исследования, количество возможных вариантов будет равно не где число символов во фразе, а всего лишь (эта приближенная оценка верна только для больших Так что в этом случае для достижения стойкости DES придется брать пароль длиной 56 символов, а для достижения стойкости символов.

    Так стоит ли вообще использовать для шифрования пароль, вводимый с клавиатуры? Для ответа на этот вопрос надо определить для себя — от кого вы собираетесь защищать информацию. Если ваш противник умеет только подбирать пароль с клавиатуры, то в качестве пароля лучше всего взять осмысленное слово длиной 6-8 символов. Главное, чтобы злоумышленнику было трудно догадаться до этого слова. При этом надо помнить, что нельзя использовать в качестве пароля:

    - свое имя (фамилию, отчество, прозвище,

    - свою дату рождения (номер телефона, номер паспорта,

    - имя того файла, который вам надо зашифровать;

    - и все другие пароли, которые легко угадать.

    Если ваш противник, от которого вы защищаете информацию, умеет программировать, то он может написать программу, которая будет подбирать пароль автоматически. Даже если противник не умеет программировать, он может взять такую программу из Internet - там таких программ много. В этом случае пароль не должен быть осмысленным словом. В современном английском языке обычно употребляется всего около 100000 слов, в русском — чуть больше. Перебрать 100000 паролей можно очень быстро. Если в качестве шифра используется DES, на процессоре Pentium можно перебрать все английские слова-пароли всего за несколько секунд.

    Даже если пароль представляет собой слово, которого нет в словаре, его все равно можно легко угадать. Вы уже знаете, что порядок букв в словах и фразах естественного языка подчиняется определенным статистическим закономерностям. Например, в русском языке комбинация букв встречается часто, а никогда. Для большинства естественных языков статистика встречаемости символов документирована. Если программа перебора вначале подбирает наиболее вероятные пароли, а менее вероятные оставляет на потом, то перебор сокращается в десятки и сотни раз. Один из авторов видел, как подобная программа подобрала пароль natenok на компьютере с процессором 386DX-40 всего за 10 минут. Общая сложность перебора была равна Вот другие известные авторам случаи удачного подбора паролей:

    В первом случае пароль представлял собой два английских слова, записанных подряд без пробела. Одно из них было трехбуквенным,

    другое — пятибуквенным. Во втором случае пароль состоял из трех строчных английских букв, двух заглавных английских букв и одной цифры. Этот пароль был абсолютно бессмысленным. Выводы делайте сами.

    Лучший результат по подбору ключа был достигнут в 1997 году, когда в сети Internet был дешифрован файл, зашифрованный с помощью DES. В подборе ключа участвовали десятки тысяч пользователей Internet. Все множество ключей было разбито на непересекающиеся подмножества и каждый перебирал ключи из своего подмножества. Перебор длился несколько недель. Руководил работой добровольной «виртуальной» бригады взломщиков со своего сервера программист Рокки Версер — автор программы, перебирающей ключи. Общая сложность перебора составляла но ключ был найден после перебора всего 25% ключей. При этом «расколол» сообщение компьютер с процессором Pentium/90 с 16 Мбайт оперативной памяти. Оно гласило: «Надежная криптография делает мир безопасным».

    А можно ли обойтись без пароля?

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

    Можно, например, хранить ключ на дискете. Вы создаете каким-то образом (каким — обсудим позже) случайный, равновероятный и достаточно длинный ключ и записываете его на дискету. Когда программа шифрования запрашивает ключ, вы вводите ключ не с клавиатуры, а с дискеты. Вы просто вставляете дискету в дисковод, а программа считывает оттуда ключ и зашифровывает файл на этом ключе. При расшифровании файла программа просит «Вставьте ключевую дискету в дисковод». Вы вставляете дискету в дисковод, программа считывает оттуда ключ, проверяет его правильность и, если ключ правильный, расшифровывает файл.

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

    Ключевую дискету нужно хранить в месте, недоступном для злоумышленников. Если кто-то воспользуется вашей ключевой дискетой, то он сможет прочесть все, что вы зашифровали с ее помощью. Не теряйте ключевые дискеты! Если вы потеряете такую дискету, то тем

    самым вы потеряете все данные, которые вы зашифровали с ее помощью.

    Удобно ли пользоваться ключевыми дискетами? Нет. Но за надежность защиты приходится платить. Вообще, это общая закономерность — чем надежнее система защиты, тем труднее с ней работать. И наоборот, чем система защиты удобнее в обращении, тем она слабее. Конечно, разрабатывая систему защиты, можно наделать ошибок, и система получится и ненадежной, и неудобной. Но если система разрабатывалась на совесть, приведенное выше утверждение почти всегда верно.

    Можно ли как-нибудь защитить ключ, хранящийся на дискете? Конечно! Его тоже можно зашифровать. И не нужно для этого придумывать сложный шифр — вполне хватит самого примитивного шифра наподобие простой замены. Почему? Да потому, что ключ шифрования — текст случайный и равновероятный. На чем основан метод дешифрования шифра простой замены? На том, что открытый текст — это осмысленный текст. А в осмысленном тексте обязательно присутствуют статистические закономерности. Но в ключе никаких закономерностей нет — ключ случаен и равновероятен!

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

    Так как же быть? Подумайте сами. Один из возможных ответов вы найдете в конце главы.

    Где взять ключи?

    Каким должен быть ключ шифрования? Случайным и равновероятным. А как получить случайную и равновероятную последовательность символов? Правильно, с помощью генератора случайных чисел. Написать свой генератор «случайных» чисел очень просто. Хорошие по статистическим свойствам последовательности получаются по формуле линейного конгруэнтного метода:

    где член псевдослучайной последовательности; некоторые целые числа.

    Качество псевдослучайной последовательности зависит от выбора чисел Эти числа обязательно должны быть взаимно просты. Есть и другие правила выбора этих коэффициентов, о них можно прочитать в [1]. В Diskreet, например, используется следующий генератор

    Как видите, формула для получения очередного «случайного» числа рекурсивна — каждый член последовательности зависит от предыдущего. Возникает вопрос: откуда берется первый член? Обычно в качестве берут текущее время с точностью до тика таймера (0,054945 сек.). Если для генерации ключа используется линейный конгруэнтный метод, ключом является последовательность чисел где

    Предположим, что с помощью линейного конгруэнтного метода сгенерирована последовательность каждое есть короткое целое число (16 бит). Созданный ключ представляет собой случайную равновероятную последовательность длиной 256 байт. Оценим, сколько различных вариантов ключа можно получить по данной схеме.

    Зафиксируем значение Какие значения может принимать Только одно значение. Если фиксировано, то значение определено однозначно:

    Значение тоже определено однозначно. Оно равно

    Таким образом, значение однозначно определяет значения всех следующих членов последовательности. Получается, что различных последовательностей в точности столько же, сколько различных значений . В нашем примере короткое целое число, принимающее значения от 0 до Оказывается, что стойкость ключевой системы (число различных вариантов ключа) равна не 2256, а всего лишь 216, что в раз меньше!

    Получается, что псевдослучайные последовательности в качестве ключей использовать нельзя. А что можно?

    В чем слабость псевдослучайных последовательностей? В том, что они псевдослучайны. Первый член последовательности однозначно определяет остальные. Чтобы ключ был по-настоящему случайным и равновероятным, последовательность должна быть не псевдослучайной, а истинно случайной.

    Где взять истинно случайную последовательность?

    На первый взгляд, эта задача очень проста. Можно, например, вычислить случайный адрес памяти и взять оттуда данные. Или можно вычислить случайный номер сектора на диске и взять данные оттуда.

    Эти данные, бесспорно, будут случайными. Но какое распределение будут иметь члены полученной случайной последовательности? Неизвестно. Если полученные случайные данные представляют собой фрагмент текстового файла, то распределение символов, представляемых байтами файла, будет одно, если это фрагмент машинного кода — совсем другое. Одно можно сказать точно — это распределение почти никогда не будет равномерным. Ниже приведены гистограммы встречаемости символов для различных видов информации.

    Как видите, из всех приведенных гистограмм только последняя более менее похожа на гистограмму равномерного распределения. Однако, если приглядеться повнимательнее, в ней можно заметить пик вдоль оси Y (впрочем, этот пик нетипичен для архивов он объясняется тем, что выбранный архив включал в себя очень много коротких файлов).

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

    Как видите, распределения отличаются довольно сильно. Получается, что если в документе есть картинки, исходное распределение одно, а если нет — совсем другое.

    Кроме того, в осмысленных текстах (в том числе и в текстах ехе-файлов, баз данных и т. д.) обязательно присутствуют статистические закономерности более высокого порядка. Если построить гистограмму встречаемости биграмм и триграмм, она будет еще менее похожа на горизонтальную линию (что должно иметь место при равномерном распределении), чем гистограмма встречаемости отдельных символов. Например, в ехе-файле, скомпилированном с помощью Visual С++, машинный код подавляющего большинства функций (подпрограмм) начинается байтами

    и заканчивается байтами

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

    Так где же взять случайную последовательность?

    Возможно, у вас уже появилась мысль, что истинно случайную последовательность программным путем не получить. Это не так. Существует, по крайней мере, один способ, позволяющий получить истинно случайную последовательность байтов. Основная идея этого способа заключается в том, чтобы привлечь к процессу выработки случайной последовательности самого пользователя.

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

    Случайная? Несомненно. Равномерно распределенная? Вряд ли. Какое у нее будет распределение? Трудно сказать. Если пользователь набирает текст, получится одно распределение, если работает с Norton Commander - другое, если играет в Tetris - третье. Будут ли соседние элементы последовательности зависеть друг от друга? Скорее всего, да.

    Кажется, что никаких преимуществ по сравнению с предыдущим методом нет. Однако в отличие от предыдущего метода в данном случае все перечисленные проблемы можно решить.

    Для начала посмотрим, можно ли написать программу генерации ключа так, чтобы распределение исходной случайной величины было известно. Исходная случайная величина у нас — это продолжительность интервала между нажатиями клавиш. В разных ситуациях эта величина распределена по-разному. Выберем ситуацию, когда распределение этой случайной величины легко посчитать. Пусть, например, пользователь в процессе выработки ключа играет в Tetris. При игре в Tetris частота нажатий на клавиши мало зависит от пользователя, другими словами, все пользователи, играя в Tetris, нажимают на клавиши примерно одинаково часто (конечно, кроме пользователей, которые играют в Tetris первый раз в жизни).

    Распределение интервалов времени между последовательными нажатиями на клавиши несложно рассчитать. Для этого нужно прежде всего написать резидентную программу, которая перехватывала бы прерывание 16h, отвечающее за работу с клавиатурой, при каждом вызове прерывания получала бы текущее значение таймера, сравнивала его с предыдущим полученным значением, вычисляла разность и записывала полученное число в файл. Затем нужно запустить эту программу и, пока она работает, поиграть некоторое время в Tetris. Проведите этот эксперимент в качестве упражнения.

    Посмотрите на рисунок. Распределение нашей случайной величины будет выглядеть примерно так:

    Распределение явно неравномерное, но это и не важно. Важно то, что распределение случайной величины при разных испытаниях примерно одинаково. Преобразовать это распределение в равномерное совсем несложно.

    Остается решить последнюю проблему. Таймер компьютера тикает с частотой 18,2 раза в секунду, т. е. один тик занимает примерно 55 миллисекунд. Когда пользователь нажимает клавиши подряд, не думая, или просто держит клавишу нажатой, интервалы между последовательными нажатиями составляют 100-200 миллисекунд. Получается, что первый пик на приведенном графике на самом деле выглядит примерно так, как показано на рисунке.

    А это нехорошо — в полученной случайной последовательности числа 2 и 3 будут встречаться гораздо чаще, чем любые другие. После преобразования к равномерному распределению значения этих часто встречающихся чисел изменятся, но сам факт наличия двух-трех значений, на которые приходится львиная доля наблюдений, останется.

    Получается, что нам мешает дискретность таймера персонального компьютера. Как от нее избавиться? Подумайте сами. Один из возможных ответов вы найдете в конце главы.