Phân tích vi sai (Differential cryptanalysis) là mô hình chung của cryptanalysis áp dụng rộng rãi cho block ciphers (mã khối), nhưng cũng có thể cho stream ciphers (mã dòng) và hàm băm mật mã học. Theo ý nghĩa rộng nhất, nó là nghiên cứu về cách sự khác biệt trong đầu vào dữ liệu có thể ảnh hưởng đến sự khác biệt kết quả tại đầu ra.
Mục tiêu chính của differential cryptanalysis là tìm kiếm các phân phối thống kê và mẫu trong ciphertext để suy ra chi tiết về khóa được sử dụng trong mật mã.
Differential cryptanalysis là một phần nghiên cứu trong mật mã học so sánh cách sự khác biệt trong đầu vào liên quan đến sự khác biệt trong đầu ra được mã hóa. Nó có thể được dùng cơ bản trong nghiên cứu block ciphers để xác định xem thay đổi trong plaintext có dẫn đến bất kỳ kết quả phi ngẫu nhiên nào trong ciphertext được mã hóa hay không.
Quy trình này thiết yếu vì thay đổi phi ngẫu nhiên đối với ciphertext có thể chỉ ra điểm yếu trong sơ đồ mã hóa. Bên thứ ba trái phép có thể thu được thông tin về những gì được mã hóa hoặc cách nó được mã hóa bằng cách kiểm tra thay đổi thông tin.
Trong block cipher, phân tích vi sai có thể được xác định là nhóm các kỹ thuật để theo dõi sự khác biệt qua mạng biến đổi, tìm nơi mật mã thể hiện hành vi phi ngẫu nhiên (non-random behavior) và khai thác yếu tố đó để lấy khóa bí mật (khóa mật mã học).
Đối với bất kỳ mật mã cụ thể nào, sự khác biệt đầu vào nên được chọn nghiêm ngặt cho tấn công thành công. Phân tích nội bộ thuật toán được thực hiện và phương pháp tiêu chuẩn là theo dõi đường đi của sự khác biệt xác suất cao qua các quá trình mã hóa khác nhau, được gọi là đặc trưng vi sai (differential characteristic).
Trong quy trình, quan sát sự khác biệt đầu ra mong muốn giữa hai đầu vào plaintext được chọn hoặc không biết gợi ý các giá trị khóa có thể.
Differential cryptanalysis lần đầu được giới thiệu bởi Biham và Shamir để diễn giải DES block cipher năm 1990. Phân tích vi sai là một trong các phương pháp tấn công hiệu quả nhất trong block ciphers.
Phân tích vi sai là tấn công plaintext được chọn (chosen plaintext attack), và khái niệm cơ bản của nó là nghiên cứu xác suất lan truyền vi sai của các giá trị vi sai plaintext xác định trong quy trình mã hóa.
Có thể tách block cipher từ khu vực hoán vị và sau đó tạo tấn công khôi phục khóa trên cơ sở này. Theo thuật ngữ khác, có thể tìm đường vi sai xác suất cao.
Cuối cùng, bằng cách chèn nhiều vòng trước và sau đặc trưng vi sai, đoán Round-keys được dùng trong các vòng này, mã hóa plaintexts, và giải mã ciphertexts, có thể quyết định khóa đúng của block cipher.
Lập trình tuyến tính hỗn hợp số nguyên (Mixed-integer linear programming - MILP) là thiết kế tối ưu hóa hoặc tính khả thi khoa học, nơi một số hoặc tất cả biến được giới hạn thành số nguyên. Trong một số trường hợp, có thể xác định chương trình tuyến tính số nguyên (ILP), là tuyến tính về hàm mục tiêu và ràng buộc trừ ràng buộc số nguyên. MILP thường được dùng trong kinh doanh và tài chính để giải quyết vấn đề tối ưu hóa.