Существует ли стандартный формат для чего шифровать как цифровую подпись? - PullRequest
0 голосов
/ 14 марта 2019

При отправке сообщения, зашифрованного с асимметричным шифрованием, например,

Длинное длинное, очень длинное сообщение здесь. // encrypted with recipents public key

Подписано Джоном Доу // encrypted with own private key

Хочет ли кто-нибудь соответствовать своей цифровой подписи? Существует ли стандартный формат или условно используемая конвенция для части подписи? Или даже, есть ли какие-то соглашения или это просто совершенно случайно, что каждый человек хочет поместить туда?

Edit:

Полагаю, мой вопрос не о стандартах как таковых. Скорее о соглашениях, если кто-то отправит сообщение в формате примера в мессенджере или электронной почте, например.

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

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

А теперь перейдем к теме:

Существует несколько протоколов для передачи зашифрованных и подписанных данных.

Если вы используете (веб) службы, вы можете взглянуть на WS-Security или подпись XML

Если вы ищете более обобщенный стандарт, выможет выполнять поиск «Синтаксис криптографических сообщений CMS» или PKCS # 7

. Также существуют специальные протоколы инструментов, такие как использование openssl, подписи в документе (pdf, word, ..) ... которые не являются стандартами.как таковой, но обычно используется.

1 голос
/ 21 марта 2019

Вы упомянули в комментарии :

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

Хотя ответ на этот комментарий, как правило, таков: нет .

Криптографические подписи могут быть построены различными способами.В RSA операция подписания напоминает некоторые элементы шифрования, но это совпадение.

Например, возьмем некоторую схему подписи Шнорра для эллиптических кривых:

(In this example, G is a base point for some secure elliptic curve E.
 All variables between brackets are scalars modulo the order of E.)


Setup:
  Alice has a private key x (random).
  Bob has Alice's public key P_A = [x]G.

Alice signs a message m:
  k := random()
  Q := [k]G
  c := H(Q||P_A||m)
  r := k + c*x
  Alice outputs s := (Q, r)

Bob verifies s over m:
  c := H(Q||P_A||m)
  Check if [r]G == Q + [c]P_A

Как вы можетевидите, здесь нет реального понятия «шифрование».Это просто протокол.

...