Tính toàn vẹn dữ liệu — xác minh và kiểm tra
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| integrity/ɪnˈteɡrɪti/ | Tính toàn vẹn |
| validation/ˌvælɪˈdeɪʃn/ | kiểm tra tính hợp lệ |
| verification/ˌverɪfɪˈkeɪʃn/ | xác minh |
| range check/reɪndʒ tʃek/ | kiểm tra phạm vi |
| check digit/tʃek ˈdɪdʒɪt/ | chữ số kiểm tra |
| double entry/ˈdʌbl ˈentri/ | nhập liệu kép |
| parity check/ˈpærɪti tʃek/ | kiểm tra tính chẵn lẻ |
| checksum/ˈtʃeksəm/ | tổng kiểm tra |
| cyclic redundancy check/ˈsaɪklɪk rɪˈdʌndənsi tʃek/ | kiểm tra dư thừa tuần hoàn |
| parity block check/ˈpærɪti blɒk tʃek/ | kiểm tra khối tính chẵn lẻ |
Mọi con số đều vượt qua mọi phép kiểm tra
- Tháng Chín 1999 Máy bay thăm dò khí hậu Sao Hỏa của NASA đã phóng động cơ để vào quỹ đạo và không bao giờ liên lạc được nữa. Nó đã bay thấp hơn kế hoạch 170 km và cháy rụi.
- Phần mềm của một đội tạo ra các thông số lực đẩy theo đơn vị pound-giây; phần mềm nhận dự kiến đơn vị newton-giây. Mọi giá trị đều là số hợp lệ nằm trong khoảng hợp lý. Tuy nhiên, mọi giá trị đều sai lệch một hệ số là 4.45.
- Không có phép kiểm tra định dạng nào bắt kịp được lỗi này, vì dữ liệu không bị sai cấu trúc. Nó chỉ đơn giản không phải là những gì nó tuyên bố. $327 triệu đô la.
- Bài học này nói về hai họ phép kiểm tra bảo vệ tính toàn vẹn: xác thực (validation), hỏi liệu dữ liệu có hợp lý hay không, và xác minh (verification), hỏi liệu nó có được sao chép chính xác hay không. Và khoảng trống giữa chúng mà Sao Hỏa đã rơi xuống.
Hai câu hỏi
- Dữ liệu có tính toàn vẹn khi nó chính xác, nhất quán và đầy đủ.
- Kiểm tra tính hợp lệ (Validation) là kiểm tra tự động để đảm bảo dữ liệu nhập vào là hợp lý và tuân theo các quy tắc đã thiết lập. Nó đặt câu hỏi: điều này có hợp lý không?
- Kiểm chứng (Verification) xác minh rằng dữ liệu đã được nhập hoặc chuyển đổi chính xác bằng cách so sánh với nguồn gốc hoặc giá trị đã tính toán lại. Nó đặt câu hỏi: điều này đã được sao chép chính xác chưa?
- Không phương pháp nào chứng minh dữ liệu là đúng sự thật. Cả hai đều cần thiết.
Phòng thí nghiệm khái niệm tin học
Phân loại các ví dụ cụ thể theo ý tưởng tin học mà chúng minh họa.
Các phương pháp kiểm tra tính hợp lệ
| Kiểm tra | Quy tắc | Ví dụ |
|---|---|---|
| kiểm tra phạm vi | nằm giữa hai giới hạn | một tháng từ 1 đến 12 |
| kiểm tra giới hạn | ở một phía của một giới hạn duy nhất | tuổi ≥ 18 |
| kiểm tra tồn tại (lookup) kiểm tra | giá trị nằm trong danh sách hoặc bảng | mã sản phẩm tồn tại |
| kiểm tra độ dài | đúng số lượng ký tự | mã bưu chính gồm 6 ký tự |
| kiểm tra kiểu / ký tự | đúng loại dữ liệu | trường điện thoại chỉ cho phép nhập số |
| kiểm tra định dạng | khớp với mẫu | email chứa @ |
| kiểm tra sự hiện diện | các trường bắt buộc không được để trống | đã nhập tên |
| chữ số kiểm tra | một chữ số tính toán thêm từ các chữ số khác | ISBN, số thẻ |
Việc kiểm tra xem tháng nhập vào nằm trong khoảng từ 1 đến 12 là:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Kiểm tra phạm vi xác nhận một giá trị nằm trong giới hạn hợp lý.
Nối mỗi loại kiểm tra xác minh với mục đích của nó.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Hiện diện = không trống; định dạng = khớp mẫu; chữ số kiểm tra = được tính toán để bắt lỗi đánh máy.
Một chữ số được tính toán từ các chữ số khác để bắt số bị đánh sai (như trên ISBN và số thẻ) là ______ digit.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Chữ số kiểm tra được tính toán lại từ phần còn lại và so sánh, bắt hầu hết các lỗi đơn lẻ và hoán vị.
Ví dụ minh họa: hãy nêu tên phép kiểm tra mà giả mã thực hiện
| Giả mã | Kiểm tra |
|---|---|
IF x < 0 OR x > 10 THEN OUTPUT "Invalid" |
kiểm tra phạm vi: nằm giữa hai giới hạn |
IF x = "" THEN OUTPUT "Invalid" |
kiểm tra sự hiện diện: không để trống |
IF NOT(x = "Red" OR x = "Yellow" OR x = "Blue") THEN OUTPUT "Invalid" |
kiểm tra tồn tại (lookup): là một trong các mục của danh sách |
IF LENGTH(x) <> 6 THEN OUTPUT "Invalid" |
kiểm tra độ dài: sáu ký tự |
IF MID(x, 1, 1) < "A" OR MID(x, 1, 1) > "Z" THEN OUTPUT "Invalid" |
kiểm tra định dạng: ký tự đầu tiên là chữ cái |
- Một biển số xe gồm một chữ cái, ba chữ số và hai chữ cái cần kiểm tra định dạng ở từng vị trí và kiểm tra độ dài tổng cộng sáu ký tự. Một ngày sinh cần kiểm tra định dạng (
DD/MM/YYYY), kiểm tra phạm vi (tháng từ 1 đến 12, năm không phải tương lai) và kiểm tra sự hiện diện.
Nối mỗi dòng giả mã với loại kiểm tra xác minh mà nó thực hiện.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Kiểm tra rỗng = hiện diện; đếm ký tự = độ dài; hai giới hạn = phạm vi; danh sách giá trị cho phép = tồn tại hoặc tra cứu.
Ví dụ minh họa: chữ số kiểm tra và những gì nó bỏ sót
- Một sơ đồ đơn giản: chữ số kiểm tra là phần dư khi tổng các chữ số chia cho 10, được appended vào cuối số.
4162có tổng chữ số là 13, nên nó được lưu dưới dạng41623. - Người dùng nhập
41523: tổng giờ đây là 12, chữ số kiểm tra đáng lẽ phải là 2, nên lỗi bị phát hiện. - Người dùng nhập
14623: hai chữ số đầu bị hoán đổi, nhưng tổng vẫn là 13, nên chữ số kiểm tra khớp và lỗi không bị phát hiện. Các sơ đồ thực tế (ISBN, số thẻ) gán trọng số cho từng vị trí sao cho việc hoán đổi sẽ làm thay đổi kết quả.
Những gì xác thực không thể làm
- Xác thực bắt được dữ liệu bị định dạng sai hoặc nằm ngoài phạm vi.
- Nó không thể bắt được dữ liệu có định dạng đúng nhưng sai về mặt thực tế.
Bobnhập choBibvượt qua mọi kiểm tra; cũng vậy với mọi nhân vật phóng xạ gửi lên Sao Hỏa. - Để làm được điều đó, bạn cần xác minh ngược lại nguồn gốc, và một người đọc lại những gì họ đã nhập.
Tại sao xác minh vẫn có thể để lọt dữ liệu sai?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Xác minh kiểm tra hình thức, không phải sự thật — một giá trị đúng định dạng nhưng sai vẫn vượt qua.
Xác minh trong quá trình nhập dữ liệu
- Nhập đôi: dữ liệu được nhập hai lần, bởi cùng một người hoặc bởi hai người, và máy tính so sánh hai phiên bản và báo cáo bất kỳ sự khác biệt nào.一个新密码是 everyday case(一个常见例子).
- Kiểm tra trực quan: người dùng so sánh những gì hiển thị trên màn hình với tài liệu nguồn gốc và sửa chữa bất kỳ sự khác biệt nào trước khi lưu.
- Cả hai đều bảo vệ tính toàn vẹn bằng cách đảm bảo dữ liệu được lưu trữ khớp với nguồn gốc.
Yêu cầu người dùng nhập mật khẩu mới hai lần là ví dụ về:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Nhập đôi so sánh hai bản nhập để xác minh dữ liệu được nhập chính xác.
Xác minh trong quá trình truyền dữ liệu
- Các bit có thể bị đảo ngược trong quá trình truyền. Kiểm tra chẵn lẻ thêm một bit phụ vào mỗi byte sao cho số lượng bit 1 là chẵn (chẵn lẻ chẵn) hoặc lẻ; máy nhận đếm lại, và nếu có một bit bị đảo ngược thì sẽ không đạt yêu cầu đếm.
- Tổng kiểm tra (checksum) là một giá trị được tính toán từ một khối dữ liệu bằng thuật toán và được gửi kèm theo; máy nhận tính toán lại và so sánh. Việc chuyển tệp video từ máy ảnh sang máy chủ hoạt động theo cách này: nếu không khớp thì phải gửi lại.
- Kiểm tra dư thừa tuần hoàn (CRC) là một tổng kiểm tra mạnh hơn sử dụng phép chia đa thức, bắt được nhiều mẫu lỗi hơn.

Một bit bổ sung làm cho số lượng bit 1 là chẵn; một bit bị đảo ngược sẽ phá vỡ điều đó

Tính toán, gửi, tính toán lại, so sánh
Kiểm tra chẵn lẻ hoạt động bằng cách:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Bit chẵn lẻ làm tổng số bit 1 chẵn hoặc lẻ; người nhận đếm lại để phát hiện lỗi một bit.
Những phương pháp nào là phương pháp xác minh được sử dụng trong quá trình truyền dữ liệu? Chọn tất cả các đáp án đúng.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Kiểm tra chẵn lẻ và tổng kiểm tra tính toán lại giá trị ở đầu nhận. Nhập đôi và kiểm tra trực quan xảy ra trong quá trình nhập dữ liệu.
Kiểm tra chẵn lẻ byte phát hiện mọi lỗi truyền có thể xảy ra trong byte đó.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Hai bit bị lật giữ nguyên tổng số bit 1, nên chúng vẫn vượt qua. Kiểm tra chẵn lẻ chỉ đáng tin cậy trong việc bắt lỗi một bit.
Ví dụ minh họa: khối chẵn lẻ định vị bit lỗi
- Kiểm tra khối chẵn lẻ sắp xếp các byte thành một lưới: mỗi byte mang một bit chẵn lẻ hàng, và một byte chẵn lẻ phụ giữ chẵn lẻ cột của các byte phía trên nó.
- Bốn byte được gửi với chẵn lẻ chẵn, theo sau là byte chẵn lẻ. Đếm số bit 1 trong từng hàng và cột: byte thứ 3 có năm bit và cột thứ 4 có ba bit, cả hai đều là số lẻ.
- Bit nằm ở giao điểm của hàng và cột đó chính là bit đã bị thay đổi, nên nó được đặt lại từ 1 về 0. Một bit chẵn lẻ đơn lẻ phát hiện lỗi; một khối chẵn lẻ định vị và sửa lỗi.

Một hàng sai, một cột sai: bit nằm tại điểm giao nhau
Sắp xếp thứ tự các bước của kiểm tra khối chẵn lẻ.
Độ khó 3/5 · 200 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Hàng phát hiện, cột phát hiện, giao điểm xác định vị trí, và việc lật sửa chữa. Đó chính là những gì khối thêm vào so với bit chẵn lẻ đơn lẻ.
Ví dụ minh họa: kiểm tra nào bắt lỗi nào
- Người dùng nhập ngày sinh của mình là
31/02/2009, sau đó nhập địa chỉ email của họ hai lần. Kiểm tra nào bắt lỗi nào, và sự khác biệt là gì? - Xác thực: kiểm tra định dạng hoặc phạm vi từ chối
31/02/2009, vì tháng Hai chưa bao giờ có 31 ngày. Máy tính thử giá trị đối chiếu với một quy tắc. - Xác minh: nhập đôi so sánh hai địa chỉ email và báo cáo không khớp nếu chúng khác nhau. Máy tính so sánh hai bản sao, và nó sẽ chấp nhận một địa chỉ sai được nhập giống hệt nhau hai lần.
- Xác thực hỏi xem dữ liệu có hợp lý không; xác minh hỏi xem nó có được nhập chính xác không.

Hợp lý, hay được sao chép chính xác: hai câu hỏi khác nhau
Câu nào đúng?
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Xác minh kiểm tra tính hợp lý dựa trên quy tắc; kiểm tra xác minh rằng dữ liệu được nhập/truyền mà không bị thay đổi.
Kiểm tra xác minh chứng minh dữ liệu đã được sao chép hoặc nhập mà không bị thay đổi — nhưng không chứng minh giá trị đó đúng về mặt thực tế.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Nhập đôi / tổng kiểm chứng minh dữ liệu đến nơi không bị thay đổi; chỉ con người hoặc kiểm tra chéo mới xác nhận được nó thực sự đúng.
Điểm số dễ mất
- Chữ số kiểm tra là xác thực lúc nhập; chẵn lẻ và tổng kiểm tra xác minh quá trình truyền. Đừng phân loại chúng vào sai mục.
- Không kiểm tra nào chứng minh dữ liệu là đúng sự thật. Xác thực nói "hợp lý"; xác minh nói "khớp với nguồn gốc".
- Kiểm tra chẵn lẻ byte bỏ sót hai bit bị đảo ngược trong cùng một byte, vì chúng triệt tiêu lẫn nhau. Hãy nói "lỗi đơn bit".
- Mã hóa là biện pháp bảo mật. Nó không làm gì cho tính toàn vẹn.
Bạn đã nắm vững
- xác thực = các quy tắc tự động lúc nhập: phạm vi, giới hạn, tồn tại, độ dài, kiểu, định dạng, sự hiện diện, chữ số kiểm tra; nó không thể bắt được các giá trị có định dạng đúng nhưng sai
- kiểm chứng khi nhập = nhập hai lần và kiểm tra trực quan; khi chuyển = tính chẵn lẻ (byte hoặc khối), checksum, CRC
- một khối tính chẵn lẻ xác định bit bị đảo ở giao điểm của hàng và cột không thành công
- xác thực hỏi "hợp lý?"; kiểm chứng hỏi "sao chép chính xác?"; cả hai đều không hỏi "chính xác?"