Отрицаемое шифрование (англ. deniable encryption, также двусмы́сленное шифрова́ние) — способ криптографического преобразования, в котором зашифровываются совместно два или более различных сообщения на двух или более различных ключах. Этот метод обеспечивает возможность правдоподобного отрицания наличия одного или группы сообщений как таковых. Сам термин «двусмысленное шифрование» придуман Джулианом Ассанжем и Ральфом Вайманном в ходе работы над Rubberhose в 1997—2000 годах.
 В концепции отрицаемого шифрования рассматривается цель обеспечения достаточно высокой стойкости к принуждающим атакам. В модели таких атак предполагается, что атакующий имеет некоторые рычаги воздействия на отправителя, получателя или хранителя зашифрованной информации и принуждает выдать ключ для её расшифрования. Стойкость к атакам с принуждением обеспечивается тем, что, по крайней мере, одно из передаваемых сообщений не является секретным и атакующему предоставляется ключ, по которому расшифрование криптограммы ведёт к раскрытию этого сообщения. При этом процедура расшифрования выполняется таким образом, что у атакующего нет обоснованных доводов полагать, что с криптограммой были связаны ещё какие-то другие сообщения. Двусмысленное шифрование разрешает прочитать зашифрованное сообщение несколькими осмысленными способами в зависимости от использованного ключа. Иными словами, оно дает пользователю шанс скрыть секретное сообщение, даже если его вынудили раскрыть один из ключей.
 Существенным требованием к алгоритмам отрицаемого шифрования является обеспечение равновероятностного влияния битов криптограммы на биты расшифрованного текста, которое состоит в том, что изменение любого бита криптограммы должно приводить к инвертированию любого бита расшифрованного текста с вероятностью, достаточно близкой к 0,5.
 Возможный сценарий выглядит так:
 Также Алиса может послать одну криптограмму и Бобу, и Карлу. При этом Боб, расшифровав сообщение при помощи своего ключа, узнает, что Карл хочет написать на него донос. Карлу же письмо поведает, что Боб пытается украсть его деньги. Попытки Алисы поссорить их не будут раскрыты, пока Боб и Карл не узнают о том, что у них разные ключи.
 Пример 1.
 Выполнение отрицаемого шифрования осуществляется с использованием секретного ключа в виде набора подключей 
  
    
      
        
          K
          
            1
          
        
        ,
        
          K
          
            2
          
        
        ,
        
          K
          
            3
          
        
        ,
        
          K
          
            4
          
        
      
    
    {\displaystyle K_{1},K_{2},K_{3},K_{4}}
  
 и двух простых чисел 
  
    
      
        
          p
          
            1
          
        
      
    
    {\displaystyle p_{1}}
  
 и 
  
    
      
        
          p
          
            2
          
        
      
    
    {\displaystyle p_{2}}
  
.Шифрование блоков 
  
    
      
        M
        (
        
          p
          
            1
          
        
        >
        M
        )
      
    
    {\displaystyle M(p_{1}>M)}
  
 и 
  
    
      
        
          
            M
            ¯
          
        
        (
        
          p
          
            2
          
        
        >
        
          
            M
            ¯
          
        
        )
      
    
    {\displaystyle {\overline {M}}(p_{2}>{\overline {M}})}
  
 двух сообщений осуществляют путём вычисления значения 
  
    
      
        
          C
          
            1
          
        
      
    
    {\displaystyle C_{1}}
  
 по формуле 
  
    
      
        
          C
          
            1
          
        
        =
        
          M
          
            
              K
              
                1
              
            
          
        
        
          K
          
            2
          
        
        m
        o
        d
        
          
            p
            
              1
            
          
        
      
    
    {\displaystyle C_{1}=M^{K_{1}}K_{2}mod{p_{1}}}
  
,вычисления значения 
  
    
      
        
          C
          
            2
          
        
      
    
    {\displaystyle C_{2}}
  
 по формуле 
  
    
      
        
          C
          
            2
          
        
        =
        
          
            
              M
              ¯
            
          
          
            
              K
              
                3
              
            
          
        
        
          K
          
            4
          
        
        m
        o
        d
        
          
            p
            
              2
            
          
        
      
    
    {\displaystyle C_{2}={\overline {M}}^{K_{3}}K_{4}mod{p_{2}}}
  
 и формирования блока криптограммы С, которое является решением системы сравнений
 
  
    
      
        
          {
          
            
              
                
                  C
                  =
                  
                    C
                    
                      1
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        1
                      
                    
                  
                
              
              
                
                  C
                  =
                  
                    C
                    
                      2
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        2
                      
                    
                  
                
              
            
          
          
        
      
    
    {\displaystyle \left\{{\begin{matrix}C=C_{1}mod{p_{1}}\\C=C_{2}mod{p_{2}}\end{matrix}}\right.}
  

 которую мы запишем в виде
 

  
    
      
        
          {
          
            
              
                
                  C
                  =
                  
                    M
                    
                      
                        K
                        
                          1
                        
                      
                    
                  
                  
                    K
                    
                      2
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        1
                      
                    
                  
                
              
              
                
                  C
                  =
                  
                    
                      
                        M
                        ¯
                      
                    
                    
                      
                        K
                        
                          3
                        
                      
                    
                  
                  
                    K
                    
                      4
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        2
                      
                    
                  
                
              
            
          
          
        
      
    
    {\displaystyle \left\{{\begin{matrix}C=M^{K_{1}}K_{2}mod{p_{1}}\\C={\overline {M}}^{K_{3}}K_{4}mod{p_{2}}\end{matrix}}\right.}
  

 в соответствии с китайской теоремой об остатках решение вычисляется по следующей формуле:
 
  
    
      
        C
        =
        
          [
          
            
              M
              
                
                  K
                  
                    1
                  
                
              
            
            
              K
              
                2
              
            
            
              p
              
                2
              
            
            (
            
              p
              
                2
              
              
                −
                1
              
            
            m
            o
            d
            
              
                p
                
                  1
                
              
            
            )
            +
            
              
                
                  M
                  ¯
                
              
              
                
                  K
                  
                    3
                  
                
              
            
            
              K
              
                4
              
            
            
              p
              
                1
              
            
            (
            
              p
              
                1
              
              
                −
                1
              
            
            m
            o
            d
            
              
                p
                
                  2
                
              
            
            )
          
          ]
        
        m
        o
        d
        
          
            p
            
              1
            
          
          
            p
            
              2
            
          
        
      
    
    {\displaystyle C=\left[M^{K_{1}}K_{2}p_{2}(p_{2}^{-1}mod{p_{1}})+{\overline {M}}^{K_{3}}K_{4}p_{1}(p_{1}^{-1}mod{p_{2}})\right]mod{p_{1}p_{2}}}
  

 пусть для раскрытия при вынуждающей атаке предназначено сообщение 
  
    
      
        
          
            M
            ¯
          
        
      
    
    {\displaystyle {\overline {M}}}
  
. Тогда атакующему представляются в качестве ключа шифрования тройка значений 
  
    
      
        
          K
          
            3
          
        
        ,
        
          K
          
            4
          
        
        ,
        
          p
          
            2
          
        
      
    
    {\displaystyle K_{3},K_{4},p_{2}}
  
. Дешифровка выполняется по формуле
 
  
    
      
        
          
            M
            ¯
          
        
        =
        (
        C
        
          K
          
            4
          
          
            −
            1
          
        
        
          )
          
            
              K
              
                3
              
              
                −
                1
              
            
          
        
        m
        o
        d
        
          
            p
            
              2
            
          
        
      
    
    {\displaystyle {\overline {M}}=(CK_{4}^{-1})^{K_{3}^{-1}}mod{p_{2}}}
  
.
 В последней формуле обратные значения для подключей 
  
    
      
        
          K
          
            3
          
        
      
    
    {\displaystyle K_{3}}
  
 и 
  
    
      
        
          K
          
            4
          
        
      
    
    {\displaystyle K_{4}}
  
 вычисляются по модулям 
  
    
      
        
          p
          
            2
          
        
        −
        1
      
    
    {\displaystyle p_{2}-1}
  
 и 
  
    
      
        
          p
          
            2
          
        
      
    
    {\displaystyle p_{2}}
  
, соответственно. Дешифровка секретного сообщения M выполняется по той же формуле, но с использованием ключа, представляющего собой тройку значений 
  
    
      
        
          K
          
            1
          
        
        ,
        
          K
          
            2
          
        
        ,
        
          p
          
            1
          
        
      
    
    {\displaystyle K_{1},K_{2},p_{1}}
  
:
 
  
    
      
        M
        =
        (
        C
        
          K
          
            2
          
          
            −
            1
          
        
        
          )
          
            
              K
              
                1
              
              
                −
                1
              
            
          
        
        m
        o
        d
        
          
            p
            
              1
            
          
        
      
    
    {\displaystyle M=(CK_{2}^{-1})^{K_{1}^{-1}}mod{p_{1}}}
  

 Пример 2
 Ключ шифрования представляет собой набор подключей 
  
    
      
        
          K
          
            1
          
        
        ,
        
          K
          
            2
          
        
        ,
        
          K
          
            3
          
        
        ,
        
          K
          
            4
          
        
      
    
    {\displaystyle K_{1},K_{2},K_{3},K_{4}}
  
 и два простых числа 
  
    
      
        
          p
          
            1
          
        
      
    
    {\displaystyle p_{1}}
  
 и 
  
    
      
        
          p
          
            2
          
        
      
    
    {\displaystyle p_{2}}
  
. Шифруются два сообщения 
  
    
      
        M
        (
        
          p
          
            1
          
        
        >
        M
        )
      
    
    {\displaystyle M(p_{1}>M)}
  
 и 
  
    
      
        
          
            M
            ¯
          
        
        (
        
          p
          
            2
          
        
        >
        
          
            M
            ¯
          
        
        )
      
    
    {\displaystyle {\overline {M}}(p_{2}>{\overline {M}})}
  
 путём генерации случайных чисел 
  
    
      
        D
      
    
    {\displaystyle D}
  
 и 
  
    
      
        
          p
          
            3
          
        
      
    
    {\displaystyle p_{3}}
  
, вычисления значения 
  
    
      
        
          C
          
            1
          
        
      
    
    {\displaystyle C_{1}}
  
 по формуле 
  
    
      
        
          C
          
            1
          
        
        =
        
          M
          
            
              K
              
                1
              
            
          
        
        
          K
          
            2
          
        
        m
        o
        d
        
          
            p
            
              1
            
          
        
      
    
    {\displaystyle C_{1}=M^{K_{1}}K_{2}mod{p_{1}}}
  
, вычисления значения 
  
    
      
        
          C
          
            2
          
        
      
    
    {\displaystyle C_{2}}
  
 по формуле 
  
    
      
        
          C
          
            2
          
        
        =
        
          
            
              M
              ¯
            
          
          
            
              K
              
                3
              
            
          
        
        
          K
          
            4
          
        
        
        mod
        
        
        
          p
          
            2
          
        
      
    
    {\displaystyle C_{2}={\overline {M}}^{K_{3}}K_{4}\mod {p_{2}}}
  
 и формирования криптограммы 
  
    
      
        C
      
    
    {\displaystyle C}
  
, являющейся решением системы сравнений, включающей три сравнения
 
  
    
      
        C
        ≡
        
          C
          
            1
          
        
        m
        o
        d
        
          
            p
            
              1
            
          
        
        ,
        C
        ≡
        
          C
          
            2
          
        
        m
        o
        d
        
          
            p
            
              2
            
          
        
        ,
        C
        ≡
        D
        m
        o
        d
        
          
            p
            
              3
            
          
        
      
    
    {\displaystyle C\equiv C_{1}mod{p_{1}},C\equiv C_{2}mod{p_{2}},C\equiv Dmod{p_{3}}}
  
.
 Эту систему можно записать в виде
 
  
    
      
        
          {
          
            
              
                
                  C
                  ≡
                  
                    M
                    
                      
                        K
                        
                          1
                        
                      
                    
                  
                  
                    K
                    
                      2
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        1
                      
                    
                  
                
              
              
                
                  C
                  ≡
                  
                    
                      
                        M
                        ¯
                      
                    
                    
                      
                        K
                        
                          3
                        
                      
                    
                  
                  
                    K
                    
                      4
                    
                  
                  m
                  o
                  d
                  
                    
                      p
                      
                        2
                      
                    
                  
                
              
              
                
                  C
                  ≡
                  D
                  m
                  o
                  d
                  
                    
                      p
                      
                        3
                      
                    
                  
                
              
            
          
          
        
      
    
    {\displaystyle \left\{{\begin{matrix}C\equiv M^{K_{1}}K_{2}mod{p_{1}}\\C\equiv {\overline {M}}^{K_{3}}K_{4}mod{p_{2}}\\C\equiv Dmod{p_{3}}\end{matrix}}\right.}
  
В соответствии с китайской теоремой об остатках решение этой системы сравнений вычисляется по формуле:
 
  
    
      
        C
        =
        
          [
          
            
              M
              
                
                  K
                  
                    1
                  
                
              
            
            
              K
              
                2
              
            
            
              p
              
                2
              
            
            
              p
              
                3
              
            
            (
            (
            
              p
              
                2
              
            
            
              p
              
                3
              
            
            
              )
              
                −
                1
              
            
            m
            o
            d
            
              
                p
                
                  1
                
              
            
            )
            +
            
              
                
                  M
                  ¯
                
              
              
                
                  K
                  
                    3
                  
                
              
            
            
              K
              
                4
              
            
            
              p
              
                1
              
            
            
              p
              
                3
              
            
            (
            (
            
              p
              
                1
              
            
            
              p
              
                3
              
            
            
              )
              
                −
                1
              
            
            m
            o
            d
            
              
                p
                
                  2
                
              
            
            )
            +
            D
            
              p
              
                1
              
            
            
              p
              
                2
              
            
            (
            (
            
              p
              
                1
              
            
            
              p
              
                2
              
            
            
              )
              
                −
                1
              
            
            m
            o
            d
            
              
                p
                
                  3
                
              
            
            )
          
          ]
        
        m
        o
        d
        
          
            p
            
              1
            
          
          
            p
            
              2
            
          
          
            p
            
              3
            
          
        
      
    
    {\displaystyle C=\left[M^{K_{1}}K_{2}p_{2}p_{3}((p_{2}p_{3})^{-1}mod{p_{1}})+{\overline {M}}^{K_{3}}K_{4}p_{1}p_{3}((p_{1}p_{3})^{-1}mod{p_{2}})+Dp_{1}p_{2}((p_{1}p_{2})^{-1}mod{p_{3}})\right]mod{p_{1}p_{2}p_{3}}}
  

 При вынуждающей атаке атакующему представляется в качестве ключа шифрования тройка значений 
  
    
      
        
          K
          
            3
          
        
        ,
        
          K
          
            4
          
        
        ,
        
          p
          
            2
          
        
      
    
    {\displaystyle K_{3},K_{4},p_{2}}
  
, по которым расшифрование выполняется по формуле:
 
  
    
      
        
          
            M
            ¯
          
        
        =
        (
        C
        
          K
          
            4
          
          
            −
            1
          
        
        
          )
          
            
              K
              
                3
              
              
                −
                1
              
            
          
        
        m
        o
        d
        
          
            p
            
              2
            
          
        
      
    
    {\displaystyle {\overline {M}}=(CK_{4}^{-1})^{K_{3}^{-1}}mod{p_{2}}}
  
.
 Очевидно, что размер криптограммы не может быть менее суммы размеров шифруемых совместно сообщений, поэтому в качестве признаков наличия в криптограмме других сообщений рассматриваются признаки отличия криптограммы от шифротекста, получаемого вероятностным шифрованием раскрытого сообщения, при котором размер шифротекста значительно больше размера исходного сообщения. Иными словами, атакуемая криптограмма могла быть получена с помощью вероятностного шифрования по представленному ключу. В силу этого для атакующего отсутствуют основания требовать ещё какой-либо другой ключ для дальнейшего расшифрования криптограммы.
 В пользу наличия дополнительных сообщений в криптограмме атакующим могут быть предъявлены следующие доводы:
 Размер криптограммы может быть больше размера исходного текста. При этом атакующему сообщается, что при создании криптограммы был использован метод вероятностного шифрования. Увеличение размеров шифротекста является свойственным для шифров такого типа.
 Современные способы двусмысленного шифрования используют свойства псевдослучайных перестановок блочных шифров, что препятствует доказательству того, что данные не являются просто бессмысленным набором бит, созданным генератором криптостойкой псевдослучайной последовательности. Данная технология дополняется раскрытием злоумышленнику некоторых обманных данных, похожих на то, что пользователь попытался бы скрыть. Такой вид двусмысленного шифрования иногда называется стеганографическим шифрованием.
 В качестве примера можно привести криптографические файловые системы, использующие схему абстрактных «уровней», при которой каждый следующий уровень требует свой ключ для расшифровки. Помимо этого существуют так называемые chaff-уровни, заполненные случайными данными для противодействия обнаружению существования настоящих уровней, равно как и их ключей. Пользователь может хранить обманные данные на нескольких уровнях, утверждая, что остальное пространство используется в качестве chaff-уровней. Физически, данные чаще всего располагаются в одном каталоге, разбитые на файлы одинаковой длины с именами либо выбранными случайным образом (в случае chaff-уровня), либо представляющими результат работы криптографической хеш-функции над идентификаторами блоков. Временные параметры у этих файлов выбираются случайным образом. Примерами таких систем являются Rubberhose и PhoneBookFS.
 Другой подход, применяемый традиционными пакетами по защите носителей информации, состоит в создании нового защищённого тома внутри основного. Процесс начинается с того, что при форматировании основной контейнер заполняется беспорядочным набором данных с последующей инициализацией файловой системы. После этого часть файловой системы заполняется безопасными данными, похожими на секретные. Затем где-то в оставшемся пространстве создаётся новый скрытый том, используемый для тех данных, которые пользователь действительно хочет скрыть. Поскольку противник не может отличить зашифрованные данные от случайных данных заполнителя, он не сможет обнаружить этот скрытый том на диске. Однако то, что содержимое несекретных данных не менялось со времён создания, в частности, время модификации файлов — это сделано, чтобы предотвратить повреждение пользовательских данных, — может возбудить подозрения. Решение данной проблемы состоит в указании системе менять содержимое заглушек. Впрочем, стоит отметить, что данная операция сопряжена с риском повредить хранимые на диске данные. Такие программы, как FreeOTFE и BestCrypt позволяют создавать несколько скрытых разделов на одном диске, в то время как TrueCrypt ограничивается одним.
 Существование скрытого тома может быть обнаружено по причине ошибочных реализаций, зависящих от предсказуемых криптографических величин, либо с помощью некоторых инструментов, использующихся в юридических целях, способных обнаруживать неслучайные зашифрованные данные. Также было предположено, что существует уязвимость для тестирования псевдослучайных последовательностей с помощью критерия Хи-квадрат (критерия Пирсона): после каждого изменения зашифрованные данные должны быть видоизменены таким образом, чтобы их распределение правдоподобно соответствовало случайному распределению.
 Отрицаемое шифрование также подвержено критике в связи с невозможностью защиты пользователей от вымогательства. Сам факт обладания инструментами, осуществляющими методы отрицаемого шифрования, может заставить злоумышленника продолжить взлом данных даже после того, как пользователь выдал ему пароль, предоставляющий доступ к некоей подложной информации.
 Безусловно, недостаточная криптографическая стойкость блочных шифров или числового генератора может подвергнуть риску защищённость такой файловой системы. Для того, чтобы избежать сомнений по поводу достаточной криптографической стойкости генератора, можно зашифровать псевдослучайные данные при помощи другого ключа, нежели основные данные, что приведёт к неразличимости хранимой информации и пустого пространства, ведь невозможно отличить зашифрованные данные от других зашифрованных данных. И напоследок стоит отметить, что неправильное использование режимов шифрования может сделать систему уязвимой, например, к атакам по водяным знакам.
 Некоторые криптографические продукты (например, TrueCrypt) позволяют создавать зашифрованные контейнеры без каких-либо сигнатур. Такой контейнер, в общем случае, невозможно связать с конкретной криптографической программой (так как содержимое контейнера выглядит как сплошная случайная последовательность данных).
 Контейнеры без сигнатур невозможно обнаружить программами вроде file. С другой стороны, отсутствие каких-либо сигнатур и высокая энтропия данных уже является признаком зашифрованных данных.
 Некоторые продукты позволяют создавать контейнеры внутри уже существующей сплошной случайной последовательности данных. Например, TrueCrypt может создать контейнер внутри свободного пространства файловой системы другого контейнера (свободное пространство файловой системы любого контейнера TrueCrypt изначально заполнено случайными данными).
 Скрытые контейнеры могут быть обнаружены в некоторых случаях на стадии анализа выключенной системы, например:
 Некоторые системы, шифрующие сообщения на лету, например OTRM предоставляют возможность гибкого шифрования, что позволяет собеседникам отрицать своё участие в беседе. Хотя данный тип шифрования не является, в сущности, двусмысленным, то есть не позволяет двояко расшифровывать сообщения, он лишает противника возможности доказать участие конкретного лица в беседе, равно как и сам факт наличия обмена информацией.
 Это достигается добавлением в зашифрованное сообщение информации, необходимой для его подлога. Таким образом, если противник способен создать настоящее сообщение для данной беседы, то он автоматически сможет подделывать сообщения, что вместе с совершенной прямой секретностью (англ. perfect forward secrecy) гарантирует защищенность беседы, даже если ключи для отдельных сообщений находятся под угрозой разглашения.