сборки: l2jserver, l2jfree (остальные просто не смотрел)
В чём смысл создания 10 keypair'ов ? Какой-то вид защиты от нубоботов, которые будут пугаться при виде новых публичных ключей? Или я чего-то недопонимаю?
Ну у меня сейчас цель вычистить всё то что там наделали гореразработчики.. Может здесь кто подскажет что двигало человеком, который добавлял rsa.. Ато вдруг это что-то важное(вот только я даже не могу представить зачем это могло понадобиться) :)
RSA шифрует пакет RequestAuthLogin.Для каждого клиента - своя пара.Почему же их 10 ? Ну,судя по описанию,как только возникает надобность,одна из пар обновляется.Что же касается защиты,то прироста это не даст.Взять в пример тот же RequestAuthLogin,пакет от клиента,в котором передаются логин и пароль (самый защищённый
).Принцип прост : перехватываем пакет Init,пришедший от сервера,зная статический ключ BlowFish расшифровываем пакет,полученный результат - пакет,зашифрованный XOR'ом,т.е. ключ шифра в конце пакета.Расшифровав во второй раз (в надобности этого действия не уверен) мы изымаем из него публичный ключ RSA и динамический (для каждого клиента генерируется свой) ключ BlowFish,которым будут шифроваться все остальные пакеты.Далее ловим пакет RequestAuthLogin (от клиента) и сталкиваемся с основной проблемой : перед отсылкой пакета,клиент его шифрует публичным ключом RSA,который мы уже знаем.Но чтобы расшифровать закриптованный пакет - нужен секретный ключ,вторая часть пары.А он хранится на сервере.Вот для этого и нужно много обновляющихся пар.Так что логин и пасс остаются в сохранности
А все остальные пакеты можно расшифровать также как и Init,только используя второй,динамический ключ BlowFish.
З.Ы. В точности не уверен,ибо изложил как знаю/понимаю.Надеюсь ты понял значимость RSA
Кстати,а чего в итоге ты хочешь добиться этой чисткой ?
что-то мне их криптография совсем мозг взрывает, массив из 20 симметричных ключей(Blowfish) для чего :) После пары сотен соединений я смогу собрать весь этот массив ключей. Хотя вероятность того что смогу с ними что-то сделать мала, но сам принцип того что есть какой-то постоянный пул для симметричных ключей - какой-то бред..
Это бессмысленно,но синтаксически допустимо
Хотя смысл здесь какой-то должен быть.Вернёмся к https.В своё время я увлекался созданием "самопальных сертификатов" ) В одной статье было пояснение о том,что секретный ключ надо держать "за семью печатями",ибо в случае компроментации все соединения окажутся незащищёнными.Но здесь другая концепция,такого не может произойти.Во-первых даже одна пара генерируется,так что при каждом запуске пара ключей будет другой (и не исключено,что при надобности будет обновляться) :) Во-вторых кого волнует,вскроют ли пакет ? 20 ключей BlowFish - опять же иммитация (именно она) генерации динамического ключа.Ведь одно дело,когда ключ генерируется,а другое - когда из небольшого массива случайно выбирается.Да,пусть они и обновляются,но всё же.
Обычно как всё происходит - для каждого сокета имеется свой ключ селекции,у которого аттач - объект класса L2LoginClient.И для каждого такого объекта - полагается случайный ключ из массива (как RSA,так и BF).И знаете,пожалуй вы правы.Секретные ключи как были,так и останутся на сервере,так что эта "динамика" может идти лесом =) Честно говоря мне как-то и не приходила идея сократить ключи до одного.Блин,кажется одно и тоже написал дважды,но смысл думаю ясен ![]()
З.Ы. 2nuit,а вы случайно не зарегестрированы под этим же ником на aion-emu ? )
Ну тогда наверно лучше сделать синглтон или вообще статические методы.Просто тому,кто это писал было проще сделать экземплярный вариант.Хмм,посидел немного и смастерил вот это
:
смотри как у меня на Си всё просто и понятно :)