Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline aleksey.gallyamov  
#1 Оставлено : 27 марта 2014 г. 16:57:41(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
Здравствуйте, уважаемые эксперты!

Помогите пожалуйста с (не)простым вопросом.

Согласно вашему примеру производится зашифрование файла с использованием открытого ключа получателя и закрытого ключа отправителя. На выходе я получаю: зашифрованные данные, зашифрованный сессионый ключ и вектор инициализации. Расшифрование происходит без проблем, для этого используется:
1. зашифрованные данные
2. зашифрованный сессионный ключ
3. вектор инициализации
4. открытый ключ отправителя (сертификат)

Вопрос. Подскажите пожалуйста, куда копать, чтобы после выполнения операции шифрования упаковать все данные вместе с сертификатом отправителя в один файл, содержащий всё необходимое для расшифрования получателем? Предполагается, что для этого необходимо использовать формат PKCS#7 (и расширение файла p7m). Но с примерами и документацией конкретно по этому вопросу мягко говоря ну очень скудно.

Заранее спасибо!
Offline Юрий  
#2 Оставлено : 27 марта 2014 г. 17:23:15(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Просто есть "низкоуровневые" функции (использованные в этом примере), а есть "высокоуровневые", которые как-раз и работают с упакованными в ASN.1 структурами вроде PKCS#7.

Примерная последовательность шифрования:
1) CryptMsgOpenToEncode(...CMSG_ENVELOPED...);
2) CryptMsgUpdate;
3) CryptMsgClose;

Примеров очень много в MSDN.
С уважением,
Юрий Строжевский
Offline aleksey.gallyamov  
#3 Оставлено : 28 марта 2014 г. 11:56:58(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
Да, нужны именно "низкоуровневые" функции, чтобы работать с данными в режиме потока, "высокоуровневые" для этого не подходят.

Понятно, что начинать надо с CryptMsgOpenToEncode(...CMSG_ENVELOPED...);
Непонятно другое. Как упаковать в "конверт" зашифрованные данные, зашифрованный сессионный ключ, вектор инициализации и сертификат отправителя. Непонятно, надо ли сначала шифровать, а потом упаковывать, или это всё делается сразу? Примеров к сожалению не нашёл. Буду очень признателен, если вы поделитесь ссылкой на пример. Неужели этого никто никогда не делал? Все поголовно используют только "высокоуровневые" функции?
Offline Юрий  
#4 Оставлено : 28 марта 2014 г. 12:15:17(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Автор: aleksey.gallyamov Перейти к цитате
Да, нужны именно "низкоуровневые" функции, чтобы работать с данными в режиме потока, "высокоуровневые" для этого не подходят.

Понятно, что начинать надо с CryptMsgOpenToEncode(...CMSG_ENVELOPED...);
Непонятно другое. Как упаковать в "конверт" зашифрованные данные, зашифрованный сессионный ключ, вектор инициализации и сертификат отправителя. Непонятно, надо ли сначала шифровать, а потом упаковывать, или это всё делается сразу? Примеров к сожалению не нашёл. Буду очень признателен, если вы поделитесь ссылкой на пример. Неужели этого никто никогда не делал? Все поголовно используют только "высокоуровневые" функции?

Вы примеры то по этим функциям посмотрите. Там много что есть. Уверен, что все ваши потребности будут удовлетворены именно высокоуровневыми функциями.
Также посмотрите на CryptMsgControl - тоже много что интересного можно найти.

Если нужно лезть глубоко внутрь (в чём я пока сильно сомневаюсь), то смотрите RFC по работе с ГОСТ.
С уважением,
Юрий Строжевский
Offline aleksey.gallyamov  
#5 Оставлено : 28 марта 2014 г. 13:21:51(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
От высокоуровневых функций пришлось отказаться в виду того, что у них существуют ограничение на объём обрабатываемых данных.

Глубоко внутрь лезть бы не хотелось. Нужно решить простую задачу: зашифровать файл и передать его получателю, чтобы он мог его расшифровать с использованием Крипто Про и ГОСТ-алгоритмов. Не должно быть ограничений на размер файла. Странно, что в примерах есть зашифрование/расшифрование файла без упаковки/распаковки в PKCS#7. По сути это бесполезные примеры, если только принимающая и отправляющая стороны не будут использовать одно и тоже ПО, которые будут использовать свой формат для передачи данных.

Т.е. вы не сталкивались с необходимостью шифрования/дешифрования в PKCS#7 в потоковом режиме?
Offline Юрий  
#6 Оставлено : 28 марта 2014 г. 13:36:21(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Автор: aleksey.gallyamov Перейти к цитате
От высокоуровневых функций пришлось отказаться в виду того, что у них существуют ограничение на объём обрабатываемых данных.

Глубоко внутрь лезть бы не хотелось. Нужно решить простую задачу: зашифровать файл и передать его получателю, чтобы он мог его расшифровать с использованием Крипто Про и ГОСТ-алгоритмов. Не должно быть ограничений на размер файла. Странно, что в примерах есть зашифрование/расшифрование файла без упаковки/распаковки в PKCS#7. По сути это бесполезные примеры, если только принимающая и отправляющая стороны не будут использовать одно и тоже ПО, которые будут использовать свой формат для передачи данных.

Т.е. вы не сталкивались с необходимостью шифрования/дешифрования в PKCS#7 в потоковом режиме?

Сталкивался, более 10-ти лет назад, когда писал "КриптоАрм". И там используются высокоуровневые функции в потоковом режиме.
Никаких ограничений у высокоуровневых функций по объёмам нет. Смотрите описание и примеры использования функций.
С уважением,
Юрий Строжевский
Offline aleksey.gallyamov  
#7 Оставлено : 28 марта 2014 г. 14:04:04(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
Автор: Юрий Перейти к цитате
И там используются высокоуровневые функции в потоковом режиме.


Это как Eh? ?

CryptEncryptMessage
CryptDecryptMessage

не поддерживают работу с потоками. Зашифровать/расшифровать можно только весь объём данных сразу. Попробуйте передать на вход 10 Гб к примеру. Пускай такой объём вряд ли понадобиться шифровать, важно чтобы такая возможность была и это работало.
Offline Юрий  
#8 Оставлено : 28 марта 2014 г. 14:14:23(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Автор: aleksey.gallyamov Перейти к цитате
Автор: Юрий Перейти к цитате
И там используются высокоуровневые функции в потоковом режиме.


Это как Eh? ?

CryptEncryptMessage
CryptDecryptMessage

не поддерживают работу с потоками. Зашифровать/расшифровать можно только весь объём данных сразу. Попробуйте передать на вход 10 Гб к примеру. Пускай такой объём вряд ли понадобиться шифровать, важно чтобы такая возможность была и это работало.

Мда... Внимательно читаем моё первое сообщение в этой теме.
С уважением,
Юрий Строжевский
Offline aleksey.gallyamov  
#9 Оставлено : 28 марта 2014 г. 15:04:28(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
Автор: Юрий Перейти к цитате
Мда... Внимательно читаем моё первое сообщение в этой теме.


А я-то думал, что CadesMsgOpenToEncode относится к "низкоуровневым" функциям:

UserPostedImage
Offline aleksey.gallyamov  
#10 Оставлено : 28 марта 2014 г. 15:05:35(UTC)
aleksey.gallyamov

Статус: Участник

Группы: Участники
Зарегистрирован: 22.01.2014(UTC)
Сообщений: 16
Российская Федерация
Откуда: Сургут

Сказал(а) «Спасибо»: 1 раз
(имеется в виду CryptMsgOpenToEncode)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.