Curve25519 và Ed25519
Một đường cong Montgomery được xác định trên một trường $K$ được định nghĩa là; $$M_{A,B}: Bv^2 = u^3 + Au^2 + u$$
chắc chắn $A,B \trong K$ và với $B(A^2-4) \neq 0$.
đường cong25519 sử dụng thủ $q = 2^{255} â 19$ để tạo thành trường hữu hạn $\mathbb{F}_q$ và lần đầu tiên được xác định cho ECDH và sau đó được đặt tên X25519. phương trình Montgomery là $$v^2 = u^3+486662 u^2+u$$ với $486664$ là một hình vuông trong $\mathbb{Z}_p$, tức là Nó là Dư lượng Bậc hai (QR). $u = 9$ đã chọn làm điểm gốc. Biểu mẫu Weierstrass (một nhu cầu cho SageMath)
$$y^2 = x^3 + A x + B $$
Đường cong âCurve25519â này là tương đương hai chiều trên $\mathbb{Z}_p$ đến đường cong Edwards Ed25519 $$x^2 + y^2 = 1 + (121665/121666)x^2y^2$$ với;
$$x = \frac{\sqrt{486664}u}{v}, \quad y = \frac{(u â 1)}{(u + 1)}$$
Các hoạt động ngược lại là;
$$u = \frac{(y + 1)}{(1 - y)}, \quad v = \frac{\sqrt{486664}u}{x}$$
Dạng Edward có một đường cong đẳng cấu
$$-x^2 + y^2 = 1 - (121665/121666)x^2y^2$$ từ $-1$ là QR trong một $\mathbb Z_p$
câu hỏi
montgomeryX = (edwardsY + 1)*nghịch đảo(1 - edwardsY) mod p
có thể vận chuyển một điểm đường cong edwards (ed25519 khóa mu) sang đường cong montgomery.
Có, Như đã nêu ở trên, từ Montgomery đến Edwards $$u = \frac{(y + 1)}{(1 - y)}$$
Nó có bất kỳ tác dụng phụ nào không nếu khóa công khai ed25519 không hợp lệ, chẳng hạn như trong trường hợp một nhóm nhỏ hoặc cuộc tấn công đường cong không hợp lệ?
Khóa Edward25519 có thể được chuyển đổi thành Curve25519 và nếu khóa bí mật đã được tạo bằng trách nhiệm của người dùng hợp pháp
- Người dùng hợp pháp được giả định là tạo các khóa bí mật ngẫu nhiên thống nhất độc lập. Ví dụ, một người dùng có thể tạo 32 byte ngẫu nhiên thống nhất, xóa các bit 0, 1, 2 của byte đầu tiên, xóa bit 7 của byte cuối cùng và đặt bit 6 của byte cuối cùng.
Trong định nghĩa đã đặt, chúng tôi muốn các khóa bí mật của X25519 là
$$\{n: n \in 2^{254} +8\{0,1,2,\dots,2^{251}-1 \}\},$$ nói cách khác, chọn một số ngẫu nhiên thống nhất giữa $[0,2^{251}-1]$ nhân nó với $8$ hơn là thêm $2^{254}$.
Thứ tự của điểm cơ sở là (Little-endian);
edd3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010
Sự sạch sẽ $0,1,2$ đảm bảo rằng
Dưới đây là giá trị tối đa (little-endian) và chúng ta có thể thấy rằng có hai khóa riêng có thể có cùng khóa chung, tuy nhiên, đây là sự kiện không đáng kể nhưng có thể tìm thấy.
0x8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 7
thì không cần thiết vì sự tương đương hai tỷ lệ sẽ tạo ra các điểm có thứ tự không nhỏ nếu người dùng hợp pháp đã sử dụng các quy tắc.
Theo sự tương đương song lý của Curve25519 và edwards25519, mỗi khóa công khai X25519 tương ứng với hai khóa công khai Ed25519 có thể). X25519 chỉ sử dụng $x$ tọa độ (nơi tên đến) và Ed25519 sử dụng tọa độ của các điểm. Khi chúng ta chỉ có $x$ tọa độ của một điểm, có hai điểm có thể $(x,y)$ và $(x,-y)$ ngoại trừ $y=0$.
Và nếu có, giải pháp tốt nhất để xử lý đúng cách là gì?
không có nguy cơ Xác nhận điểm.
một số phụ
Sử dụng cùng một khóa
Tôi không thể trực tiếp nói rằng điều đó là không an toàn, tuy nhiên, quy tắc chung của chúng tôi là không sử dụng cùng một khóa cho các mục đích khác nhau. Cho đến khi một người chứng minh được rằng không có gì nguy hiểm nếu bạn không sử dụng cùng một khóa cho các mục đích khác nhau.
Có thể tốt hơn nếu có một khóa 256 bit ngẫu nhiên thống nhất và lấy hai khóa có mở rộng HKDF cho cả X25519 và Ed25519.
X25519
Hãy nhớ rằng khóa chung là cố định và khi bạn thực thi DHKE, điều này có nghĩa là bạn có DHKE tĩnh-tĩnh. Điều này không có bí mật về phía trước. Tốt hơn là những gì giao thức Tín hiệu làm; gấp đôi và bạn có thể ký khóa công khai mới bằng Ed25519.