Điểm:3

Về mặt lý thuyết có thể ủy thác việc tạo khóa công khai không?

lá cờ in

Hãy tưởng tượng kịch bản sau:

Trong một loại tiền điện tử nhất định, quyền riêng tư phải càng cao càng tốt.
Với mục đích này, một tài khoản mới có địa chỉ mới được tạo cho mọi giao dịch đến (địa chỉ là khóa chung của cặp khóa riêng tư/công khai). Tuy nhiên, không phải lúc nào người dùng cũng trực tuyến để tạo tài khoản mới với địa chỉ mới ngay khi ai đó muốn gửi tiền cho họ. Do đó, tất cả người dùng sẽ có thể tạo tài khoản mới với địa chỉ mới cho những người dùng khác khi họ muốn gửi tiền cho ai đó. Tất nhiên, chỉ người nhận mới có thể tiêu tiền được chuyển vào tài khoản do người khác tạo cho anh ta.

Tất cả điều này được cho là dựa trên ECC, tức là phần mở rộng của ECDSA thuật toán, để nói chuyện.
Nhưng như vừa được mô tả trong ví dụ về tiền điện tử, chỉ người được tạo khóa công khai mới được phép ký tin nhắn cho khóa công khai này hoặc giải mã dữ liệu đã được mã hóa bằng khóa công khai này.

Vì tính bảo mật của thuật toán mã hóa được sử dụng là rất quan trọng đối với tiền điện tử, nên chỉ bằng cách NISTSECG các tham số đường cong được chuẩn hóa và tạo sẵn được biết là an toàn và hiệu quả sẽ được sử dụng.

Những thay đổi kỹ thuật duy nhất được xem xét như sau:

Ghi chú: Vì địa chỉ của một tài khoản sẽ là khóa chung tương ứng của một cặp khóa, nên thuật ngữ "địa chỉ" và "khóa chung" sẽ được sử dụng thay thế cho nhau sau đây.

Thông số từ thuật toán ECDSA:

  • $d$ = khóa riêng được tạo ngẫu nhiên
  • $G$ = điểm cơ sở của đường cong elip

thay đổi:

  • Khoảng thời gian khả dụng cho các khóa riêng được giảm từ $[1, n - 1]$ đến $[1, \frac{n}{2} - 1]$
  • Cũng giống như việc tạo khóa công khai, một điểm $P$ được tính như sau: $P = d \times G$. Điểm này $P$ tạo thành cái gọi là khóa tạo địa chỉ được ủy quyền (Khóa DAG).
  • Để tạo địa chỉ (khóa công khai) cho người khác, cái gọi là khóa ngẫu nhiên hóa địa chỉ (Khóa AR) ngẫu nhiên ($i$) với cùng khoảng thời gian với khóa riêng ($[1, \frac{n}{2} - 1]$) phải được tạo ra
  • Để tạo địa chỉ cho một người tùy ý, phím DAG ($P$) của người này được cộng với phép nhân của phím AR ($i$) và điểm gốc ($G$): $Q = P + i \times G$. Từ $P$$d \times G$, những điều sau đây phải giữ: $Q = P + i \times G = (d + i) \times G$. Điểm này $Q$ tạo thành địa chỉ mới cho người có khóa DAG được sử dụng để tính toán.

Ví dụ:

  1. Alice tạo một khóa riêng được tạo ngẫu nhiên ($d$).
  2. Alice sử dụng khóa riêng của mình để tạo khóa DAG ($P$)
  3. Alice công khai khóa DAG
  4. Bob muốn tạo một địa chỉ (khóa công khai) cho Alice và lấy khóa DAG từ Alice để làm như vậy
  5. Bob tạo một khóa AR được tạo ngẫu nhiên
  6. Bob tạo địa chỉ mới cho Alice bằng khóa DAG của Alice và khóa AR được tạo ở bước trước
  7. Bob gửi một số tiền đến địa chỉ mới được tạo
  8. Bob gửi khóa AR cho Alice
  9. Chỉ Alice mới có thể gửi tiền từ địa chỉ này, bởi vì cô ấy là người duy nhất có thể tạo chữ ký hợp lệ cho địa chỉ mới được tạo (khóa công khai). Để làm điều này, cô ấy chỉ cần tính khóa riêng cho địa chỉ này như sau: $d + i$ (bổ sung khóa riêng của cô ấy $d$ và phím AR $i$ được tạo bởi Bob).

câu hỏi:

Về mặt lý thuyết có thể ủy thác việc tạo khóa công khai không?

Nếu vậy, liệu một sự thay đổi như vậy đối với thuật toán ECDSA tiêu chuẩn có khả thi không? Hay nói cách khác là tạo public key cho người khác mà không biết hoặc để lộ private key cho public key đó?

Hoặc có một cách tiếp cận tốt hơn để giải quyết vấn đề này?

meshcollider avatar
lá cờ gb
BIP-32 và các sơ đồ tạo địa chỉ xác định phân cấp khác cho phép ủy quyền tạo khóa công khai.
lá cờ in
Cảm ơn @meshcollider Tôi sẽ xem xét nó. Bạn có biết nếu nó hoạt động tương tự như cách tôi đề xuất không?
meshcollider avatar
lá cờ gb
Loại tương tự, vâng. Sự khác biệt chính là nó có tính xác định (sử dụng hàm băm để chọn cái mà bạn gọi là AR để Alice có thể tạo nó một mình) và bạn không cần hạn chế phạm vi của khóa riêng (nhóm có chu kỳ vì vậy nếu bạn thêm lớn các phím, nó sẽ "quấn xung quanh" modulo thứ tự nhóm)
lá cờ in
Làm cho tổng số ý nghĩa! Điều đó thực sự tuyệt vời. Cảm ơn bạn rất nhiều @meshcollider, điều đó đã giúp tôi rất nhiều! Và vâng, tôi không biết nên đặt tên cho những "chìa khóa" này như thế nào.
Điểm:3
lá cờ es

Nếu tôi hiểu chính xác sơ đồ của bạn, thì Alice cần một kênh an toàn riêng để giao tiếp $i$ gửi Bob.

Monero giải quyết vấn đề này bằng cách tạo khóa công khai đích một lần mỗi khi tiền được gửi cho ai đó. Số tiền đó được chi tiêu với một chữ ký sử dụng khóa cá nhân dùng một lần tương ứng mà chỉ người nhận mới có thể xác định được.

Người nhận có hai cặp khóa: $(a, A=aG)$$(b, B=bG)$, ở đâu $G$ là một điểm cơ sở nổi tiếng.

Người gửi tạo một cặp khóa tạm thời $(r, R=rG)$ và xuất bản $R$.

Khóa công khai đích một lần là $H(rA)G+B$, ở đâu $H$ là một hàm băm bảo mật bằng mật mã trả về một giá trị vô hướng.

Khóa riêng tư tương ứng chỉ có thể được khôi phục bởi người nhận dưới dạng $H(aR)+b$.

Lý do người nhận có hai cặp khóa là chỉ yêu cầu khóa riêng $a$ cần thiết để quét các khoản tiền đến và chỉ yêu cầu bổ sung khóa riêng thứ hai $b$ khi tiền cần được chi tiêu. Tuy nhiên, nếu không cần sự phân biệt này, người nhận có thể chỉ cần một cặp khóa $(a,A)$ và sau đó khóa công khai đích một lần sẽ là $H(rA)G+A$ và khóa riêng tương ứng sẽ là $H(aR)+a$.

Bạn có thể đọc về việc triển khai các địa chỉ một lần của Monero trong phần 4.2 đây và trang 7 của sách trắng CryptoNote gốc đây.

kelalaka avatar
lá cờ in
Điều trớ trêu là khi số tiền đầu vào đạt đến $A$, bạn cần chuyển số tiền đó sang khoản chi tiêu $B$ của mình.
knaccc avatar
lá cờ es
@kelalaka Trong Monero, không có gì được chuyển từ $A$ sang $B$. Một địa chỉ ví duy nhất là sự kết hợp của các khóa công khai $A$ và $B$. Tiền được chi tiêu trực tiếp bằng cách tham chiếu khóa công khai một lần trong chữ ký vòng. Tôi chỉ muốn nói rằng bạn chỉ cần $a$ và $B$ để quét các khoản tiền đến và chỉ tại thời điểm chi tiêu, bạn mới cần biết thêm $b$. Điều này cho phép hạn chế chặt chẽ quyền truy cập vào $b$, vì nó chỉ cần được biết khi cần chi tiêu tiền.
kelalaka avatar
lá cờ in
Vâng, tôi biết dấu hiệu của bạn. Bạn có thể cung cấp liên kết để đọc nó từ Monero không?
knaccc avatar
lá cờ es
@kelalaka Chắc chắn rồi, đó là Phần "4.2 Địa chỉ một lần" tại đây: https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf Theo ký hiệu của tôi, $a$ là địa chỉ riêng tư khóa xem và $b$ là khóa chi tiêu cá nhân
knaccc avatar
lá cờ es
@kelalaka cảm ơn, đã thêm
knaccc avatar
lá cờ es
@kelalaka Tôi đã thêm một liên kết tới một bản sao của bài báo đó, vì liên kết cryptonote.org không thành công khi tôi cố nhấp vào liên kết đó. Lưu ý rằng giấy CryptoNote có lỗi trong đó, vì nó định nghĩa $H_s()$ là tạo ra một phần tử trường, trong khi thay vào đó, nó sẽ tạo ra một đại lượng vô hướng nhỏ hơn kích thước nhóm của điểm cơ sở.
lá cờ in
@knaccc Chà, thật tuyệt vời! Chính xác những gì tôi đang tìm kiếm và tốt hơn nhiều so với những gì tôi nghĩ ra. Cảm ơn rất nhiều! Điều duy nhất tôi chưa hiểu: Tại sao tôi cần đưa vào (hàm băm bảo mật bằng mật mã) khi tạo khóa? Và những gì cần phải được băm để có được?
knaccc avatar
lá cờ es
@E.Bramtergan $H(rA)$ có nghĩa là thực hiện phép nhân vô hướng điểm đường cong elip của $r$ với $A$, coi kết quả là một chuỗi byte và áp dụng hàm băm (chẳng hạn như SHA-512/256) theo cách thông thường cách, sau đó thực hiện $mod\ \ell$ cho kết quả, trong đó $\ell$ là thứ tự của điểm cơ sở và sẽ phụ thuộc vào đường cong bạn chọn. Lý do bạn cần $H()$ là để chuyển đổi bí mật chia sẻ Diffie-Hellman $rA==aR$ thành một đại lượng vô hướng, để nó có thể được sử dụng làm khóa riêng trong phương trình.Các bài báo về Monero mà tôi đã liên kết giải thích tất cả những điều này chi tiết hơn nhiều.
lá cờ in
@knaccc tôi hiểu rồi. Thực sự tốt đẹp, yêu nó. Cảm ơn một lần nữa!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.