Vấn đề phân bổ khóa bí mật là vấn đề truyền khóa bí mật. Nếu khóa là đối xứng, thì trao đổi khóa chỉ có thể được thực hiện ngoại tuyến. Nếu khóa được truyền trực tuyến, nó có thể bị chặn. Do đó, mã hóa không đối xứng được sử dụng, hai khóa, một khóa riêng được giữ bởi chính nó và khóa công khai khác được tiết lộ. Khóa công khai có thể được truyền trực tuyến. Không cần giao dịch ngoại tuyến. Đảm bảo bảo mật dữ liệu.
Như được hiển thị trong hình trên, nút A gửi dữ liệu đến nút B và mã hóa khóa công khai được sử dụng tại thời điểm này. Node A thu được khóa công khai của nút B từ khóa công khai của chính nó để mã hóa dữ liệu bản rõ và lấy mã hóa và gửi nó đến Node B. Node B sử dụng khóa riêng của mình để giải mã.
2. Tin nhắn giả mạo không thể được giải quyết. nó
1. Vì khóa công khai của A là công khai, một khi tin tặc trực tuyến sẽ chặn tin nhắn, nên bản mã là vô dụng. Nói một cách thẳng thắn, phương pháp mã hóa này có thể được giải quyết miễn là tin nhắn bị chặn.
2. Cũng có vấn đề với việc không thể xác định nguồn tin nhắn và vấn đề giả mạo tin nhắn.
Như được hiển thị trong hình trên, trước khi gửi dữ liệu, Node A sử dụng khóa công khai đầu tiên của B để mã hóa Mật mã 1, sau đó sử dụng khóa riêng của A để mã hóa Ciphertext 1 để có được mã hóa 2.
1. Khi mã hóa dữ liệu 2 bị chặn trên mạng, vì khóa công khai của A là công khai, Ciphertext 2 có thể được giải mã bằng khóa công khai của A và thu được Ciphertext 1. Vì vậy, đây dường như là mã hóa kép, nhưng trên thực tế, chữ ký khóa riêng trên lớp cuối cùng là không hợp lệ. Nói chung, tất cả chúng ta đều muốn chữ ký được ký trên dữ liệu gốc nhất. Nếu chữ ký được đặt phía sau, chữ ký thiếu bảo mật vì khóa công khai là công khai.
2. Có những vấn đề về hiệu suất, bản thân mã hóa không đối xứng là rất không hiệu quả và hai quá trình mã hóa đã được thực hiện.
Như được hiển thị ở trên, Node A được mã hóa đầu tiên bằng khóa riêng của A, sau đó được mã hóa bằng khóa công khai của B. Sau khi nhận được tin nhắn, Node B trước tiên sử dụng khóa riêng của B để giải mã và sau đó sử dụng khóa công khai của A để giải mã.
1. Khi dữ liệu bản mã 2 bị chặn bởi một hacker, vì Cophertext 2 chỉ có thể được giải mã bằng khóa riêng của B. Do đó, sự an toàn là cao nhất.
2. Khi Node B giải mã bản mã 1, nó chỉ có thể sử dụng khóa công khai của A để giải mã nó. Chỉ dữ liệu được mã hóa bởi khóa riêng của A mới có thể được giải mã thành công khóa công khai của A. Chỉ nút A có khóa riêng của A, do đó có thể xác định rằng dữ liệu được truyền bởi nút A.
Sau hai mã hóa không đối xứng, các vấn đề về hiệu suất tương đối nghiêm trọng.
Dựa trên vấn đề giả mạo dữ liệu trên, chúng tôi đã giới thiệu xác thực tin nhắn. Quá trình mã hóa sau xác thực tin nhắn như sau:
Trước nút A gửi tin nhắn, cần phải thực hiện các tính toán băm trên dữ liệu bản rõ. Nhận tóm tắt, và sau đógửi chiếu sáng đến nút B cùng lúc với dữ liệu gốc. Khi Node B nhận tin nhắn, nó sẽ giải mã tin nhắn. Tóm tắt băm và dữ liệu gốc được phân tích cú pháp, và sau đó tính toán băm tương tự được thực hiện trên dữ liệu gốc để có được tóm tắt 1 và tóm tắt được so sánh với tóm tắt 1.
Trong quá trình truyền, miễn là Cophertext 2 bị giả mạo, Hash và Hash1 cuối cùng sẽ khác nhau.
Vấn đề chữ ký không thể được giải quyết, nghĩa là cả hai bên đều tấn công lẫn nhau. A không bao giờ thừa nhận những tin nhắn anh ấy gửi. Ví dụ: A gửi thông báo lỗi đến B, khiến B bị tổn thất. Nhưng sự từ chối của A không được gửi bởi chính mình.
Trong quá trình (iii), không có cách nào để giải quyết các cuộc tấn công lẫn nhau giữa hai bên. Nó có nghĩa là gì? Có thể là do tin nhắn được gửi bởi A không tốt cho Node A, và sau đó một sự phủ nhận rằng tin nhắn không được gửi bởi nó.
Để giải quyết vấn đề này, chữ ký đã được giới thiệu. Ở đây chúng tôi hợp nhất phương thức mã hóa trong (ii) -4 với chữ ký tin nhắn.
Trong hình trên, chúng tôi sử dụng khóa riêng của nút A để ký thông tin tóm tắt mà nó gửi, sau đó mã hóa chữ ký + văn bản gốc, sau đó sử dụng khóa công khai của B để mã hóa nó. VàSau khi B có được bản mã, lần đầu tiên giải mã nó bằng khóa riêng của B, và sau đó giải mã tiêu hóa bằng khóa công khai của A. Chỉ bằng cách so sánh xem nội dung của tiêu hóa có giống nhau hai lần hay không. Điều này không chỉ tránh được vấn đề giả mạo, mà còn tránh các cuộc tấn công giữa hai bên. Bởi vì một thông tin đã ký, nó không thể bị từ chối.
Để giải quyết các vấn đề về hiệu suất khi mã hóa dữ liệu không đối xứng, mã hóa lai thường được sử dụng. Ở đây chúng ta cần giới thiệu mã hóa đối xứng, như được hiển thị trong hình dưới đây:
Khi mã hóa dữ liệu, chúng ta sử dụng khóa đối xứng được cả hai bên chia sẻ để mã hóa. Cố gắng không truyền các khóa đối xứng trên mạng để tránh mất. Khóa đối xứng được chia sẻ ở đây được tính toán dựa trên khóa riêng của nó và khóa công khai của bên kia, và sau đó dữ liệu được mã hóa bằng khóa đối xứng. Khi bên kia nhận được dữ liệu, nó cũng tính toán khóa đối xứng và giải mã bản mã.
Các khóa đối xứng ở trên không an toàn, bởi vì khóa riêng của A và khóa công khai của A thường được cố định trong một khoảng thời gian ngắn, do đó các khóa đối xứng được chia sẻ cũng được cố định. Để tăng cường bảo mật, cách tốt nhất là tạo khóa đối xứng được chia sẻ tạm thời cho mỗi tương tác. Vậy làm thế nào chúng ta có thể tạo một khóa đối xứng ngẫu nhiên trong mỗi tương tác mà không cần truyền?
Vậy làm thế nào để tạo khóa chia sẻ ngẫu nhiên để mã hóa?
Đối với nút người gửi A, một cặp khóa không đối xứng tạm thời được tạo mỗi khi nó được gửi, và sau đó một khóa đối xứng có thể được tính toán dựa trên khóa công khai của nút B và khóa riêng không đối xứng tạm thời (KA thuật toán-keyagreement). Sau đó, dữ liệu được mã hóa bằng khóa đối xứng. Quá trình cho khóa chia sẻ như sau:
Đối với nút B, khi nhậnđược dữ liệu được truyền, khóa công khai ngẫu nhiên của nút A được phân tích cú pháp, và sau đó khóa đối xứng (thuật toán KA) được tính toán bằng cách sử dụng khóa công khai ngẫu nhiên của nút A và khóa riêng của Node B. Sau đó sử dụng dữ liệu bí mật khóa đối xứng.
Các phương thức mã hóa ở trên vẫn có nhiều vấn đề, chẳng hạn như cách tránh các cuộc tấn công phát lại (thêm không phải vào thông báo) và các vấn đề như bảng cầu vồng (tham khảo cơ chế KDF để giải quyết). Do thời gian và khả năng hạn chế, nó tạm thời bị bỏ qua.
Vậy loại mã hóa nên được sử dụng?
Nó chủ yếu được xem xét dựa trên mức bảo mật của dữ liệu sẽ được truyền. Trên thực tế, nó đủ để xác thực và ký dữ liệu không quan trọng, nhưng dữ liệu rất quan trọng đòi hỏi một giải pháp mã hóa với mức bảo mật tương đối cao.
Bộ mật khẩu là một khái niệm về giao thức mạng. Nó chủ yếu bao gồm các thuật toán như xác thực nhận dạng, mã hóa, xác thực tin nhắn (MAC) và trao đổi khóa.
Trong quá trình truyền của toàn bộ mạng, theo bộ mật mã, các loại thuật toán sau đây được chia thành các loại sau:
Thuật toán trao đổi khóa: chẳng hạn như ECDHE và RSA. Nó chủ yếu được sử dụng cho cách xác thực khi bắt tay máy khách và máy chủ.
Thuật toán xác thực tin nhắn: chẳng hạn như SHA1, SHA2, SHA3. Chủ yếu được sử dụng cho các tiêu hóa tin nhắn.
Thuật toán mã hóa hàng loạt: Ví dụ: AES, chủ yếu được sử dụng để mã hóa luồng thông tin.
Thuật toán số giả ngẫu nhiên: Ví dụ: hàm giả ngẫu nhiên của TLS1.2 sử dụng hàm băm của thuật toán MAC để tạo khóa chính-khóa riêng 48 byte được chia sẻ bởi cả hai bên. Khóa chính hoạt động như một nguồn entropy khi tạo khóa phiên (chẳng hạn như tạo Mac).
Trong mạng, việc truyền tin nhắn thường yêu cầu mã hóa trong bốn giai đoạn sau để đảm bảo truyền tin nhắn an toàn và đáng tin cậy.
Giai đoạn đàm phán bắt tay/mạng:
Trong giai đoạn bắt tay giữa hai bên, cần phải đàm phán liên kết. Các thuật toán mã hóa chính bao gồm RSA, DH, ECDH, v.v. Các phương thức mã hóa chính được sử dụng bao gồm RSA, DSA, ECDSA (mã hóa ECC, chữ ký DSA), v.v. Các phương thức mã hóa chính được sử dụng bao gồm DES, RC4, AES, v.v. Các phương pháp mã hóa chính bao gồm MD5, SHA1, SHA2, SHA3, v.v. Đây là một thuật toán tạo ra các khóa công khai và riêng tư dựa trên sản phẩm DOT trên hình elip. Được sử dụng để tạo các khóa tư nhân công cộng.
ECDSA: Được sử dụng cho chữ ký số, là thuật toán chữ ký kỹ thuật số. Một chữ ký kỹ thuật số hợp lệ cho người nhận một lý do đểThông báo được tạo bởi người gửi đã biết, vì vậy người gửi không thể phủ nhận rằng tin nhắn đã được gửi (xác thực và không thể phủ nhận) và tin nhắn đã không thay đổi trong quá trình vận chuyển. Thuật toán chữ ký ECDSA là sự kết hợp giữa ECC và DSA. Toàn bộ quá trình chữ ký tương tự như DSA. Sự khác biệt là thuật toán được thông qua trong chữ ký là ECC và giá trị ký kết cuối cùng cũng được chia thành R. Chủ yếu được sử dụng trong giai đoạn xác thực danh tính.
ECDH: Nó cũng là khóa cây Hoffman dựa trên thuậttoán ECC. Thông qua ECDH, cả hai bên có thể đàm phán một bí mật được chia sẻ mà không chia sẻ bất kỳ bí mật nào. Khóa bí mật được chia sẻ này tạm thời được tạo ngẫu nhiên cho giao tiếp hiện tại. Khi giao tiếp bị gián đoạn, khóa biến mất. Nó chủ yếu được sử dụng trong giai đoạn tư vấn bắt tay.
ECIES: là một sơ đồ mã hóa tích hợp, còn được gọi là sơ đồ mã hóa lai, cung cấp bảo mật ngữ nghĩa chống lại các cuộc tấn công văn bản mật khẩu được chọn và được chọn. ECIES có thể sử dụng các loại chức năng khác nhau: Chức năng đàm phán chính (KA), hàm dẫn xuất chính (KDF), sơ đồ mã hóa đối xứng (ENC), hàm băm (băm) và hàm H-MAC (MAC).
ECC là một thuật toán mã hóa hình elip, chủ yếu cho biết làm thế nào để tạo ra hình elip theo khóa công khai và riêng tư, và không thể đảo ngược. ECDSA chủ yếu sử dụng thuật toán ECC để ký, trong khi ECDH sử dụng thuật toán ECC để tạo các khóa đối xứng. Tất cả ba trên là các ứng dụng của thuật toán mã hóa ECC. Trong các kịch bản thực, chúng ta thường sử dụng mã hóa lai (mã hóa đối xứng, mã hóa không đối xứng kết hợp, công nghệ chữ ký, v.v.). ECIES là một giải pháp mã hóa tích hợp (lai) được cung cấp bởi thuật toán ECC cơ bản. Điều này bao gồm mã hóa không đối xứng, mã hóa đối xứng và các hàm chữ ký.
metacharset = "UTF-8"
Điều kiện đặt hàng trước này là để đảm bảo rằng đường cong không chứa các điểm kỳ dị.
Vì vậy, khi các tham số đường cong A và B tiếp tục thay đổi, đường cong cũng có các hình dạng khác nhau. Ví dụ:
Các nguyên tắc cơ bản của tất cả các mã hóa không đối xứng về cơ bản dựa trên công thức k = kg. Trong đó k đại diện cho khóa công khai, K đại diện cho khóa riêng và G đại diện cho một điểm cơ bản được chọn. Thuật toán mã hóa không đối xứng là để đảm bảo rằng công thức không thể được tính toán nghịch đảo (nghĩa là G/K không thể được tính toán). *
ECC tính toán khóa công khai và riêng tư như thế nào? Ở đây tôi sẽ mô tả nó theo sự hiểu biết của riêng tôi. nó Và đảm bảo rằng khóa k công khai cũng phải ở trên đường cong. *
Vậy làm thế nào để tính toán kg? Làm thế nào để tính toán kg để đảm bảo rằng kết quả cuối cùng là không thể đảo ngược? Đây là những gì thuật toán ECC cần giải quyết.
Đầu tiên, chúng tôi sẽ chọn một đường cong ECC một cách ngẫu nhiên, a = -3, b = 7 Để có được đường cong sau:
Trên đường cong này, tôi chọn ngẫu nhiên hai điểm. Làm cách nào để tính toán nhân của hai điểm này? Chúng ta có thể đơn giản hóa vấn đề. Phép nhân đều có thể được biểu thị bằng cách bổ sung, chẳng hạn như 22 = 2+2, 35 = 5+5+5. Sau đó, miễn là chúng ta có thể tính toán bổ sung trên đường cong, về mặt lý thuyết chúng ta có thể tính toán nhân. Do đó, miễn là bạn có thể thêm các tính toán trên đường cong này, về mặt lý thuyết bạn có thể tính toán phép nhân và tính toán lý thuyết giá trị của các biểu thức như k*g.
Làm thế nào để tính toán việc bổ sung hai điểm trên đường cong? Ở đây, để đảm bảo không thể đảo ngược, ECC tùy chỉnh hệ thống bổ sung trên đường cong.
Trong thực tế, 1+1 =2, 2+2 = 4, nhưng trong thuật toán ECC, hệ thống bổ sung mà chúng tôi hiểu là không thể. Do đó, một hệ thống bổ sung tùy chỉnh phù hợp cho đường cong này là cần thiết.
Định nghĩa ECC: ngẫu nhiên tìm một đường thẳng trong biểu đồ, giao với đường cong ECC ở ba điểm (và có thể hai điểm), ba điểm này là P, Q và R.
Sau đó, P+Q+R = 0. Trong đó 0 không phải là điểm 0 trên trục, mà là điểm vô hạn trong ECC. Điều đó có nghĩa là, điểm vô cực được định nghĩa là 0 điểm.
Tương tự, chúng ta có thể nhận được p+q = -r. Vì R và -R đối xứng về trục X, chúng ta có thể tìm thấy tọa độ của nó trên đường cong.
p+r+q = 0, vì vậy p+r = -q, như trong hình trên.
Các ở trên mô tả cách bổ sung được thực hiện trong thế giới của các đường cong ECC.
Từ hình trên, có thể thấy rằng chỉ có hai giao điểm giữa một đường thẳng và một đường cong, điều đó có nghĩa là một đường thẳng là tiếp tuyến của một đường cong. Tại thời điểm này P và R chồng chéo.
nghĩa là, p = r. Theo hệ thống bổ sung ECC trên, p+r+q = 0, bạn có thể thu được p+r+q = 2p+q = 2r+q = 0
để bạn nhận được 2p = -q (đó có phải là công thức k của thuật toán không đối xứng của chúng tôi không?= kg đang tiến gần hơn).
Vì vậy, chúng tôi đã đi đến một kết luận rằng có thể tính toán nhân, nhưng phép nhân chỉ có thể được tính khi điểm tiếp tuyến và nó chỉ có thể được tính bằng phép nhân của 2. Thuật toán.
Vậy chúng ta có thể tính toán nhân của bất kỳ số nào một cách ngẫu nhiên không? Câu trả lời là có. Đó là, phương pháp tính toán sản phẩm DOT.
Chọn một số ngẫu nhiên K, vậy k*p bằng nhau là gì?
Chúng ta biết rằng trong thế giới máy tính, mọi thứ đều là nhị phân. Vì ECC có thể tính toán phép nhân 2, chúng ta có thể mô tả số K ngẫu nhiên là nhị phân và sau đó tính toán nó. Nếu k = 151 = 10010111
Vì 2p = -q, kp được tính theo cách này. Đây là thuật toán nhiều thế hệ. Do đó, theo hệ thống đường cong ECC, có thể tính toán nhân, do đó, người ta cho rằng phương pháp mã hóa không đối xứng này là khả thi.
Đối với lý do tại sao tính toán này là không thể đảo ngược. Điều này đòi hỏi rất nhiều khấu trừ, và tôi cũng không hiểu nó. Nhưng tôi nghĩ rằng nó có thể được hiểu theo cách này:
Đồng hồ của chúng tôi thường có thang thời gian. Bây giờ nếu chúng ta sử dụng 0:00:00 vào ngày 1 tháng 1 năm 1990 làm điểm xuất phát, nếu chúng ta nói với bạn rằng thời gian đã trôi qua cả năm cho đến điểm khởi đầu, thì chúng ta có thể tính thời gian khi nó xuất hiện, nghĩa là chúng ta có thể chỉ ra con trỏ giờ, phút và thứ hai trên đồng hồ lên 00:00:00. Nhưng mặt khác, tôi đã nói rằng giờ, phút và cũ trên đồng hồ hiện đang chỉ vào 00:00:00. Bạn có thể cho tôi biết bao nhiêu năm đã trôi qua kể từ điểm khởi đầu?
Thuật toán chữ ký ECDSA về cơ bản tương tự như các DSA và RSA khác, cả hai đều sử dụng chữ ký khóa riêng và xác minh khóa công khai. Tuy nhiên, hệ thống thuật toán sử dụng thuật toán ECC. Cả hai bên tham gia tương tác phải áp dụng cùng một hệ thống tham số. Nguyên tắc chữ ký như sau:
Chọn một điểm vô hạntrên đường cong làm điểm cơ bản g = (x, y). Ngẫu nhiên lấy một chút k trên đường cong làm khóa riêng và k = k*g tính toán khóa công khai.
Quá trình chữ ký:
Tạo số ngẫu nhiên r và tính toán Rg.
Quá trình xác minh chữ ký:
Nhận tin nhắn m, rg, s
Tính giá trị băm H Dựa trên thông báo
Tính toán Hg/s+xk/s theo phím công khai của người gửi, tính toán Nếu bằng nhau, xác minh là thành công.
Công thức suy luận:
hg/s+xk/s = hg/s+x (kg)/s = (h+xk)/gs = rg
Đây là một ví dụ trên Wiki để minh họa cách tạo khóa bí mật chung. Bạn cũng có thể tham khảo ví dụ về Aliceandbob.
Alice và Bob cần giao tiếp, và cả hai bên đều có tiền đề là các khóa công khai và riêng tư được tạo bởi ECC dựa trên cùng một hệ thống tham số. Do đó, có ECC và có điểm cơ sở chung G.
Giai đoạn tạo khóa bí mật:
Alice sử dụng thuật toán khóa công khai ka = ka*g để tạo khóa ka công khai và ka khóa công khai và ka ka công khai được tiết lộ.
Bob sử dụng thuật toán khóa công khai kb = kb*g để tạo khóa công khai Kb và khóa riêng KB và khóa công khai công khai KB.
Điện toán ECDH Giai đoạn:
Alice sử dụng công thức tính toán Q = ka*kb để tính toán khóa bí mật Q.
Bob sử dụng công thức tính toán Q '= kb*ka để tính toán khóa bí mật Q'.
Xác minh khóa chia sẻ:
q = kakb = ka*kb*g = ka*g*kb = ka*kb = kb*ka = q '
Trong Ethereum, các nội dung khác của bộ mã hóa của ECIEC được sử dụng:
1. Trong số đó, thuật toán băm sử dụng thuật toán SHA3 an toàn nhất Keccak.
2. Thuật toán chữ ký sử dụng ECDSA
3. Phương pháp xác thực sử dụng H-MAC
4. Hệ thống tham số ECC sử dụng SECP256K1. Đối với các hệ thống tham số khác, hãy tham khảo ở đây, H-MAC được gọi là MessageAuthentCode dựa trên băm. Mô hình như sau:
Khi giao tiếp UDP trong Ethereum (các phương thức mã hóa của giao tiếp RPC là khác nhau), phương pháp triển khai trên được áp dụng và mở rộng.
Đầu tiên, cấu trúc giao tiếp UDP của Ethereum như sau:
trong đó sig là thông tin chữ ký được mã hóa bằng khóa riêng. MAC là một bản tóm tắt của toàn bộ tin nhắn, PTYPE là loại sự kiện của thông báo và dữ liệu là dữ liệu truyền được mã hóa bởi RLP.
Toàn bộ mã hóa, xác thực và mô hình chữ ký của UDP của nó như sau:
Thuật toán mật mã blockchain như thế nào? Được sử dụng bởi blockchain:
Thuật toán băm
Thuật toán băm
Là công nghệ cơ bản của blockchain, bản chất của hàm băm là để ánh xạ một tập hợp dữ liệu (giới hạn) Đơn giản; SHA2, SHA3. 448mod512), số lượng bit được điền là 1 đến 512, bit cao nhất của chuỗi bit là 1 và các bit còn lại là 0. Bộ đệm để lưu trữ kết quả giữa và cuối cùng của hàm băm WT là gói sau gói, t = 1,2, , 16. Toàn bộ hệ thống blockchain. Haval-128 và Ripemd, Umpsessionofcrypto2004, Howtobreakmd5 và các chức năng băm khác, Eurocrypt2005). 63, rất khó để đạt được trong các tình huống thực tế. Thuật toán, trường hợp tấn công thực tế của thuật toán SHA-1 cũng nổi lên, và nó cũng đánh dấu rằng thuật toán SHA-1 cuối cùng đã đến cuối đời. Tiêu chuẩn băm mới. Keccak được chọn là người chiếnthắng trong cuộc thi NIST và trở thành Sha-3Kế hoạch đơn giản và thuận tiện cho việc thực hiện phần cứng. Keccak đã có thể chịu được các cuộc tấn công với độ phức tạp tối thiểu là 2n, trong đó n là kích thước của băm. Nó có một biên độ an toàn rộng. Cho đến nay, phân tích mật khẩu của bên thứ ba đã chỉ ra rằng Keccak không có điểm yếu nghiêm trọng.
Thuật toán Kangarootwelve là một biến thể Keccak được đề xuất gần đây. Vòng tính toán của nó đã được giảm xuống còn 12, nhưng các chức năng của nó chưa được điều chỉnh so với thuật toán ban đầu.
Zero-AssocledgeProof
Trong mật mã, không hiểu biết (ZKP) là một chiến lược được một bên sử dụng để chứng minh với bên kia rằng nó biết tin nhắn X mà không tiết lộ bất cứ điều gì khác liên quan đến X. Cái trước được gọi là một biểu tình và cái sau được gọi là một người xác minh. Hãy tưởng tượng một kịch bản trong một hệ thống, tất cả người dùng có bản sao lưu các tệp tương ứng của họ và sử dụng các khóa riêng tương ứng của họ để mã hóa và tiết lộ chúng trong hệ thống. Giả sử tại một số điểm, người dùng Alice muốn cung cấp phần của cô ấy cho người dùng Bob và vấn đề phát sinh tại thời điểm này là cách Alice thuyết phục Bob rằng cô ấy thực sự đã gửi đúng tệp. Một cách đơn giản để đối phó với điều này là gửi cho Alice khóa riêng của mình cho Bob, đó chính xác là chiến lược mà Alice không muốn chọn, bởi vì Bob có thể dễ dàng nhận được toàn bộ nội dung tệp của Alice. Bằng chứng không hiểu biết là một giải pháp có thể được sử dụng để giải quyết các vấn đề trên. Bằng chứng không hiểu biết chủ yếu dựa trên lý thuyết phức tạp và có các phần mở rộng lý thuyết sâu rộng trong mật mã. Trong lý thuyết phức tạp, chúng tôi chủ yếu thảo luận về ngôn ngữ nào có thể được sử dụng cho các ứng dụng bằng chứng không hiểu biết, trong khi trong mật mã, chúng tôi chủ yếu thảo luận về cách xây dựng các loại giải pháp chứng minh kiến thức không và làm cho chúng đủ xuất sắc và hiệu quả.
Chữ ký nhóm chữ ký vòng
1. Chữ ký nhóm
Trong sơ đồ chữ ký nhóm, bất kỳ thành viên nào trong nhóm đều có thể ký các tin nhắn thay mặt cho toàn bộ nhóm một cách ẩn danh. Giống như các chữ ký kỹ thuật số khác, chữ ký nhóm có thể được xác minh công khai và có thể được xác minh chỉ bằng một khóa công khai nhóm duy nhất. Quy trình chung của chữ ký nhóm:
(1) Khởi tạo, Trình quản lý nhóm thiết lập tài nguyên nhóm và tạo khóa công khai nhóm tương ứng và khóa riêng nhóm (GroupPprivateKey). Khóa công khai nhóm được tiết lộ cho tất cả người dùng trong toàn bộ hệ thống, chẳng hạn như các thành viên nhóm, người xác minh, v.v.
(3) Chữ ký, các thành viên nhóm sử dụng chứng chỉ nhóm thu được để ký tệp để tạo chữ ký nhóm.
(4) Xác minh, đồng thời, trình xác minh chỉ có thể xác minh tính chính xác của chữ ký nhóm kết quả bằng cách sử dụng khóa công khai nhóm, nhưng không thể xác định người ký chính thức trong nhóm.
(5) Công khai, người quản lý nhóm có thể sử dụng khóa riêng của nhóm để theo dõi chữ ký nhóm được tạo bởingười dùng nhóm và phơi bày danh tính của người ký.
2. Chữ ký vòng
Năm 2001, lần đầu tiên ba máy mật mã, Shamir và Tauman đề xuất chữ ký vòng. Đó là một chữ ký nhóm đơn giản hóa, chỉ cần các thành viên vòng và không có người quản lý, và không cần sự hợp tác giữa các thành viên vòng. Trong sơ đồ chữ ký vòng, người ký trước tiên chọn một bộ người ký tạm thời, bao gồm cả người ký. Sau đó, người ký có thể sử dụng khóa riêng của mình và khóa công khai của người khác trong bộ sưu tập chữ ký để tạo ra một chữ ký một cách độc lập mà không cần sự giúp đỡ của người khác. Các thành viên của bộ sưu tập người ký có thể không biết họ được bao gồm.
Sơ đồ chữ ký vòng bao gồm các phần sau:
(1) Tạo khóa. Một cặp khóa (PKI khóa công khai, trượt tuyết khóa riêng) được tạo cho mỗi thành viên trong vòng.
(2) Chữ ký. Người ký tạo chữ ký A for message m bằng khóa riêng của mình và bất kỳ thành viên N vòng nào (bao gồm cả chính anh ta).
(3) Xác minh chữ ký. Bộ xác minh xác minh xem chữ ký có được ký bởi một thành viên của vòng dựa trên chữ ký vòng và tin nhắn m hay không. Nếu nó hợp lệ, nó sẽ được nhận, nếu không nó sẽ bị loại bỏ.
Bản chất của chữ ký vòng thỏa mãn:
(1) Tính ẩn danh vô điều kiện: Kẻ tấn công không thể xác định thành viên nào của chữ ký được tạo bởi và ngay cả khi thu được khóa riêng của thành viên vòng, xác suất không vượt quá 1/n.
(2) Sự đúng đắn: Chữ ký phải được xác minh bởi tất cả những người khác.
(3) Không gian lận: Các thành viên khác trong vòng không thể tạo ra chữ ký thực sự và những kẻ tấn công bên ngoài không thể tạo ra một chữ ký cho tin nhắn M ngay cả khi họ có được chữ ký vòng hợp lệ.
3. So sánh giữa chữ ký vòng và chữ ký nhóm
(1) tính ẩn danh. Tất cả đều là một loại thế hệ cá nhânHệ thống chữ ký nhóm. Trình xác minh có thể xác minh rằng chữ ký được ký bởi một thành viên của nhóm, nhưng anh ta không thể biết thành viên nào để đạt được vai trò ẩn danh của người ký.
(2) Tính truy xuất nguồn gốc. Trong chữ ký nhóm, sự tồn tại của quản trị viên nhóm đảm bảo rằng chữ ký là truy xuất.