Mục lục bài họcĐang ở d09-b2
← A-Level Computer Science
0/30 bài đã học xong
Chương 9 · Floating Point, Compression and Software Development · Bài 2/3 của chương · bài 26/30 của A-Level Computer Science

Data compression and encryption

Nén dữ liệu và mã hoá
← Mục lục bài học
Lý thuyết · English

Lossless and lossy

Lossless compression reconstructs the original exactly — required for text, program code, spreadsheets and anything where a changed byte matters. Lossy compression discards information the human eye or ear is unlikely to notice, achieving much smaller files, and is used for photographs, audio and video. The choice is decided by one question: does the original have to come back exactly?

Run length encoding

Replaces runs of identical values with a count and the value: AAAAABBB becomes 5A3B. It works well on images with large flat areas and badly on data with few repeats — on random data it can make the file larger, and saying that shows real understanding.

Dictionary compression

Builds a dictionary of repeated sequences and stores an index instead of the sequence. Effective on text, where words repeat. The dictionary itself must be stored or reconstructible, which is part of the cost.

Symmetric and asymmetric encryption

Symmetric uses one key for both encryption and decryption: fast, but the key must reach the other party securely, and that is the hard problem. Asymmetric uses a public key to encrypt and a private key to decrypt, solving key distribution at the cost of speed. In practice asymmetric is used to exchange a symmetric session key, then symmetric does the bulk work.

Digital signatures and certificates

A digital signature reverses the roles: the sender encrypts a hash of the message with their private key, and anyone can decrypt it with the public key — which proves it came from that sender and that the message has not changed. A digital certificate from a certification authority binds a public key to an identity, which is what stops an attacker publishing their own key under someone else's name.

Hashing is not encryption

A hash is one-way: it cannot be reversed to recover the input. That is exactly why passwords are stored hashed — a stolen database does not reveal the passwords themselves.

Giải thích tiếng Việt

Nén không mất và nén có mất

Nén không mất dữ liệu dựng lại được bản gốc y hệt — bắt buộc với văn bản, mã chương trình, bảng tính và mọi thứ mà một byte sai cũng có ý nghĩa. Nén có mất dữ liệu loại bỏ những thông tin mà mắt hoặc tai người khó nhận ra, cho tệp nhỏ hơn nhiều, và được dùng cho ảnh chụp, âm thanh và video. Lựa chọn được quyết định bởi một câu hỏi: bản gốc có bắt buộc phải quay lại y nguyên không?

Mã hoá theo độ dài chuỗi lặp

Thay các chuỗi giá trị giống nhau bằng số đếm và giá trị: AAAAABBB thành 5A3B. Nó hiệu quả với ảnh có vùng màu phẳng lớn và kém với dữ liệu ít lặp — với dữ liệu ngẫu nhiên nó có thể làm tệp to hơn, và nói được điều đó là thể hiện hiểu biết thật.

Nén theo từ điển

Dựng một từ điển các chuỗi lặp lại rồi lưu chỉ số thay cho chuỗi. Hiệu quả với văn bản, nơi các từ lặp đi lặp lại. Bản thân từ điển cũng phải được lưu hoặc dựng lại được, và đó là một phần cái giá.

Mã hoá đối xứng và bất đối xứng

Đối xứng dùng một khoá cho cả mã hoá lẫn giải mã: nhanh, nhưng khoá phải đến được tay người nhận một cách an toàn, và đó mới là bài toán khó. Bất đối xứng dùng khoá công khai để mã hoá và khoá riêng để giải mã, giải quyết được việc phân phối khoá nhưng đổi lại tốc độ chậm. Trong thực tế, bất đối xứng được dùng để trao đổi một khoá phiên đối xứng, rồi đối xứng làm phần việc nặng.

Chữ ký số và chứng thư số

Chữ ký số đảo ngược vai trò hai khoá: người gửi mã hoá một giá trị băm của thông điệp bằng khoá riêng của mình, và ai cũng giải được bằng khoá công khai — điều đó chứng minh thông điệp đúng là từ người đó và chưa bị sửa. Chứng thư số do một tổ chức chứng thực cấp, gắn một khoá công khai với một danh tính, và đó là thứ ngăn kẻ tấn công công bố khoá của mình dưới tên người khác.

Băm không phải mã hoá

Hàm băm là một chiều: không đảo ngược lại được để lấy ra dữ liệu gốc. Đó chính là lý do mật khẩu được lưu ở dạng băm — cơ sở dữ liệu bị đánh cắp cũng không để lộ mật khẩu.

Ví dụ — chọn phương pháp nén và giải thích một giao dịch có mã hoá

(a) Một hệ thống lưu ba loại tệp: hồ sơ bệnh án dạng văn bản, ảnh chụp X-quang, và bản ghi âm cuộc gọi tư vấn. Chọn kiểu nén cho từng loại và giải thích.

(b) Mô tả các bước bảo mật khi một người dùng gửi số thẻ ngân hàng qua một trang web dùng HTTPS.

Giải.

(a) Hồ sơ bệnh án dạng văn bản — nén KHÔNG MẤT, dùng nén từ điển. Một ký tự sai trong liều thuốc có thể gây hậu quả nghiêm trọng, nên bản gốc bắt buộc phải dựng lại y hệt. Nén từ điển hiệu quả ở đây vì thuật ngữ y khoa lặp lại rất nhiều.

Ảnh chụp X-quang — nén KHÔNG MẤT, dù là ảnh. Đây là chỗ đề gài: thông thường ảnh dùng nén có mất, nhưng ảnh chẩn đoán thì không — một chi tiết mờ bị thuật toán loại bỏ có thể chính là dấu hiệu bệnh lý. Quy tắc quyết định không phải ‘đây là loại tệp gì’ mà là ‘bản gốc có bắt buộc quay lại y nguyên không’.

Bản ghi âm cuộc gọi tư vấn — nén CÓ MẤT chấp nhận được. Mục đích là nghe hiểu lại nội dung, không phải phân tích tín hiệu, nên loại bỏ các tần số ngoài ngưỡng nghe rõ là hợp lý và tiết kiệm rất nhiều dung lượng.

(b) Các bước bảo mật của một giao dịch HTTPS

$1.$ Trình duyệt kết nối tới máy chủ và yêu cầu chứng thư số.

$2.$ Máy chủ gửi chứng thư, trong đó có khoá công khai của nó và chữ ký của một tổ chức chứng thực. Trình duyệt kiểm chữ ký đó để xác nhận khoá công khai thật sự thuộc về trang web này — bước này ngăn kẻ tấn công đưa khoá của chính mình vào giữa.

$3.$ Trình duyệt sinh một khoá phiên đối xứng ngẫu nhiên, mã hoá nó bằng khoá công khai của máy chủ và gửi đi. Chỉ máy chủ có khoá riêng tương ứng mới giải được.

$4.$ Từ lúc này trở đi, mọi dữ liệu — kể cả số thẻ — được mã hoá bằng khoá phiên đối xứng, vì nó nhanh hơn nhiều so với bất đối xứng.

Vì sao thiết kế lại lai như vậy: bất đối xứng giải được bài toán phân phối khoá nhưng quá chậm cho khối lượng dữ liệu lớn; đối xứng nhanh nhưng không tự trao khoá an toàn được. Kết hợp hai cái lấy được ưu điểm của cả hai — và đây chính là câu trả lời mà đề muốn.

Bẫy hay mất điểm — Nói mã hoá bất đối xứng ‘an toàn hơn’ nên nên dùng cho mọi thứ. Nó giải quyết bài toán PHÂN PHỐI KHOÁ chứ không mạnh hơn về bản chất, và nó chậm hơn nhiều — đó là lý do thực tế chỉ dùng nó để trao đổi khoá đối xứng rồi chuyển sang đối xứng.
Phải nhớ — Chọn kiểu nén bằng câu hỏi ‘bản gốc có phải quay lại y nguyên không’, chứ không theo loại tệp. Mã hoá theo độ dài chuỗi lặp có thể làm tệp to hơn. Bất đối xứng để trao khoá, đối xứng để chạy. Và băm là một chiều nên khác hẳn mã hoá.

Đọc xong rồi — làm thử ngay

Bài tập của chương Floating Point, Compression and Software Development gồm 14 câu trắc nghiệm và 3 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →