Vì vậy, giả sử bạn đang thực hiện việc này cục bộ (để không có tiếng ồn mạng) và cũng biết các chi tiết cụ thể chính xác của bộ xử lý của bạn.
Vâng. Đây là một mô hình tấn công hợp lý, ví dụ: nếu kẻ tấn công đang chạy quảng cáo JavaScript trong trình duyệt của bạn hoặc có một máy ảo được đặt cùng vị trí trên cùng một đám mây.
Có khả thi để tìm ra khóa riêng (trong khi có quyền truy cập vào khóa chung) do libsodium tạo ra dựa trên thời gian cần thiết để tạo cặp khóa không?
Libsodium sử dụng đường cong25519 phím đường cong elip. Khóa riêng Curve25519 là một chuỗi bit ngẫu nhiên có độ dài nhất định. (Nó được mở rộng thành một chuỗi byte trong đó một số bit nhất định có giá trị cố định, nhưng điều đó không thêm kênh phụ thời gian.) Vì vậy, quá trình tạo khóa riêng là không đáng kể. Kênh phụ hợp lý duy nhất nằm trong chính trình tạo ngẫu nhiên.
Một số thuật toán tạo ngẫu nhiên sử dụng các nguyên thủy dễ bị các kênh bên định thời. Cụ thể, CTR_DRBG dựa vào AES dễ bị tấn công theo thời gian của bộ đệm nếu được triển khai trong phần mềm theo cách nhanh chóng ngây thơ. CTR_DRBG xoay khóa AES rất thường xuyên, điều này làm cho nó ít bị tổn thương hơn so với trong các tình huống mà kẻ thù có thể quan sát mã hóa bằng cùng một khóa AES. Tuy nhiên, một cuộc tấn công như vậy có thể thực tế, ít nhất là trong điều kiện lý tưởng.
Với các thuật toán DRBG phổ biến khác (ví dụ: Hash_DRBG hoặc HMAC_DRBG), với triển khai AES không dựa trên bảng (ví dụ:sử dụng khả năng tăng tốc phần cứng như AES-NI hoặc sử dụng tính năng cắt bit trong phần mềm) hoặc nếu DRBG đọc entropy đủ thường xuyên (điều này khả thi trên phần cứng hiện đại với TRNG chuyên dụng, chẳng hạn như RDRAND trên bộ xử lý Intel hoặc tương đương trên nhiều loại điện thoại thông minh bộ xử lý), các cuộc tấn công định thời vào RNG không phải là vấn đề đáng lo ngại.
Điều có thể dễ bị tổn thương hơn là việc tính toán khóa chung từ khóa riêng. Curve25519 làm cho việc triển khai số học tương đối dễ dàng mà không cần các kênh phụ định thời gian, nhưng nó không phải là một cái nhất định.
Còn các thuật toán khác thì sao, tính khả thi của nó nói chung như thế nào?
Với các đường cong elip Weierstrass và với Diffie-Hellman trường hữu hạn, khóa riêng là một số nằm giữa $2$ và $P-2$. Ngoài các cuộc tấn công RNG như đã thảo luận trước đó, việc triển khai tự nhiên quy trình tạo khóa không dễ bị tấn công theo thời gian. Tuy nhiên, việc tính toán khóa công khai Là dễ bị tấn công theo thời gian nếu được thực hiện mà không có biện pháp phòng ngừa.
Với RSA, việc tạo khóa là một quy trình phức tạp bao gồm kiểm tra tính nguyên tố (giả) và một số phép tính bổ sung có khả năng dễ bị tấn công theo thời gian. Cụ thể, trong thực tế, có vẻ như bước dễ bị rò rỉ nhất là tính toán GCD xong để kiểm tra xem $p-1$ và $q-1$ cùng nguyên tố với số mũ công cộng.