powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Безопасность данных: ЭЦП
10 сообщений из 10, страница 1 из 1
Безопасность данных: ЭЦП
    #34665998
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!
Вопрос вот какой:
хочу организовать средствами ЭЦП подпись некоторых данных в таблицах PostgreSQL.
Имеется информационная система, в которой каждому пользователю выдается 2 ключа - открытый и закрытый (например, сгенерированных средствами openssl). Можно ли штатными средствами PostgreSQL сделать асимметричное шифрование данных? Если да, какие есть для этого функции, где что можно почитать?


Заранее всем спасибо за помощь!
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34666226
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно глянуть в contrib/pgcrypto и посмотреть, что там есть

Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34666645
Ми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересная тема. Вот что есть в документации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 5 . 4 .  pgp_pub_encrypt(data, pub_key)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  pgp_pub_encrypt(data text, key bytea [, options text] ) RETURNS bytea
  pgp_pub_encrypt_bytea(data bytea, key bytea [, options text] ) RETURNS bytea
Encrypt data with a public key.  Giving this function a secret key will
produce a error.
Options are described in section  5 . 8 .
 5 . 5 .  pgp_pub_decrypt(msg, sec_key [, psw])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  pgp_pub_decrypt(msg bytea, key bytea [, psw text [, options text]] ) \
  RETURNS text
  pgp_pub_decrypt_bytea(msg bytea, key bytea [,psw text [, options text]] ) \
  RETURNS bytea
Decrypt a public-key encrypted message with secret key.  If the secret
key is password-protected, you must give the password in `psw`.  If
there is no password, but you want to specify option for function, you
need to give empty password.
Decrypting bytea data with `pgp_pub_decrypt` is disallowed.
This is to avoid outputting invalid character data.  Decrypting
originally textual data with `pgp_pub_decrypt_bytea` is fine.

Хотя мне не вполне понятно, как это должно работать в случае с базой данных.
Есть пользователи А, B, C, у каждого пара - открытый/закрытый ключ. Открытый ключ каждого пользователя должен быть известен всем другим пользователям. Пользователь А добавляет данные в базу. При этом он шифрует их открытым ключом (ОК) - но не своим (тогда их никто не расшифрует, кроме него самого :)), а либо ОК пользователя B, либо ОК пользователя С. В любом случае расшифровать данные сможет только владелец соответствующего закрытого ключа....
Или че-то я неправильно понимаю....
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34666725
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде верно написано.
а в чём затруднение?

Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34666738
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ми
... правда, принцип работы ЭЦП немного другой
но если требуется обычное шифрование, то описание верное

Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34666920
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МиИнтересная тема. Вот что есть в документации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 5 . 4 .  pgp_pub_encrypt(data, pub_key)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  pgp_pub_encrypt(data text, key bytea [, options text] ) RETURNS bytea
  pgp_pub_encrypt_bytea(data bytea, key bytea [, options text] ) RETURNS bytea
Encrypt data with a public key.  Giving this function a secret key will
produce a error.
Options are described in section  5 . 8 .
 5 . 5 .  pgp_pub_decrypt(msg, sec_key [, psw])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  pgp_pub_decrypt(msg bytea, key bytea [, psw text [, options text]] ) \
  RETURNS text
  pgp_pub_decrypt_bytea(msg bytea, key bytea [,psw text [, options text]] ) \
  RETURNS bytea
Decrypt a public-key encrypted message with secret key.  If the secret
key is password-protected, you must give the password in `psw`.  If
there is no password, but you want to specify option for function, you
need to give empty password.
Decrypting bytea data with `pgp_pub_decrypt` is disallowed.
This is to avoid outputting invalid character data.  Decrypting
originally textual data with `pgp_pub_decrypt_bytea` is fine.

Хотя мне не вполне понятно, как это должно работать в случае с базой данных.
Есть пользователи А, B, C, у каждого пара - открытый/закрытый ключ. Открытый ключ каждого пользователя должен быть известен всем другим пользователям. Пользователь А добавляет данные в базу. При этом он шифрует их открытым ключом (ОК) - но не своим (тогда их никто не расшифрует, кроме него самого :)), а либо ОК пользователя B, либо ОК пользователя С. В любом случае расшифровать данные сможет только владелец соответствующего закрытого ключа....
Или че-то я неправильно понимаю....

Ну для организации защищенного канала связи описанная Вами технология подходит. Мне же нужно было организацию ЭЦП: есть строчка данных в БД. Например, делаем ее HASH (к стати, может кто знает есть ли в PostgreSQL реализация SHA1 ?), потом полученное значение шифруем закрытым ключом. А при проверки корректности хранимых данных, делаем хэш строки, расшифровываем пользовательский хэш открытым ключом, сравниваем полученные результаты. Если они совпадают, то все ок, если нет - была попытка влома/подмены данных.

а за найденные материалы Вам спасибо - то что надо :) !
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34668305
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Zhukovк стати, может кто знает есть ли в PostgreSQL реализация SHA1 ?эта реализация делается за одну минуту (спасибо перлу) :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create or replace function sha1(val text) returns text
as $$
	use Digest::SHA1  qw(sha1_hex);

	my $data = $_[ 0 ];

	return sha1_hex($data);
$$
	language plperlu;
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34668325
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в контрибах всё есть...
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34668803
Dmitry Zhukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dan Blackв контрибах всё есть...
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 


А можно немного попобробнее?
что такое contrib ? где его найти, и как с ним работать.
и Ми написал цитату из документации. Только вот я не нашел в стандартной PostgreSQL документации ничего из того, что он процитировал. Интересно, откуда он взял эти строки?
...
Рейтинг: 0 / 0
Безопасность данных: ЭЦП
    #34671676
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[mod] пусто-порожний треп и бессмысленные аттачменты которые наверняка есть в любом
архиве исходников сабжа версий 8.x.x в подкаталоге /postgresql-8.0.3/contrib/pg_crypto/ [mod]
2Dmitry Zhukov Если ты непонимаешь что такое contrib то вполне может оказаться что ты не
вкурсе что такое cvs ,svn , autoconf и configure. И тогда сначала тебе точно нужно в ясли для DBA.
И я тебе,Дима не гуру и не сэнсей,а скорее сэмпай который имеет право на эмоции и ошибки.
Так вот - насчёт архитектуры - я ошибся и извиняюсь -спутал тебя с Druxa. Впрочем то что
ты невсостоянии просеять дерево ихсдохников сервера вполне понятно и простительно... для человеку не знающего для чего преднезначены find и fgrep
Впрочем ты справился - так что поздравляю ещё раз извиняюсь за грубость и тему закрываю.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Безопасность данных: ЭЦП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]