Đối với ngƣời gửi: Từ bản rõ, cùng với khóa công khai của ngƣời nhận, qua thuật toán mã hóa (ở đây lấy ví dụ là thuật toán mã hóa RSA) thu đƣợc bản mã. Bản mã này đã đƣợc mã hóa bằng khóa công khai của ngƣời nhận và đƣợc gửi đi.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Đối với ngƣời nhận: Từ bản mã nhận đƣợc, ngƣời nhận dùng khóa riêng, qua thuật toán giải mã để thu đƣợc bản rõ.
Hình 2.3. Sơ đồ mã khóa công khai
2.4.3. Các đặc trưng của khóa công khai
Không có khả năng tính toán để tìm khóa giải mã nếu chỉ biết thuật toán mã hóa và khóa dùng để mã. (Không thể tìm đƣợc khóa riêng nếu biết khóa công khai và thuật toán mã hóa).
Dễ dàng mã hóa và giải mã mẩu tin nếu biết khóa tƣơng ứng.
Trong một số sơ đồ mã hóa, một khóa bất kỳ trong hai khóa có thể dùng để mã, và khóa còn lại dùng để giải mã. Chúng có vai trò đối ngƣợc nhau.
Mã công khai thƣờng chậm hơn khá nhiều so với mã đối xứng. Vì thế nó thƣờng đƣợc sử dụng để mã hóa những thông tin nhỏ nhƣng quan trọng.
2.4.4. Ứng dụng khóa công khai
Mã hóa và giải mã – cung cấp bảo mật. Đây là ứng dụng bảo mật truyền thông giống nhƣ thƣờng dùng với khóa đối xứng (khóa đơn).
Chữ ký điện tử - cung cấp xác thực. Một trong các ứng dụng của khóa công khai mà khóa đối xứng không thể thực hiện đƣợc, đó là việc khóa công khai có đủ cơ sở để xác nhận ngƣời gửi, tạo chữ ký điện tử của ngƣời gửi.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
2.4.5. Tính an toàn của các sơ đồ khóa công khai
Cũng giống nhƣ khóa riêng, việc tìm kiếm vét cạn luôn luôn có thể, tức là khi biết một trong hai khóa, cùng với thuật toán mã hóa, về nguyên tắc ta có thể tính toán để tìm kiếm khóa thứ hai từ các giá trị liên quan. Tuy nhiên, khối lƣợng cần tính toán là rất lớn do độ phức tạp của thuật toán xác định khóa. Nếu sử dụng khóa đủ lớn, cỡ hơn 512bit, thì hầu nhƣ bài toán tìm khóa thứ hai là không khả thi, không thể thực hiện đƣợc trong thời gian có nghĩa, cho dù nguồn lực cung cấp có thể rất lớn.
Bài toán mã hóa và giải mã khi biết khóa là một bài toán dễ. Bài toán thám mã khi không biết khóa tƣơng ứng là bài toán khó. Sự khác biệt đủ lớn giữa hai bài toán trên là cơ sở cho tính an toàn của sơ đồ khóa công khai.
2.5. Hệ mã hóa RSA
RSA là một thuật toán mã hóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vƣợc bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
Mã công khai RSA đƣợc sáng tạo bởi Rivest, Shamir, và Adleman ở trƣờng Đại học Công Nghệ Massachusetts (MIT) vào năm 1977. RSA là mã công khai đƣợc biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay. Nó dựa trên các phép toán lũy thừa trong trƣờng hữu hạn các số nguyên theo modul nguyên tố. Cụ thể, mã hóa hay giải mã là các phép toán lũy thừa theo modul số rất lớn. Việc thám mã (tức là tìm kiếm khóa riêng khi biết khóa công khai) dựa trên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên tố. Nếu không có thông tin gì thì ta phải lần lƣợt kiểm tra tính chia hết của số đó cho tất cả các số nguyên tố nhỏ hơn căn của nó. Đây là việc làm không khả thi vì mất rất nhiều thời gian.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Ngƣời ta chứng minh đƣợc rằng phép lũy thừa cần O((log n)3
) phép toán, nên có thể coi lũy thừa là bài toán dễ. Cần chú ý rằng ở đây ta sử dụng các số rất lớn khoảng 1024 bit. Tính an toàn dựa vào độ khó của bài toán phân tích các số lớn ra thừa số. Bài toán phân tích ra thừa số yêu cầu O(elog n log log n) phép toán, đây là bài toán khó.
2.5.1. Tạo khóa cho RSA
- Chọn ngẫu nhiên 2 số nguyên tố lớn p và q - Tính số làm module của hệ thống: N = p.q
Ta có Ф(N) = (p - 1) * (q – 1)
Áp dụng Định lý Trung Hoa để giảm bớt tính toán. - Chọn ngẫu nhiên khóa mã e thỏa mãn:
1<e< Ф(N) gcd(e, Ф(N)) = 1
- Giải phƣơng trình sau để tìm khóa giải mã d: e . d = 1 mod Ф(N) với 0≤d≤ Ф(N). - Khóa mã công khai KU={e,N}
- Khóa bí mật KR={d,p,q}
2.5.2. Sử dụng RSA
Để mã hóa mẩu tin, ngƣời gửi:
- Lấy khóa công khai của ngƣời nhận KU={e,N} - Tính C=Me mod N, trong đó 0≤M<N
Để giải mã bản mã, ngƣời nhận:
- Sử dụng khóa riêng KR={d,p,q} - Tính M=Cd mod N
2.5.3. Ví dụ RSA
Cho mẩu tin M = 88 Quá trình xác định khóa:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Tính N = pq, N = 17×11=187 Tính Ф(N)=(p–1)(q-1)=16×10=160 Chọn e: gcd(e,160)=1; Lấy e=7 Xác định d: de=1 mod 160 và d < 160 Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1 In khoá công khai KU={7,187}
Giữ khoá riêng bí mật KR={23,17,11} Quá trình mã hóa: C=Me mod N C=887 mod 187 = 11 Quá trình giải mã: M=Cd mod N M=1123 mod 187 = 88 2.5.4. Sơ đồ chữ ký số RSA
Trong sơ đồ chữ ký số, ngƣời ký sử dụng khóa bí mật và ngƣời xác thực sử dụng khóa công khai. Theo [1], sơ đồ chữ ký số là bộ 5
trong đó:
- là tập hữu hạn các thông điệp - là tập hữu hạn các chữ ký - là tập hữu hạn các khóa - là tập hữu hạn các hàm ký - là tập hữu hạn các hàm xác thực - thỏa mãn: + Hàm ký + Hàm xác thực
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Theo [1] sơ đồ chữ ký dựa trên hệ mật mã khóa công khai RSA nhƣ sau:
Quá trình ký:
Sử dụng khóa bí mật <d, p, q> ký thông điệp M đƣợc thực hiện: Tính
Tính chữ ký
Gửi chữ ký s kèm theo thông điệp M
Quá trình xác thực:
Việc xác thực chữ ký s bằng khóa công khai <e, n> đƣợc thực hiện nhƣ sau:
Tính Tính
Nếu thì chữ ký s ứng với M, trái lại không tin cậy.
2.6. Quản lý và phân phối khóa
Trong thực tế, quản lý khóa là vấn đề khó khăn nhất của hệ mã hóa. Đối với hệ mã hóa công khai, việc quản lý khóa dễ hơn đối với hệ mã hóa đối xứng.
Phân phối khóa công khai có thể xem xét để đƣợc sử dụng vào một trong các việc sau:
Thông báo công khai của ngƣời sử dụng: Ngƣời dùng thông báo khóa công khai của mình cho ngƣời nhận, hoặc thông báo rộng rãi cho tất cả mọi ngƣời biết.
Thƣ mục truy cập công cộng: Một thƣ mục công cộng – nơi mọi ngƣời đăng ký khóa công khai của mình và chia sẻ cho tất cả mọi ngƣời. Thƣ mục công cộng này cần đƣợc đảm bảo tin cậy, ngƣời dùng có thể thay đổi khóa hay truy cập đến thƣ mục qua mạng bất cứ lúc nào.
Chủ quyền khóa công khai: Thƣ mục công cộng cung cấp khóa công khai của mình cho mọi ngƣời biết. Khi một ngƣời (A) muốn lấy khóa công
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
khai của ngƣời kia (B), ngƣời này (A) sẽ gửi thông điệp đến thƣ mục, để yêu cầu cung cấp khóa công khai của ngƣời kia (B). Thƣ mục sẽ gửi khóa công khai của ngƣời kia (B) cho ngƣời yêu cầu (A) cùng với chứng thực xác nhận ngƣởi gửi là thƣ mục.
Chứng nhận khóa công khai: bằng cách gắn danh tính của ngƣời dùng với khóa công khai của họ và đóng dấu để tránh mạo danh.
2.7. Lƣợc đồ thủy vân dễ vỡ khóa công khai trên ảnh nhị phân
Thủy vân xác thực hay còn gọi là thủy vân dễ vỡ là kỹ thuật nhúng thủy vân vào trong ảnh sao cho sản phẩm khi phân phối trong môi trƣờng nếu có bất cứ một phép biến đổi nào làm thay đổi đối tƣợng sản phẩm gốc thì thủy vân đã đƣợc giấu trong đối tƣợng sẽ không còn nguyên vẹn nhƣ thủy vân gốc. Các kỹ thuật thủy vân có tính chất này đƣợc sử dụng trong các ứng dụng xác thực thông tin và phát hiện thông tin bị xuyên tạc. Rất dễ hiểu vì sao những ứng dụng này cần đến kỹ thuật thủy vân dễ vỡ. Ví dụ nhƣ để bảo vệ chống xuyên tạc, một ảnh nào đó ta nhúng một thủy vân vào trong ảnh và sau đó phân phối, quảng bá ảnh đó. Khi cần kiểm tra lại ảnh ta sử dụng hệ thống đọc thủy vân. Nếu không đọc đƣợc thủy vân hoặc thủy vân đã bị sai lệch nhiều so với thủy vân ban đầu đã nhúng vào ảnh thì có nghĩa là ảnh đó đã bị thay đổi.
Trong một số tài liệu có đề cập đến một số ít phƣơng pháp có sẵn giúp xác thực cho hình ảnh nhị phân. Ở đây đề cập đến một phƣơng pháp thủy vân xác thực mới, an toàn cho hình ảnh nhị phân, nó có thể phát hiện bất cứ sự thay đổi nào của ảnh dù là nhỏ nhất. Tính an toàn của thuật toán của phƣơng pháp nằm trên sự bí mật của khóa. Chỉ có chủ sở hữu của nó mới có thể chèn thủy vân chính xác vào ảnh với khóa bí mật của mình, trong khi bất kì ai đều có thể xác minh tính xác thực thông qua khóa công khai tƣơng ứng.
Nhƣ đã nói, đã có những thuật toán giấu dữ liệu vào trong ảnh nhị phân. Ở đây, chúng ta giới thiệu một kỹ thuật mới đƣợc phát hiện và phát triển bởi
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
M.Y.Wu và J.H.Lee. Kỹ thuật này có thể đƣợc áp dụng cho hầu hết các ảnh nhị phân với chất lƣợng tốt.
2.7.1. Thuật toán nhúng dấu thủy vân
Theo [4], thuật toán nhúng dấu thủy trên ảnh nhị phân I có sơ đồ thực hiện nhƣ Hình 2.4:
Hình 2.4. Mô hình thuật toán nhúng thủy vân
Theo Hình 2.4, trƣớc tiên ảnh gốc I đƣợc phân hoạch thành hai phần Z1 và Z2. Từ vùng Z2 sử dụng hàm băm để tạo định danh H, định danh H đƣợc mã hóa bằng khóa bí mật K1 để nhận đƣợc chữ kỹ AS. Chữ ký AS đƣợc đƣợc nhúng vào vùng Z1 bằng một thuật toán nhúng tin nào đó. Ảnh thủy vân I‟ là sự kết hợp giữa Z1‟ và Z2.
2.7.2. Thuật toán xác thực tính toàn vẹn
Theo [4], thuật toán xác thực tính toàn vẹn của ảnh thủy vân I‟ đƣợc thực hiện theo sơ đồ: Ảnh gốc I Phân chia Z2 Băm H Mã hoá K1 AS Ghép Z2, Z1’ Ảnh thuỷ vân I’ Z1 Nhúng tin Z1’
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.5. Mô hình xác thực tính toàn vẹn
Theo Hình 2.5, ảnh thủy vân I‟ đƣợc chia thành 2 phần Z1‟ và Z2‟. Từ Z1‟ sử dụng thuật toán trích tin để nhận đƣợc chữ ký AS. Sử dụng khóa công khai K2 để giải mã AS và nhận đƣợc H1. Mặt khác, từ Z2‟ sử dụng hàm băm để nhận đƣợc H2. So sánh H1 với H2, nếu có sự khác nhau thì thuật toán kết luận ảnh I‟ đã bị tấn công, trái lại ảnh I‟ chƣa bị tấn công.
2.7.3. Tấn công tính chẵn lẻ
Theo [4], thuật toán nhúng dấu thủy vân sử dụng phƣơng pháp đối sánh mẫu (template ranking). Phƣơng pháp đối sánh mẫu thực chất dựa trên tính chẵn lẻ của khối, mỗi khối điểm ảnh sẽ nhúng 1 bít dấu thủy vân.
Với phƣơng pháp xác thực nhƣ đã nói ở trên, có thể phát hiện bất kỳ thay đổi nào dù là nhỏ nhất xảy ra ở khu vực Z2 của ảnh. Thật vậy, xác suất mà không phát hiện thay đổi chỉ là 2-n, với n là chiều dài của AS. Xác suất này là rất nhỏ và có thể bỏ qua đƣợc. Tuy vậy, vẫn có những sự thay đổi không thể phát hiện đƣợc nếu sự thay đổi đó duy trì tính cân bằng của các khối. Ví dụ, nếu hai điểm ảnh trong cùng một khối có sự thay đổi, và sự thay đổi này không làm thay đổi tính cân bằng của khối, thì sự thay đổi đó không bị phát hiện. Chúng ta đặt tên cho sự thay đổi đó là:”Tấn công tính chẵn lẻ” hay “Tấn công sự cân bằng”.
Ảnh
thuỷ vân I’ Phân chia
Z2’ Băm H2 H1 So sánh Z1’ Trích tin AS Giải mã K2 0/1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Nếu nhƣ hình ảnh thủy vân I‟ đủ lớn, các điểm ảnh của Z1‟ tạo thành các điểm ảnh bị cô lập ngẫu nhiên, phân tán trong I‟và I‟ có thể bị thay đổi một điểm ảnh trên Z1‟. Tuy nhiên, nếu hình ảnh I‟ là nhỏ, các điểm ảnh của Z1‟ liên tiếp, khả năng sửa đổi sẽ không bị phát hiện. Để thay đổi hình ảnh I, hacker thay đổi một pixel p của khối i, sau đó hacker tìm kiếm các điểm ảnh có cấp bậc cao trong khối i để thay đổi. Sự thay đổi này không bị phát hiện bởi thuật toán đã đề xuất ở trên.
Trên thực tế, việc tấn công sự cân bằng chỉ có thể áp dụng đối với thuật toán sử dụng khóa công khai, bởi việc chia khu vực 1 và khu vực 2, cùng với việc chia khối đƣợc công khai. Với thuật toán sử dụng khóa bí mật thì việc tấn công là khó có thể, bởi hacker không thể biết đƣợc việc chia khu vực và chia khối xảy ra nhƣ thế nào. Tuy nhiên vẫn cần chú ý đến việc tấn công này bởi nó chứa những nguy cơ tiềm ẩn.
2.8. Lƣợc đồ thủy vân dễ vỡ khóa công khai trên ảnh mầu
Trong thủy vân dễ vỡ, ngoài việc xác định đƣợc sự thay đổi của ảnh thủy vân, một số thuật toán còn có khả năng định vị đƣợc vùng bị thay đổi. Định vị đƣợc vùng thay đổi không những trợ giúp cho việc phán đoán mục đích của sự tấn công mà giúp cho ngƣời dùng an tâm sử dụng những vùng ảnh còn lại.
Trong [5], trình bày lƣợc đồ thủy vân dễ vỡ trên ảnh mầu có khả năng định vị đƣợc vùng bị tấn công. Nội dung thuật toán cũng tƣơng tự nhƣ thuật toán mục 2.7 ngoại trừ việc thực hiện trên từ khối điểm ảnh và cách xác định Z1 và Z2.
2.8.1. Nhúng tin trên ảnh mầu bằng kỹ thuật chèn bit thấp
Trong ảnh mầu, mỗi điểm ảnh đƣợc xác định bằng 3 giá trị nguyên không dấu có độ dài một byte R, G, B. Trong đó R, G, B là các giá trị của 3 thành phần mầu cơ bản Red, Green, Blue. Giá trị mỗi thành phần là một byte gồm 8 bit đƣợc phân bố nhƣ sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
7 6 5 4 3 2 1 0
Bit 0 gọi là bit thấp LSB (Least Significal bit), các bit còn lại gọi là bit cao. Khi thay đổi bit thấp của một byte thì giá trị của byte chỉ tăng hoặc giảm một đơn vị. Do đó việc thay đổi bit thấp đối với các thành phần mầu không ảnh hƣởng nhiều đến chất lƣợng ảnh. Nói cách khác, khi đó bằng mắt thƣờng khó phân biệt ảnh gốc và ảnh bị biến đổi (bằng cách thay đổi bit thấp). Dựa trên ý tƣởng này, thƣờng áp dụng việc giấu tin trên ảnh mầu bằng kỹ thuật chèn bit thấp. Có hai phƣơng án thƣờng áp dụng là:
Phương án 1: chỉ chèn bit thấp đối với thành phần mầu B vì thành phần mầu này theo thực nghiệm ít nhạy cảm với thị giác con ngƣời.
Phương án 2: chèn bit thấp trên cả 3 thành phần mầu.
Theo phƣơng án 1 thì mỗi điểm ảnh nhúng đƣợc một bit, còn theo phƣơng án 2 thì mỗi điểm ảnh nhúng đƣợc ba bit. Theo phƣơng án 1 nhúng đƣợc ít hơn