![]() | |
| |||||||
| Home | Register | Blogs | FAQ | Members List | Calendar | Downloads | Arcade | Mark Forums Read |
| Algorithms The source of algorithms for your project |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | |
| Administrator Join Date: Sep 2001 Location: Yerevan, Armenia
Posts: 7,155
Blog Entries: 15 Rep Power: 10 Reputation:
293 | Алгоритм шифрования данных с открытым ключом RSA Copyright (c) Roman Lonely Алгоритм шифрования данных с открытым ключом является наиболее переспективным в настоящий момент (RSA - Rivest, Shamir and Aldeman - его изобретатели). Понятия: Простое число - делится только на 1 и на само себя; Взаимно простым- не имеют ни одного общего делителя, кроме 1; Результат операции i mod j - остаток от целочисленного деления i на j. Чтобы использовать алгоритм RSA, надо сначала сгенерировать открытый и секретные ключи выполнив следующие шаги: 1) Выберем два очень больших простых числа p and q. 2) Определим n, как результат умножения p on q (n= p*q). 3) Выберем большое случайное число, которое назовем d. Это число должно быть взаимно простым с результатом умножения (p-1)*(q-1). 4) Определим такое число е, для которого является истинным следующее соотношение (e*d) mod ((p-1)*(q-1))=1. 5) Hазовем открытым ключем числа e и n, а секретным ключом - чмсла d и n. ================================= Теперь, чтобы зашифровать данные по известному ключу {e,n}, необходимо сделать следующее: - разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа M(i)=0,1,2..., n-1( т.е. только до n-1). - зашифровать текст, рассматриваемый как последовательность чисел M(i) по формуле C(i)=(M(I)^e)mod n. Чтобы расшифровать эти данные, используя секретный ключ {d,n}, необходимо выполнить следующие вычисления: M(i) = (C(i)^d) mod n. В результате будет получено множество чисел M(i), которые представляют собой исходный текст. ========================== Hу, чтобы более наглядно представить алгоритм RSA, приведу следующий пример: Зашифруем и расшифруем сообщение "САВ" по алгоритму RSA. Для простоты буду использовать маленькие числа(на практике - нужно брать намного большие). 1) Выберем p=3 and q=11. 2)Определим n= 3*11=33. 3) Hайдем (p-1)*(q-1)=20. Следовательно, d будет равно, например, 3: (d=3). 4) Выберем число е по следующей формуле: (e*3) mod 20=1. Значит е будет равно, например, 7: (e=7). 5) Представим шифруемое сообщение как последовательность чисел в диапозоне от 0 до 32 (незабывайте, что кончается на n-1). Буква А =1, В=2, С=3. Теперь зашифруем сообщение, используя открытый ключ {7,33} C1 = (3^7) mod 33 = 2187 mod 33 = 9; C2 = (1^7) mod 33 = 1 mod 33 = 1; C3 = (2^7) mod 33 = 128 mod 33 = 29; Теперь расшифруем эти данные, используя закрытый ключ {3,33}. M1=(9^3) mod 33 =729 mod 33 = 3(С); M2=(1^3) mod 33 =1 mod 33 = 1(А); M3=(29^3) mod 33 = 24389 mod 33 = 2(В); Все, данные расшифрованы. ================================ Криптостойкость алгоритма RSA основывается на предположении, что исключительно трудно определить секретный ключь по известному, поскольку для этого необходимо решить задачу о существовании делителей целого числа. Данная задача является NP-полной, и, как следствие этого факта, не допускает cейчас эффективного (полиноминального) решения. Более того, сам вопрос существования эффективных алгоритмов решения NP-полных задач является до настоящего времени открытым. Если Вы используете числа, состоящие из 200 цифр(такие и надо использовать при шифровании данных), для несанкционированной расшифровки придется генерировать огромное число операций (около 10^23). P.S/ Данные, приведенные выше, не должны быть использованы в незаконных целях! |
| | |
| | #17 |
| Administrator | 3-y PKCS kak-raz otnositsa k protokolu soglasovaniya klyuchey po D-H. Chto skajesh' naschet nego?
__________________ И повешенные могут качаться в неположенную сторону. /С.Е.Лец/ |
| | |
| | #18 |
| спасибо, коллега Join Date: Mar 2003 Location: yerevan, am
Posts: 2,090
Rep Power: 6 Reputation:
10 | а что про PKCS говорить ? они - неизбежное зло ![]() я и не спорю, большинство современных протоколов опираеться на Диффи-Хэллмана. просто думал если есть какой-то соответствующий стандарт, то легче отсылать студентов к нему, чем заставлять читать тяжелые книжки ![]() а так, например, есть еще протоколы Needham-Schroeder, Beller-Yacobi и т.д. ![]() |
| | |
| | #19 | |
| Administrator Join Date: Sep 2001 Location: Yerevan, Armenia
Posts: 7,155
Blog Entries: 15 Rep Power: 10 Reputation:
293 | Quote:
![]() | |
| | |
| | #20 | |
| VIP Роджер Join Date: Aug 2002 Location: Yereven
Posts: 4,462
Rep Power: 7 Reputation:
20 | Quote:
А чего тут тяжелого, даже я со своим гуманитарным образованием и то понял ... с третьего раза Хочешь перешлю популярный материал про ЭЦП, как раз для ленивых студентов, чтобы не мучились бедняги ... правда он величиной в 1МБ ... с картинками ![]()
__________________ Ignorantia non est argumentum /Отрицание не есть доказательство/ | |
| | |
| | #21 |
| спасибо, коллега Join Date: Mar 2003 Location: yerevan, am
Posts: 2,090
Rep Power: 6 Reputation:
10 | тяжелая - например, алгоритмизация поиска интересующего сертификата да и стандартов на сертификат не один.лучше бедненьких тяжелыми книжками попотчую, есть у меня пара таких по полторы тысячи страниц. да стандартиками интересными на закуску... правда, пока ни одного не было, чтобы больше 10 страниц прочел ![]() |
| | |
| | #22 | |
| VIP Роджер Join Date: Aug 2002 Location: Yereven
Posts: 4,462
Rep Power: 7 Reputation:
20 | Quote:
Нет, конечно сертификаты разные бывают, но стандартов на них, насколько я знаю нет и не предвидется. Вообще в Европе существует понятие аккредитации сертификационных центров, т.е. проверка на соответствие требованиям закона об эл. подписи. Процедура аккредитации включает и проверку средст ЭЦП на соответствие требованиям того же закона. Стандартов, насколько я знаю, нет. Другое дело Россия - страна непуганных идиотов. В РФ ввели стандарт ЭЦП, но это полнейший маразм, поскольку это означает, что все прочие алгоритмы создания ЭЦП незаконны. Но в РФ этот стандарт был принят, насколько я знаю, под давлением ФАПСИ и РусКрипто с единственной целью монополизации рынка. Причем одним из требований стандарта, если я не ошибаюсь, является длина ключей - 56МБ, не меньше (есть кое-какая логика), не больше (полный маразм, видимо по заявкам сотрудников ГБ, они, видимо, больше взломать не могут, мощностей не хватает, а РусКрипто, видимо, больше и не делает, а поскольку все зарубежные аналоги как минимум 128, значит они нестандартные). Если интересно постну требования директивы ЕС об аккредитации сертиф. центров и средст ЭЦП.
__________________ Ignorantia non est argumentum /Отрицание не есть доказательство/ | |
| | |
| | #23 |
| спасибо, коллега Join Date: Mar 2003 Location: yerevan, am
Posts: 2,090
Rep Power: 6 Reputation:
10 | я имел в виду сертификат - цифровое хранилище открытого (в некоторых случаях - закрытого) ключа и некоторой дополнительной информации о пользователе, подписанное со стороны третьего доверенного лица. тогда A вместо ключа пересылает B сертификат, из которого можно вытащить и ключ и много другой полезной информации. B же, в свою очередь, может проверить цифровую подпись доверенного лица, чтобы удостовериться, что ключи не подменили по дороге, опросить доверенное лицо на наличие такого сертификата и проверить не скомпроментирован ли он (утерян, истек срок действия, скомпроментированы ключи). это конечно все в иделе. реально же найти всю цепочку сертифицирования - задача ой ой ой. уже который год предлагаються расширения на разные сетевые протоколы с целью облегчения подобного поиска. естественно, чтобы различные программы могли взаимодействовать друг с другом, такие сертификаты надо было стандартизировать. то есть стандартизировать их представление в памяти компьютера. ты можешь посмотреть свои сертификаты, если откроешь IE/Tools/Internet Options/Content/Certificates/ если не ошибаюсь, в ЮЭс подобные сертификаты выдаються соответствующими организациями при наличии пасспорта. 56МБ - это мегабайты ? тогда они максималисты по полной ![]() а на счет дыр в системах в угоду органов - это предмет постоянных споров. но дыры есть. во многих странах - законодательно подтвержденные. |
| | |
| | #25 | |||
| VIP Роджер Join Date: Aug 2002 Location: Yereven
Posts: 4,462
Rep Power: 7 Reputation:
20 | Quote:
Quote:
кстати сертификация в РФ предполагает предоставление кода программы и самого алгоритма ... Quote:
У нас закона нет, есть законопроект. Скорее всего, примут до конца года.
__________________ Ignorantia non est argumentum /Отрицание не есть доказательство/ | |||
| | |
| | #26 |
| Administrator | Ну, например, Needham-Schroeder - это Diffie-Helman с участием третьей (trusted) стороны. Было бы интересно послушать, почему PKCS - зло?
__________________ И повешенные могут качаться в неположенную сторону. /С.Е.Лец/ |
| | |
| | #27 |
| Administrator | 2 darrel: сертификат - понятие не законодательное, в даннмо случае, сколько техническое. ![]() by tig: "...алгоритмизация поиска интересующего сертификата да и стандартов на сертификат не один..." Постольку поскольку если сертификатов несколько, то они могут образовать лишь цепь - т.е. нет ответвлений и пр. Это означает, что "поиск сертификата" есть просто просмотр линейного списка сертификатов. В одной из последних (если не ошибаюсь) реализаций OpenSSL была обнаружена ошибка касательно именно цепи сертификатов - там можно было выдать подпись злоумышленника за подпись trusted стороны. Предполагаю, что была неверно реализована именно проверка цепи. Нередко проверяют на достоверность лишь последний сертификат. Но злоумышленнику не составит труда купить за 20$ сертификат у VeriSign-а, и перерподписать все что ему нужно, а сверху заляпать еще каким-то трастед-сертификатом.
__________________ И повешенные могут качаться в неположенную сторону. /С.Е.Лец/ |
| | |
| | #28 |
| Грустно... | A vse ravno, iirc, v Armenii ego ispol'zovat' nel'zya, tak chto vse eto erunda! ![]()
__________________ http://аvitya.livejournal.com Хотели, как лучше, а получилось даже хуже... Лозунг шахматиста: На каждый шах - ответим матом! |
| | |
| | #29 |
| спасибо, коллега Join Date: Mar 2003 Location: yerevan, am
Posts: 2,090
Rep Power: 6 Reputation:
10 | greco El, а ты пробовал PKCS-ы реализовывать ? веселейшее занятие ![]() цепи сертификатов - идеальный случай. а что скажешь об организации с парой сотен CA, которым совсем не обязательно наследоваться друг от друга, уж тем более организовываться в цепочки ? как ты думаешь, почему PKI заглох ? |
| | |
| | #30 | |
| спасибо, коллега Join Date: Mar 2003 Location: yerevan, am
Posts: 2,090
Rep Power: 6 Reputation:
10 | Quote:
| |
| | |
![]() |
| Thread Tools | |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Расширение кругозора - 2 | greka | Software Security | 3 | Jan 9, 2004 08:30 |