Меню
Главная
Форумы
Новые сообщения
Что нового?
Новые сообщения
Вход
Регистрация
Что нового?
Новые сообщения
Меню
Вход
Регистрация
Соцсети заблокировали! Простой способ обхода блокировки Twitter и Facebook
здесь
-----
Форум блокируют за
антивоенную статью
-----
В связи с преследованиями за инакомыслие, теперь можно
анонимно
отвечать в темах.
-----
Обновлен
скрипт для определения IP госорганов
-----
Наш реестр запрещенных сайтов
с широким функционалом.
Создаем свой генератор зеркал
для обхода блокировки.
Главная
Форумы
Противодействие интернет-цензуре
Софт и технологии для обхода цензуры
[Программа] Шифрование Диффи-Хеллмана на JavaScript
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Ответить в теме
Сообщение
<p>[QUOTE="fxkonferenco, post: 7916, member: 1499"]</p><p>Всем привет!</p><p></p><p>Вижу, что темой заинтересовалось немного пользователей, потому решил добавить два замечания на счёт самого протокола Диффи-Хеллмана-Меркла и КСГПСЧ из потокового шифра RC4, который был использован в моей переделке.</p><p></p><p>Во-первых, протокол даёт возможность устанавливать <strong>только анонимные</strong> соединения между абонентами, когда ни одна из сторон не имеет возможности подтвердить свою личность без каких-либо дополнительных действий. Это означает, что вероятный нападающий, у которого есть возможность осуществлять активные действия в канале передачи данных (перехватывать, задерживать, изменять или удалять сообщения), может провести классическую атаку "Человек посередине" (<a href="https://ru.wikipedia.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0">https://ru.wikipedia.org/wiki/Атака_посредника</a>), когда каждому из двоих абонентов он будет представляться его собеседником. И такой подлог может долго оставаться никак незамеченным, если злоумышленник будет просто ретранслировать сообщения абонентов друг другу, просто читая их или внося несущественные правки, которые его предположительно никак не выдадут.</p><p></p><p>Потому после криптографической защиты канала нужно как-то удостовериться, что вы общаетесь именно с тем человеком, за которого себя выдаёт ваш собеседник: проверить какой-то предварительно согласованый общий секрет, поинтересоваться подробностями какого-нибудь общего для вас события, которое (не)происходило в прошлом, или просто позвонить, если вы оба знакомы лично и хорошо знаете голоса друг друга, и проверить, какими открытыми ключами вы обменялись.</p><p></p><p>Во-вторых, недавно я заметил одну не очень хорошую особенность шифра RC4: если ввести парольную фразу, состоящую из одного и того же символа, то независимо от длинны такой парольной фразы, гамма будет одинаковая. То есть, парольные фразы <em>11111111</em> и <em>111111111111111111111111111111111111111</em> для RC4 полностью одинаковы.</p><p></p><p>Безусловно я далёк от мысли, что кто-нибудь из читающих это сообщение действительно додумается выбрать себе такую парольную фразу, и тем не менее предложу два способа, как можно защитить дурака от самого себя. Можно или дописать перед КСГПСЧ какую-нибудь криптостойкую хеш-функцию (например, SHA-2), которая сначала обработает парольную фразу, а потом уже её выход передать в RC4, или изменить саму процедуру засеивания ключевого массива (но в таком случае это будет уже не RC4, а что-то подобное на него).</p><p></p><p>В интернете полно javascript'овых реализаций различных криптостойких хеш-функций, потому прикрутить понравившуюся не должно составить особого труда, а для тех, кто захочет модифицировать процедуру засеивания ключеваого массива, укажу, где это сделать: в <em>function RC4</em> нужно изменить строку <em>j = (j + sbox<em> + pasvorto.charCodeAt(i % pasvorto.length)) % 65536;</em></em> так, чтобы код каждого символа парольной фразы зависел от его позиции в ней. Я бы переписал эту строку так: <em><em>j = (j + sbox<em> + <em><strong>((i + 1) % pasvorto.length) * </strong></em>pasvorto.charCodeAt(i % pasvorto.length)) % 65536;</em></em></em>. Единица ко счётчику "i" добавляется потому, что нумерация ячеек ключевого массива начинается с ноля, что при операции умножения совсем нехорошо, так как при любых обстоятельствах немало элементов ключевого массива были бы очень угадываемыми (ведь 0 * x = 0).</p><p></p><p>Если у вас возникают вопросы или есть какая-то критика, пишите в эту ветку. Всего хорошего!</p><p>[/QUOTE]</p>
[QUOTE="fxkonferenco, post: 7916, member: 1499"] Всем привет! Вижу, что темой заинтересовалось немного пользователей, потому решил добавить два замечания на счёт самого протокола Диффи-Хеллмана-Меркла и КСГПСЧ из потокового шифра RC4, который был использован в моей переделке. Во-первых, протокол даёт возможность устанавливать [B]только анонимные[/B] соединения между абонентами, когда ни одна из сторон не имеет возможности подтвердить свою личность без каких-либо дополнительных действий. Это означает, что вероятный нападающий, у которого есть возможность осуществлять активные действия в канале передачи данных (перехватывать, задерживать, изменять или удалять сообщения), может провести классическую атаку "Человек посередине" ([URL='https://ru.wikipedia.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0']https://ru.wikipedia.org/wiki/Атака_посредника[/URL]), когда каждому из двоих абонентов он будет представляться его собеседником. И такой подлог может долго оставаться никак незамеченным, если злоумышленник будет просто ретранслировать сообщения абонентов друг другу, просто читая их или внося несущественные правки, которые его предположительно никак не выдадут. Потому после криптографической защиты канала нужно как-то удостовериться, что вы общаетесь именно с тем человеком, за которого себя выдаёт ваш собеседник: проверить какой-то предварительно согласованый общий секрет, поинтересоваться подробностями какого-нибудь общего для вас события, которое (не)происходило в прошлом, или просто позвонить, если вы оба знакомы лично и хорошо знаете голоса друг друга, и проверить, какими открытыми ключами вы обменялись. Во-вторых, недавно я заметил одну не очень хорошую особенность шифра RC4: если ввести парольную фразу, состоящую из одного и того же символа, то независимо от длинны такой парольной фразы, гамма будет одинаковая. То есть, парольные фразы [I]11111111[/I] и [I]111111111111111111111111111111111111111[/I] для RC4 полностью одинаковы. Безусловно я далёк от мысли, что кто-нибудь из читающих это сообщение действительно додумается выбрать себе такую парольную фразу, и тем не менее предложу два способа, как можно защитить дурака от самого себя. Можно или дописать перед КСГПСЧ какую-нибудь криптостойкую хеш-функцию (например, SHA-2), которая сначала обработает парольную фразу, а потом уже её выход передать в RC4, или изменить саму процедуру засеивания ключевого массива (но в таком случае это будет уже не RC4, а что-то подобное на него). В интернете полно javascript'овых реализаций различных криптостойких хеш-функций, потому прикрутить понравившуюся не должно составить особого труда, а для тех, кто захочет модифицировать процедуру засеивания ключеваого массива, укажу, где это сделать: в [I]function RC4[/I] нужно изменить строку [I]j = (j + sbox[I] + pasvorto.charCodeAt(i % pasvorto.length)) % 65536;[/I][/I] так, чтобы код каждого символа парольной фразы зависел от его позиции в ней. Я бы переписал эту строку так: [I][I]j = (j + sbox[I] + [I][B]((i + 1) % pasvorto.length) * [/B][/I]pasvorto.charCodeAt(i % pasvorto.length)) % 65536;[/I][/I][/I]. Единица ко счётчику "i" добавляется потому, что нумерация ячеек ключевого массива начинается с ноля, что при операции умножения совсем нехорошо, так как при любых обстоятельствах немало элементов ключевого массива были бы очень угадываемыми (ведь 0 * x = 0). Если у вас возникают вопросы или есть какая-то критика, пишите в эту ветку. Всего хорошего! [/QUOTE]
Предпросмотр
Имя
Проверка
Ответить
Главная
Форумы
Противодействие интернет-цензуре
Софт и технологии для обхода цензуры
[Программа] Шифрование Диффи-Хеллмана на JavaScript
Сверху