Lời đầu tiên, tôi xin cảm ơn tất cả các bạn đã nhiệt tình tham gia cuộc thi nhỏ do tôi tổ chức. Cảm ơn Spiderum team đã tạo môi trường và đầu tư phần thưởng cho cuộc thi.

Trước hết, tôi xin phân tích hệ mật mã và các gợi ý được đưa ra.

Hệ mật mã được sử dụng trong cuộc thi là hệ mã Vigenère. Đây là hệ mật mã được cải tiến từ hệ mã Ceasar. Cách gọi hệ mã kết hợp giữa Ceasar và hoán vị do tôi tự nghĩ ra trong lúc học cho dễ nhớ, không có tài liệu nào ghi như thế.

Với hệ Ceasar ta vét cạn hết các trường hợp sẽ có 26 trường hợp. Với hệ mã Vigenère, nếu mỗi block có 2 phần tử, ta sẽ phải tìm 26*26 khóa, với 3 phần tử sẽ là 26*26*26 khóa. Cứ thế tăng lên theo hàm mũ. Đây là điểm an toàn hơn của mã Vigenère so với mã Ceasar.

Để thám mã hệ Vigenère ta cần 2 bước:

+ Bước 1 đoán độ dài khóa dựa trên chỉ số trùng hợp

+ Bước 2 sử dụng phân tích thống kê tần suất tìm ra từ khóa.

Thám mã không phải chuyên môn của tôi, các bạn có thể tự tìm hiểu thêm.

Giờ quay lại với cuộc thi. Để thực sự thám mã theo các bước bên trên là không thể đối với đoạn mã ngắn và những bạn không có chuyên môn. Do đó buộc phải tìm khóa dựa trên các gợi ý. Giờ chúng ta sẽ phân tích từng gợi ý.

Gợi ý 1: Đây là một câu tiếng Anh 

Câu này hiểu đơn giản là thông điệp là một câu tiếng Anh. Khóa là một từ chứ không phải câu. Gợi ý này tôi đưa ra chỉ để các bạn đối chiếu lại kết quả, tuy nhiên có bạn nhờ vào gợi ý này đã tìm ra thông điệp.

Gợi ý 2: Tất cả các mật mã đều có chung 1 điểm yếu đấy là Được sử dụng bởi con người. 

Các bạn hãy nhớ lại, khi đặt mật khẩu các tài khoản, mật khẩu wifi khóa là gì? Một chuỗi số có ý nghĩa, một chuỗi số có quy luật, một biệt danh v.v... tóm lại phải là một chuỗi có ý nghĩa đối với người lập mã. Và có thể bị lộ trong quá trình trao đổi khóa. Đây là cuộc thi đại chúng, tất nhiên tôi không thể chọn một chuỗi quá khó cho các bạn như AFAE - ngày sinh, ABAJ - ngày kỷ niệm tình yêu v.v... và tôi chọn một từ phản ánh nét tính cách tôi có thể thể hiện trên spiderum.

Tôi đã làm lộ một gợi ý ẩn trong bình luận:

Đó, cái tên của tôi - Mỹ công tử hào hoa - khá là quan trọng trong sự kiện này, cái nét tính cách của tôi đó. Nét tính cách còn thể hiện ở đâu nữa? Đây, đây nữa:

Vậy là các bạn có thể dự đoán, giới hạn khóa trong một số từ như andanh, deptrai, goicam, quyenru, hoangtuong, aotuong v.v... Cùng với tiếng Anh của các từ đó nữa.  Số từ khóa giảm xuống còn hơn chục từ. Hoàn toàn có thể giải được bằng tay.

Sự kiện có tất cả 4 bạn thành công giải được mã, và ở đây có 2 cách giải hay nhất, mình xin đăng lên để mọi người cùng xem.

Bạn ThanhCj:

Khóa Key sẽ được cung cấp từ người mã hóa bằng cách trực tiếp hoặc gián tiếp thông qua gợi ý

Ở đây chúng ta cho 2 gợi ý:
+ Đây là một câu tiếng Anh.
+ Tất cả các mật mã đều có chung 1 điểm yếu đấy là Được sử dụng bởi con người

Dựa vào gợi ý, các từ khóa mình nghĩ có thể như sau: tools, tool, stuff, thing, language, dictionary,....
Nhưng tất cả đều không đúng. Việc thử giải mã bằng tay là vô cùng lâu và mất nhiều thời gian. Các trang decoder online không hoạt động đúng với công thức trên. Nên mình đã viết một đoạn code chạy cho tiện.

 Một gợi ý trong phần comment còn quan trọng hơn cả 2 gợi ý trong bài.
"Thay đổi tên vì sự kiện này thôi đấy" --> chắc chắn cái từ khóa phải liên quan tới cái tên rồi. Công cuộc thử từ khóa lại tiếp tục với: andanh, congtu, mycongtu, haohoa, deptrai, quyenru,... và với từ mynamnhan --> khoan đã nào, kết quả có từ đầu tiên có nghĩa: happyklanrbpjmdfptcgogerwgxftr.
key không đúng, nhưng có lẽ gần đúng...

Bạn BornLoser:

Cách giải mã thì mình khá may mắn khi mình đếm có tất cả 30 chữ cái trong code => khả năng từ khóa phải bao gồm 3, 5,6 hoặc tệ hơn là 10 hoặc hơn nhưng may mình chưa phải thử đến đấy. 

Do đây là gần tết nên mình đoán rằng có thể đây là một câu chúc tiếng anh nên mình thử vs chữ happy trước. Mình thử với 5 chữ trước và tìm ngược từ khóa từ chữ happy và 5 chữ cái đầu thì ra từ khóa mynam. Liên hệ đến tên của bạn và gợi ý các mật mã đều có chung điểm yếu đấy là Được sử dụng bởi con người thì mình thấy đây khả năng cao là từ khóa mình cần tìm. Dùng tiếp từ khóa này với các bộ block 5 còn lại là ra. Tất cả mình làm bằng tay cả may mà bạn để lại bảng đổi chữ cái và số không thì mình cũng mệt lắm.

Hai bạn còn lại giải được mã sau khi có thông tin bản rõ spi, và cũng thực hiện bằng tay. Như vậy, sự kiện này cũng không quá đánh đố các bạn buộc phải biết lập trình mới tham gia được phải không nào?

Thông điệp mang bao tâm huyết của Please nhờ tôi chuyển đến toàn thể cộng đồng spiderum chính là:

Happy lunar new year to Spiderumers.

Phần quan trọng nhất - đánh giá và trao thưởng. Về mặt thời gian, bạn ThanhCJ làm nhanh hơn, hoàn thành vào lúc 18h50 17/01/2017. Bạn BornLoser hoàn thành vào lúc 23h30 17/01/2017 thiệt thòi hơn do phải tiếp cận với bài toán muộn hơn. Do đó, tôi đã cân đối dựa trên phương pháp làm của 2 bạn, theo ý kiến cá nhân.

Đánh giá:

Bạn BornLoser có ưu điểm là đoán được nội dung thông điệp và giải mã hoàn toàn bằng tay. Bạn thử kết quả một lần là ra. Tuy nhiên bạn khá may mắn với từ happy.

Tôi đánh giá ThanhCJ cao hơn nhờ bạn ấy sử dụng được tối đa các gợi ý để tìm được không gian khóa.

Vậy kết quả cuối cùng của cuộc thi, phần thưởng sẽ được trao cho ThanhCJ, tôi sẽ liên hệ please lấy phần thưởng và chuyển phát đến bạn trong thời gian sớm nhất.

Với BornLoser, Lieksa và một bạn không có tài khoản trên spiderum, mình sẽ gửi đến các bạn file mềm 2 quyển sách: Lý thuyết mật mã và an toàn thông tin - Phan Đình Diệu và ELLIPTIC CURVES NUMBER THEORY AND CRYPTOGRAPHY - Kenneth H. Rosen.


Lần đầu tổ chức sự kiện còn nhiều sai sót, hi vọng các bạn thông cảm, góp ý để những lần tiếp theo tốt hơn. Cảm ơn tất cả các bạn.


p/s: Bạn Lieksa gửi mình thông tin mail để mình trao quà nhé.