Trong bải báo cáo này chúng tôi sẽ sử dụng X25519 và BLAKE2b để tạo phương thức trao đổi khóa. Đối với các khóa của (alice_sk, alice_pk) và (bob_sk, bob_pk), chúng tôi tạo các khóa của: bob_rx, bob_tx = Blake512 ((bob_sk. Alice_pk) || bob_pk || alice_pk) và alice_tx, alice_rx = Blake512 (alice_sk) || bob_pk || alice_pk).
Tất cả bắt đầu vào năm 1976, khi Diffie và Hellman đề xuất phương pháp trao đổi khóa Diffie-Hellman. Và chúng tôi vẫn đang sử dụng nó cho đến ngày nay. Các phương pháp nhật ký rời rạc đã được thay thế bằng các phương pháp đường cong elliptic và chúng tôi đã bổ sung thêm xác thực khóa công khai, nhưng nó vẫn gần giống phương pháp. Đối với điều này, Alice tạo ra a và Bob tạo ra b, và họ tính toán các giá trị khóa công khai của chúng là aG và bG, tương ứng (và trong đó G là điểm cơ sở trên đường cong). Khi Alice nhận bG, cô ấy tính a. (BG) để lấy abG và Bob lấy aG và tính b. (AG) để lấy abG. Sau đó, chúng có cùng một khóa được chia sẻ.
Vì vậy, làm thế nào chúng ta có thể tăng tốc quá trình và sử dụng các phương pháp an toàn? Trong khi một cách là sử dụng đường cong X25519 mạnh mẽ và phương pháp băm Blake2b hiệu quả cao. Đối với điều này, chúng ta cũng có thể băm trong các khóa công khai của Bob và Alice. Trong phần sau, chúng tôi chuyển khóa công khai của Bob và Alice, rồi tính khóa chia sẻ như trước (a.PKb và b.PKa) nhưng chúng tôi cũng băm trong khóa công khai của Bob và Alice. Đối với điều này, chúng tôi lấy một băm Blake2b 512 bit, sau đó lấy 256 bit thấp hơn cho khóa Rx của chúng tôi và 256 bit trên cho khóa Tx của chúng tôi:
Hình 2. 3: mô tả cách thức trao đổi khóa
Hình mô tả cách thức trao đổi khóa giờ chúng ta có hai khóa được tạo từ giá trị băm 512-bit. Chìa khóa mà Alice sử dụng để truyền là khóa mà Bob sẽ sử dụng
để nhận và khóa mà Bob sử dụng để truyền sẽ là khóa mà Alice sẽ sử dụng để nhận. Lưu ý rằng "||" chỉ đại diện cho sự kết hợp của dữ liệu được sử dụng cho hàm băm. Rõ ràng, thứ tự của các khóa công khai sẽ quan trọng trong việc tạo khóa chia sẻ, vì vậy cả Bob và Alice sẽ thêm các khóa công khai vào phương thức băm theo
cùng một thứ tự.
Nếu Alice có khóa bí mật là a và khóa công khai là a.G và Bob có khóa riêng là b và khóa công khai là b.G, các khóa của Alice sẽ là: