Skip to content

vk4arm/python-shamir-ru-mnemonic

 
 

Repository files navigation

python-shamir-ru-mnemonic

Что это

http://neuzoid.com/crypto/images/shamir-works.png

Этот проект - -шуточная- расово-верная фаза развития проекта https://pypi.org/project/shamir-mnemonic/0.1.0/

Зачем это

У вас есть симметричный ключ для шифрования, например, номеров банковских карт (pan) или канала с примерением симметричной схемы шифрования. Существуют достаточно хорошо зарекомендовавшие себя алгоритмы, типа AES128, AES256 итд. Однако, есть проблема: ключ надо как-то передать "на ту" сторону, с риском компрометации ключа. Схема Шамира позволяет разделить ключ на N частей полной длины таким образом, чтобы при вводе T частей, можно было восстановить исходный ключ.

Таким образом, достигается безопасность хранения секретного ключа (в ряде случаев возможна имплементация, при которой мастер-ключ не храниться нигде).

Вторая проблема: владельцы ключа должны запомнить длинную случайную последовательность (например, 16 байт). К сожалению, возможно, что владельцы будут записывать свой "секрет" на бумажке. Чтобы помочь владельцам ключей запомнить их, коллеги из Сатоши Лабс предложили методику мнемонического метода Шамира Он заключается в кодировании последовательности набором слов из определенного словаря. https://github.com/satoshilabs/slips/blob/master/slip-0039.md

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

Нужно учесть тот факт, что набор слов может быть достаточно вычурным, и не является попыткой кого-то оскорбить.

Безопасность

Данная имплементация позволяет сразу получить и мастер-ключ, и "мнемотизированные" секреты, а значит, для имплементации в защищаемых решениях, должно быть модицифировано.

Цель данного кода - проверить корректность других имплементаций и просто приколоться.

Для защиты чувствительной информации вам потребуется имплементация, не палящая master-ключ!!!

Инсталляция

Поставить с Github:

$ git clone https://github.com/vk4arm/python-shamir-ru-mnemonic.git
$ cd python-shamir-ru-mnemonic
$ pip3 install .

Удаление

Если ПО было установлено, как приведено выше

$ pip3 uninstall shamir-ru-mnemonic

Работа из командной строки

Вы можете использовать механизм получения разделенного мнемонического секрета из командной строки.

Внимание: мы не рекомендуем использовать скрипт коммандной строки для защиты чувствительных данных! Злоумышленние или системынй администратор может посмотреть созданный секретный ключ, что хорошо для отладки, и если вы доверяете своему системуному администратору (или живете в Санкт-Петербурге)

После того, как shamir_ru_mnemonic установлен - вы можете использовать shamir комманду следующим образом:

$ rushamir create 3of5   # создает 5 секретов, из которых 3 любых достаточно для восстановления ключа
$ rushamir recover       # интерактивный механизм восстановления ключа (владельцы должны будут ввести свои секреты)

Вы можете ввести собственный ключ в виде 16-ричной строки:

$ rushamir create 3of5 --master-secret=cb21904441dfd01a392701ecdc25d61c

Вы можете специфицировать собственню схему. Например, для создания 3 групп с 2-из-3, 2-из-5, и 4-из-5, используйте:

$ rushamir create custom --threshold 3 --group 2 3 --group 2 5 --group 4 5

Используйте rushamir --help or rushamir create --help to see all available options.

Если вам нужно запустить консольную версию без установки сразу после чекаута, используйте:

$ python3 -m shamir_ru_mnemonic.cli

Тестовые вектора

Стопудово будут в pro-версии )))) Сейчас скрипт generate_vectors дает ошибку, но вместо этого вы можете проверить вручную работу cli Делается это так:

Отказ от ответственности

  1. Данное ПО - поставляется как есть и не является сертифицированным средством защиты информации (хотя на его основе можно сделать)

2. Словарь - просто словарь. Каждое слово в отдельности - это просто слово, слов запрещенных пока нет, но мы готовы признать каждое отдельное слово преступлением и убрать его по первому обоснованному требованию.

  1. Наборы слов являются случайными. Они ничего не означают, но помогают запомнить часть секрета.
  2. Это просто забавно. Заранее простите.

Охренительное спасибо участникам!

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

http://neuzoid.com/crypto/images/photo_2020-11-15_22-34-29.jpg

Святой Бонифаций - за старт, разгон, мотивацию большой вклад и ремонт

http://neuzoid.com/crypto/images/photo_2020-11-15_22-20-42.jpg

demeliorator - за организацию, оптимизм, отвагу и знания

http://neuzoid.com/crypto/images/photo_2020-11-15_22-49-24.jpg

педигий рептилоида - за воровство чужих идей и удаление из словаря термина "1с". Так же добавил в конец мнемонического отображения контрольной суммы для 128-битного кода слово "аминь"

http://neuzoid.com/crypto/images/1610838_10204064841176010_3843328858959525345_n.jpg

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 98.0%
  • Makefile 2.0%