Как добавить созданный нами алгоритм шифрования сеанса в (основной) браузер с помощью OpenSSL

Я новичок в OpenSSL и имею теоретическую информацию по протоколу SSL. У меня есть задача создать сертификат, который использует алгоритм RSA для симметричного обмена ключами сеанса и использовать мой собственный алгоритм шифрования под названием FooSymmetricAlgorithm для симметричного сеансового ключа. Мне нужен способ указать браузеру и веб-серверу использовать FooSymmetricAlgorithm в качестве симметричного алгоритма. Я знаю, что могу импортировать свой корневой сертификат в браузер, но я думаю, что это не означает, что я могу добавить свой алгоритм шифрования в браузер. Моя проблема заключается в том, как я могу указать браузеру использовать FooSymmetricAlgorithm для сеансового ключа и шифрования. Это не разница между браузером. Достаточно иметь браузер, и я буду использовать его только для тестов.

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


person Seyed Morteza Mousavi    schedule 30.10.2014    source источник
comment
Вы хотите, чтобы этот алгоритм был объединен с самим проектом OpenSSL? Или это гипотетический вопрос о том, как можно добавить набор шифров в спецификацию TLS? Или вы просто хотите понять, как можно было бы добавить шифр в кодовую базу OpenSSL (без намерения слить его вверх по течению)?   -  person Stephen Touset    schedule 30.10.2014
comment
@StephenTouset Я хочу просто протестировать его с помощью OpenSSL. Я хочу увидеть, практично ли использовать мой собственный алгоритм в OpenSSL?   -  person Seyed Morteza Mousavi    schedule 30.10.2014
comment
Вопрос слишком широк, чтобы на него можно было ответить… тем более, что вы не указали свой уровень знаний. Поскольку я предполагаю, что вы не ожидаете, что мы напишем книгу, вы можете отредактировать свой вопрос и добавить еще несколько деталей. Пока вы этим занимаетесь: вам не знакомы такие вещи, как «импорт сертификатов в браузеры», «настройка веб-сервера для поддержки SSL» или «модификация и компиляция OpenSSL»? Или все это звучит как иностранный язык? Я спрашиваю, потому что, в зависимости от деталей, ответы будут находиться где-то между всем этим. Редактируя свой вопрос, вы поможете нам ответить на него.   -  person e-sushi    schedule 31.10.2014
comment
Кое-что из этого даже не имеет смысла. Сертификаты не используют алгоритм RSA для обмена симметричными ключами, и вы не используете наборы шифров для сеансовых ключей, все наоборот.   -  person user207421    schedule 01.11.2014


Ответы (1)


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

Вы должны добавить свой собственный набор шифров в браузер, что означает внесение изменений в исходный код в NSS (Chrome, Firefox). Затем вам нужно внести изменения в стек TLS, используемый сервером, и добавить туда набор шифров. Подробнее о том, как это сделать, см. в описании реализации существующих наборов шифров в OpenSSL и/или NSS. Поскольку набор шифров не назначен IANA вы должны использовать один из идентификаторов шифров, помеченных для частного использования.

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

person Steffen Ullrich    schedule 31.10.2014
comment
спасибо, мы можем использовать команду s_client OpenSSL вместо браузера? - person Seyed Morteza Mousavi; 01.11.2014
comment
В этом случае вам нужно будет реализовать только для OpenSSL, а не для NSS, но все остальное остается прежним. Но, учитывая, что вы задаете такие базовые вопросы, я сомневаюсь, что у вас есть необходимые знания, чтобы делать все эти вещи. - person Steffen Ullrich; 01.11.2014
comment
Есть ли какой-либо документ, который помогает мне только для реализации OpenSSL. Я имею в виду, как я могу добавить свой алгоритм шифрования и использовать его для симметричного шифрования. вопрос в stackoverflow.com/questions/26673141/. - person Seyed Morteza Mousavi; 01.11.2014
comment
OpenSSL и документация в этой глубине? Нет, вы должны прочитать исходный код. - person Steffen Ullrich; 01.11.2014
comment
Танк вам за вашу помощь в любом случае. - person Seyed Morteza Mousavi; 01.11.2014