Внимание! Новое программного обеспечение для World Vision Foros Ultra и World Vision Foros Combo S2/T2 выложено в теме с обновлением.

Подробней в теме: по ссылке

Автор Тема: DRE CRYPT NKE+ПО  (Прочитано 228521 раз)

Оффлайн Mig

  • Друзья wvclub
  • Младший фейерверкер
  • *****
  • Спасибо
  • -> Вы поблагодарили: 383
  • -> Вас поблагодарили: 266
  • Сообщений: 171
  • Репутация: +267/-0
  • Пол: Мужской
    • homserver.no-ip.biz
DRE CRYPT NKE+ПО
« : 06 Май 2013, 12:33:58 »
Модули на чипах NKE-1 и NKE-4 применяются для работы во многих кодировках. Скорость работы в основном зависит от алгоритма реализации кодировки и прямоты рук программиста который занимался разработкой ПО. Сделать так называемый разгон модуля по частоте теоретически возможно. Но на практике неизвестно как это скажется на работе модуля в ресивере.

Добавлено: 06 Май 2013, 13:11:25

  Рассматривая вышесказанное и глядя на характеристики этого процессора:

Processor Sub-System:
• CPU: ARM7@126MHz.
• BootROM: 32 KBytes (possibility to
 boot in secure mode – code is both
 encrypted and signed).
• On-chip SRAM: 8 Kbytes.
• On-chip SDRAM: 16 Mbits.
• Interrupt controller.
• eCOS RTOS.
Transport Stream Processor:
• PID filters: up to 64 PID.
• TS-IN descrambling:
 - DVB-CSA1, CSA2
 - AES-128 (ECB, CBC modes), 3-DES / DES.
• TS-OUT encryption (copy protection):
 - AES-128 (ECB, CBC modes), 3-DES / DES.
Peripherals:
• DVB-CI / CI Plus interface.
• SD card (SDHC) + SDIO controller.
• Ethernet MAC (RMII interface).
• 3 x Timers / Watchdog.
• 2 UARTs.
• ISO Smartcard controller.
• SPI master only.
• GPIO.
Security:
• Secure RISC (S-RISC) dedicated.
• Built-in 32-bit Neotion S-RISC.
• 64 Kbytes ROM / 8 Kbytes RAM.
• Hardware crypto-accelerator supporting
 AES 128, DES/3-DES.
• On chip OTP (3 Kbits). Fuses.
• Secured external SDRAM. Possibility to
 extend / split internal SDRAM if application
 requires more than 16Mbits – Secured
 encrypted path.

напрашивается вывод что в процессоре установлены модули аппаратного декодирования AES 128, DES/3-DES.,
а современные кодировки используют те или иные их комбинации.
  Глядя на алгоритм кодировки ДРЕ

/*! DRE2 ECM (4AE1-11) with OverCrypt function:
0000: 81 00 3f 56 0e 01 56 00 00 4d 4f 08 73 a0 29 06
0010: 96 3e e6 51 56 7e 57 85 5a ce bc 71 1c 31 fb 22
0020: 04 5f eb f0 60 fe fe fe 3a 4b 01 fe fe fe fe fe
0030: fe fe fe fe fe fe fe fe fe fe fe fe fe fe 1c e3
0040: 80 e0
OverCrypt Mode:! 3a 4b
OverCrypt Key:! 01
CW from the ECM:! a0 29 06 96 3e e6 51 56 7e 57 85 5a ce bc 71 1c
DW from the Card:! FD DE 47 6C CC F0 99 6D 5A AB FB C3 07 36 CC 4E
PostProcessed DW:! 3F 3F 81 FF 1E 70 1C AA 18 03 39 54 FD E7 F0 D4
*/
static unsigned char DESkeys[16*8]=
{
! 0x4A,0x11,0x23,0xB1,0x45,0x99,0xCF,0x10,! // 00
! 0x21,0x1B,0x18,0xCD,0x02,0xD4,0xA1,0x1F,! // 01
! 0x07,0x56,0xAB,0xB4,0x45,0x31,0xAA,0x23,! // 02
! 0xCD,0xF2,0x55,0xA1,0x13,0x4C,0xF1,0x76,! // 03
! 0x57,0xD9,0x31,0x75,0x13,0x98,0x89,0xC8,! // 04
! 0xA3,0x36,0x5B,0x18,0xC2,0x83,0x45,0xE2,! // 05
! 0x19,0xF7,0x35,0x08,0xC3,0xDA,0xE1,0x28,! // 06
! 0xE7,0x19,0xB5,0xD8,0x8D,0xE3,0x23,0xA4,! // 07
! 0xA7,0xEC,0xD2,0x15,0x8B,0x42,0x59,0xC5,! // 08
! 0x13,0x49,0x83,0x2E,0xFB,0xAD,0x7C,0xD3,! // 09
! 0x37,0x25,0x78,0xE3,0x72,0x19,0x53,0xD9,! // 0A
! 0x7A,0x15,0xA4,0xC7,0x15,0x49,0x32,0xE8,! // 0B
! 0x63,0xD5,0x96,0xA7,0x27,0xD8,0xB2,0x68,! // 0C
! 0x42,0x5E,0x1A,0x8C,0x41,0x69,0x8E,0xE8,! // 0D
! 0xC2,0xAB,0x37,0x29,0xD3,0xCF,0x93,0xA7,! // 0E
! 0x49,0xD3,0x33,0xC2,0xEB,0x71,0xD3,0x14! // 0F
};
void DREover(unsigned char *ECMdata, unsigned char *DW)
{!
unsigned char i, data[8], key[8];
! if(ECMdata[2]>=(43+4) && ECMdata[40]==0x3A && ECMdata[41]==0x4B)
! {
! ! for(i=0;i<8;i++) key[i] = DESkeys[(ECMdata[42] & 0x0F)*8 + i];
! ! for(i=0;i<8;i++) data[i] = DW[i];
! ! DES_Decrypt(data, key);! ! ! // even DW post-process
! ! for(i=0;i<8;i++) DW[i] = data[i];
! ! for(i=0;i<8;i++) data[i] = DW[8+i];
! ! DES_Decrypt(data, key);! ! ! // odd DW post-process
! ! for(i=0;i<8;i++) DW[8+i] = data[i];
! };
};
/* an example:
01'Key : 21 1b 18 cd 02 d4 a1 1f --> 68 28 41 a9 2a 88 e6! // PC-1: 64 bits to 56 bits
Input : FD DE 47 6C CC F0 99 6D! ! ! ! // DW from the Card
--------------------------------------------------------------------------------------------------
[LnBlock,RnBlock] [Cn,Dn] Ex(Rn) ^ PC-2 = S<in> S<out> PM Rn<next>
-------- -------- -------------- ------------ ------------ ------------ -------- -------- --------
bf639fc5 73a9db06 682841a92a88e6 3a7d53ef680c 36000b94c60b 0c7d587bae07 f7eb9d08 f9c1e35e 46a27c9b
73a9db06 46a27c9b 341420d4954473 a0d5043f94f6 83478047a13c 2392847835ca 203e9fcf 3d723a6d 4edbe16b
46a27c9b 4edbe16b 4d05083d25511c a5d6f7f02b56 856069431853 20b69eb33305 224f7e8d f8651ae9 bec76672
4edbe16b bec76672 d3414203495447 5fd60eb0c3a5 0819713509b9 57cf7f85ca1c c22eb5cc 69d0b0ed 270b5186
bec76672 270b5186 34d0508cd25511 10e856aa3c0c 025304423bb6 12bb52e807ba df823c13 72cac99a cc0dafe8
270b5186 cc0dafe8 0d341427349544 65805bd5ff51 a4424ca2182d c1c21777e77c f56c8685 01a1da7f 26aa8bf9
cc0dafe8 26aa8bf9 834d0501cd2551 90d555457ff2 9810725131a9 08c527144e5b 43c62aee 5873d5a1 947e7a49
26aa8bf9 947e7a49 20d34144734954 ca83fc3f4253 1292a043529c d8115c7c10cf 73046a04 5024d2a2 768e595b
947e7a49 768e595b 1069a0a239a4aa bad45c2f2af6 60152ab58464 dac1769aae92 7d0eb859 3b58dad2 af26a09b
768e595b af26a09b 841a68288e692a d5e90d5014f7 08e60a14f252 dd0f0744e6a5 e9e558ae b88fd725 ce018e7e
af26a09b ce018e7e a1069a0a239a4a 65c003c5c3fd caa844ad4a4a af68476889b7 961509d0 d6903013 79b69088
ce018e7e 79b69088 2841a68a88e692 3f3dad4a1450 461c20fc2432 79218db63062 77e023db 4a33eb97 843265e9
79b69088 843265e9 0a1069aaa239a4 c081a430bf53 14261820fe02 d4a7bc104151 3b884abc 5a2c4763 239ad7eb
843265e9 239ad7eb 82841a62a88e69 907cf56aff56 88289cb8e168 185469d21e3e 142ac408 0944005e 8d7665b7
239ad7eb 8d7665b7 a0a10694aa239a c5abac30bdaf 2b08205e3640 eea38c6e8bef 0459927d af310c70 8cabdb9b
8d7665b7 8cabdb9b d05083425511cd c59557ef7cf7 581b81211dcc 9d8ed6ce613b 2c55f525 a50d3eb8 287b5b0f
--------------------------------------------------------------------------------------------------
Output : 3F 3F 81 FF 1E 70 1C AA! ! ! ! // DES post-processed DW
Здесь применен вариант с использованием внутреннего модуля DES
Исходя из данного предположения напрашивается вывод что DRE3 всего лишь включение модуля 3DES в место DES.
Это мое личное умозаключение. На данный момент времени у меня не было времени проработать этот вопрос. Данный пост опубликовал только для тех кого мучает этот вопрос так же как и меня. Есть еще пара мыслей. Но пока нахожусь в стадии сбора информации по этим вопросам.

Немного о реализации протоколов 3DES и DES

Симметричные шифры DES и 3DES

Это одни из немногих симметричных шифров, предоставляемых стандартными криптопровайдерами CryptoAPI. Поскольку DES и 3DES – это практически один и тот же алгоритм (3DES – это DES, применяемый 3 раза подряд), то мы ограничимся примером использования алгоритма 3DES.

ПРИМЕЧАНИЕ
Однако заметим, что для использования алгоритма 3DES требуется Enhanced провайдер, а для DES вполне достаточно Base. Впрочем, DES уже не является стойким по современным меркам алгоритмом, поэтому использовать его стоит лишь там, где надежность шифрования не очень критична.
Алгоритм 3DES использует разные ключи DES для каждой из своих итераций. Поэтому размер его ключа равен тройному размеру ключа DES, т.е. 192 (64*3) бита. Реально размер ключа 3DES – 168 (56*3) бит, т.к. в DES один байт ключа является контрольным для основных семи. Шифрование и дешифрование выполняются с помощью функций:

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 байт (это я установил опытным путем).

В качестве примера шифрования приведу выдержку из демонстрационного проекта encfile:

BYTE buf[BUFFER_SIZE+8]; //8 - запас на padding
while(fSize)
{
    if(!::ReadFile(hInFile,buf,BUFFER_SIZE,&dwLen,NULL)) //читаем блок данных
        break;
    dwSzLow=dwLen;
    if(!::CryptEncrypt(hKey,hHash,fSize<=BUFFER_SIZE,0,buf,&dwSzLow,sizeof(buf))) //шифруем и хешируем его
    break;
    if(!::WriteFile(hOutFile,buf,dwSzLow,&dwSzLow,NULL))
        break;
    fSize-=dwLen;
}

P.S. Прошу сильно не пинать. Последний раз рассматривал вопросы кодировок лет 5 назад. Многое за это время позабылось. И Это только мои умозаключения. Никакого подтверждения этому на данном этапе пока нет.
« Последнее редактирование: 06 Май 2013, 13:49:00 от Mig »
События в Украине говорят о высоком уровне развития и неограниченных возможностях славян! ...Законы придумывает сотня людей, а как их обойти - миллионы... Среди этих миллионов всегда найдутся гораздо способнее из той сотни...
Эти пользователи сказали Вам СПАСИБО: