Как стать автором
Обновить

Комментарии 15

Хорошая работа. Два замечания/совета:
1. Подобные вещи очень желательно наследовать от System.Security.Cryptography.SymmetricAlgorithm и System.Security.Cryptography.ICryptoTransform — тогда вашу реализацию можно будет подсунуть любому другому классу, который работает с симметрическим шифрованием.
2. Выложить это все на GitHub или SourceForge — это полезно для вас, как разработчика, все таки собственный опенсорсный проект, пусть даже и такой маленький — это замечательный «плюс в карму» для любого разработчика.
П.С. К сожалению ссылка на исходник у меня почему-то не работает, поэтому я не могу его посмотреть.
Спасибо за комментарий!

1. Попробую посмотреть, как это сделать. Это действительно придаст завершенности и пригодности этому проекту.
2. Начал разбираться с SourceForge.net — создал проект и вставил ссылку на исходник оттуда. Вроде бы теперь все нормально.
гугл находит 100500 реализация rc4 на c#
Не могу с Вами не согласиться. Но во-первых я постараюсь довести реализацию до должного уровня на основе совета mace (см. выше), дабы она приобрела ценность, а во-вторых всё же я попробовал объяснить на русском языке, почему создавался этот алгоритм, как помодульно он реализуется, и чем же эти блоки занимаются.
Это моя первая публикация, и я буду очень рад улучшить и расширить статью.
Ждем собирательного анализа криптоалгоритмов на базе сетей Фейстеля. И про ChipherSaber не забудьте :)
К сожалению, ничего не сказано о том, что всё-такие такое ключ. У настоящего RC4 ключи генерируются на основе LFSR.
*всё-таки
Кхм, это вы с чего такое решили? В статье же С# по белому написано как генерируется псевдослучайная последовательность из ключа. И никакого LFSR там и близко не валялось. И вот, кстати, пруф на педивикии где уже русским языком написано цитирую: «Поскольку шифр RC4 не использует LFSR и основан на байтовых операциях, его удобно реализовывать программно.»
Вы правы, в самом алгоритме LFSR нет. Я лишь хотел сказать, что автор алгоритма рекомендовал генерировать ключи на основе LFSR. Т.е. сгенерировали последовательность и отдали вместо ключа. А что там под капотом уже не интересно.
Удалось трафик игры расшифровать? Если да, то как в итоге ключ удалось достать?
Удалось. Для трафика клиента и сервера используются разные ключи и базами для генерации ключей клиент и сервер обмениваются в начальных пакетах в открытом виде. Конечный ключ формируется так: объединяется базовый ключ с хэшем пароля (passHash+baseKey), а затем объединение пропускается через HMACMD5 c логином в качестве ключа.
Мой минус в том, что алгоритм получения конечного ключа, который я описал, получить возможно только с помощью реверс-инжиниринга программы клиента. Этого я не делал положившись на работу «старшего» программиста.
Так же думаю, что многим будет интересна реализация протокола компрессии данных MPPC, реализацию которого даже на C достать через гугл невозможно. Он уже посложнее RC4, но на него есть RFC, хотя он не помогает до конца написать реализацию для распаковки серверного траффика игры в связи с тем, что разработчики внесли в него некоторые изменения. Думаю будет интереснее и мне и хабрасообществу проследить весь путь восстановления алгоритма из дизасм-листинга.
Жаль, что уже есть. Сделано весьма приятно. Но я думаю это не помешает изобрести мне велосипед. Это будет хороший опыт.
да, безусловно, иногда велосипедить полезно.
сам люблю криптографию, даже ВКР про нее написал. :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории