Bitcoin Forum
June 22, 2024, 05:47:50 AM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Алгоритмы с подписью и асимметричным шифl  (Read 2988 times)
zidansz (OP)
Full Member
***
Offline Offline

Activity: 165
Merit: 101


View Profile WWW
July 06, 2015, 01:18:13 PM
 #1

Подскажите какие алгоритмы можно использовать сразу для подписи и асимметричного шифрования?
пока знаю только о схеме Эль-Гамаля.

bitmonstr
Member
**
Offline Offline

Activity: 105
Merit: 117


View Profile
July 06, 2015, 03:09:35 PM
 #2

Подскажите какие алгоритмы можно использовать сразу для подписи и асимметричного шифрования?
пока знаю только о схеме Эль-Гамаля.


Собственно таких алгоритмов только два алгоритмы Диффи-Хеллмана и Эль-Гамаля. Все остальные это производные от них.  Очень известен алгоритм RSA - он основан на алгоритме Диффи-Хеллмана.
zidansz (OP)
Full Member
***
Offline Offline

Activity: 165
Merit: 101


View Profile WWW
July 06, 2015, 06:03:35 PM
 #3

а Диффи-Хеллмана разве для подписи используется?

bitmonstr
Member
**
Offline Offline

Activity: 105
Merit: 117


View Profile
July 07, 2015, 07:18:12 AM
 #4

а Диффи-Хеллмана разве для подписи используется?

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

Среди практически используемых алгоритмов ещё распространён ECDSA - он более современный.

Важно учесть, для чего используется электронная подпись, если необходимо юридическое признание подписи - то нужно использовать стандарты, принятые в соответствующих странах - они отличаются.
zidansz (OP)
Full Member
***
Offline Offline

Activity: 165
Merit: 101


View Profile WWW
July 07, 2015, 08:50:45 AM
 #5

может я выразился неверно
меня интересуют алгоритмы которые можно использовать и для подписи и для шифрования с открытым ключом.
ECDSA насколько я понимаю используется только для подписи, Диффи-Хеллмана только для шифрования с открытым ключом и на практике не используется
пара ключей по схеме Эль-Гамаля может использоваться и для подписи и для шифрования с открытым ключом

я пытаюсь найти какие еще алгоритмы могут по одной паре использоваться и для подписи и для шифрования с открытым ключом

bitmonstr
Member
**
Offline Offline

Activity: 105
Merit: 117


View Profile
July 07, 2015, 10:28:58 AM
 #6

может я выразился неверно
меня интересуют алгоритмы которые можно использовать и для подписи и для шифрования с открытым ключом.
ECDSA насколько я понимаю используется только для подписи, Диффи-Хеллмана только для шифрования с открытым ключом и на практике не используется
пара ключей по схеме Эль-Гамаля может использоваться и для подписи и для шифрования с открытым ключом

я пытаюсь найти какие еще алгоритмы могут по одной паре использоваться и для подписи и для шифрования с открытым ключом

Нет, неверно. Диффи-Хеллмана вполне можно использовать и для подписи, и для шифрования, но если вы напишите код сами, или используете какой-то опенсоурс, реализации есть. RSA - это коммерческая реализация  Диффи-Хеллмана, они просто раньше запатентовали, и потом долго судились с авторами. RSA позволяет и шифровать, и подписывать. Также есть множество приложений, использующих схему Диффи-Хеллмана для подписи, например известный PGP (он и Эль Гамаля использует одновременно).

Алгоритмом ECDSA вполне можно и шифровать, вопрос только в реализациях опять же.

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



zidansz (OP)
Full Member
***
Offline Offline

Activity: 165
Merit: 101


View Profile WWW
July 07, 2015, 04:25:51 PM
 #7

я все же не совсем понимаю вот ecdsa - Elliptic Curve Digital Signature Algorithm
в статьях вики что в русской что в английской - описано только использование подписи.
на что собственно и и название алгоритма указывает
что в общем довольно сильно путает
например алгоритм подписи и ее проверки в статьях есть.... так же и теоретических материалов много
а алгоритм шифрования того же ecdsa где искать?

bitmonstr
Member
**
Offline Offline

Activity: 105
Merit: 117


View Profile
July 07, 2015, 05:49:10 PM
 #8

я все же не совсем понимаю вот ecdsa - Elliptic Curve Digital Signature Algorithm
в статьях вики что в русской что в английской - описано только использование подписи.
на что собственно и и название алгоритма указывает
что в общем довольно сильно путает
например алгоритм подписи и ее проверки в статьях есть.... так же и теоретических материалов много
а алгоритм шифрования того же ecdsa где искать?

Дело в том, что алгоритм - это вообще-то последовательность каких-то вычислительных действий, т.е. теоретическое описание их, криптографическая схема - это последовательность криптографических действий при работе этого алгоритма (или нескольких алгоритмов) - имеются ввиду, например, такие  действия - "Алиса пересылает ключ Бобу и т.д.".  А реализация алгоритма, или схемы - это компьютерная программа - и она может реализовывать только часть алгоритма или наоборот сразу несколько алгоритмов. Т.е. программа уже ориентирована на пользователя, и имеет массу своих особенностей и ограничений, например есть программы шифрования, где вы свой ключ даже не увидите никогда. Конечно программа это не алгоритм, хотя в народе их часто называют таким же названием. Бывают реализации алгоритмов в виде библиотек,  они уже обычно ближе к теории, там есть функции низкого уровня, вы сами можете сделать нужную реализацию алгоритма с помощью библиотеки. Помимо этого всего - есть ещё стандарты и спецификации. Т.е. всевозможные описания, правила, ограничения и т.д. Например, стандарты для электронной подписи в разных странах сильно отличаются. Опять же спецификация - это не реализация - это просто текст на бумаге. Реализацию же кто-то должен сделать.  Так, например, Elliptic Curve Digital Signature Algorithm (ECDSA) - это на самом деле спецификация. Сама по себе она ничего делать не может, только описывает требования и правила. Но, поскольку, она описывает конкретный ассиметричный алгоритм, то шифровать с помощью этого алгоритма можно конечно. Всё дело только в реализации. И такие реализации есть.

Поэтому не очень понятно, что вас интересует, вы хотите найти программы и библиотеки, которые делают и шифрование, и подпись? Или интересует только теория? Если теория - то изучите алгоритм (и схему) Диффи-Хеллмана (она основана на сложности факторизации больших чисел) и схему Эль-Гамаля (она основана на сложности вычисления дискретных логарифмов в конечном поле). На основе этих двух базовых алгоритмов сделаны абсолютно все реализации программ ассиметричного шифрования и цифровой подписи. Т.е. если есть желание детально разобраться - то  изучать теорию нужно с этого, а не с конкретных программ или спецификаций. 


zidansz (OP)
Full Member
***
Offline Offline

Activity: 165
Merit: 101


View Profile WWW
July 07, 2015, 06:38:51 PM
 #9

меня интересует и первое и второе... хотелось бы помимо просто использования понимать механики процесса

а вот например такой вопрос - Secp256k1 (который в принципе то - просто эллиптическая функция) позволяет одни и те же ключи использовать и для подписи и для асимметричного шифрования?
еще конечно вводит в заблуждение... источники
кроме схемы Эль-Гамаля нигде не показано возможность использования одной пары и для шифрования и для подписи

bitmonstr
Member
**
Offline Offline

Activity: 105
Merit: 117


View Profile
July 08, 2015, 04:12:25 PM
 #10

меня интересует и первое и второе... хотелось бы помимо просто использования понимать механики процесса

а вот например такой вопрос - Secp256k1 (который в принципе то - просто эллиптическая функция) позволяет одни и те же ключи использовать и для подписи и для асимметричного шифрования?

Secp256k1 - это тоже спецификация, точнее реализованный вариант ECDSA - её частный случай. Рекомендован как надёжный и т.д. Да, ключи те же, секретный ключ тот же, но учитывайте что публичный ключ там - это структура данных из трёх полей, так же как в схеме Эль Гамаля. Принцип тот же для всех эллиптических кривых - это всё расширения схемы Эль Гамаля.

Quote
еще конечно вводит в заблуждение... источники

Да, определённая путаница есть, попытаюсь объяснить - повторюсь, есть такая проблема, что и алгоритмы, и схемы, и программы, и спецификации и т.д. - всё называют названием алгоритма или схемы. Но это всё разные вещи совсем, причём часто например,  программы не совсем соответствуют названию алгоритма или схемы, то же самое касается спецификаций. Также, наоборот, есть очень много различных названий, которые по сути отличаются только какими-то деталями, требованиями и т.д. Хороший пример - Secp256k1 - ECDSA - схема Эль Гамаля - первые два названия описывают частные случаи - спецификации схемы Эль Гамаля с расширениями - дополнены эллиптическими кривыми. 

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

Quote
кроме схемы Эль-Гамаля нигде не показано возможность использования одной пары и для шифрования и для подписи

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

http://kiev-security.org.ua/box/1/81.shtml





Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!