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 NIST và SECG 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$ Là $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ụ:
- Alice tạo một khóa riêng được tạo ngẫu nhiên ($d$).
- Alice sử dụng khóa riêng của mình để tạo khóa DAG ($P$)
- Alice công khai khóa DAG
- 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
- Bob tạo một khóa AR được tạo ngẫu nhiên
- 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
- Bob gửi một số tiền đến địa chỉ mới được tạo
- Bob gửi khóa AR cho Alice
- 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?