Mật mã Null

Mật mã null (null cipher), còn được gọi là mật mã che giấu, là một dạng mã hóa cổ xưa trong đó thông điệp được trộn với một lượng lớn "vật liệu" không phải là mật mã. Ngày nay nó được coi là một dạng mật mã đơn giản, có thể được sử dụng để ẩn thông tin hay bản mã.

== Cách thức sử dụng ==
Trong mật mã cổ điển, các giá trị rỗng (null) nhằm mục đích gây nhầm lẫn cho người phá mã. Trong mật mã null, thông điệp được bao gồm trong bản mã và người ta cần loại bỏ các ký tự nhất định để giải mã. Hầu hết các ký tự trong một bản mật mã như vậy là rỗng, chỉ một số là quan trọng và một số ký tự khác có thể được sử dụng làm chìa khóa đến các ký tự quan trọng.

Đây là một ví dụ về triển khai mật mã null. Việc xâu chuỗi chữ cái đầu tiên của mỗi ba từ trong văn bản sau lại với nhau cho thấy "Wikipedia" là thông điệp ẩn:

- It's important we allow anyone interested in gaining knowledge access to information which is published freely. There exists a website devoted to this idea, and you are on it!

Một kỹ thuật tương tự là ẩn toàn bộ các từ, chẳng hạn như trong thông điệp có vẻ bình thường này được viết bởi một tù nhân nhưng đã được FBI giải mã:

- SALUDOS LOVED ONE SO TODAY I HEARD FROM UNCLE MOE OVER THE PHONE. HE TOLD ME THAT YOU AND ME GO THE SAME BIRTHDAY. HE SAYS YOUR TIME THERE TESTED YOUR STRENGTH SO STAY POSITIVE AT SUCH TIMES. I'M FOR ALL THAT CLEAN LIVING! METHAMPHETAMINES WAS MY DOWN FALL. THE PROGRAM I'M STARTING THE NINTH IS ONE I HEARD OF A COUPLE WEEKS BEFORE SEPTEMBER THROUGH MY COUNSELOR BARRIOS. BUT MY MEDICAL INSURANCE COVERAGE DENIES THEY COVER IT. I'M USING MY TIME TO CHECK AND IF THE INSURANCE AGENT DENIES STILL MY COVERAGE I'M GETTING TOGETHER PAPERWORK SAYING I TESTED FOR THIS TREATMENT REQUIRED ON THE CHILD CUSTODY. THE NINTH WILL MEAN I HAVE TESTED MY DETERMINATION TO CHANGE. ON THE NEXT FREE WEEKEND THE KIDS ARE COMING, BUT FIRST I GOTTA SHOW CAROLINA I'M STAYING OUT OF TROUBLE WAITING TO GET MYSELF ADMITTED ON THE PROGRAM. THE SUPPORTING PAPERWORK THAT THE FAMILY COURTS GOT WILL ALSO PROVE THERE'S NO REASON NEITHER FOR A WITNESS ON MY CHILDREN'S VISITS. OF COURSE MY BRO HAS HIS MIND MADE UP OF RECENT THAT ALL THIS DRUG USAGE DON'T CONCERN OUR VISITS. I THINK THAT MY KIDS FEEL I NEED THEIR LOVE IF I'M GONNA BE COOL. GUILTY FEELINGS RISE ON ACCOUNT OF THE MISTAKES I COULD WRITEUP. FOR DAYS I'M HERE. HE GOT A GOOD HEART. SHOULD YOU BE HAVING PROBLEMS BE ASSURED THAT WHEN YOU HIT THE STREETS WE'LL BE CONSIDERING YOU...

Chỉ lấy năm từ một lần, người ta có thể tạo lại thông điệp ẩn đề xuất một "cú đánh" vào ai đó:

- TODAY MOE TOLD ME HE TESTED POSITIVE FOR METHAMPHETAMINES THE NINTH OF SEPTEMBER BUT DENIES USING AND DENIES GETTING TESTED ON NINTH (Dịch thô:Hôm nay Moe cho tôi biết rằng anh ấy đã duơng tính Methamphetamine vào 9/9 nhưng lại từ chối là đã sử dụng và đã kiểm tra)
- TESTED ON THE FIRST (Đã kiểm tra vào ngày 1)
- I'M WAITING ON PAPERWORK (Tôi đang đợi công việc giấy tờ)
- GOT NO WITNESS OF HIS RECENT USAGE (Không có ai chứng kiến việc anh ấy mới dùng (Methamphetamine) gần đây)
- I FEEL IF GUILTY OF WRITEUP HE SHOULD BE HIT (Tôi thấy tội lỗi với WRITEUP, nhưng anh ta nên bị đánh)(?)

Các tùy chọn khác bao gồm định vị các chữ cái quan trọng bên cạnh hoặc ở những khoảng cách nhất định từ các dấu câu hoặc các ký tự cụ thể.

Trong lịch sử, khi người ta che giấu thường sẽ sử dụng mật mã thay thế và chuyển vị trên dữ liệu trước khi che giấu. Ví dụ, Đức Hồng y Richelieu được cho là đã sử dụng mật mã ô lưới để viết các thông điệp bí mật, sau đó các khoảng trống được lấp đầy bằng các từ và chữ cái không liên quan để tạo ra ấn tượng về một văn bản liên tục.

== Công dụng ==
Nói chung, rất khó và tốn thời gian để tạo ra những văn bản mã có vẻ tự nhiên và không gây nghi ngờ. Nếu không có chìa khóa hoặc mã hóa thực tế nào được sử dụng, thì tính bảo mật của thông điệp hoàn toàn dựa vào tính bí mật của phương pháp che giấu. Các mật mã Null trong thời hiện đại được sử dụng bởi các tù nhân trong nỗ lực trao đổi thông tin với nhau.

== Xem thêm ==
- Mật mã chuyển vị
- Mật mã thay thế

== Liên kết ngoài ==
- Implementation of ADFGVX in JavaScript