Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Программная реализация криптоалгоритма на основе эллиптических кривых / Implementation of cryptoalgorithm based on elliptic curves

Notifications You must be signed in to change notification settings

macrdel/ECC_EncryptDecryptScheme

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Программная реализация криптоалгоритма на основе эллиптических кривых

Требования

  • возможность шифровать/расшифровывать короткие сообщения на случайных (или извлекаемых из выбираемых файлов) асимметрических ключах выбираемой пользователем длины;
  • возможность сохранения случайной пары ключей в двух файлах с задаваемыми пользователем именами (закрытый ключ должен при этом шифроваться на ключе, выводимом из специальной парольной фразы);
  • возможность определять при расшифровании закрытого ключа факт ввода неверной парольной фразы (например, путем добавления к ключу перед его шифрованием сигнатуры – специальной строки символов – с проверкой ее наличия в расшифрованном ключе и удалением из него в случае успешной проверки).

Схема

Генерация ключей -> Шифрование -> Расшифрование

Генерация ключей

  1. На основе выбранной пользователем длины ключа выбирается соответствующая кривая
  2. Выбирается случайное число privKey (из диапазона [1,N-1]) – это закрытый ключ
  3. Вычисляется открытый ключ pubKey = privKey $\cdot$ G (результат скалярного умножения)
  4. Выполняется шифрование privKey:
    
    
    • к закрытому ключу добавляется специальная сигнатура для проверки правильности введенной парольной фразы
    • на основе введенной пользователем парольной фразы (и сгенерированной примеси) и алгоритма SHA-256 строится симметричный ключ шифрования
    • на основе симметричного алгоритма AES на сгенерированном в предыдущем пункте ключе строится шифратор, который шифрует закрытый ключ со спец. сигнатурой
    • в начало зашифрованного файла добавляется примесь, затем шифротекст
  5. Открытый ключ pubKey записывается в соответствующий файл

Шифрование

  1. Считывается открытый ключ Qa и в зависимости от его размера выбирается кривая crv
  2. Генерируется случайное число r (из диапазона $[1,N-1]$)
  3. Вычисляется точка rG = r $\cdot$ G (результат скалярного умножения)
  4. Вычисляется точка S = r $\cdot$ Qa (результат скалярного умножения), S=(Sx, Sy)
  5. Сообщение msg представляется в виде числа P
  6. Вычисляется шифротекст Cm = (Sx + P) $\mod N$
  7. Шифротексты Cm и rG записываются в файл

Расшифрование

  1. Выполняется расшифрование закрытого ключа:
    
    
    • из начала зашифрованного файла считывается примесь
    • на основе введенной парольной фразы (она может быть правильной или нет), примеси и алгоритма SHA-256 восстанавливается построенный на этапе генерации ключ
    • на основе симметричного алгоритма AES на восстановленном в предыдущем пункте ключе строится дешифратор, который расшифровывает закрытый ключ со спец. сигнатурой
  2. Проверяется сигнатура: в случае неверной сигнатуры (неправильная введенная парольная фраза) выводится сообщение об ошибке и форма закрывается
  3. Считываются шифротексты Cm и rG
  4. Выбирается кривая crv (размер ключа можно сохранить в зашифрованном виде вместе с сигнатурой и закрытым ключом)
  5. Поскольку privKey $\cdot$ rG = privKey $\cdot$ r $\cdot$ G=r $\cdot$ pubKey= r $\cdot$ Qa, то можно восстановить S = privKey $\cdot$ rG (результат скалярного умножения), S=(Sx, Sy)
  6. Восстанавливается P = (Cm-Sx) $\mod N$
  7. Число P преобразуется обратно в сообщение msg

Подробнее в пояснительной записке


Implementation of cryptoalgorithm based on elliptic curves

Scheme

Key generation -> Encryption -> Decryption

Key generation

Encryption

Decryption

More details in document

About

Программная реализация криптоалгоритма на основе эллиптических кривых / Implementation of cryptoalgorithm based on elliptic curves

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.