RSA 1024bit: Advanced Security в MetaTrader 4

 
Про просьбе некоторых банков и брокерских компаний, со 154-го билда включена возможность использования режима повышенной безопасности(Advanced Security) при авторизации счета с использованием электронной цифровой подписи(ЭЦП) на основе алгоритма RSA с длиной ключа в 1024 бита. Режим Advanced Security используется дополнительно к нашему стандартному протоколу на основе 128-ми битных ключей по алгоритму MD5.

Для включения этого режима достаточно включить галочку "Advanced Security" в настройках группы пользователей на сервере. После чего сервер начинает требовать дополнительной авторизации (но для подключений с инвесторским паролем этого не нужно).

Для демонстрации работы режима Advanced Security мы добавили в дистрибутив возможность выбора специальной группы счетов "advanced" при выделении тренировочных счетов. К сожалению, для этого необходимо скачать и инсталлировать полную версию терминала, так как служба LiveUpdate не обновляет конфигурационные файлы настроек на компанию(поэтому группы "advanced" не видно):



Если на сервере еще нет публичного(в RSA используются публичные и приватные) ключа клиента, то клиенту при первом подключении предлагают тут же сгенерировать эти ключи:



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

Важно отметить, что на сервер отсылается только открытый ключ, который пригоден только для дешифровки сообщений. Это означает, что ваш закрытый ключ остается только у вас и никто не сможет зайти на ваш счет без этого ключа. Кстати, полный пакет ключей (открытый и закрытый) сохраняется в каталоге /config по именем "номер_счета-краткое_имя_компании-тип_сервера.key". Пример: 28476-MetaQuotes-Demo.key . Берегите свои ключи! Для смены этих ключей необходимо связаться со службой поддержки брокерской компании и попросить сбросить предыдущий публичный ключ на сервере, а затем заново сгенерировать его при подключении.

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


Краткое описание алгоритма RSA:

Алгоритм RSA стоит у истоков асимметричной криптографии. Он был предложен тремя исследователями-математиками Рональдом Ривестом (R.Rivest) , Ади Шамиром (A.Shamir) и Леонардом Адльманом (L.Adleman) в 1977-78 годах.

Первым этапом любого асимметричного алгоритма является создание пары ключей : открытого и закрытого и распространение открытого ключа "по всему миру". Для алгоритма RSA этап создания ключей состоит из следующих операций :

1) Выбираются два простых (!) числа p и q
2) Вычисляется их произведение n(=p*q)
3) Выбирается произвольное число e (e<n), такое, что НОД(e,(p-1)(q-1))=1, то есть e должно быть взаимно простым с числом (p-1)(q-1).
4) Методом Евклида решается в целых числах (!) уравнение e*d+(p-1)(q-1)*y=1. Здесь неизвестными являются переменные d и y – метод Евклида как раз и находит множество пар (d,y), каждая из которых является решением уравнения в целых числах.
5) Два числа (e,n) – публикуются как открытый ключ.
6) Число d хранится в строжайшем секрете – это и есть закрытый ключ, который позволит читать все послания, зашифрованные с помощью пары чисел (e,n).

Как же производится собственно шифрование с помощью этих чисел :

1) Отправитель разбивает свое сообщение на блоки, равные k=[log2(n)] бит, где квадратные скобки обозначают взятие целой части от дробного числа.
2) Подобный блок, как Вы знаете, может быть интерпретирован как число из диапазона (0;2k-1). Для каждого такого числа (назовем его mi) вычисляется выражение ci=((mi)e)mod n. Блоки ci и есть зашифрованное сообщение Их можно спокойно передавать по открытому каналу, поскольку.операция возведения в степень по модулю простого числа, является необратимой математической задачей. Обратная ей задача носит название "логарифмирование в конечном поле" и является на несколько порядков более сложной задачей. То есть даже если злоумышленник знает числа e и n, то по ci прочесть исходные сообщения mi он не может никак, кроме как полным перебором mi.

А вот на приемной стороне процесс дешифрования все же возможен, и поможет нам в этом хранимое в секрете число d. Достаточно давно была доказана теорема Эйлера, частный случай которой утвержает, что если число n представимо в виде двух простых чисел p и q, то для любого x имеет место равенство (x(p-1)(q-1))mod n = 1. Для дешифрования RSA-сообщений воспользуемся этой формулой. Возведем обе ее части в степень (-y) : (x(-y)(p-1)(q-1))mod n = 1(-y) = 1. Теперь умножим обе ее части на x : (x(-y)(p-1)(q-1)+1)mod n = 1*x = x.

А теперь вспомним как мы создавали открытый и закрытый ключи. Мы подбирали с помощью алгоритма Евклида d такое, что e*d+(p-1)(q-1)*y=1, то есть e*d=(-y)(p-1)(q-1)+1. А следовательно в последнем выражении предыдущего абзаца мы можем заменить показатель степени на число (e*d). Получаем (xe*d)mod n = x. То есть для того чтобы прочесть сообщение ci=((mi)e)mod n достаточно возвести его в степень d по модулю m : ((ci)d)mod n = ((mi)e*d)mod n = mi.

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


Описание алгоритма RSA взято по ссылке: http://www.citforum.ru/security/belyaev_book/its2000_42.shtml
 
Кто-нибудь вообще воспользовался этим режимом выбрав группу "advanced" ?
 
Попытался открыть Advanced счет сейчас (сервер Альпари, билд 154 - не LiveUpdate), новый счет открыли, пароль инвесторский дали, а как перейти на RSA1024 - не понял. При открытии ничего такого не предлагалось, думал, что потом можно изменить - а все то же, и новой возможности н появилось.
 
Чайник я, н заметил списка. Сейчас снова попробую открыть.
 
Нет, все то же самое, хотя я и выбрал тип Advanced. Никаких ключей не предлагалось сгенерировать.
 
Попытался открыть Advanced счет сейчас (сервер Альпари, билд 154 - не LiveUpdate), новый счет открыли, пароль инвесторский дали, а как перейти на RSA1024 - не понял. При открытии ничего такого не предлагалось, думал, что потом можно изменить - а все то же, и новой возможности н появилось.

Если выделяете счет из группы "advanced" на нашем демо-сервере, то счет будет сразу же с дополнительными ключами. Если при выделении демо-счета в Альпари не видите дополнительных запросов на генерацию счета, то значит у них еще не включен режим Advanced Security в настройках групп.
 
Нет, все то же самое, хотя я и выбрал тип Advanced. Никаких ключей не предлагалось сгенерировать.

Попробуйте еще раз - у них только что включили этот режим. Дополнительная авторизация уже работает для группы advanced.
 
Теперь получилось, счет открыли, генерацию ключей сделал. Не могу поменять пароль.
Счет №4671 Альпари
 
Теперь получилось, счет открыли, генерацию ключей сделал. Не могу поменять пароль.
Счет №4671 Альпари

Оказалось, что при расширенном режиме мы забыли использовать RSA ключи при подключении для смены паролей - вот сервер и не дает сменить пароль. На обычных аккаунтах все работает нормально. Уже исправили - завтра будет обновление. Спасибо за обнаруженную ошибку.
 

Сегодня по давно открытому счету внезапно появился запрос на генерацию ключа - ДЦ Альпари. Поэтому ряд вопросов:

1. Что будет, если я откажусь от передачи ключа ДЦ

2. Если я передам ключ и мне понадобиться подключиться к аккаунту через другой компьютер или подключить более одного компьютера к счету, то как это организовать?

3. Будут ли работать альтернативные варианты терминала - WEB платформа и телефонные варианты? 

Причина обращения: