Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Криптокодирование на MCU
- 10-20-2003
- Andrew V. Miheev
October 20, 2003, 9:15 am

Добрый день!
Поставили мне такую задачу:
Есть некоторый документ с 2D-кодом, в котором (в 2D-коде) содержится
примерно 1Кбайт информации. Это код печатается на спец.принтере в разных
местах (несколько тысяч мест) и должен считываться в других местах
(несколько десятков тысяч мест). Необходимо защитить информацию в 2D-коде от
изменения электронной подписью, печатаемой в этом же 2D-коде, уникальной для
каждого из мест, где печатают 2D-код, но так, чтобы проверить эту подпись (и
установить место печати) можно было бы в любом месте считывания. Для
считывания и печати используются специализированные устройства, подключенные
к компьютеру, причем везде разные, но поддерживающие общий стандарт
2D-кодировки при печати и считывании. Т.е. разместить контроллер между
устройством печати/считывания и компьютером нереально.
Я подумал, что это можно сделать на основе ключа на один из доступных
внешних портов компьютера (COM, LPT, USB и т.д.), внутри которого стоит MCU
шифрующий или расшифровывающий данные с/на 2D-метку по алгоритму чего-то
похожего на PGP с открытым ключом. Т.е. MCU втыкается в порт компьютера,
через который ему дается команда на шифрование и данные, которые надо
"подписать". Он внутри выполняет шифрацию и возвращает те же самые данные,
но с электронной подписью, после чего программа компьютера отправляет их на
печать. Так мы получим "скрытый" внутри MCU алгоритм и "скрытые" там же
публичный (общий для всех) и секретный (уникальный для этого MCU) ключи,
т.е. снизим риск подделки до минимума. Для исключения воровства самого
шифрующего контроллера будут приняты жесткие организационные меры и мне
сказали, что случай воровства MCU можно в расчет не брать.
Думал еще над тем, что можно взять что-то типа MD5SUM и прямо в генерируемой
им контрольной сумме перемешать и раскидать биты номера "шифратора", но мне
кажется, что это будет не очень стойко к "взлому".
Отсюда вопросы:
1. Получается, что нужен MCU с небольшим кол-вом ног, небогатой периферией,
но приличной внутренней памятью и высокой производительностью. Кто что
посоветует посмотреть на эту тему?
2. Возможно уже были или есть аналогичные готовые или полуготовые решения.
Подскажите, где что поискать/посмотреть?
3. Нужно ли сертифицировать алгоритм кодирования при условии, что он будет
использоваться в гос.структурах?
4. Наверняка есть способы/алгоритмы кодирования, оптимизированные под
применение на MCU с 8-ми или 16-разрядной арифметикой. Подскажите
названия?
5. Я всетаки считаю, что случай воровства самого MCU и несанкционированная
работа через него в этом случае возможны. Как в таком случае лучше
защитить ключ? Пароль, который теоретически можно купить? Сеанс связи
через интернет с "разрешающим" работу данного ключа сервером?
P.S. Сразу скажу, что в криптографии я почти полный чайник - имею только
общее представление о том, как работает PGP в целом и никакого понятия об
используемых им алгоритмах.
Поставили мне такую задачу:
Есть некоторый документ с 2D-кодом, в котором (в 2D-коде) содержится
примерно 1Кбайт информации. Это код печатается на спец.принтере в разных
местах (несколько тысяч мест) и должен считываться в других местах
(несколько десятков тысяч мест). Необходимо защитить информацию в 2D-коде от
изменения электронной подписью, печатаемой в этом же 2D-коде, уникальной для
каждого из мест, где печатают 2D-код, но так, чтобы проверить эту подпись (и
установить место печати) можно было бы в любом месте считывания. Для
считывания и печати используются специализированные устройства, подключенные
к компьютеру, причем везде разные, но поддерживающие общий стандарт
2D-кодировки при печати и считывании. Т.е. разместить контроллер между
устройством печати/считывания и компьютером нереально.
Я подумал, что это можно сделать на основе ключа на один из доступных
внешних портов компьютера (COM, LPT, USB и т.д.), внутри которого стоит MCU
шифрующий или расшифровывающий данные с/на 2D-метку по алгоритму чего-то
похожего на PGP с открытым ключом. Т.е. MCU втыкается в порт компьютера,
через который ему дается команда на шифрование и данные, которые надо
"подписать". Он внутри выполняет шифрацию и возвращает те же самые данные,
но с электронной подписью, после чего программа компьютера отправляет их на
печать. Так мы получим "скрытый" внутри MCU алгоритм и "скрытые" там же
публичный (общий для всех) и секретный (уникальный для этого MCU) ключи,
т.е. снизим риск подделки до минимума. Для исключения воровства самого
шифрующего контроллера будут приняты жесткие организационные меры и мне
сказали, что случай воровства MCU можно в расчет не брать.
Думал еще над тем, что можно взять что-то типа MD5SUM и прямо в генерируемой
им контрольной сумме перемешать и раскидать биты номера "шифратора", но мне
кажется, что это будет не очень стойко к "взлому".
Отсюда вопросы:
1. Получается, что нужен MCU с небольшим кол-вом ног, небогатой периферией,
но приличной внутренней памятью и высокой производительностью. Кто что
посоветует посмотреть на эту тему?
2. Возможно уже были или есть аналогичные готовые или полуготовые решения.
Подскажите, где что поискать/посмотреть?
3. Нужно ли сертифицировать алгоритм кодирования при условии, что он будет
использоваться в гос.структурах?
4. Наверняка есть способы/алгоритмы кодирования, оптимизированные под
применение на MCU с 8-ми или 16-разрядной арифметикой. Подскажите
названия?
5. Я всетаки считаю, что случай воровства самого MCU и несанкционированная
работа через него в этом случае возможны. Как в таком случае лучше
защитить ключ? Пароль, который теоретически можно купить? Сеанс связи
через интернет с "разрешающим" работу данного ключа сервером?
P.S. Сразу скажу, что в криптографии я почти полный чайник - имею только
общее представление о том, как работает PGP в целом и никакого понятия об
используемых им алгоритмах.
--
С уважением, Андрей Михеев.
С уважением, Андрей Михеев.

Криптокодирование на MCU
Привет!
"Andrew V. Miheev"

[поскипано]

периферией,

Если что-то будешь делать сам, то придётся для начала получить лицензии на:
1) разработку,
2) изготовление,
3) распространение,
4) использование и обслуживание СКЗИ и ЭЦП,
а затем сертифицировать изделие. Раньше эти функции выполняла ФАПСИ, а
сейчас это передано в ФСБ и Минсвязи. Если будешь сам выдумывать алгоритм,
то его придется сертифицировать через Гостехкомиссию.

Попробуй в ru.crypt сходить, там это более эхотажно. А искать надо что-то
вроде платы "Криптон" или просто сертифицированной библиотеки, которые
выпускают фирмы "ЛанКрипт", "КриптоПро" и т.д. Почти все они в ru.crypt
постоянно сидят.

Обязательно. Коммерческим структурам в этом смысле легче, а вот для
госструктур и публичных организаций в соответствии с ФЗ "Об ЭЦП" N1 от
января 2001 года обязательно использование только сертифицированных средств.

ГОСТ 28147-89 "Алгоритм шифрования"
ГОСТ 34.11-94 "Хэш-функция"
ГОСТ 34.10-94 "ЭЦП" или ГОСТ 34.10-2001 "ЭЦП на эллиптических кривых"

Это называется "компрометация ключа ЭЦП". Решение этих вопросов
осуществляется при помощи правильных криптографических протоколов (не путать
с алгоритмами!) и созданием соответствующей инфраструктуры. Ключевое
понятие - "сертификат открытого ключа ЭЦП". RTFM.

Брюс Шнаер "Прикладная криптография"
Андрей Чмора "Современная прикладная криптография"
FAQ эхоконференции ru.crypt
ФЗ "О защите информации"
ФЗ "Об электронной цифровой подписи"
С уважением,
Виталий Насенник
"Andrew V. Miheev"

[поскипано]

периферией,

Если что-то будешь делать сам, то придётся для начала получить лицензии на:
1) разработку,
2) изготовление,
3) распространение,
4) использование и обслуживание СКЗИ и ЭЦП,
а затем сертифицировать изделие. Раньше эти функции выполняла ФАПСИ, а
сейчас это передано в ФСБ и Минсвязи. Если будешь сам выдумывать алгоритм,
то его придется сертифицировать через Гостехкомиссию.

Попробуй в ru.crypt сходить, там это более эхотажно. А искать надо что-то
вроде платы "Криптон" или просто сертифицированной библиотеки, которые
выпускают фирмы "ЛанКрипт", "КриптоПро" и т.д. Почти все они в ru.crypt
постоянно сидят.

Обязательно. Коммерческим структурам в этом смысле легче, а вот для
госструктур и публичных организаций в соответствии с ФЗ "Об ЭЦП" N1 от
января 2001 года обязательно использование только сертифицированных средств.

ГОСТ 28147-89 "Алгоритм шифрования"
ГОСТ 34.11-94 "Хэш-функция"
ГОСТ 34.10-94 "ЭЦП" или ГОСТ 34.10-2001 "ЭЦП на эллиптических кривых"

Это называется "компрометация ключа ЭЦП". Решение этих вопросов
осуществляется при помощи правильных криптографических протоколов (не путать
с алгоритмами!) и созданием соответствующей инфраструктуры. Ключевое
понятие - "сертификат открытого ключа ЭЦП". RTFM.

Брюс Шнаер "Прикладная криптография"
Андрей Чмора "Современная прикладная криптография"
FAQ эхоконференции ru.crypt
ФЗ "О защите информации"
ФЗ "Об электронной цифровой подписи"
С уважением,
Виталий Насенник
Site Timeline
- » MSP430 Flash Self-Programming Technique
- — Next thread in » Microcontrollers (Russian)
-
- » EEPROM в ATmega128
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » TLYp vs lgy
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » Regulator ładowania aku 12V-12V / ogranicznik pr ądu
- — The site's Last Updated Thread. Posted in » Electronics (Polish)
-