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).

pdf15 trang | Chuyên mục: An Toàn Và Bảo Mật Hệ Thống Thông Tin | Chia sẻ: dkS00TYs | Lượt xem: 1952 | Lượt tải: 1download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfGiá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