Trong mật mã học, an ninh tất cả phụ thuộc vào chất lượng của các thế hệ số ngẫu nhiên. Bạn đã nhìn thấy trong chương này bảo mật dựa trên thuật toán mã hóa được biết đến và secret keys. Những phím chỉ đơn giản là số ngẫu nhiên rất dài.Vấn đề với các số ngẫu nhiên là máy tính có xu hướng rất dự đoán được. Họ làm theo hướng dẫn để thư. Nếu bạn nói với họ để tạo ra một số ngẫu nhiên, họ có lẽ sẽ không làm một công việc rất tốt. Điều này là bởi vì số thật sự ngẫu nhiên có thể thu được chỉ bằng cách quan sát các quá trình vật chất nhất định. Trong sự vắng mặt của đó, máy tính tập trung vào thu nhỏ số lượng dữ liệu ngẫu nhiên. Điều này thường có nghĩa là theo dõi các tổ hợp phím và chuột chuyển động và tương tác với thiết bị ngoại vi khác nhau, chẳng hạn như đĩa cứng.Entropy được thu thập bằng cách này là một loại thực sự ngẫu nhiên số máy phát điện (TRNG), nhưng cách tiếp cận này không phải là đáng tin cậy, đủ để sử dụng trực tiếp. Ví dụ, bạn có thể cần phải tạo ra một khoá 4,096-bit, nhưng các hệ thống có thể có chỉ có một vài của hàng trăm các bit dữ liệu ngẫu nhiên có sẵn. Nếu không có không có sự kiện bên ngoài đáng tin cậy để thu thập đủ dữ liệu ngẫu nhiên, Hệ thống có thể đứng.Vì lý do này, trong thực tế, chúng tôi dựa trên ngẫu nhiên ảo qua số máy phát điện (PRNGs), mà sử dụng một lượng nhỏ dữ liệu ngẫu nhiên thật sự để nhận được chúng đi. Quá trình này được gọi là gieo hạt. Từ hạt, PRNGs sản xuất không giới hạn số lượng dữ liệu ngẫu nhiên ảo qua theo yêu cầu. PRNGs đa năng thường được sử dụng trong lập trình, nhưng chúng không phải là thích hợp cho mật mã học, ngay cả khi đầu ra của họ là thống kê dường như ngẫu nhiên. Máy phát điện số mật mã ngẫu nhiên ảo qua (CPRNGs) là PRNGs mà cũng không thể đoán trước. Thuộc tính này là rất quan trọng đối với an ninh; một kẻ thù không thể đảo ngược-kỹ sư CPRNGs tình trạng nội bộ bằng cách quan sát đầu ra của nó.Giao thứcMật mã nguyên thủy như mật mã và băm giải thuật là hiếm khi hữu ích của mình. Chúng tôi kết hợp chúng thành các chương trình và giao thức vì vậy mà chúng tôi có thể đáp ứng yêu cầu an ninh phức tạp. Để minh họa làm thế nào chúng tôi có thể làm điều đó, chúng ta hãy xem xét một giao thức mật mã đơn giản cho phép Alice và Bob để giao tiếp một cách an toàn. Chúng tôi sẽ phấn đấu cho tất cả các yêu cầu chính ba: bảo mật, tính toàn vẹn và xác thực.Giả sử rằng chúng tôi giao thức cho phép trao đổi một số tùy ý của tin nhắn. Bởi vì mã hóa đối xứng là rất tốt tại mã hóa dữ liệu với số lượng lớn, chúng ta có thể chọn thuật toán của chúng tôi yêu thích để sử dụng cho mục đích này, nói rằng, AES. Với AES, Alice và Bob có thể trao đổi tin nhắn an toàn và Mallory sẽ không thể khôi phục lại nội dung. Nhưng đó không phải là khá đủ, bởi vì Mallory có thể làm những thứ khác, ví dụ, thay đổi các tin nhắn mà không bị phát hiện. Để khắc phục vấn đề này, chúng ta có thể tính toán một máy MAC của mỗi tin nhắn bằng cách sử dụng một chìa khóa hashing chỉ được biết đến Alice và Bob. Khi chúng tôi gửi một tin nhắn, chúng tôi gửi cho cùng cũng MAC.Bây giờ, Mallory không thể sửa đổi các tin nhắn nữa. Tuy nhiên, cô vẫn có thể thả hoặc phát lại tin nhắn tùy ý. Để đối phó với điều này, chúng tôi mở rộng của chúng tôi giao thức để gán một số thứ tự cho mỗi tin nhắn; quan trọng trong, chúng tôi làm cho một phần chuỗi của MAC tính. Nếu chúng ta thấy một khoảng cách trong số thứ tự, sau đó chúng ta biết rằng có một thông báo thiếu. Nếu chúng ta thấy một dãy số trùng lặp, chúng tôi phát hiện một cuộc tấn công lại. Cho kết quả tốt nhất, chúng ta cũng nên sử dụng một tin nhắn đặc biệt để đánh dấu sự kết thúc của cuộc đàm thoại. Không có thông báo như vậy, Mallory sẽ có thể kết thúc (truncate) cuộc trò chuyện không bị phát hiện.Với tất cả các biện pháp tại chỗ, Mallory tốt nhất có thể làm ngăn chặn Alice và Bob nói chuyện với một
đang được dịch, vui lòng đợi..
