Не так давно я рассказывал про построенный на базе «гражданского» девайса портативный шифратор «Электроника МК-85С». Самое время поведать миру о ещё одном, не менее значимом, но чуть менее известном девайсе — отечественном криптопроцессоре «Блюминг-1», а также об алгоритме, который он реализовывал.
Итак, в сегодняшней статье рассмотрим ещё одного представителя российской шифровальной техники — построенную на данном чипе плату шифрования «Криптон». Узнаем, как работает эта штука и где она применялась. Заодно посмотрим на её софт и попробуем что-то зашифровать. Как водится, будет много интересного.
❯ Суть такова
История данного устройства началась в середине семидесятых годов, когда начал разрабатываться алгоритм ГОСТ 28147-89 (он же «Магма-2»), по принципу работы напоминающий DES. Создавался он в ходе проекта по разработки криптографических систем защиты информации на ЭВМ Единой системы. Требования, предъявлявшиеся к нему, были крайне высокими: предполагалось, что шифровать им будут информацию высокой степени секретности, причём сам алгоритм секретным был быть не должен.
В 1987 году было создано и устройство шифрования — криптопроцессор «Блюминг-1», реализующий данный алгоритм. Примечателен он тем, что стал первым отечественным однокристальным шифратором, давшим начало развития целой области средств защиты информации у нас.
А вот и построенная на базе данного чипа плата «Дебют-3». Существовало три версии: «1» для ЭВМ ДВК, «2» — для Системы малых ЭВМ, «3» — для PC с шиной ISA.
Плата «Криптон-3», дальнейшее развитие платы «Дебют» (ввиду того, что СМ ЭВМ и ДВК были выведены из эксплуатации, «Криптон-1» и «Криптон-2» так и не суждено было появиться). Следом за ней вышла более продвинутая «Криптон-4». Выпускались они зеленоградским предприятием «ANCUD» (что означало «Angstrem custom design»). Несмотря на довольно похожее название, к ранее упоминавшемуся АНКОРТу отношения оно не имеет.
Фирма эта работает и сейчас и продолжает заниматься выпуском средств защиты информации (преимущественно для гостайны).
Снова «Криптон-3», но в несколько другом исполнении. Увы, я общался с товарищем, кому удалось её достать, но запустить её не удалось…
❯ Обзор оборудования
Про эти платы не удалось найти практически никакой информации. Даже при банальном поиске «Криптон-4» обнаруживается мало чего. Так что сейчас немного развеем завесу тайны.
Перво-наперво идёт сама плата «Криптон-4». Рассмотрим её поподробнее. По центру два базовых матричных кристалла Н1515ХМ1, обеспечивающих связь шифропроцессоров с компьютером. Слева от них в опечатанной панельке ПЗУшка, в которой содержится BIOS устройства. Ещё левее два диода в стеклянных корпусах. Это 2Г401 — специализированные германиевые диоды, предназначенные для использования в генераторах шума. Как нетрудно догадаться, здесь на них выполнен аппаратный генератор случайных чисел. Потенциометры на плате, вероятно, служат для его подстройки (хотя, конечно, могу ошибаться, никакой информации на этот счёт я не нашёл). Над БМК находятся два чипа КБ1 — те самые шифропроцессоры. Возле планки нераспаянный разъём DB9 для подключения считывателя смарт-карт. В правом верхнем углу ещё одна ПЗУшка — КР556РТ11. В ней записан индивидуальный номер платы, написанный также на приклеенной к микросхеме бумажке. Номер этот используется для идентификации устройства программами: некоторый софт будет работать исключительно с той платой, для которой разрабатывался.
Дискеты с софтом.
А вот более старые версии софта. Что от чего, мне неведомо, досталось всё одной кучей.
Ещё один дистрибутив софта — LiteSign. В отличие от остальных дискет, эта в опечатанной коробочке (которую до меня уже, разумеется, открывали).
А вот более новая версия платы, уже на PCI. Чипы шифраторов изменили свои корпуса, вместо БМК теперь ПЛИС. Шумовые диоды также, очевидно, никуда не подевались. Разъём 4P4C, предназначенный для подключения ключа iButton.
На обратной стороне этикетка — изделие М-503Г. По сравнению с предыдущей платой, железка не такая уж и древняя.
На этом история данных устройств не заканчивается. Следующим шагом было избавление от керамических чипов шифраторов. Их обязанности были возложены на ПЛИС. Плата же получила название Криптон-8/PCI.
Последняя (если верить сайту ANCUD) версия — Криптон-10/PCI-E.
Параллельно с абонентскими шифраторами выпускаются и средства доверенной загрузки — Криптон-Замок.
❯ Инструкция и софт
Помимо платы и дискет мне достался мануал, который я не поленился отсканировать. Страниц в нём немного, так что я разместил его прямо тут.
Также я оцифровал все имеющиеся у меня дискеты и выложил файлы на old-dos.ru. Помимо этого прочесал архивы сайта ANCUD и все найденные материалы также залил туда.
❯ Первый запуск
Ну что же, время запускать!
В качестве тестового компа будем использовать вот такую плату на процессоре 386SX. Втыкаем в неё всё нужное железо и плату шифрования, и пробуем включать.
После прохождения POST запускается BIOS платы.
Хранилища ключей у неё нет, поэтому они подтягиваются при загрузке с дискет или считывателей смарт-карт, где остаются до отключения питания. Тестовые ключи (узел замены и главный ключ) находятся на комплектной дискете. Нужны они для запуска платы, если ни одного «боевого» ключа ещё не сгенерировано.
Втыкаем дискету с софтом, и ключи успешно подтягиваются. После этого начинается загрузка DOS.
❯ Шифруем и расшифровываем
Теперь запускаем главный софт — crtools. По сути это и есть утилита для шифрования, далёкий предок всяческих «КриптоАРМ» и тому подобного ПО. Здесь достаточно выбрать нужный файл и запустить операцию из меню, после чего он будет зашифрован или расшифрован. Никаких кодов, секретных комбинаций кнопочек и тому подобных манипуляций, всё делается за пару секунд в несколько нажатий клавиш.
Параметры системы.
❯ Генератор ключей
В отличие от «Электроники МК-85С», где для генерации марканта надо было жмякать кнопку, или многих используемых сейчас систем, где требуется жмякать все клавиши и водить туда-сюда мышью для создания случайной последовательности, в «Криптоне» есть аппаратный датчик случайных чисел, что позволяет генерировать эти ключи практически моментально. Также для дополнительной защиты свежесозданный ключ можно защитить паролем.
❯ ЭЦП и неожиданный облом
Следующей на очереди идёт программа CryptonSign, предназначавшаяся для цифровой подписи.
Однако при попытке её запустить меня ждала неудача: программа выдала ошибку о каком-то неверном номере.
Помните ту ПЗУшку с номером платы? Да, именно для подобных целей она и используется. Просто поражает, насколько мелкосерийным было это производство: ПЗУ с уникальным номером, написанным на нём от руки, дистрибутив с софтом, уникальный для каждой платы. Судя по всему, использовался какой-то самописный генератор дистрибутивов, выдававший экзешник, залоченный на определённую плату, но не удивлюсь, если этот номер там и вовсе захардкожен, а для каждой платы софт пересобирали. Точные объёмы производства мне неведомы, но выпущено было буквально две-три тысячи плат, совсем немного по меркам компьютерного железа.
❯ LiteSign
Софт из коробочки тоже оказался непрост.
Помимо привязки к серийному номеру платы он также имеет защиту от копирования, не дающую установить его больше, чем на один ПК. Защита довольно типичная для тех лет: на магнитном диске лазером специально сделаны бэд-блоки, а софт при считывании проверяет их наличие.
При установке программа удаляется с дискеты и записывается на винт, а при удалении — возвращается обратно. Что делать, если жёсткий диск сдохнет или окажется заражён вирусом, увы, не уточняется.
❯ Эмулятор и софт под Windows
Напоследок взглянем на то, какой софт существовал для работы с шифратором в среде Windows. Выпущен он уже куда позднее, нежели тот, что под DOS, также имеет защиту от копирования (на этот раз с помощью аппаратного ключа для LPT-порта) и сейчас доступен только в демо-версии по причине прекращения продаж и отсутствия «кряка». Впрочем, для того, чтобы увидеть его в работе, этого более чем достаточно.
На случай, если платы нет, можно воспользоваться эмулятором (для Windows 9x/NT4.0/2000).
Первым делом ставим необходимый для работы всего софта Crypton API.
Теперь накатываем эмулятор, и всё, можно пробовать запускать ПО.
Помимо софта для шифрования отдельных файлов ANCUD также предоставлял и более специализированный, например, спецархиватор для почты ArcMail.
Но с ним, увы, не задалось: версия под Windows не запускалась, а под DOS — не видела ни эмулятор, ни настоящую плату. Пришлось переместиться на Windows 2000, где софт ожил.
Открываем параметры и устанавливаем путь для хранения ключей.
А вот и наш софт.
Другим ПО для Windows является «Криптон-Подпись», интегрирующийся прямо в контекстное меню.
❯ Криптон для программиста
Помимо использования штатного софта была возможность разрабатывать свой. Для этого существовал Crypton DK — набор библиотек и документации для разработки. Для того, чтобы оснастить свою программу возможностью аппаратного шифрования, достаточно было установить Crypton API и подключить прилагаемые к Crypton DK DLL-ки.
/////////////////////////////////////////////////////////////////
// Sample: testing Crypton API functions
// (c) Ancud 1998
// --------------------------------------------------------------
// The sample shows using all the Crypton API functions
/////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "..\..\INC\CryptLib.h"
CRHANDLE hCR; // Handle to a crypton service
#define TestBufSize 2048 // The size of the buffers for encryption/decryption and random tests
char TestBuf1[TestBufSize]; // Buffers for encryption/decryption and random tests
char TestBuf2[TestBufSize];
char TestBuf3[TestBufSize];
crSYNCHRO crSync;
crKEY crKey1,crKey2; // Buffers for keys
crIP crIP1,crIP2; // Buffers for imitoprefixes
void // Almost obvious function ;)
WriteRes(BOOL res)
{
if (res)
printf(" \tOK\n");
else
printf(" \tFALSE\n");
}
void // Making equal buffers
SetEqualBufs(char* Buf1,char* Buf2,int Size)
{
char j=35;
int i;
for (i=0; i<Size; i++)
{
*(Buf1+i)=j;
*(Buf2+i)=j;
j++;
}
}
void // Making different buffers
SetBufs(char* Buf1,char* Buf2,int Size)
{
char j=32;
int i;
for (i=0; i<Size; i++)
{
*(Buf1+i)=j;
*(Buf2+i)=255-j;
j++;
}
}
void
main()
{
printf("\nTest of Crypton API functions (c) Ancud 1998\n");
if (crInitCryptonLib()) // Don't forget to call this function
// before using Crypton API functions
{
hCR=crInitService(); // Get a handle to the hardware service
if (hCR)
{
BOOL res;
if(crTestHardware(hCR)){
printf("Using DK with Crypton Hardware!\n");
}else
printf("Using DK with Crypton Emulator!\n");
// crTestHardware
printf("crTestHardware\t"); WriteRes(crTestHardware(hCR));
// crGetCryptonNumber
printf("crGetCryptonNumber\t%i\n",crGetCryptonNumber(hCR));
// crRandom
printf("crRandom\t");
SetEqualBufs(TestBuf1,TestBuf2,TestBufSize);
res=crRandom(hCR,TestBufSize,TestBuf1);
res&=(memcmp(TestBuf1,TestBuf2,TestBufSize)!=0);
WriteRes(res);
// crControlledRandom
{
crCTRLRANDOM TestBuf1,TestBuf2;
printf("crControlledRandom");
SetEqualBufs(TestBuf1,TestBuf2,CTRLRANDOM_LEN);
res=crControlledRandom(hCR,TestBuf1);
res&=(memcmp(TestBuf1,TestBuf2,CTRLRANDOM_LEN)!=0);
WriteRes(res);
}
// crSetK1
printf("crSetK1\t\t");
crRandom(hCR,CRYPTON_KEY_LEN,crKey1);
WriteRes(crSetK1(hCR,crKey1));
// crSetK2
printf("crSetK2\t\t");
crRandom(hCR,CRYPTON_KEY_LEN,crKey1);
WriteRes(crSetK2(hCR,crKey1));
// crSetK1onK2
printf("crSetK1onK2\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
res=crSetK1onK2(hCR,crKey1);
res&=crGetK1onK2(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crGetK1onK2
printf("crGetK1onK2\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
crSetK1onK2(hCR,crKey1);
res=crGetK1onK2(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crGetK2onK1
printf("crGetK2onK1\t");
crRandom(hCR,CRYPTON_KEY_LEN,crKey1);
crSetK1(hCR,crKey1);
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
res=crGetK2onK1(hCR,crKey1);
res&=crGetK2onK1(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crSetK2onK3
printf("crSetK2onK3\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
res=crSetK2onK3(hCR,crKey1);
res&=crGetK2onK3(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crGetK2onK3
printf("crGetK2onK3\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
crSetK2onK3(hCR,crKey1);
res=crGetK2onK3(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crSetK1onK3
printf("crSetK1onK3\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
res=crSetK1onK3(hCR,crKey1);
res&=crGetK1onK3(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crGetK1onK3
printf("crGetK1onK3\t");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
crSetK1onK3(hCR,crKey1);
res=crGetK1onK3(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)==0);
WriteRes(res);
// crSetRandomK1onK3
printf("crSetRandomK1onK3");
SetEqualBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
res=crGetK1onK3(hCR,crKey1);
res&=crSetRandomK1onK3(hCR);
res&=crGetK1onK3(hCR,crKey2);
res&=(memcmp(crKey1,crKey2,CRYPTON_KEY_LEN)!=0);
WriteRes(res);
// crGetIPforDataonK1
printf("crGetIPforDataonK1");
SetBufs(TestBuf1,TestBuf2,TestBufSize);
SetBufs(crIP1,crIP2,CRYPTON_IP_LEN);
res=crGetIPforDataonK1(hCR,TestBufSize,TestBuf1,crIP1);
res&=crGetIPforDataonK1(hCR,TestBufSize,TestBuf1,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)==0);
res&=crGetIPforDataonK1(hCR,TestBufSize,TestBuf2,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)!=0);
WriteRes(res);
// crGetIPforK1onK2
printf("crGetIPforK1onK2");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
SetBufs(crIP1,crIP2,CRYPTON_IP_LEN);
crSetK1(hCR,crKey1);
res=crGetIPforK1onK2(hCR,crIP1);
res&=crGetIPforK1onK2(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)==0);
crSetK1(hCR,crKey2);
res&=crGetIPforK1onK2(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)!=0);
WriteRes(res);
// crGetIPforK2onK3
printf("crGetIPforK2onK3");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
SetBufs(crIP1,crIP2,CRYPTON_IP_LEN);
crSetK2(hCR,crKey1);
res=crGetIPforK2onK3(hCR,crIP1);
res&=crGetIPforK2onK3(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)==0);
crSetK2(hCR,crKey2);
res&=crGetIPforK2onK3(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)!=0);
WriteRes(res);
// crGetIPforK2onK1
printf("crGetIPforK2onK1");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
SetBufs(crIP1,crIP2,CRYPTON_IP_LEN);
crSetK2(hCR,crKey1);
res=crGetIPforK2onK1(hCR,crIP1);
res&=crGetIPforK2onK1(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)==0);
crSetK2(hCR,crKey2);
res&=crGetIPforK2onK1(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)!=0);
WriteRes(res);
// crGetIPforK1onK3
printf("crGetIPforK1onK3");
SetBufs(crKey1,crKey2,CRYPTON_KEY_LEN);
SetBufs(crIP1,crIP2,CRYPTON_IP_LEN);
crSetK1(hCR,crKey1);
res=crGetIPforK1onK3(hCR,crIP1);
res&=crGetIPforK1onK3(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)==0);
crSetK1(hCR,crKey2);
res&=crGetIPforK1onK3(hCR,crIP2);
res&=(memcmp(crIP1,crIP2,CRYPTON_IP_LEN)!=0);
WriteRes(res);
// crGammaCodeonK1Ex
printf("crGammaCodeonK1Ex");
SetEqualBufs(TestBuf1,TestBuf2,TestBufSize);
crRandom(hCR,CRYPTON_SYNCHRO_LEN,crSync);
res=crGammaCodeonK1Ex(hCR,TestBufSize,crSync,TestBuf1,TestBuf2);
res&=(memcmp(TestBuf1,TestBuf2,TestBufSize)!=0);
SetBufs(TestBuf1,TestBuf3,TestBufSize);
res&=crGammaCodeonK1Ex(hCR,TestBufSize,crSync,TestBuf1,TestBuf2);
res&=crGammaCodeonK1Ex(hCR,TestBufSize,crSync,TestBuf2,TestBuf3);
res&=(memcmp(TestBuf1,TestBuf3,TestBufSize)==0);
WriteRes(res);
// crGammaRecoveryCodeonK1Ex
printf("crGammaRecoveryCodeonK1Ex");
SetEqualBufs(TestBuf1,TestBuf2,TestBufSize);
crRandom(hCR,CRYPTON_SYNCHRO_LEN,crSync);
res=crGammaRecoveryCodeonK1Ex(hCR,TestBufSize,crSync,TestBuf1,TestBuf2);
res&=(memcmp(TestBuf1,TestBuf2,TestBufSize)!=0);
SetBufs(TestBuf1,TestBuf3,TestBufSize);
res&=crGammaRecoveryCodeonK1Ex(hCR,TestBufSize,crSync,TestBuf1,TestBuf2);
res&=crGammaRecoveryDecodeonK1Ex(hCR,TestBufSize,crSync,TestBuf2,TestBuf3);
res&=(memcmp(TestBuf1,TestBuf3,TestBufSize)==0);
WriteRes(res);
crDoneService(hCR); // We don't need this handle any more
}
else
printf("Error starting the service.\n");
crDoneCryptonLib(); // We aren't going to use Crypton API any more
}
else
printf("Error initialization of the Crypton library.\n");
printf("\nPress any key...\n"); _getch();
}
Использовать это проще простого: генерация ключей, шифрование в разных режимах и расшифровывание осуществляются вызовами буквально одной-единственной функции, всё остальное выполняет плата в паре с Crypton API.
Вот, например, синтаксис функции шифрования. Достаточно лишь указать ей исходные данные и их размер, после чего останется только забрать результат.
❯ Что же в итоге?
Вот таким вот оказался ещё один предмет истории отечественной криптографии.
Само собой, для практического использования он сейчас не годится, но как предмет коллекции — очень даже. Даже скажу, что это одна из самых красивых компьютерных плат, что есть у меня дома.
Забавно, что в своё время даже существовали вирусы для ПК с такими платами. На сайте ANCUD упоминалась некая программа, которая якобы ускоряла шифрование файлов, тогда как на деле «Криптон» при её запуске и вовсе не использовался, а файлы защищались куда более слабым алгоритмом.
Такие дела.
❯ Ссылки
- Тема на «Полигоне»
- Юбилей АНКАДа
- Сам АНКАД
- Ещё немного скриншотов и описание работы
- Весь
софт, какой смог найти - История создания первых отечественных шифропроцессоров «Блюминг» и аппаратных шифраторов на их основе
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Читайте также:
Комментарии (24)
kenomimi
06.12.2024 09:37Точные объёмы производства мне неведомы, но выпущено было буквально две-три тысячи плат, совсем немного по меркам компьютерного железа.
Они мало кому нужны. Видел на авито подобные, но современные платы на ПЛИС от конторы "Код безопасности", что-то за 7к мешок, штук 100. Кто-то закупил, и потом понял, что оно ему не надо... Наверное, это была бы находка для тех, кто умеет в ПЛИС, так как чипы там жирненькие стоят.
MaFrance351 Автор
06.12.2024 09:37Видел то объявление. Это Secret net card были платы. Они же ПАК "Соболь", но с другой прошивкой. У меня этот Соболь стоит в компьютере для блокировки загрузки с ключа.
vt16
06.12.2024 09:37На авито ПАК Соболь есть для PCI, FPGA там ( по фото ) - XCS020XL-TQ144 / Spartan-XL. Цена смешная, но и FPGA не особо жирная. Чип 2000 года, да и поддерживается только старыми ISE.
И есть платы на той же плисине, но с мостом на на PCIe.
sfrolov
06.12.2024 09:37А принципиальные схемы к ним есть какие-нибудь?
MaFrance351 Автор
06.12.2024 09:37Увы, ничего не нашёл...
Да и реверсить тоже сложновато - прошивок БМК уже нигде нет.
StepanovAlex
06.12.2024 09:37БМК предтече ПЛИС в современном понимании, в них стереть или поменять что-то нельзя было, а "запись" при изготовлении кристалла производилась, конфигурацией слоев перемычек.
nerudo
06.12.2024 09:37Там на последних платах с чипов вся маркировка спилена или это фотки такие?
MaFrance351 Автор
06.12.2024 09:37Просто фото такое. У меня нет более поздних этих плат, так что взял с просторов. На деле там всё должно быть видно.
salnicoff
06.12.2024 09:37Интересно, почему назвали «Блюминг»? Чтобы никто не догадался?
MaFrance351 Автор
06.12.2024 09:37Такая же тема, как с названием военной техники, судя по всему.
salnicoff
06.12.2024 09:37Там деревья да животные — одни тополя да зайчики. Технических терминов в качестве названий «секретных» изделий вроде никогда не было.
HOMPAIN
Непонятна цель создания такого устройства. Если ключ хранится на дискете, тогда можно шифрования делать программой, отдельная плата не даёт преимущества.
MaFrance351 Автор
Дискету можно вставить при загрузке и убрать потом обратно в сейф. А из "заряженной" платы скопировать ключи не удастся.
kuzzdra
Если к компьютеру есть доступ у неправильныных людей - они могут ключи прямо с дискеты утащить.
MaFrance351 Автор
А это уже организационная проблема...
Ну и ключи можно хранить на смарт-карте, её без ПИНа не прочитаешь.
kuzzdra
Если организационная проблема решена, то можно шифровать и без платы прямо на компе. А если нет - то и плата не сильно поможет.
vvzvlad
Да что вы несете-то, а? Ключ хранится в сейфе, откуда достается владельцем сейфа и им же вставляется в компьютер. Один раз за рабочий день, загрузить в плату. Все, пока комп стоит на месте — подделать зашифрованное сообщение невозможно, и одноверменно, можно шифровать сколько угодно сообщений этим ключом, не доставая его из сейфа и не беспокоя этого владельца сейфа. Скопировать ключ, чтобы уйти с ним и писать сообщения зашифрованные этим ключом нельзя. Расскажите, как вы с помощью решения организационных проблем сделаете аналогичное решение без платы?
randomsimplenumber
Э ну начиная с Энигмы, где плат не было никаких.. заканчивая любым банковским приложением, где и шифрование есть, и ключи. Раз платы выброшены, значит как то научились обходится без них.
MaFrance351 Автор
Где-то эти платы ушли, так как нашли решение, не требующее стольких затрат. А в гостайне, банковском процессинге и тому подобных областях они (точнее, более новые версии, на PCI-E и смарт-картах) до сих пор живы.
Также не исключаю, что в каких-то местах просто их используют просто из-за бюрократии. Раз в руководящих документах сказано шифровать при помощи вот такого устройства, то используют их, хотя, возможно, именно вот для того объекта ничто не мешает обойтись другими средствами.
vvzvlad
Энигма сама была такое устройство. В банковских приложения нет такого только для B2C, а стоит вам залезть чуть поглубже в B2B, так вам сразу выдадут USB-токен, который в целом делает тоже самое. Ну и вопрос-то не в том, что где-то сейчас такое шифрование не требуется. Не требуется и бог с ним.
Просто комментатор выше начал с апломбом заявлять, что это все ненужно и ровно так же решается без всяких плат. Я говорю что не решается и описываю кейс, когда железка нужна. Поспорить с этим получится только если предложить решение этого кейса не уступающее в защищенности.
randomsimplenumber
Этот токен - таки работает шифратором, или хранилищем ключей, подобно дискете из сейфа?
salnicoff
Полу-шифратором и генератором. Основную работу делает компьютер (например, шифрует DES), а ключи придумывает USB-дейвас. Он же потом подписывает RSA. Гонять мегабайты на подпись или шифрацию в USB — идея так себе.
StepanovAlex
Цель как раз понятна. Во первых, как и сказано в статье, тут ноги растут из советской программы ПРО, ЕС ЭВМ и пр. и в тех условиях естественным, технически и организационно обоснованным, было именно аппаратное, по большей части, решение.
Вот отличнейший цикл статей Алексея Ерёменко (опубликованный до 22года). https://topwar.ru/user/Sperry/
А в нулевые такой продукт основанный на спецплате имел несравнимо более высокую рентабельность чем тоже самое на дискетке, хотя-бы потому платы трудно скопировать, но удобно проводить по ведомостям и отчетам.