2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 12:27 
Аватара пользователя
epros в сообщении #1710234 писал(а):
Дописывать собственный код - это довольно коряво
Генерировать ключи шифрования из пароля - тоже.

Готовой утилиты нет, но, если не ошибаюсь, пишется совсем просто.
Используется синтаксис Python
# криптография реализована непрофессионалами, не пытайтесь повторить в домашних условиях
seed = hash.sha256(password).digest()
private_key = cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey.from_private_bytes(seed)
public_key = private_key.public_key()

И, скорее всего, с любой библиотекой для ed25519 результат получится одинаковым.

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 14:52 
Аватара пользователя
mihaild в сообщении #1710448 писал(а):
epros в сообщении #1710234 писал(а):
Дописывать собственный код - это довольно коряво
Генерировать ключи шифрования из пароля - тоже.

Если бы их можно было сгенерировать из принципиально некопируемого злоумышленниками слепка личности автора, то я был бы только за. А так другого выхода не вижу.

mihaild в сообщении #1710448 писал(а):
Готовой утилиты нет, но, если не ошибаюсь, пишется совсем просто

Всё равно придётся записать и где-то хранить.

mihaild в сообщении #1710448 писал(а):
И, скорее всего, с любой библиотекой для ed25519 результат получится одинаковым.

Это "скорее всего" звучит как-то разочаровывающе. Т.е. уверенности в том, что через 20 лет в точности такая же библиотечная функция останется доступной общественности, всё-таки нет?

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 15:28 
Аватара пользователя
epros в сообщении #1710463 писал(а):
А так другого выхода не вижу.
Генерировать ключи из качественного сида, и как-то заучивать его наизусть.
epros в сообщении #1710463 писал(а):
Всё равно придётся записать и где-то хранить.
Название конкретной утилиты, если на то пошло, тоже надо где-то хранить.
epros в сообщении #1710463 писал(а):
Т.е. уверенности в том, что через 20 лет в точности такая же библиотечная функция останется доступной общественности, всё-таки нет?
Тут надо проверить, что правда реализация в других библиотеках дает тот же результат. Если правда - то уверенность примерно того же уровня, что текущие файлы с rsa ключами можно будет использовать.

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 17:51 
Аватара пользователя
mihaild в сообщении #1710466 писал(а):
Генерировать ключи из качественного сида, и как-то заучивать его наизусть

А смысл? Боимся, что разгадают и подпишут от моего имени договор дарения моей квартиры? Так государство его всё равно не зарегистрирует. Есть риск, что злопыхатели начнут в целях нанесения мне репутационного ущерба подписывать с помощью украденного пароля какую-нибудь гадость и распространять её по сети, так что я потом сам не захочу доказывать, что я автор этой подписи. Но поскольку выгода от таких действий сомнительна, то вряд ли кто-то станет этим заниматься. А риск того, что разгадают парольную фразу и попытаются с её помощью присвоить авторство произведения отсутствует, если в самой парольной фразе содержатся сведения о моей подлинной личности.

mihaild в сообщении #1710466 писал(а):
Название конкретной утилиты, если на то пошло, тоже надо где-то хранить

Ну вот подпись PGP сразу распознаётся по формату самой подписи, так что даже названия утилиты не надо хранить.

mihaild в сообщении #1710466 писал(а):
Тут надо проверить, что правда реализация в других библиотеках дает тот же результат. Если правда - то уверенность примерно того же уровня, что текущие файлы с rsa ключами можно будет использовать.

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

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 18:37 
Аватара пользователя
epros в сообщении #1710482 писал(а):
А смысл?
А смысл вообще каких-то секретов?
epros в сообщении #1710482 писал(а):
А риск того, что разгадают парольную фразу и попытаются с её помощью присвоить авторство произведения отсутствует, если в самой парольной фразе содержатся сведения о моей подлинной личности.
При таком подходе можно не генерировать ключи, а просто приложить хеш конкатенации парольной фразы и текста.
epros в сообщении #1710482 писал(а):
Ну вот подпись PGP сразу распознаётся по формату самой подписи, так что даже названия утилиты не надо хранить
Я не уверен, что все утилиты через 20 лет будут одинаково этот формат поддерживать.
epros в сообщении #1710482 писал(а):
RSA - это криптографический стандарт, описание которого зафиксировано в истории
Но он работает с числами. А как эти числа представляются в файле с ключом - уже другой вопрос.
epros в сообщении #1710482 писал(а):
А какой алгоритм генерации ключей реализован в этой библиотечной функции, то никому неведомо, ибо в истории он не зафиксирован
По идее должен быть тот же, что описан в https://datatracker.ietf.org/doc/html/r ... tion-5.1.5. Т.е. приватный ключ - это ровно Ваши 32 байта, а публичный генерируется по нему описанной процедурой.

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 20:18 
Аватара пользователя
mihaild в сообщении #1710495 писал(а):
А смысл вообще каких-то секретов?

У меня есть сертификат УКЭП, но я не могу им пользоваться иначе как в приватной официальной переписке, за сохранность которой более или менее отвечает другая сторона, потому что публикация документов с такой подписью автоматически означает выкладывание в публичный доступ моих ФИО, ИНН и СНИЛС, чего мне конечно же совсем не нужно.

Поэтому я и обсуждаю возможность публикации под псевдонимом, но с потенциальной возможностью когда-нибудь потом доказать своё авторство, может быть кому-то в приватном порядке, а может быть и публично, но не сейчас.

mihaild в сообщении #1710495 писал(а):
При таком подходе можно не генерировать ключи, а просто приложить хеш конкатенации парольной фразы и текста.

Да, это вариант. Но:
1) Такой хеш никто не сможет проверить без моего личного участия, а значит произведение в ходе путешествия по сети может подвергнуться модификации и никто этого не заметит. В итоге оригинальный вариант скорее всего не сохранится. Если же используется электронная подпись, то любой сразу увидит, что подпись соответствует псевдониму автора. Так что если кто-то отредактирует произведение, добросовестные читатели стразу же предложат: "Лучше возьми оригинальный вариант вот там-то".
2) В подписи содержится открытый ключ. Так что если я таким же образом подпишу другое произведение, то все увидят, что автор действительно тот же. Если же кто-то другой проставит тот же псевдоним под другим произведением, то все увидят, что на самом-то деле автор другой.

mihaild в сообщении #1710495 писал(а):
Я не уверен, что все утилиты через 20 лет будут одинаково этот формат поддерживать.

Как же тогда проверять подписи документов 20-ти летней данности? Я всё же думаю, что общество позаботится о сохранности алгоритма.

mihaild в сообщении #1710495 писал(а):
Но он работает с числами. А как эти числа представляются в файле с ключом - уже другой вопрос.

Какая разница, какова кодировка при выводе числа для печати - 16-ричные цифры, BASE64, BASE58 или что-то ещё? Главное - просто знать, какова она.

mihaild в сообщении #1710495 писал(а):
Т.е. приватный ключ - это ровно Ваши 32 байта, а публичный генерируется по нему описанной процедурой.

А, т.е. для генерации приватного ключа из парольной фразы можно просто использовать SHA-256?

Честно говоря, я был не уверен, что по приватному ключу можно сгенерировать открытый. Они же, вроде, генерируются парой? Или это особенность протокола Диффи-Хеллмана?

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 21:34 
Аватара пользователя
epros в сообщении #1710508 писал(а):
В итоге оригинальный вариант скорее всего не сохранится. Если же используется электронная подпись, то любой сразу увидит, что подпись соответствует псевдониму автора.
Я не понимаю, как это должно работать. Вы написали текст, взяли свои паспортные данные, и выложили текст и какую-то функцию от текста и паспорттных данных. Я взял тот же текст, посчитал ту же функцию от текста и уже своих паспортных данных, и опубликовал текст с получившимся у меня значением. Кто что как должен проверять, и чем подпись тут отличается от хеша текста?
epros в сообщении #1710508 писал(а):
Я всё же думаю, что общество позаботится о сохранности алгоритма
Я тоже на это надеюсь. И даже довольно сильно уверен, что так и будет. Но тут ситуация ничем качествено не отличается от взятия сколь-нибудь популярной библиотеки, да и количественно не очень.
epros в сообщении #1710508 писал(а):
А, т.е. гдя генерации приватного ключа из парольной фразы можно просто использовать SHA-256?
В принципе да. Дорогу тоже можно переходить, просто посмотрев по сторонам и игнорируя светофор.
epros в сообщении #1710508 писал(а):
Честно говоря, я был не уверен, что по приватному ключу можно сгенерировать открытый. Они же, вроде, генерируются парой? Или это особенность протокола Диффи-Хеллмана?
Не очень понимаю, причем тут Диффи-Хеллман. Это особенность EdDSA (в котором я, откровенно говоря, не особо разбирался, но штука известная).

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 23:23 
Аватара пользователя
mihaild в сообщении #1710520 писал(а):
Я не понимаю, как это должно работать. Вы написали текст, взяли свои паспортные данные, и выложили текст и какую-то функцию от текста и паспорттных данных. Я взял тот же текст, посчитал ту же функцию от текста и уже своих паспортных данных, и опубликовал текст с получившимся у меня значением. Кто что как должен проверять, и чем подпись тут отличается от хеша текста?

Оригинальный текст разошёлся и стал известен. Через год некто взял тот же текст и подписал его своими паспортными данными. Но все видят, что оригинальная подпись имеет другой открытый ключ подписи, и все знают, какая из подписей появилась раньше.

mihaild в сообщении #1710520 писал(а):
Дорогу тоже можно переходить, просто посмотрев по сторонам и игнорируя светофор.

А что не так-то? Откуда-то эти 32 байта нужно же взять.

mihaild в сообщении #1710520 писал(а):
Не очень понимаю, причем тут Диффи-Хеллман. Это особенность EdDSA (в котором я, откровенно говоря, не особо разбирался, но штука известная).

А, я и не догадался откуда 32 байта. А openssl умеет работать с этой EdDSA? С ECDSA вроде бы работает.

 
 
 
 Re: ЭЦП и биометрия
Сообщение24.11.2025, 23:37 
Аватара пользователя
epros в сообщении #1710535 писал(а):
Но все видят, что оригинальная подпись имеет другой открытый ключ подписи, и все знают, какая из подписей появилась раньше.
А зачем в этой постановке вообще асимметричное шифрование? Почему нельзя хеш от текста + паспортных данных приложить?
epros в сообщении #1710535 писал(а):
А что не так-то? Откуда-то эти 32 байта нужно же взять.
То, что никто толком не знает, насколько эти алгоритмы надежны при низкой энтропии ключей. Понятно, что вряд ли можно sha256 от пароля отличить от случайной строки, не зная пароля - в том числе это вряд ли можно сделать, попытавшись подделать Ed25519. Но всё равно, любой самодельный сетап - это риски.
epros в сообщении #1710535 писал(а):
А openssl умеет работать с этой EdDSA?
Да.

 
 
 
 Re: ЭЦП и биометрия
Сообщение25.11.2025, 13:47 
Аватара пользователя
mihaild в сообщении #1710537 писал(а):
А зачем в этой постановке вообще асимметричное шифрование? Почему нельзя хеш от текста + паспортных данных приложить?

Хеш текста с паспортными данными вообще ничего не даёт читателю, ибо он даже не может его проверить. Так что и сохранять его никто не будет.

А подпись, например, можно даже спокойно встроить в PDF. Я сейчас прямо в Adobe Acrobat DC сгенерировал себе самоподписанный сертификат RSA 2048 бит в виде PFX файла, потом подписал им PDF и встроил подпись внутрь, сделав, чтобы она отображалась в виде красивого штампа, содержащего выбранный мной псевдоним. Кликаешь на него прямо в ридере и выдаётся сообщение, что файл не менялся после подписания и т.п. Читатель PDF может прямо в ридере просмотреть детали сертификата, в том числе, открытый ключ в виде 16-ричного числа (сам-то PFX файл я уже удалил). Красота. Если этот файл распространится по интернету, то псевдоним автора запомнится, а то, что его подпись оригинальная, множество читателей будет иметь возможность проверить, сравнив открытый ключ с известным из истории.

К сожалению, отсутствует одна важна деталь: возможность повторно сгенерировать эти ключи из того, что есть только у автора. Поэтому автору придётся хранить эти ключи вечно, что неудобно.

mihaild в сообщении #1710537 писал(а):
То, что никто толком не знает, насколько эти алгоритмы надежны при низкой энтропии ключей. Понятно, что вряд ли можно sha256 от пароля отличить от случайной строки, не зная пароля - в том числе это вряд ли можно сделать, попытавшись подделать Ed25519. Но всё равно, любой самодельный сетап - это риски.

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

mihaild в сообщении #1710537 писал(а):
Да.

Я тут прочитал, что реализация EdDSA в openssl какая-то особенная. И это слегка пугает в плане того, что программисты что-то переделают и исходный алгоритм забудется общественностью.

 
 
 
 Re: ЭЦП и биометрия
Сообщение25.11.2025, 14:37 
Аватара пользователя
epros в сообщении #1710604 писал(а):
Хеш текста с паспортными данными вообще ничего не даёт читателю, ибо он даже не может его проверить
А подпись дает возможность проверить, что файл сгенерирован кем-то, умеющим пользоваться RSA. Тоже не очень интересно.
epros в сообщении #1710604 писал(а):
Я сейчас прямо в Adobe Acrobat DC сгенерировал себе самоподписанный сертификат RSA 2048 бит в виде PFX файла, потом подписал им PDF и встроил подпись внутрь, сделав, чтобы она отображалась в виде красивого штампа, содержащего выбранный мной псевдоним.
Хеш от паспортных данных тоже можно Comic Sans рендерить.
В обоих случаях у нас в файле какая-то строчка "по этой строчке автор, при желании, сможет доказать, что строчка сгенерирована на основе его паспортных данных".
Я пока не вижу ситуации, в которой описанный Вами механизм дает что-то, чего не дает приложенный хеш.

 
 
 
 Re: ЭЦП и биометрия
Сообщение25.11.2025, 17:29 
Аватара пользователя
mihaild в сообщении #1710614 писал(а):
А подпись дает возможность проверить, что файл сгенерирован кем-то, умеющим пользоваться RSA. Тоже не очень интересно.

Кто-то, выбравший данный псевдоним.

mihaild в сообщении #1710614 писал(а):
Хеш от паспортных данных тоже можно Comic Sans рендерить.
В обоих случаях у нас в файле какая-то строчка "по этой строчке автор, при желании, сможет доказать, что строчка сгенерирована на основе его паспортных данных".
Я пока не вижу ситуации, в которой описанный Вами механизм дает что-то, чего не дает приложенный хеш.

Кстати, если прямо внутри подписанного PDF напечатать хеш от идентификационных данных, то это тоже неплохой вариант. Но у него есть два минуса:
1) Не всякий формат файла подходит для включения в него хеша.
2) Автору всё же придётся хранить ключи подписи, если он планирует опубликовать и другие произведения под тем же псевдонимом, чтобы читатели могли убедиться, что это тот же автор, без раскрытия его реальной личности.

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

 
 
 
 Re: ЭЦП и биометрия
Сообщение26.11.2025, 09:32 
Аватара пользователя
В продолжение моего исследования Adobe Acrobat reader DC. Если подготовить PFX файл с ключами не в самом ридере, а в openssl, то в ридере его можно использовать таким же образом. Единственный момент, при попытке использовать для псевдонима русские буквы получились кракозябры. Я почему-то думал, что UTF8 ридер нормально распознает, но нет. Но это мелочи.

И, к сожалению, это проходит только с сертификатом RSA. Попытка выполнить все те же шаги, но с сертификатом EdDSA, привела на этапе подписи PDF к ошибке "неизвестный алгоритм". Это печально, потому что как подставить хеш парольной фразы вместо приватного ключа EdDSA я ещё более или менее понимаю, но как проделать это с приватным ключом RSA - совершенно непонятно.

И ещё я тут подумал, что для хеширования парольной фразы лучше использовать не SHA256 или какой-нибудь MD5, а scrypt, ибо он разрабатывался специально чтобы быть устойчивым к подбору с помощью ASIC.

 
 
 
 Re: ЭЦП и биометрия
Сообщение26.11.2025, 13:00 
Аватара пользователя
А, я сообразил, в чем проблема с хешом от паспортных данных по сравнению с подписью - их тоже можно восстановить подбором.
epros в сообщении #1710687 писал(а):
Это печально, потому что как подставить хеш парольной фразы вместо приватного ключа EdDSA я ещё более или менее понимаю, но как проделать это с приватным ключом RSA - совершенно непонятно.
Есть библиотеки, которые детерменировано делают RSA ключ из потока байт. Но да, тут надежды на воспроизводимость другими средствами немного. Хотя код библиотеки, наверное, никуда не денется, воспроизвести должно быть возможно.

 
 
 
 Re: ЭЦП и биометрия
Сообщение26.11.2025, 13:12 
Аватара пользователя
mihaild в сообщении #1710702 писал(а):
А, я сообразил, в чем проблема с хешом от паспортных данных по сравнению с подписью - их тоже можно восстановить подбором.

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

mihaild в сообщении #1710702 писал(а):
Есть библиотеки, которые детерменировано делают RSA ключ из потока байт.

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

 
 
 [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4, 5  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group