IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Протокол аутентификации Фейге-Фиата-Шамира, С/С++, проблемы с реализацией
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


Здравствуйте! Очень нужна помощь в написании небольшой программы с большими числами. smile.gif Необходимо реализовать протокол аутентификации Фейге-Фиата-Шамира, используя длинные ключи. Нашла в инете реализацию цифровой подписи на основе данного протокола с использованием библиотеки ‘lip.h’ (работа с длинными числами, модулярная арифметика), обрадовалась, увидя процедуру генерации ключей, но, начав разбираться в коде поняла, что для цифровой подписи протокол несколько иной…
В протоколе аутентификации ФФШ секретный ключ формируется следующим образом: ищутся квадратичные вычеты по модулю n (n=p*q, где p и q – большие простые числа), далее находят их обратные значения опять же по модулю n, затем из получившегося множества выбирают k значений, из каждого значения извлекается квадратный корень по модулю n – получившийся вектор из k чисел и будет секретным ключом. В цифровой же подписи секретный ключ формируется иным образом. Вот и попала я в тупиковую ситуацию: на Си/Си++ ранее писать не приходилось, работала только на Делфи, поэтому каждый шаг дается пока с трудом, а тут такая головоломка… unsure.gif Не представляю даже каким образом можно реализовать генерацию секретного ключа, а именно нахождение квадратичных вычетов по модулю для длинного числа: осуществлять это перебором? наверное, займет много времени; как хранить найденное множество значений? ведь их будет очень много…
Библиотека, на первый взгляд, приличная, все функции снабжены кратким описанием, присутсвуют все необходимые операции модулярной арифметики: умножение, вычисление обратного значения, квадратного корня и т.д. Сама понимаю, что не справлюсь, поэтому буду очень рада помощи.
Прикрепляю проект с присоединенной библиотекой, ничего не выбрасывала из кода, хотя хэш-функция мне не нужна, а для начала только процедура FFS_gen_keys. Так же выкладываю описание самого алгоритма.
Прикрепленный файл  ffs.rar ( 408.75 килобайт ) Кол-во скачиваний: 646
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


k действительно отвечает за криптоскойкость, чем больше будет компонентов в секретном ключе, тем лучше smile.gif , выбирается, видимо, из своих собственных соображений. Длина простых чисел p и q, с которых начинается алгоритм, должна быть не меньше 256 бит (опять же, чем больше, тем лучше).
Квадратичные вычеты по модулю n, если использовать способ простого перебора, находятся следующим образом: берутся все целые числа, меньшие n, начиная с единицы, возводятся в квадрат по модулю n, получившиеся остатки и есть искомые квадратичные вычеты. Они могут повторятся. Различных значений должно быть ровно (p-1)*(q-1)/4. Но есть одно существенное "НО": для формирования секретного ключа берутся обратные значения по модулю n для квадратичных вычетов, а не для каждого числа существует обратное значение по модулю n, а именно не существует таких обратных значений для чисел, которые не являются взаимно простыми с n. Поэтому нельзя взять произвольно k целых чисел < n, возвести их в квадрат и найти остаток, так как длина ключа может получиться меньше нужной....

Добавлено через 15 мин.
Ой, сначала не так поняла идею про k blush.gif . Наверное, хорошая идея, искать не всё, а только пока не наберется k квадратичных вычетов, имеющих обратные значения по модулю n.

Сообщение отредактировано: *kitty* -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


*kitty*, ты хитрая лиса )), если ты все знала - зачем спрашивала? smile.gif
Цитата(*kitty* @ 23.04.2010 20:37) *
Но есть одно существенное "НО": для формирования секретного ключа берутся обратные значения по модулю n для квадратичных вычетов, а не для каждого числа существует обратное значение по модулю n, а именно не существует таких обратных значений для чисел, которые не являются взаимно простыми с n. Поэтому нельзя взять произвольно k целых чисел < n, возвести их в квадрат и найти остаток, так как длина ключа может получиться меньше нужной....
Легко быть взаимно простым с числом, являющимся произведением двух простых. Иначе говоря, НЕ взаимно простых есть только чуть больше двух )).

Цитата
хорошая идея, искать не всё, а только пока не наберется k квадратичных вычетов, имеющих обратные значения по модулю n.
На идею особо не тянет )). Никто не покупает всю картошку в мире, чтоб приготовить себе обед! smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


Цитата
*kitty*, ты хитрая лиса )), если ты все знала - зачем спрашивала? smile.gif


Теория теорией - всегда можно взять почитать и постараться разобраться smile.gif , у меня большие проблемы с реализацией (Си не знаю, проблемы даже с обычными операторами, типа вывода, понять что написано могу, а вот что-то сотворить не получается). Тыкалась в коде как слепыш, постоянно ошибки вылетают, а я и не понимаю в чем дело unsure.gif Нужна помощь.
Цитата

Легко быть взаимно простым с числом, являющимся произведением двух простых. Иначе говоря, НЕ взаимно простых есть только чуть больше двух )).

Вот это не поняла что-то, там в примере 143=11*13, обратных значений нет у 11 чисел, так как они не являются взаимно простыми с числом 143....
Цитата

На идею особо не тянет )). Никто не покупает всю картошку в мире, чтоб приготовить себе обед! smile.gif

Точно smile.gif Ну я вот почему-то до сих пор хотела честно находить все вычеты blush.gif laugh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(*kitty* @ 24.04.2010 1:25) *
большие проблемы с реализацией (Си не знаю, проблемы даже с обычными операторами, типа вывода, понять что написано могу, а вот что-то сотворить не получается). Тыкалась в коде как слепыш, постоянно ошибки вылетают, а я и не понимаю в чем дело
Еслли ты привыкла к Паскалю - это и плюс и минус. Минус, потому что многое все же отличается (в частности, как раз простейший ввод/вывод), но ты тверже держись основных принципов - они все же одни. И как можно больше экспериментируй. И спрашивай, ессно )). Кстати, какой у тя компилятор и какая среда? И вообще, Си - это требование или ты просто так дорожишь той найденной библиотекой?

Цитата
Вот это не поняла что-то, там в примере 143=11*13, обратных значений нет у 11 чисел, так как они не являются взаимно простыми с числом 143....
И ты испугалась? lol.gif Именно это я и назвал словами "чуть больше двух". Каждое из p и q порождает свою линию "невзаимнопростыхсn" чисел: i*p и j*q. Их количество естественным образом зависит от величины p и q. Всего их p+q, грубо говоря (в примере 13+11=24). Но вычетами являются всего несколько меньше половины - вот и получили 11, что в процентном отношении от 143 довольно много. Но если мы возьмем p и q порядка 1010, то их произведение (n) будет порядка 1020, а сумма 2*1010. И процентное отношение легко превращается в микропроцентное )). Еще раз: именно это я и называю "чуть бльше двух" smile.gif. То есть вероятность того, что твой вычет не будет иметь обратного значения стремится к нулю с возрастанием размеров чисел.
Примеры - они хороши безусловно, но нужно понимать, что они не всегда прямо масштабируются.

Цитата
Точно smile.gif Ну я вот почему-то до сих пор хотела честно находить все вычеты blush.gif laugh.gif
Эээ.. так ты рискуешь умереть с голоду, так и не пообедав, восседая на картофельном Эвересте.. wacko.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


Цитата(Lapp @ 24.04.2010 3:37) *
Кстати, какой у тя компилятор и какая среда? И вообще, Си - это требование или ты просто так дорожишь той найденной библиотекой?

У меня Борланд Си++ Билдер 6. Если честно, то библиотека конкретно эта понравилась: простая, охватывает основные необходимые моменты и самый большой плюс - снабжена понятными, доступными описаниями всех функций, примерами. Для Делфи подобного не нашла, если и есть библиотеки, то либо без описания, либо настолько это какими-то непонятными обрывками... Самостоятельно разбираться в библиотеках (что, где и как там делается) времени не хватает, потому что засяду с этим надолго. А к этой целая книжечка в качестве документации идет smile.gif . Вот я подумала, вдруг кто-нибудь захочет немного помочь и написать небольшой кусочек кода blush.gif
Цитата
И ты испугалась? lol.gif Именно это я и назвал словами "чуть больше двух".

Ну да, я поняла это буквально. Для меня "чуть больше двух" - это три, ну максимум четыре laugh.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
*kitty*   Протокол аутентификации Фейге-Фиата-Шамира   22.04.2010 18:39
Lapp   Не представляю даже каким образом можно реализоват…   23.04.2010 6:43
*kitty*   k действительно отвечает за криптоскойкость, чем б…   23.04.2010 23:37
Lapp   *kitty*, ты хитрая лиса )), если ты все знала - за…   24.04.2010 2:37
*kitty*   Теория теорией - всегда можно взять почитать и п…   24.04.2010 4:25
Lapp   большие проблемы с реализацией (Си не знаю, пробле…   24.04.2010 6:37
*kitty*   Кстати, какой у тя компилятор и какая среда? И в…   24.04.2010 19:42
Lapp   я подумала, вдруг кто-нибудь захочет немного помоч…   25.04.2010 7:56
hydroxychloroquine over the coun   Clomid Absence Ovulation   4.12.2021 18:35
when do prednisone side effects   Cialis Vendita Pillole   3.10.2021 22:59
*kitty*   Эх, если бы я могла сама написать, не обращалась б…   26.04.2010 23:09
volvo   *kitty*, понимаешь, в чем дело... Этих реализаций …   26.04.2010 23:39
*kitty*   Я уже нашла этот pdf :) (кстати, это единственная…   27.04.2010 23:54
volvo   Получалось... Вот тут: Sources -> gmp-lib and B…   28.04.2010 15:14
*kitty*   Спасибо, буду пробовать :)   28.04.2010 15:29
*kitty*   Написала протокол с использованием библиотеки …   1.05.2010 22:57
volvo   #include <mem.h> #include <stdio.h> #i…   2.05.2010 1:30
*kitty*   Спасибо, помогло :)   2.05.2010 1:43
*kitty*   Здравствуйте, по ходу реализации возникла ещё одна…   5.05.2010 7:57
volvo   Вызывай просто Show(), не модально...   5.05.2010 14:33
*kitty*   Вызывай просто Show(), не модально... Так в том …   5.05.2010 16:39
volvo   Не знаю, на тестовом проекте у меня прекрасно отра…   5.05.2010 17:25
*kitty*   Да и правда, на тестовом и у меня заработало. Знач…   5.05.2010 18:21
volvo   Хм... :) [ILINK32 Warning] Warning: Public symbol…   5.05.2010 20:05
*kitty*   Я догадывалась, что это не очень хорошо :biggrin:…   6.05.2010 2:08
Lapp   Запустилось, кстати, приложение, правда с Warning…   6.05.2010 10:38
*kitty*   Прекрасное подтверхдение того, что автор темы …   6.05.2010 16:06
Lapp   Ну вот обязательно нужно было подколотьНе обижайся…   7.05.2010 4:25
*kitty*   Добрый день! Возникла ещё одна проблема: как с…   8.05.2010 19:37
volvo   Можно присоединить проект (или какую-то его часть,…   11.05.2010 0:48
*kitty*   Я забыла, наверное, самое главное уточнить :blush:…   11.05.2010 7:38
*kitty*   Присоединяю проект просто с формой, которая искажа…   11.05.2010 22:34
volvo   С этим и вторым пунктом (хотя у меня пропадает тол…   12.05.2010 1:00
*kitty*   С цветами проблему исправила :good: , спасибо :) …   12.05.2010 16:31
volvo   Очень интересно. Разрабатывается форма при меньшем…   12.05.2010 19:19
TarasBer   Скрины не смотрел - не могу пока, браузер в VGA ре…   12.05.2010 20:44
volvo   А в BCB6 что, у этих свойств какое-то другое, отли…   12.05.2010 20:54
*kitty*   Да, на ноуте расширение больше, единственное экра…   12.05.2010 23:57
*kitty*   Помогло :respect2: Шрифт меняла, но всё равно сд…   13.05.2010 2:05
do you need a prescription for p   Mexico Drugs Online   1.11.2021 19:25
gabriella   Your writings and news are really interesting to m…   12.04.2022 10:18
nishaknapp   Why not settling on games that is fun and at the s…   29.07.2022 17:11
gabriella   As a Newbie, I am continuously exploring online fo…   1.08.2022 9:34


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 16:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name