RSA намного проще, главное вспомнить малую теорему Ферма.
Вообще не припомню не одного сверх-сложного криптографического алгоритма. Когда все подробно распишут — на первый взгляд просто. Но попробуйте придумать что-то аналогичное... Сразу поймете что не так все просто, как кажется на первый взгляд. Даже оценить криптостойкость алгоритма — уже мало кто сможет.
>>Без тестов ваш код был на 99% правильным, с тестами — на 99.99%. Качество выросло всего на 1 процент, а времени потрачено в 2 раза больше.
Совершенно верно. Нужно только решить насколько критичен этот 1% для конкретного проекта. Если 1% ошибок выльется в процент потерянных денег — то весьма критично.
Во много крат. Не в 2 раза, а именно во много крат. Парадокс, да?
Допустим, в моей системе 100 логических действий, каждое из которых может быть написано с ошибкой (человеческий фактор). В среднем я делаю 1 ошибку на 100 действий. Т.е. в этих 100 действиях есть 1 ошибка (возьмем средний случай).
Если добавить тесты, то в них так-же будет 1 ошибка (так-же 100 действий).
Какова вероятность того, что ошибка будет в одном и том-же месте и в тестах и в программе (речь о машинальной ошибке)? Получается 1 из 10000, верно? Другими словами качество кода повысится в 100 раз, хотя времени затратим только в 2 раза больше.
>>Во-первых, а почему вы решили остановиться на двойной?
Потому что есть 2 стороны: наша система (программа) и внешний мир (пользователь или другая система). С помощью тестов мы эмулируем внешний мир. Третьей стороны нет. Была бы третья — можно было бы делать тройную проверку.
Алгоритм «внешнего мира» не является полным аналогом алгоритма системы.
>>Достаточно того, чтобы одна ошибка скрывала другую.
Бывает и такое. Здесь важна вероятность. По вероятности отпишу ниже.
Лично мне тесты помогают при рефакторинге. Хочу улучшить код (привести к ) — а он потом перестает работать правильно (какая-нибудь мелочь). Вот такие мелочи тесты находят быстро.
>> в слаборазвитые страны типа Зимбабве, России, Украины, Сомали и т.п. запрещено слать продукты высоких технологий, дабы аборигены не отвлекались от собирания кокосов
Люблю Java именно за этот минимализм. Нет ничего лишнего, но есть все необходимое.
Из C# постепенно «все в одном» делают: и запросы, и динамическая типизация, и ФП, и скрипты… Может кому и нравится — не знаю. Как по мне — так для каждой задачи нужно использовать более подходящую технологию, а не совмещать. Но это холивар, конечно.
>>Я помню, что у классика kwm-файл может быть разного размера, соответственно интересно было бы почитать как в случае с изменяющимся размером получить D и Modulus
Это раньше было, теперь размер все время одинаковый. Раньше его раздували простейшим алгоритмом «для безопасности». Смысл, возможно, был, когда у всех было подключение 32 Кбод. Сейчас убрали.
>>Закрытый RSA-ключ, который будет помечен как неэкспортируемый и поэтому его нельзя будет извлечь? Если да, то в случае с хранилищем win* все можно извлечь, правда нестандартным, но довольно простым способом.
С win-хранилища можно (если на ключ не установлен пароль). А вот с eToken — такой возможности нет в принципе — только вместе с устройством.
Добились — хорошее слово. Будете смеяться, но первая реализация вычисляла произведение точки на число 15 минут.
Там умножение в ОНБ. В принципе, оно длительно выполняется. Скорее всего нужно перевести в полиномиальный базис, тогда будет быстрее. В общем, если вы разбираетесь в вопросе — можете посмотреть исходники.
Импорт — здесь сохранение ключа в CSP. После того, как сохранили, извлечь уже не возможно — можно только использовать (у случае с eToken, а то некоторые устройства сами не реализуют подпись).
Если точнее, то d < 1/3 * n ^ (1/4) Если бы можно было d любой длины находить — то смысла в RSA бы не было. Может когда и придумают…
>>Кстати, как там ваш проект реализации ДСТУ поживает?
web.cryptography.org.ua/index.html — там все написано. В общем то, после того как научились генерить ключи и подпись для обоих базисов — дело немножко подвисло. Теперь задача — сделать быструю версию подписи для ОНБ. Надеюсь появится время и займусь. Напишу вам.
Кстати, есть у вас идеи, как (и в каких случаях) можно использовать deviation для ослабления безопасности? У меня парочка есть, но не всегда можно использовать.
Вообще-то они поступили умнее: не называются электронными деньгами или платежной системой. WM просто отображают в своей базе данных наши гражданские отношения.
Или люди не имеют права вступать в гражданские отношения (занимать друг-другу деньги, к примеру). Или не имеют права фиксировать кому чего они должны и кто им сколько должен?
НБУ, похоже, этого никак не поймет…
Нужно либо гражданский кодекс менять и запретить людям финансовые отношения на гражданском уровне (только через банк), или…
На самом деле когда приедете к ним (кстати, куда именно?) — вряд ли будет проще. Нам один раз заблокировали карту и нужно было срочно снять средства — очень долго по кабинетам водили. Причем очереди в некоторые — человек по 15. А это всего-навсего срочная разблокировка карты.
И в онлайне, и в офф-лайне у них построено с расчетом на то, что у человека не выдержат нервы и он плюнет на все и уйдет ни с чем. Кстати, именно так многие и делают.
Почему к ним нет претензий? Вспомните в какой стране живем и какими м$тодами здесь все решается. Именно по этому они позволяют себе делать все что захотят. Да, именно так в наглую кидают, как они говорят, лохов, путем кормления завтраками (подождите, мы вам в течение дня перезвоним).
Принимать платежи, а потом сказать что это пирамида — уже мошенничество. Получается они соучастники в этой пирамиде, т.к. оказывали финансовые услуги и не удосужились проверить в пользу кого (и за что) поступают средства.
Их, конечно, закроют в свое время. Когда на глаза давить будут. А пока работают старыми проверенными м$тодами.
А кто может привести минимальный пример как это работает? Я знал только 1 способ загрузки файлов: input type=«file» А оно оказывается есть еще кое-что, о чем знают только боги (т.е. что создатели браузера оставили только для себя).
Вообще не припомню не одного сверх-сложного криптографического алгоритма. Когда все подробно распишут — на первый взгляд просто. Но попробуйте придумать что-то аналогичное... Сразу поймете что не так все просто, как кажется на первый взгляд. Даже оценить криптостойкость алгоритма — уже мало кто сможет.
Совершенно верно. Нужно только решить насколько критичен этот 1% для конкретного проекта. Если 1% ошибок выльется в процент потерянных денег — то весьма критично.
Допустим, в моей системе 100 логических действий, каждое из которых может быть написано с ошибкой (человеческий фактор). В среднем я делаю 1 ошибку на 100 действий. Т.е. в этих 100 действиях есть 1 ошибка (возьмем средний случай).
Если добавить тесты, то в них так-же будет 1 ошибка (так-же 100 действий).
Какова вероятность того, что ошибка будет в одном и том-же месте и в тестах и в программе (речь о машинальной ошибке)? Получается 1 из 10000, верно? Другими словами качество кода повысится в 100 раз, хотя времени затратим только в 2 раза больше.
Поправьте меня, если я ошибся.
Потому что есть 2 стороны: наша система (программа) и внешний мир (пользователь или другая система). С помощью тестов мы эмулируем внешний мир. Третьей стороны нет. Была бы третья — можно было бы делать тройную проверку.
Алгоритм «внешнего мира» не является полным аналогом алгоритма системы.
>>Достаточно того, чтобы одна ошибка скрывала другую.
Бывает и такое. Здесь важна вероятность. По вероятности отпишу ниже.
Лично мне тесты помогают при рефакторинге. Хочу улучшить код (привести к ) — а он потом перестает работать правильно (какая-нибудь мелочь). Вот такие мелочи тесты находят быстро.
Спасибо.
>>Буду рад ответить на ваши вопросы
Вы бы могли привести минимальный JS пример, не содержащий ни одного слова?
Как хорошо сказано! Нужно будет запомнить.
Из C# постепенно «все в одном» делают: и запросы, и динамическая типизация, и ФП, и скрипты… Может кому и нравится — не знаю. Как по мне — так для каждой задачи нужно использовать более подходящую технологию, а не совмещать. Но это холивар, конечно.
Вот здесь исходный код на C# для расшифровки ключа: wm-api.svn.sourceforge.net/svnroot/wm-api/trunk/WebMoney.Cryptography/DecryptedKey.cs В самом верху файла — константы. Они повторяют структуру файла kwm.
>>Я помню, что у классика kwm-файл может быть разного размера, соответственно интересно было бы почитать как в случае с изменяющимся размером получить D и Modulus
Это раньше было, теперь размер все время одинаковый. Раньше его раздували простейшим алгоритмом «для безопасности». Смысл, возможно, был, когда у всех было подключение 32 Кбод. Сейчас убрали.
>>Закрытый RSA-ключ, который будет помечен как неэкспортируемый и поэтому его нельзя будет извлечь? Если да, то в случае с хранилищем win* все можно извлечь, правда нестандартным, но довольно простым способом.
С win-хранилища можно (если на ключ не установлен пароль). А вот с eToken — такой возможности нет в принципе — только вместе с устройством.
Добились — хорошее слово. Будете смеяться, но первая реализация вычисляла произведение точки на число 15 минут.
Там умножение в ОНБ. В принципе, оно длительно выполняется. Скорее всего нужно перевести в полиномиальный базис, тогда будет быстрее. В общем, если вы разбираетесь в вопросе — можете посмотреть исходники.
Если точнее, то d < 1/3 * n ^ (1/4) Если бы можно было d любой длины находить — то смысла в RSA бы не было. Может когда и придумают…
>>Кстати, как там ваш проект реализации ДСТУ поживает?
web.cryptography.org.ua/index.html — там все написано. В общем то, после того как научились генерить ключи и подпись для обоих базисов — дело немножко подвисло. Теперь задача — сделать быструю версию подписи для ОНБ. Надеюсь появится время и займусь. Напишу вам.
Кстати, есть у вас идеи, как (и в каких случаях) можно использовать deviation для ослабления безопасности? У меня парочка есть, но не всегда можно использовать.
Дело в том, что не все интерфейсы работают с авторизацией Keeper Light — некоторые только с авторизацией Classic.
Или люди не имеют права вступать в гражданские отношения (занимать друг-другу деньги, к примеру). Или не имеют права фиксировать кому чего они должны и кто им сколько должен?
НБУ, похоже, этого никак не поймет…
Нужно либо гражданский кодекс менять и запретить людям финансовые отношения на гражданском уровне (только через банк), или…
И в онлайне, и в офф-лайне у них построено с расчетом на то, что у человека не выдержат нервы и он плюнет на все и уйдет ни с чем. Кстати, именно так многие и делают.
Почему к ним нет претензий? Вспомните в какой стране живем и какими м$тодами здесь все решается. Именно по этому они позволяют себе делать все что захотят. Да, именно так в наглую кидают, как они говорят, лохов, путем кормления завтраками (подождите, мы вам в течение дня перезвоним).
Принимать платежи, а потом сказать что это пирамида — уже мошенничество. Получается они соучастники в этой пирамиде, т.к. оказывали финансовые услуги и не удосужились проверить в пользу кого (и за что) поступают средства.
Их, конечно, закроют в свое время. Когда на глаза давить будут. А пока работают старыми проверенными м$тодами.