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

wk1003mike / Shutterstock.com

Bạn có thể đã thấy thuật ngữ “mã hóa” được sử dụng trên internet. Vậy đó là cái 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 email an toàn, đều phụ thuộc vào nó. Nếu không có mã hóa, chúng tôi sẽ không có quyền riêng tư.

Mã hóa là gì?

Nếu bạn viết điều gì đó quan trọng, riêng tư hoặc nhạy cảm, bạn có thể lo lắng rằng người khác sẽ đọc nó. Nếu bạn cần đưa nó cho một người đưa tin để đưa cho một người khác, thì nguy cơ những người đọc nhầm tin nhắn đó sẽ tăng lên. 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 bộ sưu tập các ký tự và biểu tượng vô nghĩa.

The Scytale

Kể từ những thời kỳ đầu tiên, mọi người đã sử dụng các kỹ thuật khác nhau để ngăn không cho bất kỳ ai 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 chẽ xung quanh một thanh gỗ được gọi là  scytale . Họ viết thông điệp của họ dọc theo chiều dài của thanh, trên giấy da bọc.

Không được che đậy, chữ viết trên giấy da không có ý nghĩa gì. Một người đưa tin sẽ chuyển gói giấy da đến người nhận, người sẽ đọc tin nhắn một cách riêng tư sau khi bọc nó quanh scytale của chính họ. Đây là một dạng của  mật mã chuyển vị .

Đó là một kỹ thuật sơ khai, nhưng nó có các yếu tố mà bạn sẽ 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 lược đồ mã hóa là gì và cách sử dụng nó. Và cả hai đều cần cơ chế phù hợp để làm như vậy.

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 gồm năm hoặc năm hoặc sáu x sáu các chữ cái. Một chữ cái đượ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 trong hàng đầu tiên được mã là “11”, chữ cái thứ tư trên hàng thứ hai sẽ được viết là “42”, v.v.

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

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

Caesar’s Cipher

Julius Caesar đã đặt tên của mình cho  Caesar’s Cipher . Điều này sử dụng một độ lệch — hoặc “xoay” —để chọn một chữ cái cách chữ cái bạn sắp xếp một khoảng cách nhất  định . Nếu bạn đang sử dụng hiệu số của 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 để giải mã thông điệp bằng cách trừ đi độ lệch từ các chữ cái mà họ đã nhận được.

Mật mã Caesar có độ lệch 13 — được gọi là “vòng quay 13” hoặc ROT13 — sở hữu chất lượng đặc biệt. Có 26 chữ cái trong bảng chữ cái tiếng Anh tiêu chuẩn, và 13 chữ cái chia thành 26 chính xác hai lần. Với sự bù đắp này, để giải mã điều gì đó, bạn có thể đưa nó qua quy trình giải mã một lần nữa. Kết thúc hai lần đưa bạn trở lại văn bản gốc.

Đồng bằng: ABCDEFGHIJKLMNOPQRSTUVWXYZ 
ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM

Nếu bạn chọn các chữ cái “GEEK” trong bảng chữ cái trên cùng và ghi chú các chữ cái phù hợp trong bảng chữ cái dưới, bạn sẽ nhận được “TRRX”. Nếu bạn làm điều đó một lần nữa với “TRRX” trong bảng chữ cái trên cùng, bạn sẽ nhận được các chữ cái “GEEK” từ bảng chữ cái dưới cùng.

Theo thuật ngữ lập trình, điều này đơn giản hóa vấn đề vì bạn chỉ cần viết một quy trình xử lý. Không cần quy trình giải mã. Đây là lý do tại sao viết triển khai ROT13 là một bài tập phổ biến cho 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”, sau đó đưa đầu ra trở lại làm đầu vào.

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

Tất cả các ví dụ mà 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 ban đầu của bạn, được gọi là “plaintext”, thành phiên bản được kết hợp, được gọi là bản mã. Bộ quy tắc đó là một thuật toán. Và đó là mã hóa.

Đó là các thuật toán dành cho quyền riêng tư.

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

Bakhtiar Zein / Shutterstock.com

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

Tất cả các hệ thống cũ có thể được khắc phục với 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 trở nên có thể đọc được. Caesar’s Cipher có thể bị phá vỡ bằng cách thử các hiệu số khác nhau trên phần đầu tiên của thông báo. Bạn chỉ có 25 người để thử, nhiều nhất.

Các hình vuông đa giác đặt ra nhiều thách thức hơn vì bố cục của các chữ cái trong hình vuông là không thể đoán trước. Nếu bạn biết bố cục của hình vuông là như thế nào thì đó thậm chí không phải là một thách thức. Nếu bạn không có ý tưởng về bố cục của 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ã. Đó được 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 mã nào đại diện cho chữ cái rõ ràng nào. Một lược đồ mã hóa an toàn cần được bảo mật cho dù ai biết về cơ chế của lược đồ đó và bản mã phải chịu được các cuộc tấn công phân tích mật mã.

Không phải ký tự, mà là bit

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

Họ thao tác các bit — tất cả những cái đó và số 0 — bên trong mỗi khối theo các 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 là 128 bit, nó sẽ hoạt động theo cách của nó thông qua dữ liệu theo khối 128 bit. Nếu đoạn cuối cùng được xử lý nhỏ hơn 128 bit, nó sẽ được đệm thành 128 bit.

Có nhiều sơ đồ 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 lược đồ 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 và sử dụng các kết hợp khác nhau của các phép biến đổi toán học.

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

Chuỗi băm (Hash Strings)

Trước 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 biến đổi một chiều. Đây là phản nghĩa của ROT13 vì bản mã kết quả không thể được 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ế. Loại 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 rõ được băm thành một chuỗi bản mã, được gọi là  băm (hash) hoặc chuỗi băm (hash strings) . Tất cả các chuỗi băm có cùng độ dài.

Làm thế nào là điều này hữu ích? Chà, một trang web an toàn sẽ không lưu mật khẩu của bạn ở dạng văn bản rõ ràng. 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 và nhập mật khẩu vào lần tiếp theo, mật khẩu 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 họ khớp, bạn có thể nhập. Nếu bạn nhập mật khẩu không chính xác, hai chuỗi băm sẽ không khớp 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 lộ ra ngoài. Nếu họ bị tấn công, 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 hàm băm là duy nhất ngay cả khi hai hoặc nhiều người dùng tình cờ chọn cùng một mật khẩu.

Ổ cứng được mã hóa

Để ngă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 dữ liệu và ai có thể giải mã dữ liệu đó. Khóa là một chuỗi dài các byte được tạo ra 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 hoặc hơn. Khóa được sử dụng bởi thuật toán mã hóa khi nó 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 được 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 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 dữ liệu. Loại bảo vệ này bảo vệ dữ liệu ở trạng thái tĩnh hoặc “ở trạng thái nghỉ”.

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

Trang web an toàn

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 mình đã kết nối với một trang web an toàn, phải không? Chà, đại loại. Ý nghĩa thực sự 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 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 rõ ràng 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 rằng giao tiếp của bạn với trang web đã được mã hóa.

Mã hóa này có thể thực hiện được vì trình duyệt của bạn và trang web 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 trao đổi khóa công khai . Khóa công khai có thể giải mã thứ gì đó đã được mã hóa bằng khóa riêng .

Trình duyệt của bạn và trang web trao đổi các khóa công khai của chúng và sau đó mã hóa bằng các khóa riêng tư của chúng. Bởi vì mỗi đầu của kết nối có khóa công khai của đầu kia, mỗi đầu có thể giải mã thông tin mà chúng nhận được từ đầu kia. Các khóa cá nhân không bao giờ cần được tiết lộ.

Phát hành khóa công khai là an toàn. Không thể sử dụng khóa công khai để 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 công khai của trang web, nhưng bạn không thể mạo danh trang web chính hãng vì bạn không có khóa cá nhân. Đ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 chính hãng của cặp khóa công khai và riêng tư, và không phải là 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 Tổ chức phát hành chứng chỉ 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 Tổ chức phát hành chứng chỉ và giải mã một số thông tin trên chứng chỉ. Điều này yêu cầu thêm chìa khóa. Trình duyệt của bạn có các khóa công khai của Tổ chức phát hành 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 liên quan. Cũng như trao đổi khóa công khai, trình duyệt của bạn và trang web tạo 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, trình duyệt sẽ đặt ổ khóa vào thanh địa chỉ.

Email an toàn

Khái niệm về khóa công khai và khóa cá nhân lặp đi lặp lại trong mã hóa. Một phương pháp phổ biến để bảo mật email khi chuyển tiếp sử dụng các cặp khóa công khai và khóa riêng tư. 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ẻ. Thư đượ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 công khai 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 thư trả lời.

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

Ứng dụng email khách của người gửi tạo một khóa ngẫu nhiên. Điều này được sử dụng để mã hóa thư email. Sau đó, khóa ngẫu nhiên được mã hóa bằng khóa công khai 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, khóa này sau đó được sử dụng để giải mã thư.

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

Tất nhiên, các hệ thống email an toàn cũng phải đối mặt với câu hỏi về tính xác thực. Bạn phải tin tưởng khóa công khai đã được gửi cho bạn. Chìa 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ẽ trò chuyện là một 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 công khai.

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ừ một kho lưu trữ . Các khóa công khai được tải lên kho lưu trữ được xác nhận bởi kho lưu trữ trước khi chúng được công khai.

Mã hóa làm nền tảng cho Cuộc sống kỹ thuật số của chúng tôi

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

 

Đọc tiếp

Có thể bạn quan tâm

Có thể bạn quan tâm