Mã hóa là gì và nó hoạt động như thế nào?

Tác giả sysadmin, T.Mười 24, 2023, 11:23:32 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Mã hóa là gì và nó hoạt động như thế nào?


Bạn có thể đã thấy thuật ngữ "mã hóa" được sử dụng trên internet.

  • Mã hóa là một công nghệ quan trọng để bảo mật kỹ thuật số, đảm bảo quyền riêng tư bằng cách thay đổi dữ liệu thành dạng không thể đọc được đối với những người không có quyền truy cập.
  • Các kỹ thuật mã hóa lịch sử như Scytale, Polybius Square và Caesar's Cipher đã ảnh hưởng đến các hệ thống mã hóa hiện đại.
  • Ngày nay, mã hóa hoạt động bằng các thuật toán dựa trên việc phân tích các số cực lớn thành số nguyên tố và bảo vệ dữ liệu được lưu trữ, bảo mật trang web cũng như bảo mật liên lạc kỹ thuật số.


Bạn có thể đã thấy thuật ngữ "mã hóa" được sử dụng trên internet. Vậy đo la cai gi? Nó có thể là công nghệ quan trọng nhất mà chúng tôi có. Hầu hết các biện pháp bảo mật kỹ thuật số, mọi thứ từ duyệt web an toàn đến bảo mật email, đều phụ thuộc vào nó. Nếu không có mã hóa, chúng ta sẽ không có quyền riêng tư.

Bài viết về Tuần nhận thức về An ninh mạng này được mang đến cho bạn cùng với Incogni.

1. Mã hóa là gì?

Mã hóa thay đổi thành phần của tin nhắn hoặc dữ liệu để chỉ những người biết cách đưa nó về dạng ban đầu mới có thể đọc được. Đối với bất kỳ ai khác, nó sẽ xuất hiện dưới dạng vô nghĩa hoặc một tập hợp các ký tự và biểu tượng vô nghĩa.

Điều này đặc biệt hữu ích nếu bạn đang gửi thông tin nhạy cảm hoặc riêng tư – một sơ đồ mã hóa tốt sẽ giúp thông tin đó tránh xa những con mắt tò mò. Lược đồ mã hóa chỉ mô tả cách thay đổi tin nhắn hoặc dữ liệu để làm cho nó không thể đọc được. Chúng tôi sẽ cung cấp cho bạn một vài ví dụ lịch sử, sau đó thảo luận về cách thực hiện ngày nay.

2. Scytale

Kể từ thời xa xưa nhất, mọi người đã sử dụng các kỹ thuật khác nhau để ngăn chặn bất kỳ ai ngoại trừ người nhận dự định đọc tin nhắn riêng tư. Người Hy Lạp cổ đại sẽ quấn một dải giấy da theo hình xoắn ốc chặt quanh một thanh gỗ gọi là scytale. Họ viết thông điệp của mình dọc theo chiều dài của thanh, trên tờ giấy da được bọc.

Khi mở ra, chữ viết trên tờ giấy da chẳng có ý nghĩa gì. Người đưa tin sẽ chuyển giấy da cho người nhận, người sẽ đọc tin nhắn một cách riêng tư sau khi gói nó quanh chiếc scytale phù hợp của riêng họ. Đây là một dạng mật mã chuyển vị.

Đó là một kỹ thuật nguyên thủy nhưng có những yếu tố mà bạn có thể tìm thấy trong các hệ thống mã hóa hiện đại. Cả người gửi và người nhận đều phải biết trước sơ đồ mã hóa là gì và cách sử dụng nó. Và cả hai đều cần có cơ chế phù hợp để làm được điều đó.

3. Quảng trường Polybius

Một phương pháp khác được người Hy Lạp cổ đại sử dụng là hình vuông Polybius. Đây là một lưới các chữ cái có kích thước 5 x 5 hoặc 6 x 6. Một lá thư được tham chiếu bởi tọa độ của nó, giống như các thiết giáp hạm trong trò chơi. Chữ cái đầu tiên ở hàng đầu tiên được mã hóa là "11", chữ cái thứ tư ở hàng thứ hai sẽ được viết là "42", v.v.

Tất nhiên, có nhiều cách để lấp đầy lưới bằng các chữ cái. Trừ khi bạn biết cách bố trí các chữ cái, việc giải mã sẽ rất khó khăn. Điều này cho phép bạn thiết lập sơ đồ với nhiều ô vuông có bố cục khác nhau. Ví dụ: bạn có thể tạo bảy ô vuông và sử dụng một ô vuông khác nhau cho mỗi ngày trong tuần. Các sơ đồ sử dụng nhiều bảng chữ cái được gọi là mật mã đa bảng chữ cái.

Hình vuông Polybius là một dạng mã. Mã thay thế các ký tự khác cho chữ cái, trong ví dụ này là chữ số. Mật mã thay thế các chữ cái bằng các chữ cái khác.

4. Mật mã của Caesar

Julius Caesar đã đặt tên của mình cho Caesar's Cipher. Thao tác này sử dụng phần bù - hoặc "xoay" - để chọn một chữ cái có khoảng cách nhất định so với chữ cái bạn đang mã hóa. Nếu bạn đang sử dụng độ lệch bằng hai, "A" sẽ được viết là "C" và "D" sẽ được viết là "F." Người nhận phải biết độ lệch chính xác để sử dụng nhằm giải mã tin nhắn bằng cách trừ đi phần bù cho các chữ cái họ nhận được.

Mật mã Caesar có độ lệch là 13 - được gọi là "xoay 13" hoặc ROT13 - sở hữu một chất lượng đặc biệt. Có 26 chữ cái trong bảng chữ cái tiếng Anh chuẩn và 13 chữ cái được chia thành 26 đúng hai lần. Với phần bù này, để giải mã thứ gì đó bạn có thể đưa nó vào quá trình mã hóa một lần nữa. Mã hóa hai lần sẽ đưa bạn trở lại văn bản gốc.

Mã nguồn [Chọn]
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM
Nếu bạn chọn các chữ cái "GEEK" ở bảng chữ cái trên cùng và lưu ý các chữ cái phù hợp ở bảng chữ cái phía dưới, bạn sẽ nhận được "TRRX". Nếu bạn làm lại điều đó với "TRRX" ở bảng chữ cái trên cùng, bạn sẽ nhận được các chữ cái "GEEK" ở bảng chữ cái phía dưới.

Trong thuật ngữ lập trình, điều này giúp đơn giản hóa vấn đề vì bạn chỉ cần viết một chương trình mã hóa. Không cần phải có thói quen giải mã. Đây là lý do tại sao việc viết triển khai ROT13 là một bài tập phổ biến đối với những người học lập trình. ROT13 cũng thường được coi là một ví dụ về mã hóa cấp thấp, rất kém.

Bạn có thể tự mình thử với công cụ ROT13 trực tuyến này. Hãy thử nhập "Alaska Nynfxn" rồi đặt đầu ra trở lại làm đầu vào.

5. Vậy Mã hóa là gì?

Tất cả các ví dụ chúng tôi đề cập ở đây đều dễ bẻ khóa, nhưng chúng minh họa một yếu tố chung được chia sẻ giữa tất cả chúng và giữa tất cả các hình thức mã hóa. Có một bộ quy tắc cần tuân theo để chuyển đổi dữ liệu gốc của bạn, được gọi là "văn bản gốc", thành phiên bản được mã hóa, được gọi là văn bản mã hóa. Bộ quy tắc đó là một thuật toán. Và đó chính là mã hóa.

Đó là thuật toán cho sự riêng tư.

6. Ngày nay mã hóa hoạt động như thế nào?

Cũng giống như con người ở Hy Lạp cổ đại, con người trong thời đại kỹ thuật số mong muốn lưu trữ hoặc gửi dữ liệu riêng tư sẽ phải đối mặt với nhiều thách thức. Bạn có thể làm gì để ngăn chặn những người không được phép truy cập dữ liệu? Và có thể làm gì để đảm bảo an toàn?

Tất cả các hệ thống cũ có thể được khắc phục bằng kiến thức về hệ thống mã hóa. Sử dụng cùng một thanh có đường kính và thông báo scytale sẽ có thể đọc được. Mật mã Caesar có thể bị phá bằng cách thử các độ lệch khác nhau trên phần đầu tiên của tin nhắn. Bạn chỉ có 25 để thử nhiều nhất.

Hình vuông Polybius đặt ra nhiều thách thức hơn vì cách bố trí các chữ cái trong hình vuông là không thể đoán trước được. Nếu bạn biết cách bố trí hình vuông thì đó thậm chí không phải là một thách thức. Nếu bạn không biết về cách bố trí hình vuông, bạn có thể thử giải mã thông điệp bằng cách nghiên cứu bản mã. Đó gọi là phân tích mật mã.

Với một mật mã đơn giản, bạn có thể sử dụng các công cụ hỗ trợ như bảng tần số chữ cái để tìm ra chữ cái nào trong văn bản mã hóa đại diện cho chữ cái nào trong văn bản gốc. Một sơ đồ mã hóa an toàn cần phải được bảo mật bất kể ai biết về cơ chế của sơ đồ đó và văn bản mã hóa phải chịu được các cuộc tấn công phân tích mật mã.

7. Không phải ký tự, bit

Các chương trình kỹ thuật số mạnh mẽ không hoạt động trên các chữ cái và ký tự cùng một lúc như mật mã nối tiếp. Chúng xử lý dữ liệu theo từng đoạn một và được gọi là mật mã khối.

Họ thao tác các bit - tất cả các số 1 và số 0 - bên trong mỗi khối theo quy tắc của các phép biến đổi toán học phức tạp được nhúng bên trong các thuật toán mã hóa. Nếu một thuật toán sử dụng kích thước khối 128 bit thì nó sẽ xử lý dữ liệu theo từng khối 128 bit. Nếu đoạn cuối cùng được xử lý nhỏ hơn 128 bit thì nó sẽ được đệm thành 128 bit.

Có rất nhiều chương trình mã hóa khối có sẵn. Tiêu chuẩn mã hóa nâng cao (AES) là tiêu chuẩn mã hóa chính thức của chính phủ Hoa Kỳ. Các sơ đồ mã hóa khác nhau sử dụng các thuật toán khác nhau và độ dài khối khác nhau cũng như sử dụng các kết hợp biến đổi toán học khác nhau.

Tất cả điều đó nghe có vẻ rất kỹ lưỡng, nhưng làm cách nào để ngăn chặn người không được ủy quyền sử dụng cùng một sơ đồ mã hóa để giải mã dữ liệu được mã hóa của chúng tôi?

8. Chuỗi băm

Đầu tiên chúng ta sẽ xem xét một trường hợp đặc biệt. Có thể mã hóa dữ liệu bằng cách sử dụng phép biến đổi một chiều. Đây chính là phản đề của ROT13 vì bản mã thu được không thể hoàn nguyên về bản rõ. Chính xác hơn, nó không thể được giải mã trong một khung thời gian thực tế. Kiểu mã hóa này được sử dụng trong các hàm băm trong đó một chuỗi văn bản gốc được băm thành một chuỗi văn bản mã hóa, được gọi là chuỗi băm hoặc chuỗi băm. Tất cả các chuỗi băm có cùng độ dài.

Điều này hữu ích như thế nào? Chà, một trang web an toàn sẽ không lưu trữ mật khẩu của bạn ở dạng văn bản thuần túy. Mật khẩu của bạn được băm và chuỗi băm được lưu trữ. Mật khẩu của bạn không bao giờ được giữ lại. Khi bạn đăng nhập lần tiếp theo và nhập mật khẩu của mình, nó sẽ được băm và chuỗi băm được so sánh với chuỗi băm được lưu trữ trong chi tiết tài khoản của bạn. Nếu chúng khớp, bạn có thể vào. Nếu bạn nhập sai mật khẩu, hai chuỗi băm sẽ không khớp nhau và bạn không được phép vào.

Điều này cho phép trang web sử dụng xác thực mà không cần phải lưu trữ mật khẩu ở dạng bị lộ. Nếu họ bị hack, không có mật khẩu nào bị xâm phạm. Kỹ thuật băm cũng có thể thêm dữ liệu ngẫu nhiên, duy nhất được gọi là muối vào mật khẩu trước khi chúng được băm. Điều này có nghĩa là tất cả các giá trị băm là duy nhất ngay cả khi hai hoặc nhiều người dùng đã chọn cùng một mật khẩu.

9. Mã hóa được sử dụng để làm gì?

Ngày nay, mã hóa được sử dụng cho hầu hết mọi thứ (hoặc ít nhất là như vậy). Dưới đây là một số ví dụ bạn gặp hầu như hàng ngày.

9.1. Ổ lưu trữ được mã hóa

Để ngăn chặn những người không được phép giải mã dữ liệu, một khóa được sử dụng để xác định ai đã mã hóa và ai có thể giải mã dữ liệu đó. Khóa là một chuỗi byte dài được tạo bởi một thuật toán phức tạp. Chúng thường có kích thước từ 128 byte đến 2048 byte trở lên. Khóa được thuật toán mã hóa sử dụng khi mã hóa bản rõ. Kích thước khóa độc lập với kích thước khối.

Để bảo vệ dữ liệu được lưu trữ cục bộ, toàn bộ ổ cứng có thể được mã hóa. Mã hóa được gắn với danh tính đăng nhập của người dùng và khóa được tạo tự động và áp dụng tự động. Người dùng không có bất kỳ tương tác trực tiếp nào với khóa và khóa không bao giờ cần phải gửi cho bất kỳ ai khác.

Vì khóa được gắn với danh tính đăng nhập của người dùng nên việc tháo ổ cứng ra khỏi máy tính và kết nối với máy tính khác sẽ không cho phép truy cập vào dữ liệu. Loại bảo vệ này bảo vệ dữ liệu tĩnh hoặc "ở trạng thái nghỉ".

Điều này không chỉ áp dụng cho máy tính thông thường. Bộ lưu trữ trên điện thoại hiện đại cũng được mã hóa và vì lý do chính đáng - điện thoại của chúng ta là kho tàng thông tin cá nhân và nhạy cảm, và sẽ không hữu ích nếu bất kỳ ai tình cờ nhấc điện thoại của chúng ta đều có thể truy cập được thông tin đó.

Nếu dữ liệu của bạn phải được truyền đi, bạn cần xem xét cách bạn sẽ bảo vệ dữ liệu của mình "trong quá trình truyền tải".

9.2. Bảo mật trang web

Khi bạn kết nối với một trang web và nhìn thấy biểu tượng ổ khóa trên thanh địa chỉ, bạn biết rằng mình đang kết nối với một trang web an toàn, phải không? Vâng, đại loại thế. Ý nghĩa thực sự của nó là kết nối giữa máy tính và trang web của bạn được mã hóa bằng mã hóa SSL/TLS.

Đó là một điều tốt, nhưng nó không xác minh được tính bảo mật của phần còn lại của trang web. Trang web có thể đang lưu trữ mật khẩu ở dạng văn bản gốc và sử dụng mật khẩu quản trị viên mặc định trên cơ sở dữ liệu. Nhưng ít nhất nếu bạn nhìn thấy ổ khóa, bạn biết thông tin liên lạc của bạn với trang web đã được mã hóa.

Việc mã hóa này có thể thực hiện được vì trình duyệt và trang web của bạn sử dụng cùng một sơ đồ mã hóa với nhiều khóa. Khi bắt đầu phiên kết nối, trình duyệt của bạn và trang web sẽ trao đổi khóa công khai. Khóa chung có thể giải mã nội dung nào đó đã được mã hóa bằng khóa riêng.

Trình duyệt của bạn và trang web trao đổi khóa chung và sau đó mã hóa bằng khóa riêng của họ. Vì mỗi đầu kết nối đều có khóa chung của đầu kia nên mỗi đầu có thể giải mã thông tin nhận được từ đầu kia. Các khóa riêng không bao giờ cần phải bị lộ.

Việc phát hành khóa công khai là an toàn. Khóa công khai không thể được sử dụng để mã hóa dữ liệu một cách gian lận. Vì vậy, mặc dù bạn nhận được bản sao khóa chung của trang web, bạn không thể mạo danh trang web chính hãng vì bạn không có khóa riêng. Điều này đặt ra câu hỏi về tính xác thực. Làm thế nào để bạn biết trang web đó là chủ sở hữu thực sự của cặp khóa công khai và riêng tư chứ không phải một trang web sao chép bằng cách nào đó đã đánh cắp cả hai khóa từ trang web chính hãng?

Chứng chỉ được sử dụng để xác minh danh tính của các trang web. Chúng được cấp bởi Cơ quan chứng nhận sau khi họ đã xác minh danh tính của người nộp đơn. Trang web gửi chứng chỉ như một phần của quá trình bắt tay khi bắt đầu phiên kết nối để trình duyệt web có thể xác thực chứng chỉ.

Nó thực hiện điều này bằng cách liên hệ với Cơ quan cấp chứng chỉ và giải mã một số thông tin trên chứng chỉ. Điều này đòi hỏi nhiều chìa khóa hơn. Trình duyệt của bạn có khóa công khai của Cơ quan cấp chứng chỉ chính như một phần của gói cài đặt. Và vẫn còn nhiều chìa khóa hơn nữa. Cùng với việc trao đổi khóa công khai, trình duyệt của bạn và trang web sẽ tạo các khóa phiên duy nhất để bảo mật hơn nữa thông tin liên lạc của họ.

Khi trình duyệt của bạn đã xác minh tính xác thực của trang web và độ mạnh của mã hóa, nó sẽ đặt ổ khóa vào thanh địa chỉ.

9.3. Bảo mật Email

Khái niệm về khóa công khai và khóa riêng tư xuất hiện nhiều lần trong mã hóa. Một phương pháp phổ biến để bảo mật email khi chuyển tiếp là sử dụng các cặp khóa chung và khóa riêng. Khóa công khai có thể được trao đổi một cách an toàn, khóa riêng tư không được chia sẻ. Tin nhắn được mã hóa bằng khóa riêng của người gửi. Người nhận có thể sử dụng khóa chung của người gửi để giải mã và đọc nó. Họ có thể sử dụng khóa riêng của mình để mã hóa câu trả lời.

OpenPGP là một sơ đồ mã hóa nổi tiếng tuân theo mô hình này, với một chút thay đổi.

Ứng dụng email khách của người gửi tạo ra một khóa ngẫu nhiên. Điều này được sử dụng để mã hóa tin nhắn email. Khóa ngẫu nhiên sau đó được mã hóa bằng khóa chung của người nhận. Tin nhắn được mã hóa và khóa ngẫu nhiên được mã hóa sẽ được gửi đến người nhận. Chương trình email của người nhận sử dụng khóa riêng của họ để giải mã khóa ngẫu nhiên, sau đó khóa này được sử dụng để giải mã thư.

Mục đích của bước bổ sung là cho phép gửi email một cách an toàn đến nhiều người nhận. Ứng dụng email khách của bạn không cần mã hóa toàn bộ email riêng biệt cho từng người nhận, chỉ cần mã hóa khóa ngẫu nhiên.

Tất nhiên, hệ thống email an toàn cũng phải đối mặt với vấn đề về tính xác thực. Bạn phải tin tưởng vào khóa công khai đã được gửi cho bạn. Các khóa được gắn với địa chỉ email. Việc gửi khóa công khai cho bạn từ địa chỉ email mà bạn sẽ liên lạc là bước đầu tiên tốt. Hầu hết các ứng dụng email đều có thể hiển thị địa chỉ email được liên kết với khóa chung.

Một phương pháp khác để kiểm tra tính xác thực của khóa công khai là lấy nó từ kho lưu trữ. Các khóa công khai được tải lên kho lưu trữ sẽ được kho lưu trữ xác minh trước khi chúng được công khai.

10. Mã hóa củng cố cuộc sống số của chúng ta

Ít nhất, mã hóa củng cố cuộc sống số của chúng ta nếu chúng ta thực hiện đúng. Tránh bất kỳ loại kết nối từ xa không an toàn nào (cho dù làm việc từ xa hay mua hàng trực tuyến), sử dụng ứng dụng email có khả năng mã hóa tin nhắn riêng tư và sử dụng ứng dụng nhắn tin có mã hóa hai đầu.