| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Шифровка-расшифровка в несколько ключей |
| Автор: sergejzr 16.11.2006, 14:12 |
| Ребята, кто дружит с криптографией. Нужен алгоритм шифровки/дешифровки. Попробую описать.. Pt - Открытый текст Ct - Шифровка Ks={K0,K1,..Kn} - несколько ключей К0!=K1!=K2!=...Kn encode - функция шифрования так, что Ct=encode(Pt,Ks) decode - функция расшифрования так что - Pt=decode(Ct,K0)=decode(Ct,K1)=....decode(Ct,Kn) Не существует такого ключа K*, чтобы decode(Ct,K*)=Pt и K* не являлся бы элементом из Ks (Ну это в идеале) Поясню, область применения. Существует закодированная мессага, несколько человек могут (каждый своим ключём) расшифровать её. Теперь одному из них хотим закрыть доступ. для этого кодируем мессагу заного, но уже без учёта его ключа. Ессно исходя из этого, все ключи должны быть разными. Что нибудь такое в природе есть? Если нет, то почему? Это возможно сделать? Не могу сказать, что я полный идиот в криптографии, но про подобное не слышал вообще ничего.. |
| Автор: maxim1000 16.11.2006, 15:09 |
| а что если под зашифрованным текстом понимать просто набор исходных текстов, зашифрованных каждым ключом в отдельности? (количество ключей большое?) т.е., по сути, просто для каждого человека отдельно создаётся свой зашифрованный текст, а хранятся они вместе... |
| Автор: sergejzr 16.11.2006, 15:35 |
| Да, это мне тоже первым делом пришло в голову. но тут много потенциальных атак можно произвести. Если враг знает, что текст повторяется. А врагом может быть и тот, у кого вчера был доступ. Он просто стырит чужой ключ. |
| Автор: sergejzr 16.11.2006, 21:18 |
| Xex |
| Автор: sergejzr 17.11.2006, 00:08 |
| Только проблема, как пермутировать так, чтобы только имеющий ключ знал "свои места". Ведь слов кодировать надо будет много и в идеале в каждом слове позиции вырешиваются в зависимости от связки слово/ключ. |
| Автор: sergejzr 17.11.2006, 13:14 |
Я вот думаю насчёт пермутаций.. но как их сделать однозначными для каждого ключа и неоднозначными для разных слов.... |
| Автор: Alexandr87 19.11.2006, 15:06 |
| У каждого участника обмена есть пара ключей (открытый, закрытый). При передачи сообщения - генерируется сессионый ключ, данным ключом шифруется исходное сообщение. Далее, этот сессионый ключ шифруется ассиметрией для каждого, кто должен прочитать это сообщение, и включается в сообщение. |
| Автор: sergejzr 15.2.2007, 23:46 |
| Оказывается ещё в 70-х появился очень простой вариант Берём многочлен прибавляем к наему наш секрет. Если полином - парабола, берём несколько случайных точек на ней. каждые 2 точки однозначно опишут эту параболу. Делим по точке между людьми, одна - открытая. Каждые 2 точки однозначно опишут эту параболу а значит двое могут однозначно узнать секрет. Вариант раширяется по вкусу |
| Автор: Alexandr87 16.2.2007, 06:17 |
| можно посмотреть реализацию или пример "на словах"? |
| Автор: sergejzr 16.2.2007, 11:40 |
| Alexandr87, http://en.wikipedia.org/wiki/Shared_secret возможно более понятное описание. А пример будет, но попозже. |
| Автор: Alexandr87 16.2.2007, 18:37 | ||||
Здесь же описывается механизм разделения секретов, он никого отношения не имеет к ситуации описанной вначале и применяется совершенно в других случаях.
Если я вас правильно понял вы хотите разделить секрет по принципу (2 из кол-во участников обмена) и одну часть выложить в открытый доступ, тогда простой перехват 2 (не публичной) части, предназначенной для любого из получаетелей позволяет расшифровать сообщение. На мой взгляд вам все же стоит взглянуть на это, так как такой способ является наиболее простым (честно говоря, я даже не подразумеваю, как это можно сделать по-другому, но не исключаю факт, что можно)
|
| Автор: sergejzr 15.3.2007, 12:42 | ||||||
И в других и в это так же
Перехват части, предназначенной для другого участника не учитывается в моём случае. Поскольку у настоящих участников и так имеется одна координата, а врагу достаточно ключа любого из них (что само по себе не зависит от способа шифрования). Так же например Ваш способ:
Если враг получит ключ любого из участников, он ломает мессагу. Т.е ничем не отличается от "многочленного" шифрования. |
| Автор: Alexandr87 16.3.2007, 06:15 | ||||
Боюсь, не совсем понял, что вы хотели сказать, но очень хочу разобраться. Объясните пожалуйста на примере: вот у вас есть три получаетеля: A,B,C. Первый раз вам нужно передать секрет один S1 всем трем участникам, второй раз секрет S2 получаетелям A и B. Я никак не могу увидеть применения вашего метода для решения этой задачи. Задача сформулирована вами
Метод, который описал я, это обычный подход к подобным задачам. Ключи - вы перехватить не можете, так как сессионый ключ передается в зашифрованном виде, а ключ, на котором шифруется сессионый ключ (private составляющая пары ключей) не покидает компьюетра (или же смарт-карты, что вообще делает невозможным его компрометацию) получаетеля. |