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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Kip  
#1 Оставлено : 3 февраля 2014 г. 4:54:38(UTC)
Kip

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

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

Сказал(а) «Спасибо»: 1 раз
Возможно ли подписывать строки в таблице базы данных SQL?
И в той же строке в отдельном поле вписывать саму электронную подпись в каком-либо виде?
При этом все должно делаться с клиентских рабочих мест, а строки подписываться ключами пользователей рабочих мест.
Т.е. каждая строка в базе должна подписывается ключом пользователя, который сделал запись в эту строку.
Offline Юрий  
#2 Оставлено : 3 февраля 2014 г. 7:34:43(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Задача на самом деле изначально далека от постановки подписи.

Для начала необходимо решить такую задачу:
1) У каждого пользователя на локальном компьютере есть скажем файл с его идентификационным номером ID (1,2,3 и т.д);
2) Есть сервер скажем в сети предприятия;
3) Надо на каждое изменение строки в какой-то таблице в базе обратиться с сервера к локальному файлу с ID пользователя, который это изменение сделал, и записать этот номер дополнением к данным для текущей транзакции;

Если сможете решить эту первичную задачу, то потом достаточно просто будет добавлять и подпись. Но, на мой взгляд, и эту упрощённую задачу решить достаточно сложно.

Как мне кажется тут нужно будет писать внешнюю хранимую процедуру для SQL (на C++ или C#), потом ставить тригеры на каждую таблицу базы, а также писать Web-сервис, который бы работал на машине каждого пользователя. Тогда теоритически первичная задача может быть решена.
С уважением,
Юрий Строжевский
Offline Андрей Писарев  
#3 Оставлено : 3 февраля 2014 г. 8:51:34(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Kip Перейти к цитате
Возможно ли подписывать строки в таблице базы данных SQL?
И в той же строке в отдельном поле вписывать саму электронную подпись в каком-либо виде?
При этом все должно делаться с клиентских рабочих мест, а строки подписываться ключами пользователей рабочих мест.
Т.е. каждая строка в базе должна подписывается ключом пользователя, который сделал запись в эту строку.



Общие вопросы » Подпись в базе данных
Техническую поддержку оказываем тут
Наша база знаний
Offline Kip  
#4 Оставлено : 4 февраля 2014 г. 3:01:03(UTC)
Kip

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Автор: Kip Перейти к цитате
Возможно ли подписывать строки в таблице базы данных SQL?
И в той же строке в отдельном поле вписывать саму электронную подпись в каком-либо виде?
При этом все должно делаться с клиентских рабочих мест, а строки подписываться ключами пользователей рабочих мест.
Т.е. каждая строка в базе должна подписывается ключом пользователя, который сделал запись в эту строку.



Общие вопросы » Подпись в базе данных


Спасибо.
С теорией все понятно.

Хотелось бы помощи в практической реализации.
Вижу два способа:
1. Использовать исходник на С из пакета SDK
2. Использовать интерфейс CryptoAPI

1 - мне не очень подходит, т.к. весь мой софт на Delphi
2 - выходит, что единственный мой путь.
Однако, где почитать или/и посмотреть как обратиться к этому интерфейсу и как с ним работать (функции, их описание)?
Функции получается нужны пока следующие:
- получение хэша из стринговой строки (суммы всех ячеек из строки базы данных)
- подписание этого хэша
- проверка подписи

В описание несколько раз натыкаюсь на "Руководство программиста". Где его взять?

Отредактировано пользователем 4 февраля 2014 г. 3:05:55(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#5 Оставлено : 4 февраля 2014 г. 3:42:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
http://cpdn.cryptopro.ru/
Примеры на Delphi есть на этом форуме, для этого есть "Поиск"
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Kip оставлено 06.02.2014(UTC)
Offline Kip  
#6 Оставлено : 6 февраля 2014 г. 11:55:37(UTC)
Kip

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

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

Сказал(а) «Спасибо»: 1 раз
Немного разобрался.
Получается подписать любую строку и проверить ее подпись.

Не понятно следующее, как при проверке из подписи получить данные о подписчиках?
типа такие:
Certificate.SerialNumber
Certificate.SubjectName

использую Capicom.dll и CAPICOM_TLB.pas
Offline Андрей Писарев  
#7 Оставлено : 6 февраля 2014 г. 12:00:24(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Kip Перейти к цитате
Немного разобрался.
Получается подписать любую строку и проверить ее подпись.

Не понятно следующее, как при проверке из подписи получить данные о подписчиках?
типа такие:
Certificate.SerialNumber
Certificate.SubjectName

использую Capicom.dll и CAPICOM_TLB.pas


Логично поискать описание Certificate* хотя бы в pas, раз SDK и MSDN не помогают

SignedData.Certificates
http://msdn.microsoft.co...p/aa387723(v=vs.85).aspx
Техническую поддержку оказываем тут
Наша база знаний
Offline Kip  
#8 Оставлено : 6 февраля 2014 г. 14:23:36(UTC)
Kip

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

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

Сказал(а) «Спасибо»: 1 раз
Было бы так просто я бы не спрашивал.
В описании нет того что я спрашиваю!

Забыли....
Разобрался.
SignedData.Certificates.Item[1].SerialNumber
SignedData.Certificates.Item[1].SubjectName

Отредактировано пользователем 7 февраля 2014 г. 2:20:28(UTC)  | Причина: Не указана

Offline Kip  
#9 Оставлено : 7 февраля 2014 г. 7:57:11(UTC)
Kip

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

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

Сказал(а) «Спасибо»: 1 раз
В чем загвоздка capicom-а?

Подписываю так:
oSignedData.Sign(oSigner, True, CAPICOM_ENCODE_BINARY);

все хорошо, проверка проходит.

пытаюсь подписать вторым сертификатом:
oSignedData.CoSign(oSigner, CAPICOM_ENCODE_BINARY);

получаю ошибку: "The message has not been signed."

Или это решается только cades-ом?
Offline Андрей Писарев  
#10 Оставлено : 7 февраля 2014 г. 10:19:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Kip Перейти к цитате
В чем загвоздка capicom-а?

Подписываю так:
oSignedData.Sign(oSigner, True, CAPICOM_ENCODE_BINARY);

все хорошо, проверка проходит.

пытаюсь подписать вторым сертификатом:
oSignedData.CoSign(oSigner, CAPICOM_ENCODE_BINARY);

получаю ошибку: "The message has not been signed."

Или это решается только cades-ом?


CAPICOM - позволяет добавлять несколько подписей.

Вероятно у Вас ошибка в 17 строке.

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