Криптографические односторонние функции
Для обеспечения стойкости криптографических схем, построенных на основе односторонних функций, необходимо, чтобы последние трудно инвертировались "почти всюду". То есть, нужно использовать другую меру сложности -- сложность "в среднем". 
Неформально, такая односторонняя функция может быть определена следующими условиями: 
•	функция эффективно вычислима; 
•	любой эффективный алгоритм инвертирует эту функцию лишь на пренебрежимо малой доле значений. 
В литературе по теории сложности односторонние функции, трудно инвертируемые "почти всюду", часто называют криптографическими, чтобы отличать их от тех односторонних функций, о которых шла речь в предыдущем подразделе. 
Перейдем к формальным определениям. Пусть , . Всюду ниже будем предполагать, для простоты изложения, что множество является областью определения всех рассматриваемых функций. Длину слова будем обозначать через . Для некоторого события через будем обозначать вероятность этого события. 
Прежде всего заметим, что функция может трудно инвертироваться просто потому, что она слишком сильно "сжимает" входные значения. Ясно, что никакой полиномиальный алгоритм не может ее инвертировать, поскольку за полиномиальное (от длины значения функции) время он не успеет выписать найденное значение из прообраза. Этот неинтересный случай исключается посредством требования так называемой честности. 
Определение 1.  Функция называется честной, если существует полином такой, что для любого . 
Определение 2.  Честная функция называется односторонней в сильном смысле, если 
•	существует полиномиальная машина Тьюринга , которая на любом входе вычисляет ; 
•	для любого полиномиального алгоритма справедливо следующее. Пусть и слово подано на вход алгоритма . Тогда для любого полинома и для всех достаточно больших 

Вероятность берется по выбору значения из и, если  -- это вероятностная машина Тьюринга, -- по вырабатываемым ею случайным величинам. 
Если в определении 2 ограничение на вероятность заменить следующим более слабым условием: 

для некоторого фиксированного полинома , то получим определение функции, односторонней в слабом смысле. Говоря неформально, такая функция трудно инвертируется по крайней мере на полиномиальной доле значений. Из результатов Яо и Гольдрайха и др. следует, что функции, односторонние в сильном смысле существуют тогда и только тогда, когда существуют функции, односторонние в слабом смысле. Такая "устойчивость" свидетельствует, что найдена адекватная формализация интуитивного понятия односторонней функции. В дальнейшем мы будем рассматривать только функции, односторонние в сильном смысле и для краткости называть их просто односторонними. 
Необходимо отметить, что односторонняя функция -- гипотетический объект, поэтому называть конкретные функции (как, например, дискретный логарифм) односторонними математически некорректно. Очевидно, что из предположения о существовании односторонних функций следует, что PNP. Вопрос о том, является ли это условие одновременно и достаточным, остается открытым. Более того, никаких нетривиальных достаточных условий существования односторонних функций на данный момент не известно.