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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Inna  
#1 Оставлено : 8 ноября 2011 г. 16:18:37(UTC)
Inna

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.11.2011(UTC)
Сообщений: 3
Откуда: Москва

Добрый день!

В статье "Как подписывать с помощью ЭЦП электронные документы различных форматов" (Юрий Маслов,коммерческий директор ООО "КРИПТО-ПРО")
говорится следующее:

Подпись в базе данных
Довольно часто встречается нефайловая, или строковая, форма представления электронного документа, а электронный документ - как совокупность записей в таблицах базы данных. Для подписания такого документа значения полей записей в таблицах базы данных приводятся в строковый тип, и с помощью конкатенации формируется строковая переменная, отражающая существенную содержательную и идентификационную часть документа. Именно эта строка теперь считается оригиналом электронного документа и подписывается. Подписанная строка сохраняется в соответствующей таблице базы данных системы с двумя полями: поле ключа документа и строковое поле, содержащее подписанный электронный документ.

Не совсем понятно, зачем необходимо хранить строковое поле, содержащее подписанный электронный документ. Подписанная строка - это строка, содержащая какие то данные из набора строк (мы получаем ее по какому то алгоритму, нам известному). Предположим, мы ее сформировали и получили ключ к данному документу. Через некоторое время данные были изменены. Получается, что подписанная строка и ключ соответствуют друг другу, а вот актуальные данные в базе не соответствуют той самой подписанной строке.

Может быть я немного сумбурно задаю вопрос, но меня интересует вот что.
Зачем хранить ту самую строку, полученную путем конкатенации из полей, хранящихся в базе, если зная алгоритм ее получения, мы можем ее сгенерировать каждый раз при получении подписи или ее проверке. Это сэкономит место в БД, особенно если подписываемый набор данных велик, в противном случае получается, что информация по каждому подписываемому документу дублируется при каждом подписании.
Offline Юрий Маслов  
#2 Оставлено : 8 ноября 2011 г. 17:05:55(UTC)
Юрий Маслов

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

Группы: Администраторы
Зарегистрирован: 29.12.2007(UTC)
Сообщений: 1,036
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 36 раз в 25 постах
Здравствуйте!

Сначала уточню. Под "поле ключа документа " имелось ввиду некое поле, которое связывает (один к одному или один ко многим) запись со строковым полем, содержащим подписанный электронный документ, и записи документа в таблицах базы данных. Это может быть, например, первичный ключ.
Далее... Вы храните не ту самую строку, полученную путем конкатенации из полей, хранящихся в базе, а ПОДПИСАННУЮ строку, полученную путем конкатенации из полей. Видите разницу? Вот эта ПОДПИСАННАЯ строка, полученная путем конкатенации из полей, и есть оригинал электронного документа. И после подписания, Вы никогда не сможете её сгенерировать заново каждый раз при получении подписи или ее проверке. Ибо она содержит ПОДПИСЬ.

Если строка , полученная путем конкатенации из полей, достаточно велика и Вам нужно экономить место, то формируйте так называемую отделенную подпись и храните в этом поле эту отделённую подпись. В этом случае подписанный электронный документ у Вас будет определяться как строка, получаемая путем конкатенации из полей + значение поля с отделённой подписью. Тогда при проверке подписи Вам придётся формировать строку и потом проверять подпись.

Ещё одно замечание. Когда у Вас в системе документ подписывается вторым и далее лицом (вторая подпись, третья подпись и т.д.) то Вам не обязательно заводить новые поля под значения новых подписей. Все подпись будут "присоединяться" к первой подписи.
С уважением,
КРИПТО-ПРО
Offline Inna  
#3 Оставлено : 8 ноября 2011 г. 18:44:36(UTC)
Inna

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.11.2011(UTC)
Сообщений: 3
Откуда: Москва

Спасибо, насчет ПОДПИСАННОЙ строки более понятно. Непонятно, следующее. Вот есть у меня некий набор данных в базе. Пользователь подписывает этот набор - создается текстовая строка и вместе с подписью записывается в некоторое поле, может быть связанное по master-detail с основной таблицей (если этот набор записей находится в нескольких таблицах), может быть созданное в этой самой таблице...
Теперь пользователь меняет какие -либо данные из этого набора. По идее, документ изменен, то есть прежняя подпись недействительна. Как я могу это проверить и указать пользователю?

Извините, если это тупой вопрос и ответ прямо под носом, просто почему то у меня категорическое непонимание этого момента.
Offline Андрей Писарев  
#4 Оставлено : 8 ноября 2011 г. 19:02:25(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,719
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
никто же не мешает хранить отсоединенную ЭЦП и для проверки - объединять необходимые поля :)
Техническую поддержку оказываем тут
Наша база знаний
Offline Юрий Маслов  
#5 Оставлено : 8 ноября 2011 г. 19:59:41(UTC)
Юрий Маслов

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

Группы: Администраторы
Зарегистрирован: 29.12.2007(UTC)
Сообщений: 1,036
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 36 раз в 25 постах
Inna написал:
Спасибо, насчет ПОДПИСАННОЙ строки более понятно. Непонятно, следующее. Вот есть у меня некий набор данных в базе. Пользователь подписывает этот набор - создается текстовая строка и вместе с подписью записывается в некоторое поле, может быть связанное по master-detail с основной таблицей (если этот набор записей находится в нескольких таблицах), может быть созданное в этой самой таблице...
Теперь пользователь меняет какие -либо данные из этого набора. По идее, документ изменен, то есть прежняя подпись недействительна. Как я могу это проверить и указать пользователю?

Извините, если это тупой вопрос и ответ прямо под носом, просто почему то у меня категорическое непонимание этого момента.


Вопрос не тупой, так что не извиняйтесь. а правильный и своевременный! :-)

Как Вы знаете механизм применения ЭЦП/ЭП не предусматривает возможности внесения изменения в документ после его подписания. Поэтому Ваша система должна после создания первой подписи блокировать возможность внесения изменений (модификации) в соответствующий набор данных в базе. Если нужно внести изменения то нужно создать новый набор данных, назвав его, например, "редакция № 2 электронного документа" и там внести, а потом его заново подписывать.
С уважением,
КРИПТО-ПРО
Offline Inna  
#6 Оставлено : 11 ноября 2011 г. 16:22:55(UTC)
Inna

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.11.2011(UTC)
Сообщений: 3
Откуда: Москва

Спасибо!
Offline s.kovanovsky  
#7 Оставлено : 13 ноября 2012 г. 19:08:56(UTC)
s.kovanovsky

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.11.2012(UTC)
Сообщений: 1

Добрый день!

Подскажите пожалуйста, с помощью какого или каких продуктов осуществляется подписание записей в базе данных?

Заранее благодарен за ответ.

С уважением,
Ковановский Станислав
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.