DECRYPTBYPASSPHRASE 함수를 사용할 때 암호화 된 데이터를 해독하기 위해 SQL Server가 사용한 해싱 알고리즘을 어떻게 알 수 있습니까?


12

내 질문은 두 가지 경우에 대한 다음 실험과 관련이 있습니다.

SQL Server 2017 Express 인스턴스 (Microsoft SQL Server 2017 (RTM-CU16))
SQL Server 2014 Express 인스턴스 (Microsoft SQL Server 2014 (SP2-CU18))

ENCRYPTBYPASSPHRASE 함수 를 사용하여 텍스트를 암호화하고 결과를 DECRYPTBYPASSPHRASE 의 @ciphertext로 사용 했습니다 . 내 테스트 결과는 다음과 같습니다.

결과표

이에 따라 마이크로 소프트의 수정 ,

[...] SQL Server 2017은 SHA2 해싱 알고리즘을 사용하여 암호를 해시합니다. SQL Server 2016 및 이전 버전의 SQL Server는 더 이상 안전하지 않은 SHA1 알고리즘을 사용합니다.

그러나 함수 DECRYPTBYPASSPHRASE에 관련된 인수가없는 경우 데이터를 암호화하는 데 사용 된 알고리즘이 무엇인지 어떻게 알 수 있습니까? 암호화 된 데이터의 일부입니까?

내 테스트 결과에 따르면 SQL Server는 항상 인스턴스에서 사용할 수있는 최신 버전의 알고리즘을 사용하여 데이터를 암호화한다고 생각하지만 해당 알고리즘을 찾을 수 없을 때 NULL을 반환하거나 반환하는 알고리즘을 찾을 때까지 모든 알고리즘을 시도하여 데이터를 해독합니다. . SQL Server가 암호화 된 데이터를 해독하는 데 사용한 해싱 알고리즘을 확인할 수있는 방법을 찾지 못했기 때문에 추측 일뿐입니다.

답변:


14

그러나 함수 DECRYPTBYPASSPHRASE에 관련된 인수가없는 경우 데이터를 암호화하는 데 사용 된 알고리즘이 무엇인지 어떻게 알 수 있습니까? 암호화 된 데이터의 일부입니까?

네 맞습니다.

출력에 다음을 사용하겠습니다.

DECLARE @Data VARBINARY(MAX)
DECLARE @Text NVARCHAR(MAX) = N'I''ll get you, and your little dog too!'
DECLARE @Phrase NVARCHAR(100) = N'Fly My Pretties!'

SELECT @Data = ENCRYPTBYPASSPHRASE(@Phrase, @Text)

SELECT @Data AS [Encrypted_Data]

SELECT CAST(DECRYPTBYPASSPHRASE(@Phrase, @Data) AS NVARCHAR(MAX))

2014 인스턴스에서 이것을 실행하면 Encrypted_Data에 대해 다음을 얻습니다. 0x01000000E565142762F62...

2017 인스턴스에서 이것을 실행하면 Encrypted_Data에 대해 다음을 얻습니다. 0x020000004D261C666204F...

눈에 띄는 것은 2014 인스턴스가 시작 0x01하고 2017 인스턴스가로 시작하는 것을 볼 수있는 프리앰블 입니다 0x02. 사용되는 암호화 유형의 버전입니다. 이것보다 더 많은 것이 있지만이 답변의 목적을 위해 그 세부 정보를 얻을 필요는 없으며 공개 지식이 될 필요도 없습니다.

SQL Server 2017 은 새로운 것을 이해 0x01하고 0x02새로운 것을 알고 있기 때문에 이해 합니다. SQL Server 2014 0x01는 이전 버전이기 때문에 이해 하며 새로운 것이 백 포트되지 않았으므로 새로운 것을 전혀 알지 못합니다.

[...] SQL Server 2017은 SHA2 해싱 알고리즘을 사용하여 암호를 해시합니다. SQL Server 2016 및 이전 버전의 SQL Server는 더 이상 안전하지 않은 SHA1 알고리즘을 사용합니다.

이것은 동일하지 않지만 일반적으로 두 버전에서 동일한 초기화 벡터로 생성되는 대칭 키와 관련이 있습니다. 2017이 나왔을 때이 문제에 대해 블로그를 작성했으며 사용해야하는 추적 플래그로 약간 나중에 수정되었지만 2017 년에 표시된 것처럼 2014 년 데이터를 읽는 데 필요한 추적 플래그는 없습니다.


안녕, 션 답변에서 추적 플래그에 대한 자세한 정보를 제공 할 수 있습니까?
Konstantin Taranov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.