Перейти к содержимому

Dsa что это такое

  • автор:

Mathematical Cryptography

The Digital Signature Algorithm is a system that takes advantage of the existence of cyclic subgroups of smaller order in \(\F_p\text<.>\) Choosing a large prime \(p\) will keep the core discrete log problem intractable using contemporary methods like the index calculus, while finding a much smaller subgroup keeps the computation and storage requirements reasonable for users. (That is, while \(p\) might be on the order of \(2^<2048>\text<,>\) the subgroup used for the verification is on the order of \(q \sim 2^<512>\text<,>\) for example.)

Algorithm 5.4.1 . Digital Signature Algorithm (DSA).
  1. (public parameters) Sam chooses a large primes \(p, q\) satisfying \(p \equiv 1 \bmod p\) and an element \(g\) of order \(q\) modulo \(p\text<.>\)
  2. (private) Sam chooses a private key \(1 \lt a \lt q-1\) and computes \(A = g^a\text<.>\)
  3. (public) Sam publishes \(p,q, g, A\text<.>\)
  4. (private) Sam wishes to sign a document \(D\) where \(1 \leq D \lt q\text<.>\) She picks a random element \(1 \lt k \lt q\text<.>\) She computes

As is the running theme with elliptic curves, the DSA is easily implemented with elliptic curves in place of the finite field \(\F_p\text<.>\) The advantage is that the ONLY way currently known to attack the discrete log problem in robust elliptic curves is with exponential routines. The Digital Signature Algorithm with elliptic curves is called ECDSA and is in common usage. One of the more surprising applications is in the realm of cryptocurrecy, to be discussed in a sequel section.

Dsa что это такое

закрытый: 160-256 бит, открытый: 1024-3072 бит

два числа по 160-256 бит

DSA (Digital Signature Algorithm) — алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.

Алгоритм был предложен Национальным институтом стандартов и технологий (США) в августе 1991 и является запатентованным U.S. Patent 5 231 668 , но НИСТ сделал этот патент доступным для использования без лицензионных отчислений. Алгоритм вместе с криптографической хеш-функцией SHA-1 является частью DSS (Digital Signature Standard), впервые опубликованного в 1994 (документ FIPS-186 (Federal Information Processing Standards)[1]). Позднее были опубликованы 2 обновленные версии стандарта: FIPS 186-2[2] (27 января 2000 года) и FIPS 186-3[3] (июнь 2009).

Содержание

Использование алгоритма

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

Параметры схемы цифровой подписи

Для построения системы цифровой подписи нужно выполнить следующие шаги:

  1. Выбор криптографической хеш-функции H(x).
  2. Выбор большого простого числа q, размерность которого N в битах совпадает с размерностью в битах значений хэш-функции H(x).
  3. Выбор простого числа p, такого, что (p-1) делится на q. Битовая длина p обозначается L ( 2^<L-1>< p < 2^<L>» width=»» height=»» />).</li>
<li>Выбор числа <i>g</i> такого, что его мультипликативный порядок по модулю<i>p</i> равен <i>q</i>. Для его вычисления можно воспользоваться формулой <img decoding=такое, что  g \neq 1 . В большинстве случаев значение h = 2 удовлетворяет этому требованию.

Как упомянуто выше, а также в DSS (Digital Signature Standard), первоочередным параметром схемы цифровой подписи является используемая криптографическая хеш-функция, необходимая для преобразования текста сообщения в число, которое собственно и будет подписано. Важной характеристикой этой функции является битовая длина выходной последовательности, обозначаемая далее N (160 для функции SHA-1). В первой версии стандарта DSS рекомендована функция SHA-1 и, соответственно, битовая длина подписываемого числа 160 бит. Сейчас SHA-1 уже не является достаточно безопасной. В стандарте указаны следующие возможные пары значений чисел L и N:

  1. L = 1024, N = 160
  2. L = 2048, N = 224
  3. L = 2048, N = 256
  4. L = 3072, N = 256

В соответствии с этим рекомендованы хеш-функции семейства SHA-2. Правительственные организации должны использовать один из этих вариантов, но все другие вольны выбирать. Проектирующий систему может выбрать любую хеш-функцию. Поэтому далее не будет заостряться внимание на использовании конкретной хеш-функции. Стойкость криптосистемы на основе DSA не превосходит стойкость используемой хеш-функции и стойкость пары (L,N), чья стойкость не больше стойкости каждого из чисел по отдельности. Ранее рекомендовалась длина p L = 1024 бита. В данный момент для систем, которые должны быть стойкими до 2010 (2030) года, рекомендуется длина в 2048 (3072) бита.

Открытый и секретный ключи

    представляет собой число x \in (0, q) вычисляется по формуле y=g^x \mod p

Открытыми параметрами являются числа (p, q, g, y). Закрытый параметр только один — число x. При этом числа (p, q, g) могут быть общими для группы пользователей, а числа x и y являются соответственно закрытым и открытым ключами конкретного пользователя. При подписании сообщения используются секретные числа x и k, причем число k должно выбираться случайным образом (на практике псевдослучайным) при подписывании каждого следующего сообщения.

Поскольку (p, q, g) могут быть использованы для нескольких пользователей, на практике часто делят пользователей по некоторым критериям на группы с одинаковыми (p, q, g). Поэтому эти параметры называют доменными параметрами (Domain Parameters).

Подпись сообщения

Подпись сообщения выполняется по следующему алгоритму:

Подписью является пара чисел (r, s), общая длина подписи 2*N.

Проверка подписи

Проверка подписи выполняется по алгоритму:

Подпись верна, если v = r

Корректность схемы

Данная схема цифровой подписи корректна в той степени, что желающий проверить подлинность подписи всегда получит положительный результат в случае подлинности. Покажем это:

Во-первых, если g=h^<(p-1)/q>\mod p» width=»» height=»» />, то из этого по Малой теореме Ферма следует <img decoding=делится на q

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

Рекомендованный алгоритм генерации

L - 1 = n*N + b

Пусть L представлена в виде , где n и b — целые числа, причем b лежит в диапазоне от 0 включая до N. Генерация псевдопростых чисел p и q выполняется следующим образом:

Генерация псевдослучайных чисел для использования в алгоритме

Для работы алгоритма требуется также генератор случайных или псевдослучайных чисел. Этот генератор нужен для создания частного пользовательского ключа (x), а также для создания секретного случайного числа k, которое вырабатывается заново для подписи каждого документа. Как и простые числа p и q, эти случайные или псевдослучайные числа должны быть получены с помощью алгоритмов, безопасность которых подтверждена FIPS. Один из таких методов описан в дополнении C к стандарту ANSI X9.17 (Financial Institution Key Management (Wholesale)). Далее описываются методы, приведенные в дополнении к стандарту DSS (документ FIPS 186[6]).
Эти алгоритмы используют одностороннюю функцию G(t, c), где t — это N-битное число, c — b-битное, а результат функции G(t, c) — N-битное. Один из способов построения такой функции — использование хеш-функции. Другой метод — использовать алгоритм симметричного шифрования. Эти методы для случая использования SHA-1 (N = 160) описаны в документе FIPS-186.

Способ получения mзначений секретного ключа

Способ предварительного вычисления нескольких секретных значений k и r

Шаг 3 позволяет предварительно вычислить величины, необходимые для подписания следующих m сообщений. К шагу 4 можно переходить в любой момент, когда первое из этих m сообщений имеется в наличии. Когда следующее сообщение еще не доступно, исполнение шага 4 может быть приостановлено. Как только этапы 4 и 5 завершились, можно перейти к исполнению этапа 3 для работы со следующей группой из m сообщений. Кроме памяти для KKEY, необходимо выделить память для хранения двух массивов длины m (один массив для значений r_0, . r_<m-1>^<>» width=»» height=»» /> и второй для чисел <img decoding=на этапе 4 могут быть заменены на одну переменную s.

DSA Algorithm: An In-depth Overview

When a user’s data goes through a document, identifying their authentic identity becomes important for data confidentiality and safety. That’s the purpose of DSA algorithms. They’re considered the biometric data of the digital world.

In this guide, we’ll discuss what a DSA algorithm is and how they work in detail, as well as illustrate its steps, advantages, and downsides.

What is Asymmetric Encryption?

Asymmetric encryption uses two separate keys for encryption and decryption. These keys are generated from the receiver’s end.

In the case of encryption, the public key is used, while the private key is utilized in decryption. This gets rid of key exchanges that symmetric encryption methods are vulnerable to.

Data Structures – Algorithms Basics

An algorithm is a set of sequenced instructions that are used to solve a particular problem or handle a computation. Algorithms are utilized in software and hardware-based routines.

Algorithms have countless applications in the IT industry, and they’re widely used in automated systems and data processing.

A data structure is used to organize, process, retrieve and store data. There are 3 types of data structures: linear, non-linear, and dynamic data structures. In linear data structures, data elements are arranged sequentially, as opposed to non-linear data structures data elements aren’t placed sequentially.

Dynamic data structures permit size changes, allowing for random runtime updates and more efficient memory utilization for the code.

Digital Signature Algorithm (DSA) in Cryptography

The Digital Signature Algorithm (DSA) is a FIPS (Federal Information Processing Standard) and public-key cryptosystem that’s used for digital signatures. It utilizes the modular exponentiation and the discrete logarithm problem to generate 2 digital signatures. This enables the receiver to authenticate the sender.

In a DSA, the digital signature is private at the starting point and public at the ending point. In other words, only the sender can make the signature, but anyone is capable of decrypting the signature at the ending point.

Many types of digital signatures can be generated by signing message digests using a private key. Per contra, DSA uses unique mathematical functions to generate a two-number digital signature that came from the private key and message digests. This means that DSA doesn’t encrypt or decrypt message digests with either private or public keys.

DSA and OpenSSH: It’s Legacy, But Still Great

Prof Bill Buchanan OBE

In 1976, Marty Hellman sat at his desk and drafted a method that used discrete logs, and which allowed a shared encryption key to be created between Bob and Alice. With this, Bob generated a random value of b, and Alice of a, Bob computes B=g^b (mod p) and Alice computes A=g^a (mod p). They exchange values, and then end up with the same key:

The Diffie-Hellman method was thus created around the usage of discrete logarithms. Soon Rivest, Shamir and Adleman followed this work with the RSA encryption method.

So could we create encryption with discrete logs? Well, it was Tahir ElGamal who solved this with the ElGamal encryption method. And could it be used for signatures? Well the DSA (Digital Signature Algorithm) stepped forward.

The Digital Signature Algorithm (DSA) is a standard defined in Federal Information Processing Standard (as FIPS 186) for digital signatures and is based on discrete logarithms. It was outlined by NIST in 1991, and proposed within the Digital Signature Standard (DSS). This was then standardized with FIPS 186 in 1994, and FIPS 186–4 in 2013. Within FIPS 186–5, it is defined that DSA should not be used for the generation of signatures, but can be used for signature verification. Although DSA has a patent (Patent 5,231,668 by David W. Kravitz, who had previously worked for the NSA), NIST published the standard as royalty-free.

For the DSA keys, we created a private key of x and a prime number of p with a generator of g. The public key is then [Y=g^x (mod p), g, p], and the private key is x.

We can generate DSA keys with:

and which will generate a 1,024-bit key pair. We need at least 1,024 bits for the key, but more likely to use 2,048 or 4,096 bits. Overall, we can use the key pair to log into a remote system. The private key (x) is used to sign a message, and this is checked against the public key (Y, g, p):

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *