8. Vận chuyển khóa công kha
C.6 Vận chuyển khóa theo kiểu EIGamal có chữ ký bên gử
Đây là ví dụ về Cơ chế vận chuyển khóa 2.
Các khóa dùng thỏa thuận khóa công khai và bí mật hB của B tương ứng là:
PB = (P)[hB].
Các phép biến đổi ký công khai và bí mật của A tương ứng ký hiệu là SA và VA, (SA,VA) có thể được
thể hiện ở bất cứ hệ chữ ký nào như chữ ký RSA còn việc kiểm tra chữ ký được đưa ra trong ISO/IEC 9796.
Mã hóa khóa (A1.1): A có một khóa K và muốn gửi nó theo cách an toàn đến B. Trước tiên A tạo
ngẫu nhiên và bí mật một số nguyên r ∈ H và tính hai điểm trên đường cong P[r] và (PB)[r] rồi mã hóa khối dữ liệu khóa A || K như sau:
BE = (A || K).π((PB)[r])) mod q
Chú thích rằng K phải được chọn theo cách sao cho giá trị (A || K) phải nhỏ hơn số nguyên tố q.
Kiến thiết thẻ khóa (A1.2): A tạo ra một khối dữ liệu khóa bao gồm định danh riêng biệt của bên nhận B, có thể có tem thời gian hoặc một số tuần tự TVP và khối đã mã hóa BE. Tiếp đó A ký khối dữ liệu thẻ bằng phép ký bí mật SA của mình rồi gửi thẻ khóa thu được sang cho B:
KTA1 = SA (B || TVP || p[r] || BE)
Kiểm tra thẻ khóa (B1.1): B sử dụng phép kiểm tra công khai của bên gửi VA để kiểm tra chữ ký số của thẻ khóa KTA1 nhận được. Tiếp đó B kiểm tra định danh bên nhận B và trường tùy chọn TVP.
Giải mã khóa (B1.2): B tiến hành giải mã khối BE sử dụng khóa để thỏa thuận khóa bí mật hB của nó bằng cách tính:
A || K =(BE).π(((p[r])[hB]))-1 mod q
Tiếp đó B kiểm tra định danh của bên gửi A. Nếu tất cả kiểm tra đều thỏa mãn thì B chấp nhận khóa
K.