Фэндом


История Править

3DES (Triple DES)-симметричный алгоритм, созданный Whitfield Deffie, Martin Hellman, Walt tuchmann в 1978г. на основе алгоритма DES, с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом перебора ключа. Алгоритм 3DES работает в 3 раза медленее чем DES, но криптостойкость на много больше, время криптоанализа 3DES может быть в биллион раз больше чем время критоанализа DES. 3DES используется чаще чем DES, который легко ломается сегодняшней технологией (в 1998 году the Electronic Frontier Foundation использует специальный компьтер DES Cracker, разбивает DES за 3 дня). 3DES является простым способом улучшения недостатка DES. Алгоритм 3DES построен на основе DES поэтому мы можем использовать программы, которые построены для DSE.

Алгоритм Править

Файл:3des-overall-view.png

Схема алгоритма 3DES имеет такой вид, как на рисунке. Простой вариант 3DES может представить как:

DES(k3;DES(k2;DES(k1;M)))

где k1,k2,k3 ключи для каждого DES- шага,М входные данные,которые нужно шифровать.Это вариант известен как в ЕЕЕ так как три DES операции являюся шифрованием.Существует 3 типа алгоритма 3DES:

  1. DES-EEE3: Шифруется три раза с 3 разными ключами.
  2. DES-EDE3: 3DES операции шифровка-расшифровка-шифровка с тремя разными ключами.
  3. DES-EEE2 и DES-EDE2: Как и предыдущие, для исключением того, который первая и третья операции используют одинаковый ключ.

Самый популярный тип при использовании – это DES-EDE3, для него алгоритм смотрит как: Шифровка: C = Ek3( E-1k2 ( Ek1 (P) ) ) Расшифровка: P = E-1k3( Ek2 ( E-1k1 (C) ) ) При выполнении алгоритма 3DES ключи может быть выбраны так:

  • k1, k2, k3 независимы.
  • k1,k2 независимы, а k1=k3
  • k1=k2=k3.

3DES выполняется 3 раза алгоритм DES, длина ключа DES равна 64 бита, а длина 3DES в 3 раза больше,т.е. равна 192 битов. Для DES 64-разрядный ключ делися в 8 байтов,в каждом байте используется только 7 битов,по этому на самом деле длина ключа равна 56 битов,а не 64. 3DES также имеет такой смысл, его длина ключа на самом деле равна 168 а не 192 бита.

Криптостойкость Править

3DES с различными ключами имеет длину ключа равную 168 бит, но из-за meet-in-the-midle attack эффективная криптостойкость составляет только 112 бит. В варианте Des-ede2, где k1=k3 эффективный ключ имеет длину 80 бит. Для успешной атаки на 3DES потребуется около 2^32 бит известного открытого текста, 2^113 шагов, 2^90 циклов DES–шифрования и 2^88 бит памяти.

Применение 3DES Править

3-DES с тремя ключами реализованный во многих дополнениях, ориентированных на работу из Internet, в доля числе в PGP и S/mime. Тройной DES является довольно популярной альтернативой DES и используется при управлении ключами в стандартах ANSI X9.17 и ISO 8732 и в PEM (Privacy Enhanced Mail). Известных криптографических атак для тройной DES не существует. Цена подбора ключа в тройном DES равняется 2112. Операционная система Windows XP поддерживает использование более стойкого алгоритма симметричной шифровки, чем используемого применительно умолчанию алгоритм DESX. Если пользователю необычайный симметричный алгоритм шифровки повышенной стойкости совместимый со стандартом FIPS 140-1, надо включить алгоритм 3DES. Включение алгоритма 3DES в системе Windows XP.

Пример код для 3DES на C# Править

Шифрование выполняется следующим кодом

private Symmetricalgorithm alg;
alg=(Symmetricalgorithm) Rijndaelmanaged.Create(); //приклад работа класса Rijndaelmanaged
Passwordderivebytes pdb=new Passwordderivebytes(Password.Text,null); //клас что позволяет генерировать   ключи для базе паролей
pdb.HashName="SHA512"; //будемо потреблять Sha512
int keylen=(int) Keysize.SelectedItem; //одержуемо величина ключа из Combobox’а
alg.KeySize=keylen; //установлюемо величина ключа
alg.Key=pdb.GetBytes(keylen>>3); //одержуемо источник из пароля
alg.Mode=CipherMode.CBC; //використаемо склад CBC
alg.IV=new Byte[alg.BlockSize>>3]; //и вздорный инициализацийний вектор
Icryptotransform tr=alg.CreateEncryptor(); //створюемо encryptor
Filestream instream=new FileStream(inFile.Text,FileMode.Open,FileAccess.Read,FileShare.Read);
FileStream outstream=new
FileStream(outFile.Text,FileMode.Create,FileAccess.Write,FileShare.None);
int buflen=((2<<16)/alg.BlockSize) *alg.BlockSize;
байт []inbuf=new байт[buflen];
байт []outbuf=new байт[buflen];
int len;
while((len=instream.Read(inbuf,0,buflen))==buflen)
int enclen=tr.TransformBlock(inbuf,0,buflen,outbuf,0); //властиво шифруем
outstream.Write(outbuf,0,enclen);
instream.Close();
outbuf=tr.TransformFinalBlock(inbuf,0,len);//шифруемо финальный блок
outstream.Write(outbuf,0,outbuf.Length);
outstream.Close();
alg.Clear(); //здийснюемо зачищает

Шифрование и дешифрование выполняются с помощью функций: BOOL WINAPI Cryptencrypt(HCRYPTKEY hkey,hcrypthash hhash,bool Final,dword dwflags,byte* pbdata,dword* pdwdatalen,dword dwbuflen); BOOL WINAPI Cryptdecrypt(HCRYPTKEY hkey,hcrypthash hhash,bool Final,dword dwflags,byte* pbdata,dword* pdwdatalen). Параметр hhash позволяет параллельно с шифровкой/дешифрацией проводить хеширування данных для следующей электронной подписи или ее проверки. Флаг Final определяет, является ли шифрованный блок данных последним. Он необходим, поскольку данные дозволено шифровать применительно частям, все для последнего блока ввек выполняется определенная деинициализация алгоритму (освобождаются внутренние структуры), и много алгоритмов делают добавление (и проверку корректности около дешифрации) заполнителя (padding) затем основных данных. Параметры pbdata и pdwdatalen задают адрес буфера и величина шифрованных данных. Для блока данных (Final=false) величина данных должен быть ввек кратный размеру шифрованного алгоритмом блока (для 3des и DES сей величина равняется 64 битам). Для последнего блока допускается нарушение этого условия. Заметим, который зашифрованы основание содержатся в доля же буфере этаж выходных. Последний параметр функции Cryptencrypt - dwbuflen может заболевать странным. Зачем нам величина буфера, или мы и беспричинно знаем величина входных данных? Однако в действительности он необходим. Много алгоритмов добавляют заполнитель в новый блок затем основных данных. В этом случае величина зашифрованных данных может бть больше, чем размер выходных данных. И произведение может невзыскательный не вместиться в буфер! Поэтому стоит предварительно указать величина буфера, какой превышает максимальный величина открытых данных, который помещают в его. Для DES и 3des максимально возможен довисок составляет 64 бита, то есть 8 байт.

Сыллка Править


cs:TripleDES

da:Triple DES en:Triple DES es:Triple DES eu:DES Hirukoitza fi:3DES fr:Triple DES he:3DES id:Triple DES it:Triple DES ja:トリプルDES nl:3DES-encryptiealgoritme no:Trippel DES pl:3DES pt:3DES ro:3DES simple:Triple DES sv:3DES uk:Triple DES

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики