a) Giao diện gửi thư
Tạo khóa: tạo ra cặp khóa bí mật P, Q để mã hóa thư và khóa công khai N dùng để giải mã.
Mã hóa thư: Chọn thư cầ
Giấu tin trong ảnh: giấu t
68
ần gửi và mã hóa
b) Giao diện nhận thư
Xác thực xem ảnh nhậ
Khôi phục thư nếu như GIẤU TỆP
69
ận được có bị thay đổi không.
u như ảnh không bị thay đổi
c) Chương trình namespace THA_DataHiding { structBitmapHeader { publicstring typeFile; publicuint FileSize;
// public uint Reserved
publicuint AddressofImageData;
dữ liệu
publicvoid GetInfo(byte
}
structBitmapInfo
{
publicuint Numberofbytes;
Image Info, giá trị thông thường
publicuint WidthofImage; pixel publicuint HeightofImage; pixel 70 THA_DataHiding
typeFile; // 2 byte, chứa 2 ký tự nhận dạng
FileSize; // 4 byte, kích thước của file; public uint Reserved; // 4 byte dự trữ
AddressofImageData; // 4 byte lưu trữ địa chỉ của vùng
byte[] buffer);
Numberofbytes; // 4 bytes, lưu trữ kích thước của vùng giá trị thông thường 40
WidthofImage; // 4 bytes, độ rộng của ảnh tính theo
HeightofImage;// 4 bytes, chiều cao của ảnh tính theo ký tự nhận dạng "BM"
yte lưu trữ địa chỉ của vùng
lưu trữ kích thước của vùng
ộ rộng của ảnh tính theo
71
publicushort NumberofColorPlans; // 2 byte, số lượng bảng mầu, giá trị mặc định là 1
publicushort NumberofBitforaPixel; // 2 byte, số bits biểu diễn một điểm ảnh
publicuint TypeofCompress; // 4 byte, kiểu nén
publicuint ImageSize; //4 byte, kích thước của ảnh tính theo byte
publicuint ResolutionX; // 4 byte, Độ phân giải của ảnh theo chiều ngang
publicuint ResolutionY; // 4 byte, Độ phân giải của ảnh theo chiều dọc
publicuint NumberofColors; // 4 byte, số lượng màu trong bảng màu
publicuint NumberofImportColors; // 4 byte, số lượng màu quan trọng của ảnh
publicvoid GetInfo(byte[] buffer); }
abstractclassBase
{
protectedstring PlaintextFile; // Lưu trữ file bản rõ
protectedstring CiphertextFile; // Lưu trữ file bản mã protected BigInteger N;
protected BigInteger P;
protected BigInteger Q;
protectedint blockSize; // Kích thước khối sẽ là số byte của N
//Để đảm bảo y = x ^2 mod N thì x<N do đó số byte của x < blockSize
public Base(BigInteger P, BigInteger Q, string ciphertextFile)
public Base(BigInteger N, string plaintextFile, string
ciphertextFile) }
staticclassBaseCryptography
{
publicstatic BigInteger GiaiPhuongTrinhDongDu(BigInteger a,
72
publicstaticvoid Euclid_Extention(BigInteger a, BigInteger b, out
BigInteger k1, out BigInteger k2)
publicstatic BigInteger GiaiHePhuongTrinhDongDu(BigInteger N,
BigInteger p, BigInteger k1, BigInteger a, BigInteger b)
publicstaticint Jacobi(BigInteger a, BigInteger n
publicstaticint Legendre(BigInteger a, BigInteger p)
publicstatic BigInteger SoNghichDao(BigInteger N, int d) }
classMaHoa_THA : Base
{
public MaHoa_THA(BigInteger N, string plaintextFile, string
ciphertextFile)
: base(N, plaintextFile, ciphertextFile)
privatebyte[] BlockEncryption(byte[] sourceBlock, int size)
publicvoid FileEncryption() }
classGiaiMa_THA : Base
{
private BigInteger mup;
private BigInteger muq;
private BigInteger k1;
private BigInteger k2;
public GiaiMa_THA(BigInteger P, BigInteger Q, string
ciphertextFile, string plaintextFile) : base(P, Q, ciphertextFile)
privatebyte[] BlockDecryption(byte[] sourceBlock, int size)
publicvoid FileDecryption() }
73
staticclassInfo
{
publicstaticbyte[,] ReadWMatrix(string filename)
publicstaticint XSUM(byte[,] F, byte[,] W) } classNhungTin { string Anh_Goc; string Anh_ChuaTin; string DataFile;
public NhungTin(string goc, string chuatin, string datafile)
publicvoid Nhung() } classTachTin { string Anh_ChuaTin; string DataFile;
public TachTin(string anh, string data)
publicvoid Tach() }
74 KẾT LUẬN 1. Kết luận
Luận văn đã nghiên cứu được: một số phương pháp mã hóa cải tiến trên Rabin như Shimada, Chen-Tsu, THA – phương pháp mới được công bố năm 2012 của nhóm tác giả người Việt Nam; một số kỹ thuật giấu tin trên ảnh nhị phân như CPT, CTL, THA – kỹ thuật mới được công bố năm 2012 và đang được đánh giá tương đối tốt; thủy vân dễ vỡ: phân tích, đánh giá, so sánh các phương pháp mã hóa, các kỹ thuật giấu tin, giúp cho người dùng có cáinhìn tổng quát và đầy đủ khi nghiên cứu và triển khai các hệ thống mã hóa, giấu tin mới. Đồng thời đưa ra đề xuất phương án áp dụng giấu tin THA trên ảnh màu.
Luận vănđề xuất một mô hình kết hợp cả ba công cụ mã hóa, giấu tin và thủy vân dễ vỡ để giải quyết bài toán thư điện tử nhằm tăng độ an toàn cho các tệp dữ liệu đính kèm trên đường truyền trong quá trình giao dịch thư điện tử.
2.Hướng phát triển
Tích hợp và xây dựng chương trình soạn thảo, duyệt và nhận thư ở phía Client như Outlook Express.
75
TÀI LIỆU THAM KHẢO Tiếng việt
[1] Phan Đình Diệu (2006), Lý thuyết mật mã và An toàn thông tin, NXB
ĐHQG HN.
[2] Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật toán: Cơ sở lý
thuyết và tính toán thực hành, NXB ĐHQG HN.
[3] Hà Huy Khoái, Phạm Huy Điển (2004), Mã hoã thông tin: Cơ sở toán
học và ứng dụng, NXB ĐHQG HN.
[4] Đỗ Văn Tuấn, Trần Đăng Hiên, Phạm Văn Ất, Một sơ đồ cải tiến hệ mật
mã khóa công khai Rabin, Kỷ yếu hội thảo quốc gia lần thứ XIV, Một số
vấn đề chọn lọc Công nghệ thông tin và Truyền thông, Cần Thơ - 2011, tr 280-289.
[5] Phạm Văn Ất, Nguyễn Hữu Cường, Đỗ Văn Tuấn, Giấu tin trong ảnh nhị
phân và ứng dụng, Tạp chí Khoa học Giao thông vận tải, số 19 tháng 9 năm
2007
[6] Vũ Bá Đình, Nguyễn Xuân Huy, Đào Thanh Tĩnh (2002), Đánh giá khả
năng giấu dữ liệu trong bản đồ số, tạp chí Tin học và Điều khiển học, số 4,
347-353
[7] Nguyễn Xuân Huy, Bùi Thị Thuý Hằng (2001), Một số cải tiến của kĩ thuật
giấu dữ liệu trong ảnh
Tiếng Anh
[8] William Stallings - Cryptography and Network Security Principles
andPractices, Fourth Edition
[9] Chin-Chen Chang and Sun-Min Tsu (2000) - An improvement on
Shimada’s public-key cryptosystem, Journal of Science and Engineering,
vol. 3, no. 2, pp. 75-79.
[10] Harn, and Kiesler (1989) - Improved Rabin’s scheme with high
efficiency, Electron. Lett., 25, (1 l), pp. 726-728
[11] Rabin, M. O (1980) - Probabilistic algorithm for testing primality, J.
Number theory, 12(1): 128 – 183.
76 Emirates University College of IT.
[13] Shimada, M (1992) - Another Practical Public-Key Cryptosystem,