it-swarm-vi.com

Làm thế nào để quá trình xác minh chữ ký số hoạt động?

Tôi không thể hiểu rằng làm thế nào chữ ký số được xác minh. Tôi biết rằng chữ ký số sẽ được đính kèm vào tin nhắn và được gửi bởi người gửi đến người nhận. sau đó người nhận sử dụng khóa chung được sử dụng để xác minh nó. Đây là câu hỏi của tôi:

  • khóa công khai này đến từ đâu?
  • và làm thế nào nó được phân phối cho người nhận?
  • làm thế nào khóa công khai được xác định cho chữ ký số cụ thể?
  • và vai trò của cơ quan chứng nhận trong quá trình này là gì?
58
n92

OK, câu trả lời cho đến nay về cơ bản là đang đi đúng hướng, nhưng tôi sẽ cố gắng đưa ra câu hỏi của bạn khi chúng đến:

* where did this public key come from?

Khóa công khai là một phần của cặp khóa được sử dụng trong mật mã bất đối xứng. Có nhiều thuật toán mã hóa ngoài kia, nhưng nắm bắt được khóa công khai và khóa riêng được liên kết về mặt toán học. Chúng có thể được sử dụng theo cách này:

Mã hóa (khóa chung, dữ liệu gốc) -> dữ liệu được mã hóa

Giải mã (khóa riêng, dữ liệu được mã hóa) -> dữ liệu gốc

Bản chất của mối quan hệ toán học giữa khóa riêng và khóa chung có liên quan đến thuật toán mã hóa và nhanh chóng trở thành một chủ đề hay cho Math Overflow. :)

Phần quan trọng là chúng là một cặp khóa được tạo cùng nhau.

Tiếp theo, để xử lý chữ ký số, người gửi sẽ gửi:

  • dữ liệu gốc, dữ liệu được mã hóa, khóa chung và thông tin về cách xác minh chữ ký (ví dụ: thuật toán nào đang được sử dụng)

Trình xác minh thực hiện thao tác Giải mã ở trên và so sánh đầu ra của anh ta với dữ liệu gốc. Nếu hai người giống nhau, anh ta biết rằng tin nhắn không bị giả mạo, bởi vì chỉ người gửi mới có khóa riêng và không có cách nào hợp lý để xác định khóa riêng từ khóa chung.

làm điều này một chút ra khỏi trật tự ...

* and what is the role of the certification authority in this process?

Bất cứ ai cũng có thể tạo một cặp khóa riêng/công khai. Đây là một nhiệm vụ khá dễ dàng, với các bộ công cụ ngày nay. Vì vậy, việc cung cấp cho bạn khóa công khai của tôi, cùng với dữ liệu và chữ ký được mã hóa như được mô tả là đáng tin cậy như đưa cho bạn một danh thiếp mà tôi đã in tại Staples với giá 50 đô la. Để thực sự tin tưởng rằng tôi là người mà tôi nói tôi là ai, và do đó đáng tin cậy, bạn cần ai đó ký vào danh tính của tôi (như kiểm tra bằng lái xe).

Đó là công việc của Cơ quan cấp chứng chỉ (viết tắt là CA). CA có cặp khóa riêng - và nó sử dụng khóa riêng để ký chứng chỉ kỹ thuật số cho người giữ khóa. Chứng chỉ bao gồm khóa công khai, cũng như một loạt thông tin về người hoặc vật giữ khóa riêng này. Điều này giống như chính phủ của tôi biến tôi thành một id đẹp trai với một hình ảnh không thể dễ dàng giả mạo nếu không có thiết bị đặc biệt - bạn có thể tin thông tin của tôi vì bạn tin tưởng chính phủ ... không vì bạn tin tôi.

Thông thường khi một hệ thống xác minh chữ ký, nó không chỉ kiểm tra xem dữ liệu được mã hóa có khớp với dữ liệu gốc hay không, mà còn chứng chỉ chứng minh cho danh tính của người giữ khóa công khai cũng được ký hợp lệ bởi một nguồn đáng tin cậy. Thông thường các hệ thống CA được tổ chức theo chuỗi CA có nguồn gốc từ Root. Một bộ sưu tập các CA gốc nổi bật hơn (tự ký, nghĩa là được ký bằng khóa riêng của họ), có thể được tìm thấy trong trình duyệt của bạn.

Đối với các hệ thống có độ an toàn cao, có thể thực hiện kiểm tra bổ sung thông tin trạng thái tối đa. Tất cả phụ thuộc vào tầm quan trọng của việc đảm bảo chắc chắn về tình trạng của người gửi.

* and how is it (the public key) distributed to the receiver?

Kiểm tra hai lần ở đây - bạn có nghĩa là người nhận chứng chỉ hoặc người giữ chìa khóa?

Người gửi (người giữ khóa) có thể nhận được một cặp khóa và chứng chỉ theo nhiều cách khác nhau. Cách đơn giản nhất là đặt chúng cục bộ, sau đó nộp đơn lên CA để lấy chứng chỉ, gửi dữ liệu khóa công khai. Trong các trường hợp khác, khóa có thể được tạo tập trung và phân phối bởi các kênh an toàn cho người giữ khóa.

Trong hầu hết các trường hợp chữ ký, cặp khóa được tạo bởi người giữ khóa, vì nó giới hạn khả năng khóa riêng bị lộ.

Khi một chữ ký được tạo và gửi cho người nhận, thông thường, khóa công khai cũng được đính kèm với thông báo (ví dụ: tiêu chuẩn cho điều này là XMLDSIG trong đó một trường tùy chọn trong thành phần là chứng chỉ kỹ thuật số, bao gồm khóa công khai).

Trong trường hợp băng thông là một vấn đề, các khóa công khai có thể được giữ trong một kho lưu trữ trung tâm - như cơ sở dữ liệu nhân viên hoặc thường là Active Directory hoặc máy chủ LDAP khác. Sau đó, chữ ký có thể tham chiếu danh tính của người gửi và quá trình xác minh có thể bao gồm một yêu cầu đến kho lưu trữ để lấy khóa công khai.

* how the public key is identified for the specific digital signature?

Thông thường thông qua một chứng chỉ kỹ thuật số.

Khi người gửi đi tạo chữ ký số, anh ta thường có các quy tắc liên quan đến cặp khóa nào anh ta có thể sử dụng cho mục đích gì. Trong tiêu chuẩn chứng chỉ X509, chứng chỉ xác định trường Sử dụng khóa nhằm giải thích các mục đích cụ thể cho cặp khóa được mô tả bởi chứng chỉ. Một trong những ứng dụng đó là Chữ ký số và nhiều hệ thống phần mềm sẽ không cho phép bạn tạo chữ ký mà không có cài đặt đó trong chứng chỉ.

CA thực sự xác định các cài đặt này trước khi ký chứng chỉ. Trong nhiều chính sách bảo mật, một số cài đặt sử dụng khóa nhất định có thể được cấp nếu không có quy trình xác thực cụ thể, do đó, trách nhiệm tìm ra điều này thuộc về CA và những người chịu trách nhiệm về nó (thường là RA, Cơ quan đăng ký).

Nếu, vì một số lý do, bạn có một hệ thống không sử dụng chứng chỉ kỹ thuật số, có thể có các cách khác để xác định cặp khóa nào. Cuối cùng, nó thuộc về các chính sách bảo mật tại chỗ và những gì được coi là phù hợp cho hoạt động nhất định yêu cầu chữ ký.

37
bethlakshmi

Vấn đề bạn đề cập (làm thế nào để chúng tôi phân phối khóa công khai?) Chính xác là những gì Cơ sở hạ tầng khóa công khai có nghĩa là để giải quyết, và về cơ bản, PKI là một nhóm các Cơ quan chứng nhận.

Trong một thiết lập đơn giản, chúng ta sẽ có một thư mục trung tâm của các khóa công khai của mọi người; hãy tưởng tượng nó như một phiến đá cẩm thạch lớn ở giữa công viên công cộng, với các khóa công khai được khắc trên đó. Bất cứ ai cũng có thể nhìn vào nó, và chắc chắn rằng đó là "thứ chính hãng" bởi vì bạn không thể đơn giản Vẽ lên thứ gì đó được khắc.

Một phần công cộng không được kết nối tốt với Internet và các máy tính không thể "thấy" rằng một số thông tin được khắc và do đó "được bảo đảm chính xác". Ngoài ra, có thể có hàng tỷ người nắm giữ chìa khóa ngoài đó, đòi hỏi phải có một mảnh đá khá lớn. Vì vậy, bản dịch sang toàn bộ thế giới máy tính là chứng chỉ.

Chứng chỉ là một cấu trúc nhỏ chứa, ở định dạng thông thường:

  • an danh tính (tên của chủ sở hữu khóa);
  • a khóa công khai (thuộc sở hữu của người đó);
  • a chữ ký số được tính trên hai phần trước bởi Tổ chức chứng nhận.

Vai trò của CA là, chính xác, cấp giấy chứng nhận, tức là ký chúng. Bạn có thể nghĩ về một chứng chỉ như là một mảnh của tấm đá cẩm thạch lớn có chứa một khóa công khai cụ thể. Để sử dụng khóa chung, trước tiên bạn muốn đảm bảo rằng khóa này chứa thông tin chính xác; để làm điều đó, bạn xác minh chữ ký một chứng chỉ, sử dụng khóa chung của CA. Nếu chữ ký đó là chính xác, thì bạn biết rằng CA đã ký chứng chỉ đó và vì CA chỉ ký chứng chỉ sau khi đã kiểm tra danh tính chủ sở hữu khóa (thông qua giao thức vật lý một lần với họ, ví dụ: chủ sở hữu khóa đã hiển thị ID), bạn có thể "tin chắc" rằng khóa công khai trong chứng chỉ thực sự thuộc về chủ sở hữu được xác định.

Bây giờ bạn có thể nói với tôi rằng chúng tôi chưa giải quyết được vấn đề gì cả, chỉ cần di chuyển nó xung quanh: để xác minh chứng chỉ bạn phải biết khóa công khai CA; Làm sao bạn biết đó key? Câu trả lời là trong các con số: một CA nhất định có thể ký một số chứng chỉ, có thể là hàng triệu trong số chúng. Vì vậy, có thể có, một trăm CA, cấp giấy chứng nhận cho toàn thế giới. Khi biết rằng hàng trăm khóa công khai, bạn có thể xác minh bất kỳ chứng chỉ. Ở các thế giới khác, chúng tôi không chỉ di chuyển vấn đề, chúng tôi cũng tập trung nó: chúng tôi đã biến vấn đề phân phối hàng tỷ khóa công khai thành vấn đề phân phối hàng trăm trong số chúng .

Và, lo! đó chính xác là cách nó được thực hiện cho trang web HTTPS. Trong các giai đoạn ban đầu của kết nối giữa trình duyệt của bạn và máy chủ Web, máy chủ sẽ gửi chứng chỉ của anh ấy. Trình duyệt sau đó xác minh chứng chỉ dựa vào danh sách khóa công khai CA được mã hóa cứng (đã được bao gồm lịch sự của trình duyệt hoặc nhà cung cấp hệ điều hành). Khi trình duyệt đã xác minh chứng chỉ, nó sẽ biết khóa chung của máy chủ và sử dụng nó để thiết lập đường hầm bí mật với máy chủ.

27
Thomas Pornin

Chữ ký số thường được thực hiện theo quy trình hai bước. Bước đầu tiên là sử dụng thuật toán băm an toàn trên dữ liệu. Các thuật toán SHA-2 sẽ là một ví dụ về điều đó. Bước thứ hai là mã hóa đầu ra kết quả bằng khóa ký riêng.

Do đó, khi một chữ ký được xác minh bằng khóa chung, nó sẽ giải mã thành một hàm băm khớp với thông điệp. Băm đó chỉ có thể được giải mã bằng khóa chung nếu nó được mã hóa bằng khóa ký riêng.

Khóa công khai được tạo bởi chủ sở hữu khóa. Cơ quan cấp chứng chỉ ký chứng chỉ khóa công khai. Chủ sở hữu máy chủ cài đặt chứng chỉ đã ký. Trong SSL (mà tôi cho rằng bạn đang đề cập đến), chứng chỉ bao gồm khóa và chữ ký từ cơ quan cấp chứng chỉ được thông qua bởi máy chủ mà bạn kết nối. Phần mềm của bạn kiểm tra xem trang web đang kết nối có khớp với dữ liệu trong chứng chỉ hay không và xác thực chứng chỉ bằng cách kiểm tra chữ ký của nó dựa trên khóa của cơ quan cấp chứng chỉ. Cơ quan cấp chứng chỉ sử dụng khóa của họ để ký và máy chủ sử dụng khóa của họ để mã hóa.

12
Jeff Ferland

Bạn biết khóa công khai là gì, đúng không?

Bạn muốn mã hóa thứ gì đó thành bob. Vì vậy, bạn sẽ cần khóa công khai của anh ấy. Bạn tìm kiếm nó trên internet, nhưng bạn không thể chắc chắn rằng khóa công khai bạn có thực sự thuộc về anh ấy.

Vì vậy, bạn có một cách tiếp cận khác: lấy khóa từ ai đó có thể đảm bảo với bạn rằng một khóa cụ thể thuộc về bob. CA làm chính xác điều đó.

Làm thế nào CA làm điều đó? Đơn giản. bob tự nhận mình đến CA và gửi cho họ khóa công khai của anh ấy. Theo cách này, CA có một cái gì đó liên quan đến "danh tính" của bob với khóa công khai này. Và bạn có thể tin tưởng rằng khóa công khai mà bạn có thực sự thuộc về bob.

7
woliveirajr