EPOC был разработан в ноябре 1998 г. Т. Окамото (англ. T. Okamoto), С. Учияма (англ. S. Uchiyama) и Э. Фудзисаки (англ. E. Fujisaki) из NTT Laboratories в Японии. Он основан на модели случайного оракула, в которой функция шифрования с открытым ключом преобразуется в безопасную схему шифрования с использованием (действительно) случайной хеш-функции; результирующая схема разработана так, чтобы быть семантически защищённой от атак на основе подобранного шифротекста[1].
Функция шифрования EPOC — это функция OU (англ. Okamoto-Uchiyama), которую инвертировать так же сложно, как факторизировать составной целочисленный открытый ключ. Существует три версии EPOC[2]:
EPOC-1, использующий одностороннюю функцию(англ. trapdoor function) и случайную функцию (хеш-функцию)[3].;
EPOC-2, использующий одностороннюю функцию, две случайные функции (хеш-функции) и шифрование с симметричным ключом (например, одноразовый блокнот и блочные шифры)[4];
EPOC-3 использует одностороннюю функцию OU (англ. Okamoto-Uchiyama) и две случайные функции (хеш-функции), а также любую симметричную схему шифрования, такую как одноразовые блокноты (англ. one-time pad) или блочный шифр.
Диффи и Хеллман предложили концепцию криптосистемы с открытым ключом (или односторонней функции) в 1976 году. Хотя многое криптографы и математики провели обширные исследования, чтобы реализовать концепцию криптосистем с открытым ключом в течение более чем 20 лет, было найдено очень мало конкретных методов, которые являются безопасными[7].
Среди методов RSA-Rabin и Diffie-Hellman-ElGamal для реализации односторонней функции ни одна функция, кроме функции Рабина и её вариантов, таких как её версии эллиптической кривой и Уильямса, не была доказана такой же надёжной, как примитивные задачи[9](например, задачи факторизации и дискретного логарифма).
Окамото и Учияма, предложили одностороннюю функцию, названную OU (англ. Okamoto-Uchiyama), которая практична, доказуемо безопасна и обладает некоторыми другими интересными свойствами[10].
Неразличимость шифротекста: Даже тот, кто не знает секретного ключа, может изменить зашифрованный текст, , на другой зашифрованный текст, , сохраняя при этом открытый текст m (то есть ), и связь между и может быть скрыта (то есть и неразличимы). Такое свойство полезно для протоколов защиты конфиденциальности).
Схема шифрования с открытым ключом EPOC, которая задаётся триплетом , где -операция генерации ключа, -операция шифрования и -операция дешифрования.
Схемы EPOC: EPOC-1 и EPOC-2.
EPOC-1 предназначен для распределения ключей, а EPOC-2 предназначен для распределения ключей и передачи зашифрованных данных, а также распределения более длинного ключа при ограниченном размере открытого ключа.
Открытый ключ OU — это набор , компоненты которого имеют следующие значения:
— неотрицательное целое число
— неотрицательное целое число
— неотрицательное целое число
— секретный параметр, неотрицательное целое число
На практике в открытом ключе OU модуль принимает вид , где и — два различных нечётных простых числа, а битовая длина и равна . -элемент в такой, что порядок в равен , где . -элемент в .
Примечание: является дополнительным параметром, повышающим эффективность дешифрования, и может быть вычислен из и . , когда (-константа ). может быть зафиксирован системой и совместно использован многими пользователями.
Шифрование: E
Ввод и вывод следующие:
[Входные данные]: Открытый текст вместе с открытым ключом .
[Выходные данные]: Шифротекст С.
Операция со входами , выглядит следующим образом:
Выберем и вычислим . Здесь обозначает конкатенацию и .
Вычислить :
Дешифрование: D
Ввод и вывод следующие:
[Входные данные]: Шифротекст наряду с открытым ключом и секретным ключом .
[Выходные данные]: Открытый текст или нулевая строка.
Операция со входами , и выглядит следующим образом:
Вычислим , а , где .
Проверим, верно ли следующее уравнение: .
Если выражение верно, то выведем как расшифрованный открытый текст, где обозначает наиболее значимые биты в . В противном случае выведем нулевую строку.
Примечание: является дополнительным параметром, повышающим эффективность дешифрования, и может быть вычислено из и . , когда (-константа ). и могут быть зафиксированы системой и совместно использованы многими пользователями.
Шифрование: E
Пусть — пара алгоритмов шифрования и дешифрования с симметричным ключом , где длина равна . Алгоритм шифрования принимает ключ и открытый текст и возвращает зашифрованный текст . Алгоритм расшифровки принимает ключ и зашифрованный текст и возвращает открытый текст .
Ввод и вывод следующие:
[Входные данные]: Открытый текст вместе с открытым ключом и .
[Выходные данные]: Зашифрованный текст .
Операция со входами , и выглядит следующим образом:
Evaluator: Prof. Jean-Jacques Quisquater, Math RiZK, consulting; Scientific Support: Dr. Fran ̧cois Koeune, K2Crypt.Security Evaluation of the Encryption Scheme (англ.). — 2002.
Bellare, M., Desai, A., Pointcheval, D., and Rogaway, P. Relations Among Notions of Security for Public-Key Encryption Schemes, Proc. of Crypto’98, LNCS 1462, Springer- Verlag, (англ.). — 1998. — P. 26–45.