Phép chứng minh không tiết lộ thông tin đã được mô hình hóa bởi Quisquater and Guillou trong ví dụ về “ Hang động của Ali Baba”. Ví dụ này được giải thích như sau
Từ bây giờ chúng ta sẽ coi Peggy là Prover (người chứng minh), còn Victor là Verifier (người kiểm thử) như nhiều tài liệu Mật mã. Peggy(P) muốn chứng minh với Victor(V) rằng cô ta biết câu thần chú có thể mở được cánh cửa bí mật tại các điểm R-S, nhưng cô ta không muốn tiết lộ bí mật đó với Victor. Quá trình đến nơi đó diễn ra như sau: Victor đi tới P và đợi đến khi Peggy đi
khỏi R hoặc S. Sau đó Victor di chuyển đến Q và gọi Peggy ra ngoài từ bên trái hoặc bên phải của đường hầm( kỹ thuật cut and choose). Nếu Peggy không biết câu thần chú, cô ta chỉ có 50% khả năng ra ngoài từ bên đúng.
Giao thức có thể được lặp lại nhiều lần đến khi Victor tin rằng Peggy đã biết câu thần chú. Nếu giao thức được lặp lại k lần, xác suất lừa gạt của Peggy là 2k. Và nó không có nghĩa là giao thức đã được lặp bao nhiêu lần. Victor vẫn không biết được bí mật.
Ý nghĩa chính ẩn trong nguyên nhân là: Peggy muốn chứng minh một sự thật hiển nhiên F1 nhưng cô ta không muốn tiết lộ sự chứng minh này. Vì thế cô ta đi tìm những sự thật F2 khác, mà có thể tiết lộ công khai, như là F2 là ĐÚNG NẾU F1 ĐÚNG( điều kiện cần thiết). Vì thế cô ta “ Thay thế ” phép chứng minh của F1 chỉ bằng chứng minh F2. Trong ví dụ, F1 là câu thần chú bí mật,và F2 là khả năng xuất hiện từ mọi phía của đường hầm. Nếu Victor đồng rằng F2 không thểđúng nếu F1 không đúng, sau đó giao thức có thể tiến hành.
2.4. Vấn đề ký số trên đại diện văn bản
Khái niệm : Việc sử dụng các hệ mật mã và các sơđồ chữ ký số thường là mã hóa và ký số trên từng bit của thông tin, thời gian để mã hóa và ký sẽ tỷ lệ thuận với dung lượng của thông tin. Thêm vào đó có thể xảy ra trường hợp với nhiều bức thông điệp đầu vào khác nhau, sử dụng hệ mật mã, sơđồ ký số giống nhau ( có thể khác nhau ) thì cho ra kết quả bản mã, bản ký số giống nhau. Điều này sẽ dẫn đến một số rắc rối về sau cho việc xác thực thông tin.
Với các sơđồ ký số, chỉ cho phép ký các thông điệp ( thông tin ) có kích thước nhỏ và sau khi ký, bản ký số có kích thước gấp đôi bản thông điệp gốc ( trong trường hợp của sơ đồ ký số DSS ). Trong khi đó, trên thực tế, ta cần phải ký các thông điệp có kích thước lớn hơn nhiều, chẳng hạn vài chục Megebyte, hơn nữa dữ liệu truyền qua mạng không chỉ là bản thông điệp gốc, mà còn bao gồm cả bản ký số (có dung lượng gấp đôi bản thông điệp gốc ), để đáp ứng việc xác thực sau khi thông điệp đến người nhận.
Một cách đơn giản để giải bài toán (với thông điệp vài chục Megabyte ) này là chặt thông điệp thành nhiều đoạn 160 bit sau đó ký lên các đoạn đó độc lập nhau. Nhưng biện pháp này có một số vấn đề khi tạo ra chữ ký số :
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 chữ ký số 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 : Vấn đề nghiêm trọng hơn đó 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 trong chúng có thể bị mất mát, trong khi người nhận cần xác minh lại thông điệp. Ta 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 đề trên là dùng hàm băm để trợ giúp cho việc ký số. Các thuật toán băm với đầu vào là các bức thông điệp có dung lượng tùy ý, các bức thông điệp có thể là dạng văn bản, âm thanh, hình ảnh, … và với các giải thuật toán băm : MD2, MD4, MD5, SHA do các bản băm có kích thước cốđịnh: 128 bit với dòng MD, 160 bit với dòng SHA.
Như vậy, bức thông điệp kích thước tùy ý sau khi băm sẽ được thu gọn thành các văn bản – được gọi là văn bản đại diện - có kích thước cố định (128 bit hoặc 160 bit) . Với mỗi thông điệp đầu vào chỉ có thể tính ra được một văn bản đại diện duy nhất. Giá trị băm được coi là đặc thù của thông điệp, giống như dấu vân tay của mỗi người. Hai thông điệp khác nhau chắc chắn có hai văn bản đại diện khác nhau. Khi đã có văn bản đại diện duy nhất cho bức thông điệp, áp dụng các sơđồ chữ ký số ký trên văn bản đại diện đó.
2.4.1. Sơ lược về hàm băm (Hash Function) 2.4.1.1. Giới thiệu
Theo các sơđồ chữ ký ở trên thì chữ ký của thông điệp cũng có độ dài bằng độ dài của thông điệp, đó là một điều bất tiện. Ta mong muốn như trong trường hợp chữ ký viết tay, chữ ký có độ dài ngắn và hạn chế cho dù văn bản có độ dài bằng bao nhiêu. Vì chữ ký sốđược ký cho từng bit của thông điệp, nếu muốn chữ ký có độ dài hạn chế trên thông điệp có độ dài tuỳ ý thì ta phải tìm cách rút gọn độ dài thông điệp. Nhưng bản thân thông điệp không thể rút ngắn được, nên chỉ còn cách là tìm cho mỗi thông điệp một thông điệp thu gọn có độ dài hạn chế và thay việc ký trên thông điệp, ta ký trên thông điệp thu gọn.
Do vậy các hàm băm đóng vai trò cơ bản trong mã khóa công khai. Hàm băm sẽ tạo ra một đầu ra từ bản tin đầu vào. Đầu ra này được định nghĩa là một mã băm.
2.4.1.2. Định nghĩa hàm Hash
Hàm Hash là một hàm tính toán có hiệu quả khi ánh xạ các dòng nhị phân có độ dài tuỳ ý thành các dòng nhị phân có độ dài cốđịnh nào đó.
Hàm Hash yếu: Hàm Hash được gọi là yếu nếu cho một thông điệp x thì về mặt tính toán không tìm ra được thông điệp x’ khác x sao cho :
h(x’) = h(x)
Hàm Hash mạnh: Hàm Hash được gọi là mạnh nếu về mặt tính toán không tìm ra được hai thông điệp x và x’ sao cho:
x’ ≠ x và h(x’) = h(x) Chọn giá trị x ngẫu nhiên, x ∈ X Tính z = h(x) Tính x1 = A(z) Nếu x1≠ x thì x1 và x va chạm dưới h( thành công) Ngược lại là thất bại
Hàm Hash có tính chất một chiều: Hàm Hash có tính chất một chiều nếu cho trước thông điệp rút gọn z thì về mặt tính toán không tìm ra được thông điệp x sao cho :
h(x) = z.
Hàm Hash yếu làm cho chữ ký số trở nên tin cậy giống như việc ký trên toàn thông điệp.
Hàm Hash mạnh có tác dụng chống lại kẻ giả mạo tạo ra hai bản thông điệp có nội dung khác nhau, sau đó thu nhận chữ ký hợp pháp cho một bản thông điệp dễđược xác nhận rồi lấy nó giả mạo làm chữ ký của thông điệp thứ 2.
2.4.1.3. Tính chất của hàm băm
Hàm băm h phải thỏa mãn tính chất không va chạm yếu nghĩa là : Khi cho trước một thông điệp x không thể tiến hành về mặt tính toán để tìm ra bức điện x’ ≠ x mà h(x’) = h(x).
Hàm băm h không va chạm mạnh nghĩa là không có khả năng tính toán dễ tìm ra hai thông điệp x và x’ mà x’ ≠ x và h(x’) = h(x).
Hàm băm h là hàm một chiều nghĩa là khi cho trước một bản tóm lược thông điệp z 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)= z.
Các hàm băm phổ biến là các hàm băm dòng MD : MD2, MD4, MD5 do Rivest đưa ra có kết quảđầu ra là 128 bit. Chuẩn hàm băm an toàn SHA được công bố trong hồ sơ liên bang năm 1992 và được chấp nhận làm tiêu chuẩn vào năm 1993 do viện tiêu chuẩn và công nghệ quốc gia (NIST), kết quảđầu ra có độ dài 160 bit. Dưới đây là thuật toán băm MD5.
2.4.1.4. Thuật toán MD5
Thuật toán MD5 được Ron Rivest đưa ra vào năm 1991. Đầu vào của thuật toán là các khối có độ dài 512 bit và đầu ra là một bản băm đại diện cho văn bản gốc có độ dài 128bit.
Các bước tiến hành : Bước 1 : Độn thêm bit
Đầu tiên thông điệp được đệm thêm vào để chiều dài của nó là 64 bit.
Vi dụ : Nếu thông điệp dài 448 bit thì nó được đệm thêm vào 512 bit để trở thành 960 bit. Số lượng bit được thêm vào nằm trong khoảng từ 1 đến 512 bit. Dãy bit thêm vào bắt đầu bằng số 1 vào theo sau là dãy số 0.
Bước 2 : Thêm độ dài
Một biểu diễn 64 bit của độ dài của thông điệp (trước khi các bit đệm được thêm vào) được thêm vào để dẫn đến kết quả của bước 1, nếu chiều dài của thông điệp ban đầu lớn hơn 264 thì chỉ có những bit nhỏ hơn 64 mới được sử dụng.
Hai bước trên đểđáp ứng yêu cầu độ dài của thông điệp là một bội số của 512 bit Bước 3 : Khởi tạo bộđệm của MD
Một bộ đệm 128 bit được khởi tạo để lưu giữ kết quả của hàm băm. Bộđệm được biểu diễn bởi thanh ghi 32 bit. Các giá trị khởi tạo của 4 thanh ghi là :
A = 0x01234567 B = 0x89abcdef C = 0xfedcba98 D = 0x76543210
Bước 4 : Tiến trình thực hiện
Thuật toán được thực hiện qua 4 vòng lặp, 4 vòng lặp này có cấu trúc giống nhau nhưng sử dụng các phép toán logic khác nhau. Các phép toán logic được sử dụng bao gồm : AND, XOR, OR và phép modulo 232
Bước 5 : Đầu ra
Sau khi tất cả các khối 512 bit được xử lí thì một văn bản đại diện 128 bit được sinh ra.
ABCD
Quá trình tạo hàm băm của MD5
2.5. Xác thực
Trong phạm vi truyền thông qua internet người ta nhận được các dạng tấn công sau đây.
Khám phá : Để lộ các nội dung thông báo do không xử lý khóa mật mã thích hợp
Phân tích luồng thông tin : Phát hiện luồng thông tin giữa các thành viên. Trong một ứng dụng hướng kết nối, người ta có thể xác định được tần số và khoảng thời gian kết nối. Trong môi trường hướng kết nối hoặc không. Hướng kết nối người ta có thể xác định được số lượng và độ dài của các thông báo giữa các thành viên.
Thông điệp
Y0 Y1 Yq YL-1
MD 5 MD 5 MD 5 MD 5
L x 512 bits = N x 32 bits
K bits Độn thêm vào
Chiều dài thông điệp 512 bit
128 bit digest
Giả mạo : Đưa thêm các thông báo có nguồn gốc giả mạo trên mạng. Thông thường kẻ giả mạo sẽ tạo ra các thông báo và gửi cùng với các thông báo hợp pháp.
Sửa đổi nội dung : Thay đổi nội dung của thông báo như chèn thêm, xóa, sửa đổi.
Sửa đổi trình tự : Sửa đổi trình tự thông báo giữa các thành viên chẳng hạn như xóa bỏ hay sắp xếp theo trình tự mới.
Sửa đổi thời gian : Làm trễ hoặc chuyển tiếp nhiều lần các thông báo. Chối bỏ : Người nhận chối bỏ những thông báo gửi đến hoặc người gửi
chối bỏ thông báo gửi đi.
Xác thực : Là một thủ tục nhằm kiểm tra các thông báo nhận được xem chúng có đến từ một người gửi hợp lệ và có bị sửa đổi hay không. Xác thực cũng có thể kiểm tra trình tự và tính đúng lúc. Chữ ký số là một kỹ thuật xác thực.
Chương III
CHỮ KÝ NHÓM
3.1. Khái niệm về chữ ký nhóm( Groups Signature )
Trong xu hướng phát triển cuả thế giới và Việt Nam hiện nay, việc giao dịch giữa người với người thông qua mạng đã trở thành một việc không thể thiếu. Hai người ở cách xa nhau hàng vạn cây số nhưng vẫn có thể thực hiện việc ký kết các hợp đồng thương mại với nhau thông qua mạng. Để việc ký kết các hợp đồng đó có cơ sở pháp lý, các nhà khoa học đã phát minh ra chữ ký điện tử. Đó là một phát minh vĩ đại của loài người trong kỉ nguyên công nghệ thông tin.
Tuy nhiên, việc giao dịch không chỉ dừng lại ở mức độ giữa hai người với nhau, mà đòi hỏi việc giao dịch đó có thể là giao dịch giữa các nhóm người, các tổ chức khác nhau trên thế giới và được thực hiện qua mạng. Việc xác thực thông tin và toàn vẹn thông tin lúc này là xác thực và toàn vẹn thông tin của một nhóm người, một tổ chức. Chữ ký nhóm đã được đề xuất nhằm đáp ứng được yêu cầu này của xã hội.
Chữ ký nhóm là chữ ký điện tửđại diện cho một nhóm người, một tổ chức
Các thành viên của một nhóm người được phép ký trên thông điệp với tư cách là người đại diện cho nhóm.
Chữ ký nhóm được David Chaum và Van Heyst giới thiệu lần đầu tiên vào năm 1991. Kể từđó đến nay đã có nhiều nhà khoa học nghiên cứu và đưa ra một số sơđồ chữ ký nhóm khác như sơđồ chữ ký nhóm của Chen và Pedersen năm 1994, sơđồ chữ ký nhóm của Camenisch và Stadler năm 1997.
3.2. Những đặc điểm của chữ ký nhóm
Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó
Người nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm đó hay không, nhưng người nhận không thể biết được người nào trong nhóm đã ký vào thông điệp đó.
Trong trường hợp cần thiết chữ ký có thể được “mở” (có hoặc là không có sự giúp đỡ của thành viên trong nhóm) để xác định người nào đã ký vào thông điệp đó
3.2.1. Ta có hệ chữ ký nhóm
Undeniable Signature
Đây là chữ ký mà thuật toán kiểm định đòi hỏi phải có sự tham gia của người ký. Thực chất đây là chữ ký có tính chất không thể chuyển giao được (untransferable): Chỉ có ý nghĩa đối với người nhận là có người trao đổi làm ăn với người ký, khi chuyển nó cho một người khác thì không có tác dụng nữa (không thể kiểm định được chữ ký
nữa). Các văn bản có chữ ký này không nhằm mục đích đem đi công bốở nơi khác mà chỉ có tính chất giấy phép. Vì thế nếu sao chép là mất ý nghĩa.
Chữ ký này được dùng trong việc bán các sản phẩm phần mềm: Các hãng phần mềm sẽ bán các sản phẩm của mình có chữ ký chứng tỏ tính bản quyền. Việc kiểm định đòi hỏi phải liên lạc với hãng này. Nếu như có việc một người buôn nào đó bán phần mềm sao chép thì lúc người mua đòi kiểm định sẽ bị lộ ngay vì không thực hiện được.
MultiSignature ( Đồng ký )
Ởđây, chữ ký không phải của một người mà của một nhóm người. Muốn tạo được chữ ký, tất cả những người này cùng phải tham gia vào protocol. Tuy nhiên chữ ký có thể được kiểm định bởi bất kỳ ai. Đây là trường hợp dành cho thực tế của việc đưa ra những quyết định do nhiều người.
Proxy Signature (chữ ký ủy nhiệm)
Hệ chữ ký này dành cho các trường hợp mà người chủ chữ ký vì một lí do nào đó mà không thể ký được. Vì vậy chữ ký ủy nhiệm được tạo ra để người chủ có thể ủy nhiệm cho một người nào đó ký thay.
3.2.2. Một sơđồ chữ ký nhóm gồm thành phần cơ bản
Người quản lý nhóm Các thành viên trong nhóm Người không thuộc nhóm
3.2.3. Một sơđồ chữ ký nhóm thường bao gồm 5 thủ tục
KeyGen: Là thuật toán sinh khóa công khai của nhóm, khóa bí mật của
người quản lý nhóm : KeyGen() → (pk,gmsk) trong đó pk là khóa công khai của nhóm (dùng để xác minh chữ ký của nhóm), gmsk là khóa bí mật của nhóm. Nếu số người trong nhóm là cốđịnh thì KeyGen()→ (pk,gmsk,ski) trong đó ski là khóa bí mật của thành viên thứ i trong nhóm