Криптование потока сетевого интерфейса

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 28 мар 2012, 11:30

kit_D писал(а): Для реализации такого подхода можно использовать следующее:
Ну и как? то, что вы показываете - оно работает над wlan0 ... при отсутствии криптографирования (для пробы) этот виртуальный интерфейс ведёт себя полностью эквивалентным как slave? на всех протоколах (TCP/UDP)?
Прикрепляйте это в виде микро-архивчика на тестирование (прозрачности потоков) ;-)

P.S. что это вы из раза в раз переносите в примере это препроцессорное: #if 1 - в этом какая-то глубокая сермяжная правда есть? вы как-то с пользой это используете? или просто по небрежности кочует из раза в раз? ... раздражает, смотреть мешает. :-?
kit_D писал(а): Note: тут еще проблемка. netdev_rx_handler_register() относительно новый хук и появился он в 2.6.36, а мне надо чтобы модуль был также совместим с 2.6.35. Наверняка там есть какой-то аналог этой функции - надо копать
А это из каких соображений?

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение kit_D » 30 мар 2012, 10:01

Ну и как? то, что вы показываете - оно работает над wlan0 ... при отсутствии криптографирования (для пробы) этот виртуальный интерфейс ведёт себя полностью эквивалентным как slave? на всех протоколах (TCP/UDP)?
Похоже, что все пакеты проходящие через wlan0 (802.3 фреймы, поэтому управляющие пакеты 80211 там будут невидны), в том числе и TCP и UDP и ARP и все остальное, видны в этих колбеках.

P.S. что это вы из раза в раз переносите в примере это препроцессорное: #if 1 - в этом какая-то глубокая сермяжная правда есть? вы как-то с пользой это используете? или просто по небрежности кочует из раза в раз? ... раздражает, смотреть мешает.
Да, это все по небрежности. Просто мы тут пробуем много всего и от этого много дебажного кода, который мы переодически выбрасываем.
Прикрепляйте это в виде микро-архивчика на тестирование (прозрачности потоков)
Мы хотим попробовать "криптование", но пока не настоящее, а просто изменять пакет на выдаче в xmit функции, например просто инвертировать биты, а на приемной стороне (на другой машине) инвертировать биты обратно. Таким образом это будет POC. Если это сработает, то выложим код.
Note: тут еще проблемка. netdev_rx_handler_register() относительно новый хук и появился он в 2.6.36, а мне надо чтобы модуль был также совместим с 2.6.35. Наверняка там есть какой-то аналог этой функции - надо копать
А это из каких соображений?
Это из тех соображений, что решение должно работать на Android GingerBread, а там, насколько я знаю, 2.6.35

Спасибо, что остаетесь на связи :-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 30 мар 2012, 17:59

kit_D писал(а):
Ну и как? то, что вы показываете - оно работает над wlan0 ... при отсутствии криптографирования (для пробы) этот виртуальный интерфейс ведёт себя полностью эквивалентным как slave? на всех протоколах (TCP/UDP)?
Похоже, что все пакеты проходящие через wlan0 (802.3 фреймы, поэтому управляющие пакеты 80211 там будут невидны), в том числе и TCP и UDP и ARP и все остальное, видны в этих колбеках.
"Похоже" :-? - вы на сессии подключения telnet или ssh проверяете это при каждом существенном изменении?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 01 апр 2012, 23:14

kit_D писал(а): Мы хотим попробовать "криптование", но пока не настоящее, а просто изменять пакет на выдаче в xmit функции, например просто инвертировать биты, а на приемной стороне (на другой машине) инвертировать биты обратно. Таким образом это будет POC. Если это сработает, то выложим код.
1. абсолютно правильный подход - использовать "тривиальное" или "нулевое" криптографирование.

2. а вот "если это сработает, то выложим" - это так же абсолютно неправильно, потому что тем временем кто-то из заинтересованных вам бы натестировал кучу ... неприятностей ;-)
kit_D писал(а): Да, это все по небрежности. Просто мы тут пробуем много всего и от этого много дебажного кода, который мы переодически выбрасываем.
... только небрежности перед выкладываением желательно бы бегло подправлять.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 02 апр 2012, 13:35

kit_D писал(а):
Ну и как? то, что вы показываете - оно работает над wlan0 ... при отсутствии криптографирования (для пробы) этот виртуальный интерфейс ведёт себя полностью эквивалентным как slave? на всех протоколах (TCP/UDP)?
Похоже, что все пакеты проходящие через wlan0 (802.3 фреймы, поэтому управляющие пакеты 80211 там будут невидны), в том числе и TCP и UDP и ARP и все остальное, видны в этих колбеках.
P.S. что это вы из раза в раз переносите в примере это препроцессорное: #if 1 - в этом какая-то глубокая сермяжная правда есть? вы как-то с пользой это используете? или просто по небрежности кочует из раза в раз? ... раздражает, смотреть мешает.
Да, это все по небрежности. Просто мы тут пробуем много всего и от этого много дебажного кода, который мы переодически выбрасываем.
А по-моему это всё просто не работает! :lol:
Вот такой высокий уровень небрежности :cry:

Теперь по порядку:

1. возвращаюсь в тему после достаточно длительного upgrqde системы, чтоб не иметь проблем совместимости со старым ядром...
2. но зная какие тут будут неприятности с этим примером (уже писал раньше - полное заваливание системы) отрабатываем для начала на VirtualBox:

Код: Выделить всё

[root@fedora16vm crypto2]# uname -r
3.2.9-2.fc16.i686
3. для начала меня интересует выбросить всё нагромождение: криптографирование, фреймы 802.3 & 802.11, WiFi интерфейсы wlan0 ... потому что из-под этой горы мусора - не выбраться, это такой "плохой пыанэрский стиль": всё сразу... вместо этого интересует:
- повесить примитивный виртуальный сетевой интерфейс над обычным eth0 (или p7p1 в терминологии Fedora 16 ;-) )...
- и перенаправить потоки eth0 в этот интерфейс.
4. чтоб не портить и не загромождать исходные темы, создаю под это новую, вот: простой виртуальный сетевой интерфейс - простенько и со вкусом ;-) ... Там продолжу.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 03 апр 2012, 00:43

kit_D писал(а):Note: тут еще проблемка. netdev_rx_handler_register() относительно новый хук и появился он в 2.6.36, а мне надо чтобы модуль был также совместим с 2.6.35. Наверняка там есть какой-то аналог этой функции - надо копать
А вот это поле структуры struct net_device ничего не подсказывает? :

Код: Выделить всё

        struct net_device       *master; /* Pointer to master device of a group,
                                          * which this device is member of.
                                          */

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 03 апр 2012, 10:27

kit_D писал(а):Если это сработает, то выложим код.
kit_D, в ваши примеры вкралась грубая ошибка, показана она здесь: viewtopic.php?f=18&t=1646#p3535

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение kit_D » 03 апр 2012, 10:45

чтоб не портить и не загромождать исходные темы, создаю под это новую, вот: простой виртуальный сетевой интерфейс - простенько и со вкусом ;-) ... Там продолжу.
olej, в моем случае уже не идет речь о создании дополнительного виртуального интерфейса. Речь идет о криптовании трафика существующего интерфейса (хотя создание виртуального конечно тоже очень интересно).
В связи с этим выкладываю исходники. В них добавлено шифрование ICMP фреймов на выдающей стороне и, соответственно, расшифровывание на принимающей. Для проверки вставляем модули на двух машинах (на обоих они привяжуться к wlan0) и пингуем. Пинг идет в зашифрованом (XOR) виде.
Вложения
crypto0.tar.gz
(1.63 КБ) 438 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 03 апр 2012, 10:51

kit_D писал(а): olej, в моем случае уже не идет речь о создании дополнительного виртуального интерфейса. Речь идет о криптовании трафика существующего интерфейса (хотя создание виртуального конечно тоже очень интересно).
Я всё прекрасно понимаю. Но меня заинтересовала другая задача. Поэтому я вынес её продолжение в другую тему.

P.S. другая задача, но очень похожая + позволяющая эту, вашу, проконтролировать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Криптование потока сетевого интерфейса

Непрочитанное сообщение Olej » 04 апр 2012, 19:08

kit_D писал(а): olej, в моем случае уже не идет речь о создании дополнительного виртуального интерфейса. Речь идет о криптовании трафика существующего интерфейса (хотя создание виртуального конечно тоже очень интересно).
В связи с этим выкладываю исходники. В них добавлено шифрование ICMP фреймов на выдающей стороне и, соответственно, расшифровывание на принимающей. Для проверки вставляем модули на двух машинах (на обоих они привяжуться к wlan0) и пингуем. Пинг идет в зашифрованом (XOR) виде.
ну так здесь вы, kit_D, несколько подхитрили: шифруется только один выбранный протокол:

Код: Выделить всё

if ( CRYPTO_ICMP_PROTO == ((struct iphdr *)(skb_network_header(skb)))->protocol)
...
так проще ;-)

а со всеми остальными протоколами что вы станете делать?

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей