tôi đang nhìn vào một bài nghiên cứu về sự không an toàn của việc sử dụng cụ thể (sai) các cam kết của Pedersen.
Trước tiên, tôi sẽ thực hiện các bước của cam kết Pedersen để có thể chỉ ra nếu tôi có hiểu lầm cơ bản.
Hiểu biết của tôi về các cam kết của Pedersen
Đầu tiên, chúng tôi nói rằng Bob muốn Alice gửi một tin nhắn, do đó anh ta tạo ra hai số nguyên tố P
và q
.
p <--- số nguyên tố ngẫu nhiên
q <--- số nguyên tố ngẫu nhiên
Bob sau đó tạo máy phát điện g
, theo thứ tự của q
và ở trong nhóm $Z_{p}^*$.
g <--- $\in Z_{q}^*$
Sau đó, anh ta chọn một giá trị bí mật x
Trong $Z_{q} $:
x <--- $\in Z_{q} $
x là khóa bí mật mà anh ta sử dụng để lấy khóa chung:
$h = g^{x} mod p $
Bây giờ Alice muốn cam kết với một thông báo cụ thể và có quyền truy cập vào khóa công khai và khóa bí mật của bob.
Đầu tiên cô ấy chọn tin nhắn tôi
và một số nguyên ngẫu nhiên r
, và sau đó tính toán cam kết của cô ấy c
:
c = $ g^{m}*h^{r}$
Bây giờ Alice có thể gửi cam kết cho Bob.
Khi Alice muốn tiết lộ cam kết của mình, cô ấy gửi tôi
và `r`` với Bob. Bây giờ Bob có thể thực hiện tính toán và so sánh tương tự.
Ứng dụng trong bầu cử và vấn đề độc lập
Trong bài viết được đề cập trước đó, lược đồ này được sử dụng để xác nhận tính toàn vẹn của một tập hợp các phiếu bầu được xáo trộn.
Trong bối cảnh này, một danh sách các N
phiếu bầu được mã hóa được biểu thị bằng $ m_{1},...,m_{n} $.
Cam kết pedersen cho danh sách phiếu bầu sau đó được tính bằng:
$ c = G_{1}^{m_1} ... G_{n}^{m_n} * H^{r}$
Và sau đó bài báo nói điều này về các giá trị của g
và h
(có thể có một số nhầm lẫn về ký hiệu, vì tôi đã quen sử dụng chữ thường g và h cho trình tạo cho trình tạo và PK, trong khi bài báo chọn chữ in hoa).
Nhưng sau đó, bài báo nêu rõ vấn đề sau đây có thể phát sinh:
"Nếu tính độc lập bị vi phạm giữa H và một giá trị Gi, thì cam kết mở rộng c có thể được mở cho bất kỳ vectơ nào của các thông báo thay thế mâ²1,..., mâ²n. Nếu điều này xảy ra, thì toàn bộ đối số bằng chứng xáo trộn sẽ sụp đổ , tức là, có thể tạo ra một bằng chứng giả mạo cho một sự xáo trộn không chính xác"
Tôi hơi bối rối về ý nghĩa của nó đối với các giá trị của $G_{i}$ và H là "độc lập" và điều đó có nghĩa là gì khi chúng tôi có một số phiên bản của g
, vì vậy tôi có hai câu hỏi:
1
nếu chúng ta có n G, thì điều đó có nghĩa là nhóm mà chúng ta đang làm việc cần phải có n trình tạo?
2
Làm thế nào có thể có một H và một số trình tạo? nếu h
được tính bằng cách sử dụng g
, thì cái nào g
được sử dụng để tính khóa công khai h
. Có lẽ tôi đang hiểu sai điều gì đó cơ bản về cấu trúc được nêu trong bài báo?