Giáo trình An toàn bảo mật thông tin - Nguyễn Khánh Văn - Chương 4: Chữ ký điện tử và hàm băm
Khái niệm về Digital Signature được để xuất bởi Diffie & Hellman (1976)
Mặc dù thời đó mạng máy tính còn chưa phát triển, những các ông này đã nhìn thấy trước
tương lai của một xã hội được tin học hoá cao độ đến mức các giao dịch thương mại có
thể được thực hiện hoàn toàn thông qua máy mính. Khái niệm chữ ký điện tử (Digital
signature -DS) được đặt ra như một căn bản cần phải có, nó phải phản ánh được các
thuộc tính của chữ ký tay trong thực tế mặc dù mang bản chất ‘tin học” là một chuỗi bit 0
và 1 có thể hoàn toàn dễ dàng bị sao chép và cắt ghép.
Đi gắn liền với thông tin (message) mà nó (ký), nó phải chứng mình được tính tin cậy của
thông tin, tức là nó chứng tỏ được.
+ Thông tin không bị sửa đổi.
+ Thông tin đúng là được tạo ra từ người gửi thực chứ không phải do một người thứ ba
mạo danh.
Để làm được điều đó, một hệ Ds cần có các thuộc tính:
+ Việc tạo ra chữ ký là thuậnt iện, dễ dàng.
+ Người nhận có thể dễ dàng kiểm định chữ ký
+ Việc tạo giả chữ ký là khó xảy ra đến phí thực tế.
DS sẽ là một chuỗi bit được dán nối tiếp với thông tin (message).
iếng: MD5 (Rivest 1992) Đây là một trong các hàm băm có tiếng nhất và được sử dụng thông dụng: + Nó lấy vào các khối đầu vào 512 bit và sinh ra các giá trị băm 128 bit. + Được tin là phi đụng độ và one-way + thuật toán MD5 được thiết kế cho phép chạy tốt nhất trên các máy tính 32 bit. Nó sử dụng các phép toán đơn giản như phép cộng modulo 32, do đó thích hợp với ciệc mã hoá cho các bộ xử lý 32 bit. SHA (Secure Hash Function) Đây là một thuật toán được đề xuất và bảo trợ bởi cơ quan NIST để sử dụng đối với hệ chữ ký DSA (cũng là một dự chuẩn cho chữ ký điện tử). Nó cho giá trị băm là 160 bit và được thiết kế với cùng một tiếp cận như MD5. HAVAL Một hệ băm của Australia cho phép thay đổi kích thước giá trị băm. Cấu trúc rất giống như MD5. Snefru Mekle (1989) + keyed hash function + Cho phép một trong 2 lựa chọn giá trị băm là 128 bit và 256 bit + Eli Biham đã chỉ ra một đụng độ cho trường hợp 128 bit Các hệ chữ ký khác RSA El-Gamal Được xây dựng trên tính khó của việc tính toán logarit trên không gian Zp khi mà p là số nguyên tố. Thuật toán + Alice chọn một số nguyên tố lớn p sao cho p-1 có một ước số nguyên tố lớn + Giả sử a là phần tử cấu trúc (primitive element) của Zp: {ai, i=0,p-1} Zp*. + Alice chọn x và tính y=ax (mod p). + Khoá công khai là p,a,y. Khoá bí mật là x. Để ký một TIN X: + Alice chọn một số nguyên k, 1 k p-1 sao cho gcd(k,p-1) =1 + Cô ta tính r=ak (mod p). + Tính s=k-1(X-xr) (mod p-1) + Tính s=k-1(X-xr) (mod p-1) + TIN với chữ ký là: (X(r,s)) Để kiểm định chữ ký, làm như sau: srX rya Ví dụ. P=11, a=2 Khoá bí mật x=3 Khoá công khai: 23=8 (mod 11) Để ký lêm TIN X=9: + chọn k=7 + tính k-1=3 (mod 10) + r=ak=27=7 (mod 11) + s= 3(9-7.3) 10 = 4 + TIN đã ký là (X,r,s) = (9, (7,4)) Kiểm định chữ ký: 29 = 6 = 87 74 (mod 11) DSA Được đề xướng bởi NIST, công bố năm 1994 Những phê bình chống lại DSA: + không dùng được cho mã hoá dữ liệu và phân phối khoá + Được phát triển bởi NSA (cơ quan an ninh Hoa kỳ) và do đó không đáng tin + Kích thước khoá quá nhỏ Các hệ DS đặc biệt Bên cạnh các hệ chữ ký thông thường với công dụng giống hệt như chữ ký tay mà ta đã nghiên cứu, người ta đã sáng tạo hàng chục các biến thể khác nhau để phục vụ cho các nhu cầu giao dịch khác nhau. Chính các tình huống của giao dịch thực tế đời sống làm nảy sinh những hệ chữ ký đặc biệt này. Chúng được thiết kế để chuyên dùng cho các trường hợp đó. Các hệ này đều đòi hỏi những sáng tạo riêng về thuật toán và nhiều khi khá phức tạp. Sau đây ta nêu qua một số ví dụ. Blind signature Hỗnh aớnh so saùnh cuớa Blind signature trón thổỷc tóỳ laỡ nhổ sau: taỡi lióỷu maỡ cỏửn phaới coù chổợ kyù cuớa mọỹt nhaỡ thỏứm quyóửn X naỡo õoù õổồỹc cho vaỡo trong phong bỗ vồùi mọỹt tồỡ giỏỳy than vaỡ õem trỗnh lón nhaỡ thỏứm quyóửn X. X seợ kyù lón phong bỗ vaỡ do coù tồỡ giỏỳy than chổợ kyù seợ õổồỹc taỷo ra trón taỡi lióỷu màỷc duỡ X khọng hóử vaỡ khọng thóứ õoỹc õổồỹc nọỹi dung cuớa taỡi lióỷu. Blind signature coù cọng duỷng khi cỏửn taỷo ra caùc chổùng tổỡ vọ danh (anonymous), õàỷc bióỷt trong caùc hóỷ electronic cash. Ở đây ta có thể hình dung các hệ e-cash (tiền mặt điện tử) như là mô phỏng của việc tiêu tiền mặt trong cuộc sống nhưng được thực hiện trong môi trường mới - thanh toán điện tử. Đồng tiền chẳng qua chỉ là một chuỗi bit, được nhà băng phát hành. Khi cần người sử dụng sẽ đến nhà băng để rút tiền điện tử này, trừ vào tài khoản của anh ta trong ngân hàng. Lúc đến cửa hàng mua bất kỳ thứ gì, người sử dụng cũng có thể thanh toán bằng đồng tiền điện tử này. Cửa hàng chỉ chấp nhận đồng tiền con số này khi họ kiểm định thấy đúng là do nhà băng tạo ra (có chữ ký của nhà băng). Cửa hàng sau đó sẽ gửi số tiền điện tử này về nhà băng để chuyển vào tài khoản của họ. Tuy nhiên nếu tiền điện tử do chính nhà băng tạo ra và phát hành cho từng người sử dụng thì nhà băng có thể tạo ra cơ sở dữ liệu để lưu trữ các thông tin cụ thể là phát đồng tiền số nào cho người sử dụng nào. Những thông tin này nếu có thể đem kết hợp với ‘sổ sách’ của các cửa hàng có thể suy ra được người sử dụng đã dùng đồng tiền đó để mua gì nghĩa là đồng tiền không phải là vô danh như là tiền mặt thông thường. Chính vì thế đồng tiền này phải được tạo ra trên cơ sở phối hợp của người rút tiền (withdrawer) và nhà băng sao cho cuối cùng nhà băng có ký lên mà không thể biết được đồng tiền - con số đó cụ thể là gì đó chính là ứng dụng của chữ ký mù (blind signature). Hệ tiền mặt điện tử này đáp ứng được cái gọi là quyền sở hữu thông tin riêng tư của người sử dụng (user privacy) trong thế giới thương mại điện tử mà hiện nay điều này vẫn chưa được quan tâm thoả mãn1. Sau đây là một ví dụ đơn giản thể hiện một cách xây dựng và ứng dụng của blind signature trong hệ tiền mặt điện tử (e-cash): Hệ chữ ký dựa trên tính khó của phép lấy căn bậc ba theo modul đồng dư N khi không biết PTTSNT của N. Alice khi muốn đưa nhà băng ký lên một TIN x nào đó, sẽ sử dụng một nhân tử (bí mật) : đáng nhẽ đưa thẳng cho nhà băng giá trị băm h(x) thì đưa giá trị như sau thay vì: 3)( xh (mod N) Nhà băng ký lên, tức là tính căn bậc 3 của trị đó (chỉ nhà băng làm được vì mình nó nắm được PTTSNT của N), rồi gửi trả cho Alice h x( ) /1 3 (mod N) Alice chỉ việc chia giá trị nhận được này cho thì thu được h(x)1/3 tức là chữ ký của nhà băng, trong khi nhà băng chỉ biết mỗi trị h x( ) /1 3 tức là không thể biết được h(x). Alice có (x, h(x)1/3) như một đồng tiền mặt (giá trị phải được qui định trước), khi đi mua hàng (trên Web chẳng hạn) có thể trả cho Bob-người bán hàng hay cung cấp dịch vụ. Bob sẽ kiểm tra một đồng tiền (a,b) bằng phép kiểm tra: 1. Tính s=b3 2. Tính t=h(a) 3. So sánh s và t, nếu bằng nhau thì chấp nhận Sau này đồng tiền điện tử đó sẽ được Bob gửi về cho nhà băng để được thanh toán vào tài khoản của anh ta (deposit). Group signature Tình huống thực tế minh hoạ cho loại chữ ký này như sau: Một công ty có nhiều máy tính được nối với nhau trong một mạng cục bộ, các máy này được đặt trong một số phòng ban bộ phận. Mỗi phòng chỉ có một máy in mà chỉ các cán bộ của phòng mới được in ra thôi. Vì vậy người ta muốn một cơ chế để việc in này có thể thực hiện mà kiểm soát được không cho người ngoài phòng có thể in được, trong khi mỗi yêu cầu in lại không cần phải nêu rõ tên người yêu cầu để tránh xâm phạm tính riêng tư của công việc. 1 Hiện nay trong các phương pháp thanh toán đang thịnh hành trên Internet, phương pháp lập hồ sơ thanh toán (billing) hay sử dụng thẻ tín dụng (credit card), các công ty bán hàng hay credit card hoàn toàn có thể theo dõi được bạn thích mua loại hàng gì, đó là một dạng thông tin có ích cho họ, có thể bán lại cho các đối tượng quan tâm. Đây rõ ràng là điều mà khách hàng không mong muốn. Như vậy một hệ chữ ký sẽ được thiết lập sao cho chỉ có những người nằm trong một nhóm nào đó - trong cùng phòng - là có thể tạo ra được chữ ký mà người kiểm định - trong ví dụ trên là máy in hay chương trình quản máy in - kiểm tra và chấp nhận. Chữ ký này chỉ nói lên người ký nằm trong nhóm đó thôi chứ không nói lên đích xác đó là người nào nên giữ được tính bí mật riêng tư của người ký. Tuy nhiên hệ chữ ký đặc biệt này còn có một tính chất đặc biệt nữa là: nếu như cần thiết, một người thẩm quyển có thể “mở” được một chữ ký ra để xem ai cụ thể trong nhóm đã ký. Ứng dụng của nó là nếu như chương trình quản máy in cho thấy có người đã quá lạm dụng thì trưởng phòng có thể sử dụng quyền hạn của mình để “phanh phui” những chữ ký lên các yêu cầu in tốn kém đó, sau đó có biện pháp phạt người lạm dụng như nộp tiền phạt. Khả năng này làm cho tất cả mọi người phải biết điều đối với máy in của công nếu không muốn bị “bêu tên”. Hệ chữ ký trên do đó được gọi là hệ chữ ký nhóm (group signature) 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à người có 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 vào 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 con 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 là 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ý uỷ nhiệm) Hệ chữ ký này dành cho các trường hợp mà người chủ chữ ký bị ốm không có khả năng làm việc hay là đi vắng đến một nơi không có phương tiện mạng máy tính cần thiết để ký. Vì vậy chữ ký uỷ nhiệm được tạo ra để người chủ có thể uỷ nhiệm cho một người nào đó ký thay. Tất nhiên chữ ký uỷ nhiệm phải có các thuộc tính riêng thêm vào: + Chữ ký uỷ nhiệm là phân biệt với chữ ký thường, và người được uỷ nhiệm không thể tạo được chữ ký chủ (chữ ký thường của người chủ). + Chữ ký uỷ nhiệm cũng có chức năng chứng thực như chữ ký chủ, chỉ có người chủ và người được uỷ nhiệm mới có thể tạo ra được chữ ký này. Người nhận được văn bản có thể hoàn toàn tin tưởng vào chữ ký đó như chữ ký chủ. + Người chủ có thể xác định được danh tính người ký từ một chữ ký uỷ nhiệm + Người được uỷ nhiệm ký không thể chối cãi được nếu đã ký một văn bản uỷ nhiệm hợp lệ (Tức là anh ta không thể chối đổ cho ai khác hay chính người chủ đã ký mà lại nói là anh ta ký)
File đính kèm:
- Giáo trình An toàn bảo mật thông tin - Nguyễn Khánh Văn - Chương 4 Chữ ký điện tử và hàm băm.pdf