security_4_1412503 - ATBMHTTT-2017/lab02-lab02-1412503-1412520-1412595 GitHub Wiki
Giải pháp cho phép trưởng dự án mã hóa thông tin chi tiêu của dự án của mình và chỉ cho phép một số người dùng nhất định giải mã thông tin này
1. Giải pháp:
Phương pháp mã hóa đối xứng: AES(256)
Tạo mỗi nhân viên một khóa đối xứng và các khóa này được lưu trong một bảng riêng KHOA_NHANVIEN, cột khóa là giá trị khóa đã được xor với mã nhân viên, quản trị viên QTV được quyền select trên bảng này, các nhân viên còn lại cũng được thực hiện quyền select nhưng chỉ thấy được thông tin khóa của mình.
Tạo một package gồm 2 hàm mã hóa và giải mã một số int bằng thuật toán AES_256.
Tạo một Store Procedure thêm chi tiêu vào bảng chi tiêu, thông tin số tiền sẽ được mã hóa bằng hàm mã của package với key là mã của nhân viên đó xor với khóa được lưu trong trong bảng KHOA_NHANVIEN tương ứng với nhân viên đó, sau đó lưu vào bảng chi tiêu. Tương tự tạo Store Procedure cập nhật số tiền của bảng chỉ tieu.
Tạo một hàm trả về và in ra màn hình giá trị của cột số tiền trong bảng chi tiêu, trong Store Procedure này sẽ sử dụng hàm giải mã của pakage để giải mã số tiền đã được mã hóa với key là mã nhân viên xor với với khóa được lưu trong trong bảng KHOA_NHANVIEN tương ứng.
Cấp quyền sử dụng store thêm, cập nhật, xem chi tiêu cho trưởng phòng.
Cấp quyền sử dụng store xem chi tiêu cho một số nhân viên đặc biệt.
2. Nội dung các và package store:
a. Package encrypt_chitieu:
Sử dụng thuật toán AES 256 với chế độ mã CBC và phương pháp padding PAD_PKCS5 trong package DBMS_CRYPTO của oracle.
Gồm 2 hàm mã hóa và giải mã một số int được truyền vào cùng với key k tương ứng.
b. Store thêm chi tiêu:
Select khóa và mã của nhân viên trong bảng NHANVIEN_KHOA. Do bảng này đã được áp dụng VPD nên chỉ trả về khóa và mã của nhân viên đang đăng nhập.
Mã hóa số tiền được tryền vào bằng hàm mã của package đã tạo với key là giá trị xor của mã nhân viên được hash bằng SH256 và khóa đã select ở trên và tiến hành insert các thông tin và giá trị số tiền đã được mã hóa vào vào bảng CHITIEU.
c. Store cập nhật số tiền chi tiêu:
Select khóa và mã của nhân viên trong bảng NHANVIEN_KHOA. Do bảng này đã được áp dụng VPD nên chỉ trả về khóa và mã của nhân viên đang đăng nhập.
Mã hóa số tiền được tryền vào bằng hàm mã của package đã tạo với key là giá trị xor của mã nhân được hash bằng SH256 và khóa đã select ở trên và tiến hành cập nhật giá trị số tiền đã được mã hóa vào vào bảng CHITIEU.
d. Hàm xem thông tin chi tiêu:
Select khóa và mã của nhân viên trong bảng NHANVIEN_KHOA. Do bảng này đã được áp dụng VPD nên chỉ trả về khóa và mã của nhân viên đang đăng nhập.
Giải mã số tiền lấy được từ bảng chi tiêu bằng hàm giải mã của package đã tạo với key là giá trị xor của mã nhân viên được hash bằng SH256 và khóa đã select ở trên.