Форум русскоязычного сообщества Ubuntu


Автор Тема: создание защищенного канала предачи данных по протоколу TCP и симметричного шифр  (Прочитано 1252 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн parliamentUA

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Здраствуйте, нужно написать курсовую на даную тему "создание защищенного канала предачи данных по протоколу TCP и симметричного шифрования данных в ОС LINUX",  должны быть написаны программы клиент и сервер на С. С чего начать? Посоветуйте литературу и ресурсы, в какой оболочке лучше писать?

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Итак, рассказываю, как пишутся курсовые в Высших Учебных заведениях, слушайте внимательно и конспектируйте, повторять второй раз не буду. Во-первых, идете к своему научному руководителю (или куратору), который дал вам эту тему, и трясете из него список литературы. Раз уж он дал вам эту тему, значит она так или иначе входит в список его научных интересов, и он может вам что-нибудь подсказать по ней.
Потом идете в библиотеку, просите литературу, которую вам предложил НР, затем берете подшивку реферативных журналов за последние несколько лет и смотрите там. После того, как проштудировали литературу, ознакомились с достижениями передовой научной мысли, составляете план работы, идете с ним снова к НР, объясняете, чего хотите сделать и как, и после этого приступаете к выполнению работы.
Как вы, возможно, успели заметить, выпрашивание помощи на компьютерных форумах мною нигде не упомянуто, поскольку данный процесс не только бесполезен, но и, как правило, негативно воспринимается большинством посетителей форума. На большинстве it-форумов такие топики модераторами выпиливаются не глядя.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля

Оффлайн parliamentUA

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Итак, рассказываю, как пишутся курсовые в Высших Учебных заведениях, слушайте внимательно и конспектируйте, повторять второй раз не буду. Во-первых, идете к своему научному руководителю (или куратору), который дал вам эту тему, и трясете из него список литературы. Раз уж он дал вам эту тему, значит она так или иначе входит в список его научных интересов, и он может вам что-нибудь подсказать по ней.
Потом идете в библиотеку, просите литературу, которую вам предложил НР, затем берете подшивку реферативных журналов за последние несколько лет и смотрите там. После того, как проштудировали литературу, ознакомились с достижениями передовой научной мысли, составляете план работы, идете с ним снова к НР, объясняете, чего хотите сделать и как, и после этого приступаете к выполнению работы.
Как вы, возможно, успели заметить, выпрашивание помощи на компьютерных форумах мною нигде не упомянуто, поскольку данный процесс не только бесполезен, но и, как правило, негативно воспринимается большинством посетителей форума. На большинстве it-форумов такие топики модераторами выпиливаются не глядя.

Спасибо конечно, но я догадался как ето делать))) LOL!!

Пользователь решил продолжить мысль 03 Февраль 2012, 05:37:52:
Просто нужно знать какую среду для прог лучше взять, и каими средствами реализовать
« Последнее редактирование: 03 Февраль 2012, 05:39:06 от parliamentUA »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
начни с простого.
ты умеешь установить не защищённое соединение?
знаешь что такое socket?
как написать hello, world?

среда тебя должна волновать в последнюю очередь.
а средства openssl

то что я дал рассчитано на человека способного не задавать вопросы о среде разработки.

Оффлайн parliamentUA

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Ну вот для незащищенного єсть клиент сервер, как туда шифрование впихнуть?

Клиент:
(Нажмите, чтобы показать/скрыть)




Сервер:
(Нажмите, чтобы показать/скрыть)


Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Посмотрите описание протоколов SSL/TSL, и попробуйте сделать похоже.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Жесть. Ацкий прогресс =)

замени все функции read/write на свои read_enc/write_enc

последние две функции придётся сделать самому.
их логика работы

Код: (C) [Выделить]
const char key[] = "oskopdfgowj4r9tg8wj0tg93j4958gh304958hy304985ghsoeirugh049g78h34059g87h340958gh30948hg03euirhg0w";

ssize_t read_enc(int fd, void *buf, size_t count) {
    static size_t total_read = 0;
    ssize_t n = read(fd, buf, count);
    if (n > 0) {
        for (ssize_t i = 0; i < n; ++i, ++total_read) {
            buf[i] ^= key[total_read % sizeof(key)];
        }
    }
    return n;
}

ssize_t write_enc(int fd, void *buf, size_t count) {
    static size_t total_write = 0;
    for (ssize_t i = 0; i < count; ++i, ++total_write) {
        buf[i] ^= key[total_write % sizeof(key)];
    }
    ssize_t n = write(fd, buf, count);
    for (ssize_t i = count; i > n; --i, --total_write) {
        buf[i-1] ^= key[total_write % sizeof(key)];
    }
    return n;
}
бяка жуткая без обработки ошибок я даже не проверял это на опечатки =) хотел донести идею.

Пользователь решил продолжить мысль 13 Февраль 2012, 09:29:13:
hippi90,
!СИММЕТРИЧНОГО! шифрования. не пугай его рассказами что то что зашифровано одним ключом можно расшифровать только другим =)

Оффлайн Красноглазый

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Насколько я помню, ssl/tls использует асимметричное шифрование только при рукопожатии, а для шифрования данных может быть выбран практически любой алгоритм, в том числе и симметричный (например, ГОСТ).

P.S. По поводу приведенного алгоритма "шифрования" - это не шифрование, а фиговый листочек :)
Для шифрования обычно используется бесконечная псевдослучайная последовательность на базе "ключа" и желательно самих шифруемых данных. В качестве примитивного примера можно использовать алгоритм LFSR. Поскольку он наращиваемый, можно сделать достаточно длинный ключ и надеяться, что никто не догадается, каким алгоритмом вы пользовались. Видимость шифрования по крайней мере он создает :)

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
hippi90,
!СИММЕТРИЧНОГО! шифрования. не пугай его рассказами что то что зашифровано одним ключом можно расшифровать только другим =)
Я имел в виду, посмотреть идею, что где "вставляется". И в SSL/TSL асиметричное шифрование используется только при аутентификации, при обмене данными используется симметричный шифр. Опять же, надо обращаться к первоначальному заданию, если там нет требования реализовать собственный алгоритм шифрования, то можно использовать openSSL для шифровки/дешифровки со стандартным алгоритмом.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Да, каюсь, совсем забыл про сеансовый ключ.

Оффлайн parliamentUA

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
hippi90,

Опять же, надо обращаться к первоначальному заданию, если там нет требования реализовать собственный алгоритм шифрования, то можно использовать openSSL для шифровки/дешифровки со стандартным алгоритмом.

Пока что можно использовать openSSL, но потом нужно будет реализовать ручками алгоритм симетричного шифр.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
parliamentUA,
ну я вон реализовал =)
шифрование? шифрование.
симметричное? симметричное.
никто не определил других требований. формально всё ОК.

Красноглазый,
я в курсе. не охота было лезть и читать руководство к OpenSSL чисто чтобы пример написать. я же сказал что чисто для примера чтобы показать каким макаром в обычное соединение завернуть шифрованный канал.

Оффлайн parliamentUA

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Yurror,
А какие инклуди нужны?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
никакие. size_t и ssize_t должны быть уже определены если у тебя известны декларации функций read и write
компилятор ругается?

 

Страница сгенерирована за 0.119 секунд. Запросов: 24.