ทำความเข้าใจกับการเข้ารหัสและสำรองข้อมูล MS SQL Server


13

ดังนั้นฉันจึงถามในการแชทเกี่ยวกับความปลอดภัยของไฟล์สำรองของ SQL Server

ฉันบอกว่าหากผู้โจมตีสามารถเข้าถึงไฟล์. bak ที่ไม่ได้เข้ารหัสซึ่งพวกเขาสามารถเข้าถึงข้อมูลได้

ดังนั้นให้ดูที่สถานการณ์นี้:

OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate

สังเกตุ - ไม่มีรหัสผ่านที่นี่

แล้วเราเข้ารหัสตารางของเราโดย:

UPDATE tbl1
 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name)
GO

ตอนนี้สมมติว่าแฮ็กเกอร์ได้รับbakไฟล์ของฉัน สิ่งที่เขาต้องทำเพื่อดูข้อมูล (ในคอมพิวเตอร์ & เซิร์ฟเวอร์ของเขาเอง) คือ:

SELECT  
       convert( NVARCHAR(max), decryptbykey(namePAss)) 
FROM tbl1

เขาจะยังสามารถเข้าถึงข้อมูลได้หรือไม่

คำตอบ:


9
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION`  
 BY CERTIFICATE MyCertificate`

สังเกตุ - ไม่มีรหัสผ่านที่นี่

ใช่แล้ว คุณเปิดใบรับรองMyCertificate อย่างใดไม่ได้คุณ? อาจมีหลายกรณี แต่บางกรณีก็มีรหัสผ่าน:

  • คุณเปิดใบรับรองโดยใช้รหัสผ่าน (เห็นได้ชัดว่ามีรหัสผ่านในกรณีนี้)
  • ใบรับรองถูกเข้ารหัสด้วยคีย์หลักของฐานข้อมูลและคุณเปิดคีย์หลักของฐานข้อมูลโดยใช้รหัสผ่าน DBMK -> นั่นคือรหัสผ่าน
  • ใบรับรองถูกเข้ารหัสด้วยคีย์หลักของฐานข้อมูลและ DBMK จะถูกเข้ารหัสด้วยรหัสหลักของบริการ คีย์หลักของบริการถูกเปิดโดยใช้รหัสบริการ DPAPI ที่เก็บข้อมูลของบัญชีซึ่งถูกเข้ารหัสด้วยรหัสผ่านบัญชี -> และนั่นคือรหัสผ่าน

ในคีย์สุดท้ายดูเหมือนจะไม่มีรหัสผ่าน แต่มี: รหัสผ่านบัญชีบริการ การสำรองข้อมูลเมื่อกู้คืนบนโฮสต์อื่นจะไม่มีการเข้ารหัสคีย์บริการหลักของคีย์หลักฐานข้อมูลและจะทำให้ข้อมูลไม่สามารถเข้าถึงได้

ดูที่การเข้ารหัสลับการค้นหา


สวัสดีใช่มีรหัสผ่าน แต่ในขั้นตอนก่อนหน้า เมื่อฉันสร้างโดย: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DB Master key password!' GO- ฉันสร้างด้วยรหัสผ่าน แต่สิ่งที่แปลกคือเมื่อฉันเปิดมัน - ฉันไม่ต้องการรหัสผ่านนี่คือรหัสที่คุณได้วาง นี่คือสิ่งที่ฉันไม่เข้าใจ ถ้าฉันเป็นแฮ็กเกอร์ - ฉันไม่สนใจรหัสผ่านที่ใช้ในการสร้าง ทั้งหมดที่ฉันต้องทำคือOPEN SYMMETRIC KEY MySymetricKey DECRYPTION รับรองใบรับรอง MyCertificate และไม่มีรหัสผ่านที่นี่ โปรดแก้ไขให้ฉันด้วย
Royi Namir

3
@RoyiNamir ดูหัวข้อย่อยล่าสุดของ Remus คุณไม่ได้ระบุรหัสผ่าน แต่ใบรับรองได้รับการปกป้องในที่สุดในกรณีนี้ด้วยรหัสผ่านบัญชีบริการ
Mark Storey-Smith

@Remus คุณช่วยโปรดดูคำถามใหม่ของฉัน (เกี่ยวข้องมาก) dba.stackexchange.com/questions/29287/…
Royi Namir

4

คำตอบสั้น ๆ คือไม่ต้องใช้คีย์หลักของฐานข้อมูลและรหัสผ่าน

นี่คือภาพรวมที่ดีของการเข้ารหัสใบรับรอง: http://www.mssqltips.com/sqlservertip/1319/sql-server-2005-encrypt-certificates-overview/

และอีกหนึ่งสำหรับคีย์หลัก: http://www.mssqltips.com/sqlservertip/1312/managing-sql-server-2005-master-keys-for-encrypt/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.