Вместо того, чтобы использовать обычные шифры, такие как AES или Blowfish Twofish, как создать свой собственный шифр? - PullRequest
2 голосов
/ 10 января 2011

Я не знаю много о тяжелой математике, стоящей за криптосистемами, я застреваю, когда ей плохо с алгеброй Z / nZ, а иногда и со всеми этими показателями показателей степени.Это не мне не нравится, просто информация, которую вы находите в Интернете, нелегко слепо отслеживать.

Мне было интересно: насколько надежным может быть алгоритм, когда он кодирует сообщение в простой двоичный файл?,Если мой алгоритм произвольный и известен только мне, как криптоаналитик может изучить зашифрованный файл и расшифровать его с расшифрованным файлом или без него?

Я думаю о том, чтобы не использовать текст ASCII для кодирования моего сообщенияи у меня есть несколько идей сделать этот алгоритм / программу.

Атаковать зашифрованный файл AES или Blowfish для трипаналиста более тривиально, чем если алгоритм, которым зашифрован файл, ему неизвестен, но как это сделать?что он делает тогда?

Я не знаю, хорошо ли я понял, но учитель CS однажды сказал мне, что коды, которые сложнее взломать, зашифрованные шифры.

Что вы думаете?

Ответы [ 5 ]

8 голосов
/ 10 января 2011

Атака зашифрованного файла AES или Blowfish для криптоаналитика более тривиальна, чем если бы алгоритм, которым файл зашифрован, ему неизвестен ...

Как насчет:

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

Короче говоря, НЕ бросайте свою собственную криптографию, если вы не эксперт, нет, если вы не являетесь членом группы экспертов в этой области.

Nintendo потерпела неудачу, когда они внедрили RSA самостоятельно в Wii, Sony тоже потерпела неудачу, когда она использовала его в PS3 (они в значительной степени использовали функцию случайных чисел XKCD для M ...)

И вы действительно думаете, чтоможно победить, используя безопасность по неясности?

PS: Это не значит, что вы должны взять запись в Википедии на RSA и свернуть собственную реализацию с этой (это точно Sonynd Big-N завершилась неудачно), не использовать проверенную реализацию с открытым исходным кодом.

2 голосов
/ 10 января 2011

Вы, кажется, используете два слова взаимозаменяемо, но помните, что Кодировка не является шифрованием

1 голос
/ 11 января 2011

Общепринято, что вы не должны создавать свои собственные алгоритмы и особенно не полагаться на то, что эти алгоритмы остаются в секрете.

Концептуальная причина заключается в том, что хорошее шифрование составляет количественно конфиденциальность. Мы не хотим, чтобы наши секреты были взломаны, но более точно мы хотим, чтобы иметь возможность сказать, сколько будет стоить взломать наши секреты (и, надеюсь, показать, что стоимость слишком высока, чтобы предвидеть любой субъект на Земной шар). Это настоящий прогресс, произошедший через несколько лет после Второй мировой войны: понять разницу между ключом и алгоритмом. Ключ концентрирует секрет. Алгоритм становится реализацией.

Поскольку реализация, в общем-то, реализована, она существует в виде некоторого кода или устройства, которое является материальным и сохраняется, даже если оно не используется. Сохранение секрета реализации требует отслеживания жесткого диска, на котором постоянно находится код. Если злоумышленник увидит двоичный код, он может его перепроектировать, что зависит от его ума и терпения. Суть в том, что очень трудно уметь сказать: «Восстановление описания алгоритма стоит X долларов».

С другой стороны, ключ короткий. Это может быть безопасно сохранено намного легче; например Вы могли бы запомнить это и избежать передачи его на любое постоянное устройство хранения. Тогда вам придется беспокоиться о своем ключе только тогда, когда вы им пользуетесь (а не тогда, когда вы этого не делаете, например, ночью, когда вы спите). Количество возможных ключей - простая математическая задача. Вы можете легко и точно оценить среднюю стоимость перечисления возможных ключей, пока ваш ключ не будет найден. Ключ является надежной основой для количественной защиты.

Так что вы не должны бросать свои собственные алгоритмы, потому что тогда вы не знаете, сколько вы получаете безопасности.

Кроме того, большинство людей, которые применили свои собственные алгоритмы, обнаруживают, как правило, трудным путем, что они вообще не получают особой защиты. Разработка хорошего алгоритма шифрования hard , потому что он не может быть автоматически протестирован. Ваш код может выполняться и правильно расшифровывать данные, которые он зашифровал, но он ничего не говорит вам о том, насколько безопасен алгоритм. Разработка AES была результатом процесса, который занял несколько лет и в котором участвовали сотни квалифицированных криптографов (большинство из которых имели докторскую степень и многолетний опыт научных исследований в области симметричного шифрования). То, что одинокий разработчик мог бы делать то же самое, не говоря уже о лучшем, в тайне своей мастерской, выглядит отчасти ... неправдоподобно.

1 голос
/ 10 января 2011

Когда злоумышленник не знает, какой алгоритм вы использовали, и является ли он безопасным, криптоаналитик выполняет тяжелую работу.Поэтому неважно, используете ли вы AES или свой собственный шифр, если он такой же сильный и безопасный, как AES.Здесь есть но.Криптография немного требовательна, и поэтому у вас есть много способов выстрелить себе в ногу, не зная об этом.Я бы предложил использовать стандартные алгоритмы, возможно, с некоторыми безопасными вариантами.

0 голосов
/ 10 января 2011

Самая большая часть вашей стратегии называется «безопасность через неизвестность».Вы делаете ставку на то, что, поскольку никто не знает точных деталей вашего маленького изменения идеи, они не смогут понять это.

Я не эксперт по безопасности, но я могускажу вам, что вы, вероятно, не придумаете что-то невероятно новое.Криптография изучалась людьми на протяжении тысячелетий, и ваша идея вряд ли будет оригинальной.Даже если вы относительно хороший программист и пишете что-то действительно сложное, вопрос сводится к тому, с кем вы столкнулись.Если вы просто пытаетесь защитить свои данные от своей младшей сестры, то, вероятно, все будет хорошо.С другой стороны, если вы используете его для отправки номеров кредитных карт через Интернет, вы обречены на провал.Он будет проанализирован способами, о которых вы не думали или не знали, и в конечном итоге взломал.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...