Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Добрый день.

Есть данные, которые шифруются/дешифруются в БД.

И эти данные из одной СУБД переливаются в другую СУБД.
Речь идёт о MSSQL2012 и MSSQL2017

Столкнулся с проблемой, что данные, которые прошли шифрование в MSSQL2012, не могут быть дешифрованы в MSSQL2017 и наоборот.

Я так понимаю, что изменились алгоритмы в EncryptByPassPhrase и DecryptByPassphrase в MSSQL2017.

Пример шифрования и дешифрования:
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))
   
	      
DECLARE @InquiryBinary VARBINARY(900)
SET @InquiryBinary = CONVERT(VARBINARY(900), @R, 1)

SELECT CONVERT(NVARCHAR(1024) ,DecryptByPassphrase(@PassphraseEnteredByUser, @InquiryBinary, 1))


Самое интересное, в MSSQL2005 2008 2012 нет проблем, могу зашифровать например на 2012 и расшифровать данные на 2008. А вот с 2017 появилась проблема...

Есть ли способы наладить совместимость шифрования с MSSQL2017?
27 фев 18, 11:29    [21221180]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Игорь_UUS,

https://support.microsoft.com/en-sg/help/4053407/sql-server-2017-cannot-decrypt-data-encrypted-by-earlier-versions
27 фев 18, 11:41    [21221230]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
felix_ff
Игорь_UUS,

https://support.microsoft.com/en-sg/help/4053407/sql-server-2017-cannot-decrypt-data-encrypted-by-earlier-versions


Спасибо, похоже это моя тема...

Но я не понял как решить проблему, тут написано:

"Note This fix requires trace flag (TF) 4631 to be enabled after you install the cumulative update. This trace flag can be enabled by using the SQL Server Startup option or by using DBCC TRACEON."

Что значит включить флаг трассировки "(TF) 4631" после установки? Я так понял, нужно обновить MSSQL, моя текущая версия: 14.0.1000
27 фев 18, 11:58    [21221296]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
felix_ff,

или может можно, чтоб MSSQL2017 использовал по умолчанию хэш "SHA1" вместо нового "SHA2".
т.е. имеется возможность переключить опцию, чтоб шифрование шло по "SHA1"?
27 фев 18, 12:02    [21221310]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Игорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.
27 фев 18, 12:11    [21221349]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
felix_ff
Игорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.


а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?
27 фев 18, 12:19    [21221385]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
felix_ff,

Даже не вериться, был значить MSSQL2016, затем решил его обновить на 2017, а потом данные зашифрованные в таблицах уже расшифровать не можешь... Даже как то не вериться, что в майкрософт этот момент упустили
27 фев 18, 12:21    [21221402]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Игорь_UUS
felix_ff
Игорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.


а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?

Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.
27 фев 18, 12:39    [21221480]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Minamoto
Игорь_UUS
пропущено...


а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?

Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.


Дело в том что я не создаю никакие ключи, всё происходит в рантайме:
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))

и расшифровываю так же в рантайме используя тот же ключ:
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';


А где взять "Cumulative Update 2 for SQL Server 2017"?
27 фев 18, 13:12    [21221663]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Игорь_UUS
Minamoto
пропущено...

Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.


Дело в том что я не создаю никакие ключи, всё происходит в рантайме:
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))

и расшифровываю так же в рантайме используя тот же ключ:
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';


А где взять "Cumulative Update 2 for SQL Server 2017"?

Тогда, по всей видимости, вам понадобится установка флага при запуске, читайте про параметры запуска с флагами.
Ссылка на CU есть в статье, которую вам привели.
27 фев 18, 13:18    [21221696]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Minamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?
27 фев 18, 13:49    [21221841]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Игорь_UUS
Minamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?

Читайте...

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

Как включать - указано в самом конце.
27 фев 18, 14:14    [21221949]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Minamoto
Игорь_UUS
Minamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?

Читайте...

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

Как включать - указано в самом конце.


я понял... ранее трассировкой не пользовался... почитал про это дело. Но, похоже обновление ещё нужно поставить, т.к. не работает. Качаю Update2. Напишу, помогло или нет...
27 фев 18, 14:26    [21222007]     Ответить | Цитировать Сообщить модератору
 Re: EncryptByPassPhrase и DecryptByPassphrase  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
После обновления и применения трассировки, всё заработало как надо!

Огромное спасибо всем, кто помог разобраться!
28 фев 18, 10:08    [21224020]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить