KCDSA (Корейський алгоритм цифрового підпису на основі сертифіката) — це алгоритм цифрового підпису, створений групою під керівництвом Корейського агентства безпеки та Інтернет[en] (KISA). Це варіант ElGamal, аналогічний Алгоритму цифрового підпису та ГОСТ Р 34.10-94[ru]. Стандартний алгоритм реалізовано над , але також вказано варіант на еліптичних кривих (EC-KCDSA).

Для KCDSA потрібна колізійно стійка криптографічна хеш-функція, яка може створювати вихідні дані змінного розміру (від 128 до 256 біт із кроком 32 біт). HAS-160[en], інший корейський стандарт, є запропонованим вибором.

Параметри

ред.
  •   : велике просте таке, що   для   .
  •   : основний множник   такий, що   для   .
  •   : базовий елемент порядку   в   .

Параметри користувача

ред.
  •   : особистий ключ підпису підписувача такий, що   .
  •   : відкритий ключ перевірки підписувача, обчислений   де   .
  •   : хеш-значення даних сертифіката, тобто   .

У специфікації 1998 року неясно, який саме формат «Даних сертифіката». У переглянутій специфікації z визначається як B нижніх бітів відкритого ключа y, де B — розмір блоку хеш-функції в бітах (зазвичай 512 або 1024). Ефект полягає в тому, що перший вхідний блок відповідає y mod 2B.

  •   : молодші B бітів y.

Хеш-функція

ред.
  •   : колізійно стійка хеш-функція з |q|-бітовими дайджестами.

Підписання

ред.
  • Підписувач навмання вибирає ціле число   і обчислює  
  • Потім обчислює першу частину:  
  • Потім обчислює другу частину:  
  • Якщо  , процес потрібно повторити спочатку.
  • Підписом є кортеж  

Перевірка

ред.
  • Верифікатор перевіряє це   і   і відхиляє підпис як недійсний, якщо ні.
  • Верифікатор обчислює  
  • Потім він перевіряє, чи  

Посилання

ред.