3.5. Quản lý khóa:
3.5.1. Sao lưu và phục hồi khóa
3.5.1.1. Sao lưu và phục hồi SMK
a. Sao lưu SMK:
Cú pháp thực hiện:
BACKUP SERVICE MASTER KEY TO FILE = 'path_to_file' ENCRYPTION BY PASSWORD = 'password' Trong đó:
+ FILE = 'path_to_file' : Chỉ ra đường dẫn đầy đủ, bao gồm tên file, đường dẫn đến tập tin mã sẽ được thực hiện backup. Đây có thể là một con đường trên máy cục bộ hoặc một đường dẫn UNC đến mạng cục bộ.
+ PASSWORD = ' password ' : Là mật khẩu dùng để mã hóa SMK
trong tập tin sao lưu. Mật khẩu này phải đủ an toàn.
* SMK nên được sao lưu và lưu trữ tại một nơi an toàn. Và để thực hiện việc sao lưu cần phải có quyền CONTROL SERVER trên server.
b. Phục hồi SMK: Cú pháp:
RESTORE SERVICE MASTER KEY FROM FILE = 'path_to_file' DECRYPTION BY PASSWORD = 'password'
Trong đó:
+ FILE = 'path_to_file' : Chỉ ra đường dẫn đầy đủ (bao gồm cả tên tập tin) lưu trữ SMK. Path_to_file có thể là một đường dẫn trên máy cục bộ hoặc một đường dẫn đến một vị trí mạng.
+ PASSWORD = ' password ' PASSWORD = 'mật khẩu' : Chỉ ra mật khẩu sử dụng để giải mã SMK được nhập khẩu từ một tập tin.
* Khi SMK được khơi phục, SQL giải mã tất cả các khóa được mã hóa với SMK hiện tại, sau đó chúng sẽ được mã hóa lại với SMK vừa được khơi phục đó.
Nếu việc giải mã dữ liệu khơng thể thực hiện được do lỗi thì SMK khơng thể được khơi phục. Có thể bỏ qua lỗi bằng việc sử dụng thuộc tính [FORCE] nhưng dữ liệu mà khơng được giải mã do lỗi sẽ bị mất. Để thực hiện được cơng việc này cần phải có quyền CONTROL SERVER trên server.
3.5.1.2. Sao lưu và phục hồi DMK
a. Sao lưu DMK:
Cú pháp: BACKUP MASTER KEY TO FILE = 'path_to_file' ENCRYPTION BY PASSWORD = 'password' Trong đó:
+ FILE = 'path_to_file' : Chỉ ra đường dẫn đầy đủ, bao gồm tên file, đến tập tin mà các DMK sẽ được xuất ra. Đây có thể là một đường dẫn cục bộ hoặc một đường dẫn UNC cho một vị trí mạng.
+ PASSWORD = ' password ' : Là mật khẩu dùng để mã hóa các DMK trong tập tin. Mật khẩu này cần phải phức tạp đủ độ an toàn.
* DMK cần được mở và giải mã trước khi nó thực hiện việc sao lưu. Khuyến cáo nên sao lưu DMK ngay sau khi nó được tạo ra.
Để thực hiện việc sao lưu yêu cầu phải có quyền CONTROL. b. Phục hồi DMK:
Cú pháp: RESTORE MASTER KEY FROM FILE = 'path_to_file'
DECRYPTION BY PASSWORD = 'password'
ENCRYPTION BY PASSWORD = 'password' [ FORCE ]
Trong đó:
+ FILE = 'path_to_file' : Chỉ ra đường dẫn đầy đủ, bao gồm cả tên tập tin, nơi mà DMK được lưu trữ. Path_to_file có thể là một đường dẫn cục bộ hoặc một đường dẫn đến một vị trí mạng.
+ DECRYPTION BY PASSWORD = ' password ': Chỉ ra mật khẩu để giải mã DMK được lấy từ một tập tin.
+ ENCRYPTION BY PASSWORD = ' password ': Chỉ ra mật khẩu
được sử dụng để mã hóa các DMK.
+ FORCE FORCE : Chỉ định quá trình phục hồi nên tiếp tục, ngay cả khi DMK hiện tại không mở được, hoặc nếu SQL Server khơng thể giải mã được một số các khóa được mã hóa bởi DMK đó.
* DMK được khơi phục sẽ giải mã tồn bộ khóa được mã hóa bằng DMK hiện hành và sau đó mã hóa tồn bộ khóa đó bằng khóa DMK vừa được khơi phục. Nếu DMK hiện tại không mở hoặc khơng mở được, hoặc nếu có các khóa được mã hóa bởi nó khơng thể giải mã được, thì việc khơi phục sẽ khơng thành cơng.
DMK được mã hóa bằng SMK thì khi khơi phục, DMK mới cũng sẽ được mã hóa bằng SMK. Để thực hiện được cơng việc này yêu cầu có quyền CONTROL trên server.
3.5.1.3. Sao lưu phục hồi khóa mã hóa:
Một phần quan trọng của bản báo cáo cấu hình máy chủ là tạo ra một bản sao lưu của khố đối xứng sử dụng để mã hóa các thơng tin nhạy cảm. Cho phép bạn tái sử dụng trong một cài đặt mới. Nó để khơi phục lại bản sao lưu của khố mật mã khi bất kỳ các sự kiện sau đây xảy ra:
• Khi thay đổi tên tài khoản dịch vụ Windows Server hoặc đặt lại mật khẩu.
• Khi đổi tên máy tính.
• Khi sử dụng máy chủ CSDL khác.
• Phục hồi cài đặt máy chủ khi lổi phần cứng.
Bạn chỉ cần sao lưu một bản sao của khóa đối xứng. Mặc dù bạn chỉ cần sao lưu một bản sao, bạn có thể sử dụng để khôi phục lại nhiều lần nếu bạn đang chạy nhiều máy chủ trong một mơ hình triển khai scale-out. Mỗi máy chủ sẽ cần bản sao của khóa đối xứng để mở khóa dữ liệu trong máy chủ CSDL.
Sao lưu các khóa đối xứng là q trình ghi khóa vào một tập tin mà bạn chỉ định, và sau đó bảo vệ khóa bằng cách sử dụng một mật khẩu mà bạn cung cấp. Khố đối xứng khơng bao giờ được lưu trữ tại nơi mà khơng được mã hóa nên bạn phải cung cấp một mật khẩu để bảo vệ khóa khi bạn lưu nó vào đĩa. Sau khi tập tin được tạo ra, bạn phải lưu trữ nó ở một vị trí an tồn và ghi nhớ mật khẩu được sử dụng để mở khóa các file. Để sao lưu các khố đối xứng, có thể sử dụng các cơng cụ cấu hình dịch vụ hoặc tiện ích rskeymgmt.
Services Configuration:
1. Khởi động công cụ Reporting Services Configuration, và sau đó kết nối đến server mà bạn muốn cấu hình.
2. Click Encryption Keys, và sau đó nhấp Back Up. 3. Cung cấp mật khẩu mạnh.
4. Chỉ ra tập tin để lưu trữ khóa. Dịch vụ báo cáo bổ sung phần mở .snk vào tập tin.
5. Click OK .
Làm thế nào để sao lưu các khoá mật mã sử dụng rskeymgmt
1. Đưa đĩa vào ổ đĩa nếu bạn muốn lưu trữ các tập tin được bảo vệ bằng mật khẩu riêng rẽ với các máy chủ báo cáo.
2. Chạy rskeymgmt.exe cục bộ trên máy chủ báo cáo. Bạn phải sử dụng tham số -e để sao chép khóa, cung cấp tên file, và chỉ định mật khẩu.
Ví dụ: rskeymgmt -e -fa:\rsdbkey.snk -p<password> rskeymgmt-e- fa: \ rsdbkey.snk-p <password>
3. Cất giữ đĩa tại một nơi an toàn.
Khơi phục các khóa đối xứng ghi đè lên khóa đối xứng hiện đã tại được lưu giữ trong cơ sở dữ liệu máy chủ. Khơi phục lại khố mã hóa thay thế một khố khơng sử dụng được với một bản sao mà bạn đã lưu trước đó vào đĩa. Việc khơi phục khóa mã hóa được diễn ra như sau:
• Khố đối xứng được mở ra bằng mật khẩu bảo vệ tập tin sao lưu.
• Khố đối xứng được mã hóa bằng khóa cơng khai của dịch vụ Report Windows Server.
• Khóa mã hóa đối xứng được lưu trữ trong máy chủ cơ sở dữ liệu báo cáo.
• Các dữ liệu được lưu trữ trước đó khóa đối xứng bị xóa .
Để khơi phục khóa mã, bạn phải có một tập tin bản sao của khóa mã hóa .Bạn cũng phải biết mật khẩu để có thể mở các bản sao lưu. Nếu bạn có khóa và mật khẩu, bạn có thể chạy cơng cụ Reporting Service Configuration hay tiện ích rskeymgmt để khơi phục lại khóa. Khóa đối xứng sử dụng để mã và giải mã dữ liệu trong máy chủ CSDL phải là một khóa. Nếu bạn khơi phục lại một bản sao đó khơng hợp lệ, máy chủ báo cáo khơng thể truy cập dữ liệu mã hóa hiện đang được lưu trữ trong máy chủ cơ sở dữ liệu báo cáo. Nếu điều này xảy ra, bạn có thể phải xóa tất cả các giá trị được mã hóa nếu bạn khơng thể khơi phục lại một khóa hợp lệ. Nếu vì một số lý do bạn khơng thể khôi
phục lại mật mã (ví dụ, nếu bạn khơng có một bản sao lưu), bạn phải xóa các nội dung quan trọng và bản mã hóa hiện có.
Làm thế nào để khơi phục lại các khóa mã hóa bằng cơng cụ Reporting Service Configuration:
1. Khởi động cơng cụ Reporting Services Configuration, và sau đó kết nối đến máy chủ báo cáo mà bạn muốn cấu hình.
2. Trên trang Encryption Keys, click vào Restore. 3. Chọn tập tin .snk. Có chứa các bản sao back up. 4. Nhập mật khẩu để mở ra các tập tin.
5. Click OK.
Làm thế nào để khơi phục lại các khóa mã hóa sử dụng rskeymgmt 1. Đưa đĩa có chứa bản sao lưu của khoá mật mã.
2. Chạy rskeymgmt.exe trên máy chủ báo cáo. Sử dụng đối số -a để khơi phục lại các khóa. Bạn phải cung cấp đầy đủ tên file và chỉ định một mật khẩu. Xem ví dụ sau:
rskeymgmt -a -fa:\rsdbkey.snk -p<password> rskeymgmt-a-fa: \ rsdbkey.snk-p <password>
3.5.2. Thời gian thực
Một khóa nào đó có thể liên quan tới một số lượng lớn và khó xác định người sử dụng. Vì thế sẽ tốn rất nhiều thời gian khi muốn thu hồi hoặc thay thế một khóa vì lý do an ninh. Do vậy, các hệ thống hoạt động trong thời gian thực khi áp dụng mã hóa cần phải hết sức thận trọng.
3.5.3. Thu hồi khóa
Việc thu hồi khóa có tính phá hoại hoặc sai sót sẽ có khả năng gây ra ảnh hưởng nghiêm trọng tới hệ thống. Trường hợp này hồn tồn có thể xảy ra nếu việc thu hồi khóa có thể được thực hiện bởi chỉ một thực thể. Chúng ta có thể làm giảm nguy cơ này bằng cách thực hiện chính sách thu hồi khóa với sự tham gia của hai thực thể trở lên. Chẳng hạn, một khóa chỉ bị thu hồi khi có sự chấp thuận của cả Alice và Bob. Tuy nhiên, xét về phương diện an ninh thì chính sách này tạo nên yếu điểm cho hệ thống. Kẻ tấn công chỉ cần thực hiện tấn công từ chối dịch vụ (DoS) vào Bob hoặc Alice là có thể làm hệ thống ngừng hoạt động.
Do thực thể có thẩm quyền thu hồi khóa rất quan trọng đối với hệ thống nên các cơ chế thực hiện cần đảm bảo càng nhiều bên tham gia càng tốt để chống lại phá hoại đồng thời lại phải đảm bảo càng ít càng tốt để có thể thực hiện việc thu hồi nhanh chóng.
3.5.4. Phân phối khóa mới
Sau khi một khóa bị thu hồi thì một khóa mới cần được phân phối theo một trình tự định trước.
Giả sử khóa của Carol đã bị thu hồi. Trước khi có khóa mới Carol khơng thể tham gia trao đổi thơng tin mật. Khơng ai có thể gửi thơng tin cho Carol mà không vi phạm an ninh hệ thống và các thông tin từ Carol sẽ bị loại bỏ. Điều này cũng có nghĩa phần của hệ thống do Carol kiểm sốt ngừng hoạt động. Trong trường hợp này yêu cầu về an ninh được đặt lên trên yêu cầu về tính sẵn sàng của hệ thống.
Trong hệ thống, người có thẩm quyền tạo khóa mới có thể trùng với người có thẩm quyền thu hồi khóa nhưng khơng bắt buộc như vậy. Nếu xét về phương diện an ninh thì đây không phải là ý tưởng tốt. Vấn đề nảy sinh là chúng ta cần giảm khoảng thời gian giữa thời điểm thu hồi khóa và thời điểm tạo khóa mới tới mức tối thiểu. Để làm tốt việc này lại đòi hỏi một nơi/một thực thể có đủ 2 thẩm quyền nêu trên. Vấn đề là chúng ta phải cân bằng giữa yêu cầu về an ninh và yêu cầu về tính sẵn sàng của hệ thống.
3.5.5.Thơng báo thơng tin về thu hồi khóa
Thơng báo về một khóa nào đó bị thu hồi cần đến được tất cả những người đang sử dụng nó trong thời gian ngắn nhất có thể.
Đối với hệ thống phân phối người ta có 2 cách đưa các thơng tin thu hồi khóa đến người dùng: thơng tin được đẩy (push) từ điểm trung tâm tới người dùng hoặc người dùng lấy (pull) thông tin từ trung tâm.
Đẩy thông tin từ trung tâm là cách đơn giản nhất để gửi thơng tin tới tồn thể người sử dụng. Tuy nhiên không thể đảm bảo là thơng tin thực sự tới được đích và đối với một hệ thống lớn thì khả năng gửi thành cơng tới tất cả người dùng là thấp. Thêm vào đó, thời gian hồn thành truyền tin sẽ là khá lớn và trong suốt q trình này thì hệ thống có thể bị lợi dụng. Vì vậy, phương pháp này khơng đảm bảo an tồn cũng như khơng tin cậy.
Phương pháp thứ hai người sử dụng lấy thơng tin về khóa từ trung tâm trước mỗi lần sử dụng. Điểm yếu của phương pháp này là người sử dụng sẽ bị chặn nếu không kết nối được với trung tâm. Ở đây chúng ta lại thấy một lần nữa mối liên hệ trái chiều giữa an ninh và tính sẵn sàng: càng nhiều server (tăng độ tin cậy) thì thời gian mở càng lớn (độ an tồn giảm).
Ngồi ra cịn một phương án nữa là cung cấp các chứng thực có thời hạn. Việc xác định thời gian sống của mỗi chứng thực sẽ là sự cân bằng giữa yêu cầu an tồn và tính sẵn sàng của hệ thống và người dùng.
3.5.6. Các biện pháp tiến hành khi lộ khóa
Hầu hết các trường hợp thu hồi khóa xảy ra khi có sự kiện nào đó chứng tỏ khóa bí mật đã bị lộ. Ta gọi thời điểm xảy ra sự kiện đó là T.
Điều này dẫn tới 2 hệ quả: Các văn bản mã hóa với khóa cơng khai sau thời điểm T khơng cịn được xem là bí mật; và các chữ ký số thực hiện với khóa bí mật sau thời điểm T khơng cịn được xem là thật nếu khơng có những tìm hiểu kỹ lưỡng các sự kiện để tìm ra nơi thực hiện chữ ký.
Nếu nguyên nhân của việc lộ bí mật là lỗi hệ thống thì cần tiến hành ngay lập tức chiến lược phục hồi. Chiến lược này sẽ xác định người có quyền thu hồi khóa, cách thức truyền thơng tin tới người dùng, cách thức xử lý các văn bản mã hóa với khóa bị lộ sau thời điểm T. Quy trình phục hồi có thể rất phức tạp và trong lúc tiến hành thì hệ thống rất dễ bị tấn công từ chối dịch vụ (DoS).
CHƯƠNG 4: THIẾT KẾ ỨNG DỤNG 4.1. Đặt vấn đề:
Với nền kinh tế ngày càng phát triển như hiện nay, thì nhu cầu sử dụng công nghệ thông tin ngày một cần thiết. Yêu cầu về bảo mật ngày càng gia tăng đặc biệt trong các lĩnh vực liên qua đến giao dịch tài chính, kế tốn, kiểm tốn... và đòi hỏi các nhà phát triển và nhân viên phần mềm ngày càng phải có kiến thức chuyên sâu về lĩnh vực bảo mật. Và việc áp dụng mã hóa vào các ứng dụng là điều hiển nhiên. Nắm bắt được xu hướng của xã hội như vậy, em đã tham khảo rất nhiều nguồn tài liêu và áp dụng việc mã hóa CSDL sử dụng SQL Server 2008 kết hợp với các ngơn ngữ khác để kiểm chứng tính bảo mật của việc mã hóa.
4.2. Mục đích hệ thống:
Trong bài viết này, em sẽ tạo ra một sản phẩm thương mại viết trên nền Shard. Sản phẩm nhằm mục đích giúp người kế tốn có thể quản lý được việc chi trả lương hàng tháng cho các nhân viên trong công ty. Hệ thống mang lại rất nhiều lợi ích cả phía nhân viên và cơng ty.
Với cơng ty: có thể dễ dàng tra cứu và quản lý chi phí cho việc trả lương cho nhân viên, đảm bảo độ an tồn các thơng tin lương thưởng của các công nhân tránh gây tị nạnh giữa các nhân viên...
Với nhân viên: có thể dễ dàng thực hiện việc quản lý, công việc nhận trả trở nên nhanh tróng hơn, đơn giản hơn rất nhiều,...
Hệ thống hướng tới các doanh nghiệp, phù hợp với các công ty vừa và nhỏ có nhu cầu chỉ quản lý lương của các nhân viên.
Sơ đồ mô tả việc cách thức hoạt động của hệ thống: