Phần mềm sử dụng ảnh Bitmap 24 bit màu, chia thành các khối 16x16.
4.3.1. Quy trình gửi thư
Bước1:Chọnthư T cần gửi.
Bước2: Mã hóa thưT bằng phương pháp Rabincải tiến để nhận được T′ Bước 3: Chọn ảnh gốc I
- Chia ảnh gốc I thành hai phần I và I
- Nhúng T′ vào I theo thuật toán THA để nhận được I
- Sử dụng hàm băm SHA1-256bit đối với I với khóaS để nhận được mã băm H
- Chèn mã băm H vào bít thấp của I để nhận được I - Ghép I và I để nhận được ảnh chứa đề thi I Bước 4: Gửi ảnh I qua Internet
4.3.2. Quy trình nhận thư
Trong quá trình trao đổi, ảnh chứa thưI có thể bị tấn cơng thành I∗. Hệ thống sẽ xác thực xem ảnh I∗ có trùng với ảnh I hay không. Trong trường hợp trùng, hệ thống sẽ trích thư từ ảnh I∗.
Bước1: Chia ảnh I∗ thành hai phần I∗ và I∗
Bước 2: Xác thực
- Trích các bít thấp của I∗ để nhận được H∗
- Sử dụng hàm băm SHA1 - 256 bít đối với I∗ và khóa S để nhận được mã băm H∗
- Đối sánh H∗với H∗, nếu bằng nhau thì ảnh I∗ trùng với ảnh I Bước 3: Khơi phục thư
- Áp dụng thuật tốn trích tin THA để khôi phục T từ I∗
- Sử dụng Rabin-THA giải mã T để nhận được thưT
4.3.3. Giao diện
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
ầ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
ậ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
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
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,
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()
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()
}
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 qt 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 tốn thư điện tử nhằm tăng độ an tồ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.
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 tồn thơng tin, NXB
ĐHQG HN.
[2] Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật tốn: Cơ sở lý
thuyết và tính tốn thực hành, NXB ĐHQG HN.
[3] Hà Huy Khoái, Phạm Huy Điển (2004), Mã hỗ 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.
Emirates University College of IT.
[13] Shimada, M (1992) - Another Practical Public-Key Cryptosystem,