Ký khóa công khai thường hoạt động như thế này
Không, nó không. RSA có thể được xem theo cách này (nếu bạn ở mức 10.000 foot); tuy nhiên a) không khuyến khích sử dụng cùng một khóa để ký và giải mã, và b) RSA về cơ bản là thuật toán chữ ký duy nhất có thể được mô tả theo cách này.
Tuy nhiên, điều đó không giải quyết được câu hỏi thực sự của bạn:
ký hàm băm
Chà, bạn đã không mô tả nó đúng cách - đối với một người, không có gì để ràng buộc thông điệp với giá trị khóa được tiết lộ. Nghĩa là, ai đó có thể sửa đổi thông báo trong chuyến bay và giá trị khóa vẫn sẽ được kiểm tra.
Những gì Lamport thường được hiểu là:
Chúng tôi chọn $k$ tiền ảnh băm $c_1, c_2, ..., c_k$và băm từng hàm và xuất bản kết quả của từng hàm băm $H(c_1), H(c_2), ..., H(c_k)$ như khóa công khai
Khi chúng tôi nhận được tin nhắn để ký, chúng tôi chuyển đổi tin nhắn thành một chuỗi giá trị $b_1, b_2, ..., b_n$ (mỗi giá trị giữa $1$ và $k$) - quá trình chuyển đổi này được thực hiện theo cách khó có thể tìm thấy thông báo thứ hai chuyển đổi thành một chuỗi bit chỉ bao gồm các giá trị bên trong $b_1, b_2, ..., b_n$).
Chữ ký bao gồm các hình ảnh trước được tiết lộ $c_{b_1}, c_{b_2}, ..., c_{b_n}$
Người xác minh có thể lấy tin nhắn và chuyển đổi nó thành một chuỗi giá trị $b_1, b_2, ..., b_n$và xác minh rằng mỗi tiền tố trong chữ ký băm thành giá trị trong khóa chung.
Dễ dàng nhận thấy rằng việc giả mạo chữ ký sẽ yêu cầu a) tìm một thông điệp chuyển đổi thành các giá trị được bộc lộ trong chữ ký tốt (điều mà chúng tôi giả định là khó) hoặc b) tìm tiền giả cho một giá trị không phải là tiết lộ (mà chúng tôi cũng cho là khó).
Điều đó nói rằng, câu hỏi của bạn thực sự là:
Tôi thấy rằng băm/ký đối xứng cần thêm công việc quản lý
Chà, Lamport chỉ hữu ích nếu bạn cần ký một tin nhắn bằng khóa chung. Khi bạn nhìn vào chuỗi khối (nơi chúng tôi cho rằng người xác minh nhìn thấy tất cả các chữ ký và chúng tôi có thể bao gồm khóa công khai tiếp theo cùng với chữ ký (và tất nhiên, thông báo được ký bao gồm khóa chung tiếp theo), điều này có thể hoạt động - như bạn đã chỉ ra, nó yêu cầu chúng tôi nhớ khóa công khai tiếp theo (sẽ thay đổi cho mọi chữ ký), nhưng điều đó có thể thực hiện được.
Trong nhiều bối cảnh khác, điều này không hoạt động. Tuy nhiên, có một số sửa đổi đối với chữ ký dựa trên hàm băm không có những hạn chế này:
Chữ ký dựa trên hàm băm trạng thái (chẳng hạn như LMS và XMSS); những thứ này hoạt động giống như Lamport, ngoại trừ một khóa công khai có thể ký một số lượng lớn các thông báo khác nhau (và chúng tôi có thể làm cho 'số lượng lớn' này lớn hơn số lượng thông báo mà chúng tôi từng thấy). Họ có yêu cầu người ký theo dõi trạng thái (thay đổi theo mọi chữ ký)
Chữ ký dựa trên hàm băm không trạng thái (chẳng hạn như cơ vòng+); điều này giúp loại bỏ nhu cầu theo dõi bất kỳ trạng thái nào trong khi ký và do đó hoạt động giống như bất kỳ thuật toán chữ ký nào khác
Và, nếu bạn cho rằng RSA và chữ ký dựa trên hàm băm là các tùy chọn duy nhất trên bảng, thì chúng không phải vậy. Ngoài ra còn có các sơ đồ dựa trên mạng khác nhau, sơ đồ đa biến, sơ đồ dựa trên bằng chứng không có kiến thức (Dã ngoại) - có một số tùy chọn khác nhau ngoài kia.