Chúng ta có thể thấy rằng chữ ký số nói chung chỉ cho phép ký các bức điện nhỏ. Thông thường khi sử dụng, chữ ký được sinh ra có độ dài lớn hơn so với văn bản ký, do vậy kích thước văn bản sau khi ký sẽ tăng lên.
Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều đoạn, sau đó ký lên các đoạn đó độc lập nhau. Điều này cũng tương tự như mã hóa một chuỗi dài bản rõ bằng cách mã hoá mỗi ký tự bản rõ độc lập nhau sử dụng cùng một bản khoá.
Biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số [5]. Trước hết với một bức điện dài, ta kết thúc bằng một chữ ký rất lớn.
+ Thứ nhất: với một thông điệp có kích thước a, thì sau khi ký kích thước của chữ ký sẽ là 2a (trong trường hợp sử dụng DSS).
+ Thứ hai: với các chữ ký “an toàn” thì tốc độ chậm vì chúng dùng nhiều phép tính số học phức tạp như số mũ modulo.
+ Thứ ba là kết quả sau khi ký: nội dung của thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn có thể bị mất mát, trong khi ng ười nhận cần phải xác minh lại thông điệp. Vì vậy mục tiêu chính là cần phải bảo vệ tính toàn vẹn của thông điệp. Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng thông điệp đại diện và Hàm băm để trợ giúp cho việc ký số.
1.5.3.1. Khái niệm thông điệp đại diện
Mỗi thông điệp tùy ý sau khi sử dụng thuật toán băm sẽ được thu gọn thành bản băm duy nhất - được gọi là thông điệp đại diện - có kích thước cố định (128 bits hoặc 160 bits).
1.5.3.2. Hàm băm
Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta thường dùng thuật ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ (băm) thông điệp và đưa vào theo một thuật toán một chiều nào đó, rồi đưa ra một bản băm – văn bản đại diện – có kích thước cố định [5].
+ Đặc tính quan trọng của hàm băm
Hàm băm h là hàm một chiều (one – way hash ) có các đặc tính sau: - Với thông điệp đầu vào X thu được bản băm Y = h(X) là duy nhất. - Nếu dữ liệu trong thông điệp X thay đổi hay bị xóa để th ành thông điệp X’thì h(X’) ≠ h(X). Cho dù chỉ có một sự thay đổi nhỏ hay chỉ l à xóa đi một bits dữ liệu của thông điệp thì giá trị băm cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau thì giá trị hàm băm hoàn toàn khác nhau.
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị h àm băm. Nghĩa là với thông điệp X thì dễ dàng tính được Y = h(X), nhưng lại không thể tính suy ngược lại được X nếu chỉ biết hàm băm h(X).
+ Tính chất của hàm băm
Việc đưa hàm băm h vào dùng trong sơ đồ chữ ký số không làm giảm sự an toàn của sơ đồ chữ ký số vì nó là bản tóm lược văn bản – văn bản đại diện cho thông điệp được ký chứ không phải là thông điệp gốc. Điều cần thiết là hàm băm cần thỏa mãn một số tính chất sau để tránh bị giả mạo:
Thông điệp đầu vào X dạng văn bản, âm thanh, hình ảnh Kích thước tùy ý
Băm thông điệp với thuật toán băm
h(X) Bản băm Y=h(X) Kích thước cố định (128 bit hoặc 160 bit)
Tính chất 1: hàm băm h không va chạm yếu: h là hàm băm không có tính va chạm yếu nếu khi cho trước một bức điện X, không thể tiến h ành về mặt tính toán để tìm ra một bức điện X’ ≠ X mà h(X’) = h(X).
Xét một kiểu tấn công: Thông tin cần phải truyền từ A đến B (Hình 1.8a). Nhưng trên đường truyền, thông tin bị lấy trộm và thay đổi (Hình 1.8b)
Người A gửi cho B (X, Y) với Y = sigK(h(X)). Nhưng trên đường truyền, thông tin bị lấy trộm. Hacke bằng cách nào đó tìm được một bản thông điệp X’có h(X’) = h(X) mà X’≠ X. Sau đó Hacker đưa X’thay thế X rồi truyền tiếp cho B. Người B nhận được và thông tin vẫn được xác thực là đúng đắn.
Người gửi
A Người nhậnB
(X, Y) = sigK(h(X))
Hình 1.8a: Đường đi đúng của thông tin
Hình 1.8b: Thông tin bị lấy trộm và đã bị thay đổi trên đường truyền
Người gửi A (X, Y) = sigK(h(X)) (X, Y) = sigK(h(X)) (X’, Y) = sigK(h(X)) Người nhận B
Tính chất 2:Hàm băm h không va chạm mạnh: h là hàm băm không có tính va chạm mạnh nếu không có khả năng tính toá n để tìm ra hai bức thông điệp X và X’mà X ≠ X’ và h(X’) = h(X).
Xét kiểu tấn công sau: Đầu tiên, Hacker tìm được hai bức thông điệp X’
và X (với X’≠ X) mà có h(X’) = h(X) (ta coi X là hợp lệ, còn X’ là giả mạo). Tiếp theo kẻ này đưa cho A và thuyết phục A ký vào bản tóm lược h(X) để nhận được Y. Khi đó (X’, Y) là bức thông điệp giả mạo nhưng hợp lệ.
Tính chất 3: Hàm băm h là hàm một chiều: h là hàm một chiều nếu cho trước một bản tóm lược của văn bản Y thì không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu X sao cho h(X) = Y.
Xét kiểu tấn công sau: Việc giả mạo chữ ký trên bản tóm lược Y thường xảy ra với các sơ đồ chữ ký số. Giả sử, Hacker tính được chữ ký trên bản tóm lược Y, sau đó hắn tìm được bản thông điệp X’ được tính ngược từ bản đại diện Y = h(X). Hacker thay thế bản thông điệp X hợp lệ bằng bản thông điệp X’giả mạo nhưng lại có Y = h(X’). Và ký số trên bản đại diện cho X’ bằng đúng chữ ký hợp lệ. Như vậy thì (X’, Y) là bức điện giả mạo nhưng hợp lệ
+ Ý nghĩa của việc dùng thông điệp đại diện và hàm băm
Hàm băm trợ giúp cho các sơ đồ chữ ký số nhằm giảm dung lượng của dữ liệu cần thiết để truyền qua mạng (lúc n ày chỉ còn bao gồm dung lượng của thông điệp gốc và 256 bits (sử dụng MD) hay 320 bits (sử dụng SHA) của chữ ký số được ký trên văn bản đại diện của thông điệp gốc), điều này tương đương với việc giảm thời gian truyền tin qua mạng.
Hàm băm thường kết hợp với chữ ký số để tạo một loại chữ ký điện tử vừa an toàn (không thể cắt/dán) vừa dùng để kiểm tra tính toàn vẹn của thông điệp. Sau đây là sơ đồ tạo chữ ký số và sơ đồ xác thực chữ ký số có sử dụng hàm băm:
1.5.4. Chứng chỉ số [3]
1.5.4.1. Giới thiệu về chứng chỉ số
Việc sử dụng mã hóa hay ký số chỉ giải quyết được vấn đề bảo mật thông điệp và xác thực. Tuy nhiên không có thể đảm bảo rằng Hacker không thể bị giả mạo, trong nhiều trường hợp cần thiết phải “chứng minh” bằng điện
Hình 1.9: Sơ đồ tạo chữ ký số B ả n tó m lư ợ c H à m b ă m G ắ n v ớ i th ô n g đ iệ p d ữ liệ u M ã h ó a T h ô n g đ iệp d ữ liệu K h ó a b í m ậ t C h ữ k ý s ố Hình 1.10: Sơ đồ xác nhận chữ ký số B ả n tó m lư ợ c H à m b ă m G iả i m ã B ả n tó m lư ợ c T á c h G iả i m ã ? = ? K h ô n g đ ú n g n g ư ờ i g ử i N ộ i d u n g th ô n g đ iệp b ị th a y đ ổ i N ộ i d u n g to à n v ẹ n T h ô n g đ iệp d ữ liệu đ ư ợ c k ý C h ữ k ý s ố T h ô n g đ iệp d ữ liệ u K h ó a c ô n g k h a i
tử về danh tính của một ai đó. Chứng chỉ số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một tổ chức,… nó gắn định danh của đối tượng đó với một khóa công khai, giống nh ư bằng lái xe, hộ chiếu hoặc chứng minh thư của một người.
Cơ quan chứng thực chữ ký số (Certificate Authority - CA). Đó là một đơn vị có thẩm quyền xác nhận định danh v à cấp các chứng chỉ số. CA có thể là một đối tác thứ ba đứng độc lập hoặc các tổ chức vận h ành một hệ thống tự cấp các chứng chỉ cho nội bộ của họ. Các ph ương pháp để xác định định danh phụ thuộc vào các chính sách mà CA đặt ra. Chính sách lập ra phải đảm bảo việc cấp chứng chỉ số là đúng đắn, ai được cấp và mục đích dùng vào việc gi. Thông thường, trước khi cấp một chứng chỉ số, CA sẽ cung cấp một thủ tục cần thiết phải thực hiện cho các loại chứng chỉ số.
Trong chứng chỉ số chứa một khóa công khai được gắn với một tên duy nhất của một đối tượng. Các chứng chỉ số giúp ngăn chặn việc sử dụng khóa công khai một cách giả mạo. Chỉ có khóa công khai được chứng thực bởi chứng chỉ số sẽ làm việc với khóa bí mật tương ứng, nó được sở hữu bởi đối tượng có định danh nằm trong chứng chỉ số. Ngoài khóa công khai, chứng chỉ số còn chứa thông tin về đối tượng như: tên để nhận diện, hạn dùng, tên của CA cấp chứng chỉ số, mã số,… Điều quan trọng nhất là chữ ký số phải được chứng thực bởi CA. Nó cho phép chứng chỉ số như đã được đóng dấu để người sử dụng có thể dùng các phần mềm ký số để kiểm tra chính các chữ số đó.
1.5.4.2. Xác thực định danh
Việc giao tiếp trên mạng điển hình là giữa một máy khách – Client và một máy dịch vụ - Server. Việc chứng thực có thể thực hiện ở cả hai phía. Việc xác thực ở đây không chỉ có ý nghĩa một chiều đối với ng ười gửi, tức là
người gửi muốn người nhận tin tưởng vào mình. Khi một người đã gửi thông điệp có kèm theo chữ ký số của mình (cùng với chứng chỉ số), thì không thể chối cãi: đó không phải là thông điệp mà mình đã gửi.
Hai hình thức xác định máy khách
+ Xác thực dựa trên tên truy nhập và mât khẩu (Username và Password). Tất cả các máy dịch vụ cho phép người dùng nhập mật khẩu, để có thể truy nhập vào hệ thống. Máy dịch vụ sẽ quản lý danh sách các Username, Password này và thực hiện việc xác thực người sử dụng trước khi cho phép họ truy nhập tài nguyên của hệ thống.
Hình 1.11: Dùng mật khẩu để xác thực máy khách kết nối tới máy dịch vụ
Khi sử dụng loại xác thực này, người dùng phải nhập mật khẩu cho mỗi máy khách khác nhau, máy dịch vụ sẽ lưu lại dấu vết của các mật khẩu này cho mỗi người dùng. Quá trình này được thưc hiện theo các bước sau:
Bước 1: Để đáp lại yêu cầu từ máy dịch vụ, máy khách sẽ hiện hộp thoại yêu cầu nhập mật khẩu, người dùng phải nhập mật khẩu cho mỗi máy dịch vụ khác nhau trong cùng một phiên làm việc.
Bước 3:Máy dịch vụ tìm kiếm mật khẩu trong cơ sở dữ liệu.
Bước 4: Máy dịch vụ xác định xem mật khẩu đó có quyền truy cập vào những tài nguyên nào của hệ thống.
+ Xác thực dựa trên chứng chỉ số: Máy khách ký số vào dữ liệu, sau đó gửi cả chữ ký số và chứng chỉ số qua mạng. Máy dịch vụ sẽ dùng kỹ thuật mã hóa khóa công khai để kiểm tra chữ ký và xác định tính hợp lệ của chứng chỉ số. Chứng chỉ số có thể thay thế 3 bước đầu của phương pháp chứng thực bằng mật khẩu với cơ chế cho phép người dùng chỉ phải nhập mật khẩu một lần và không phải truyền qua mạng, người quản trị có thể điều khiển quyền truy nhập một cách tập trung.
Chứng chỉ số chứng thực cho máy khách kết nối tới máy dịch vụ có dùng giao thức bảo mật SSL (Secure Socket Layer) là giao thức truyền thông tin an toàn, máy khách và máy chủ quản lý các hoạt động mã hóa và giải mã trong một phiên Web an toàn qua Internet, giao thức SSL là một phiên bản an toàn của HTTP, được gọi là HTTPs, SSL có 2 dộ dài của khóa phiên riêng được sinh ra trong mọi giao dịch có mã hóa là 40 bits và 128 bits). Máy khách phải có chứng chỉ số để cho máy dịch vụ nhận diện. Sử dụng chứng chỉ số để chứng thực có lợi thế hơn khi dùng mật khẩu. Bởi vì nó dựa trên những gì mà người sử dụng có: Khóa bí mật và mật khẩu để bảo vệ khóa bí mật. Điều cần chú ý là chỉ có chủ nhân của máy khách mới được phép truy nhập vào máy khách, phải nhập mật khẩu để vào cơ sở dữ liệu của chương trình có sử dụng khóa bí mật.
Cả hai cơ chế xác thực trên đều phải truy nhập mức vật lý tới các máy cá nhân. Mã hóa khóa công khai chỉ có thể kiểm tra việc sử dụng khóa bí mật tương ứng khóa công khai trong chứng chỉ số. Nó không đảm nhận trách nhiệm bảo mật vật lý và mật khẩu sử dụng của khóa bí mật. Trách nhiệm này thuộc về người sử dụng.
Quá trình xác thực bằng chứng chỉ số thực hiện như sau:
Bước 1: Phần mềm máy khách quản lý cơ sở dữ liệu về các cặp khóa bí mật và khóa công khai. Máy khách sẽ yêu cầu nhập mật khẩu để truy nhập vào cơ sở dữ liệu này chỉ một lần hoặc theo định kỳ. Khi máy khách truy cập vào máy dịch vụ có sử dụng SSL, để xác thực máy khách dựa trên chứng chỉ số, người dùng chỉ phải nhập mật khẩu một lần, họ không phải nhập lại khi cần truy nhập lần thứ hai.
Bước 2:Máy khách dùng khóa bí mật tương ứng với khóa công khai ghi trong chứng chỉ số để ký lên dữ liệu được tạo ra ngẫu nhiên cho mục đích chứng thực từ cả phía máy khách v à máy dịch vụ. Dữ liệu này và chữ ký số vừa thiết lập là một bằng chứng để xác định tính hợp lệ của khóa bí mật. Chữ ký số có thể được kiểm tra bằng khóa công khai tương ứng với khóa bí mật đã dùng để ký và nó là duy nhất trong mỗi phiên làm việc của giao thức SSL.
Bước 3: Máy khách gửi cả chứng chỉ số và dữ liệu kèm theo (một phần dữ liệu được tạo ngẫu nhiên và được ký) qua mạng.
Bước 4: Máy dịch vụ sử dụng chứng chỉ số và dữ liệu kèm theo đó để xác thực người dùng.
Bước 5: Máy dịch vụ có thể thực hiện tuỳ chọn các nhiệm vụ xác thực khác như lưu trữ và quản lý các chứng chỉ số hoặc xác định xem người sử dụng có những quyền gì đối với các tài nguyên của hệ thống.
1.5.4.3. Chứng chỉ khóa công khai [3]
1.5.4.3.1. Giới thiệu chung
Khái niệm hạ tầng khóa công khai (PKI) th ường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số cùng các cơ chế liên quan sử dụng các thuật toán mật mã khóa công khai trong trao đổi thông tin. PKI cho phép những người tham gia xác thực nhau và sử dụng thông tin từ các chứng thực khóa công khai để mã hóa và giải mã thông tin trong quá trình trao đổi. PKI cho phép các trao đổi thông tin tr ên mạng đảm bảo tính bí mật, toàn vẹn và xác thực lẫn nhau.
Một người muốn dùng kỹ thuật mã hóa khóa công khai để mã hóa một thông điệp và gửi cho người nhận, người gửi cần một bản sao khóa công khai của người nhận. Khi một người bất kì muốn kiểm tra chữ ký số thì cần phải có một bản sao khóa công khai của thành viên ký. Chúng ta gọi cả hai thành viên mã hóa thông điệp và thành viên kiểm tra chữ ký số là những người sử dụng khóa công khai. Một tổ chức chứng thực đóng vai tr ò xác nhận khóa công khai phải thực hiện các kỹ thuật đảm bảo dễ dàng phát hiện bất kỳ sự thay đổi phần thông tin nào chứa trong chứng chỉ.
Khi khóa công khai được gửi đến cho người sử dụng, thì không cần thiết phải giữ bí mật khóa công khai này. Tuy nhiên người dùng khóa công khai phải đảm bảo rằng khóa công khai đang dùng đúng là dành cho thành viên khác (có thể là người nhận thông điệp có chủ định hoặc bộ sinh chữ ký số được yêu cầu). Nếu Hacker dùng khóa công khai khác thay th ế khóa công