# Общие понятия

## Безопасность Bluetooth: Парные устройства

### Что такое "Парные устройства"?

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

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

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

### Как это работает?

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

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

### Программа-транслятор PIN кода

Куда нужно вводить PIN код? Как упоминалось выше, устройства попросят вас ввести PIN код, когда это потребуется. Для BlueZ этот процесс немного сложнее, так как существует несколько способов запроса PIN кода у пользователя.

Как правило, hcid BlueZ настраивают на использование "транслятора PIN кодов" и задают значение "security user;" в `/etc/bluetooth/hcid.conf`. Транслятор - это небольшая программа, которая запрашивает у пользователя число и перенаправляет вывод этого числа в поток stdout. Bluez поставляется с транслятором - "bluepin", работа с которым может доставить вам много неприятностей. Мы рекомендуем пользоваться программой "bluez-pin" и конечно же собственным транслятором kdebluetooth - "kbluepin". Об установке и настройке транслятора PIN кодов см. раздел инструкции по настройке.

### Управление парными устройствами

После того, как вы подсоединили несколько парных устройств, могут возникнуть вопросы: какое из устройств с кем в паре? Что будет, если вы захотите удалить некоторые из парных устройств? Ответы на них неутешительны.

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

Как связующие ключи могут быть удалены? Это зависит от устройств. У большинства телефонов или КПК существует список "парных" или "доверенных" устройств, из которого вы можете удалить один из пунктов. В текущей версии пакета Bluez utils (2.6), связующие ключи записаны в файле `/etc/bluetooth/link_key`. До тех пор, пока связующие ключи должны храниться в секрете, это файл доступен только суперпользователю. Вы можете без вреда для системы удалить этот файл, но все установленные пары распадутся.Так как файл является бинарным, вы не можете редактировать его без использования специальных программ. В настоящий момент пакет kdebluetooth не содержит программ для чтения или записи этого файла, так как обработка связующих ключей программой Bluez в скором времени будет изменена.

Если две операционные системы работают с устройствами Bluetooth, то при переключении из одной операционной системы в другую информация о состоянии связей беспроводных устройств теряется. Когда вы установили связь между компьютером и телефоном под Linux, а затем загрузили Windows, Windows ничего не знает о том, что связующие ключи управляются Bluez. Таким образом возникает ситуация, когда компьютер сбрасывает установленные связующие ключи и вам нужно будет заново устанавливать соединение. В зависимости от характеристик устройства создание нового соединения может быть невозможно без удаления старого связующего ключа для телефона. Вы можете столкнуться с той же проблемой в Bluez, если выберите параметр "paring single;" в файле `/etc/bluetooth/hcid.conf`. Используйте различные адаптеры Bluetooth для каждой из операционных систем. Существует потенциальная возможность удаления связующих ключей в момент перезагрузки операционных систем, но, к сожалению, нам неизвестны такие программы.