<![CDATA[Latest posts for the topic "[crypto] Tìm key, plaintext khi biết protocol và ciphertext"]]> /hvaonline/posts/list/8.html JForum - http://www.jforum.net [crypto] Tìm key, plaintext khi biết protocol và ciphertext Code:
cipher_block[i] = (char)('a' + ((plain_block[i] - 'a' + key[i]) mod 26))
(tương tự với 'A') Ví dụ: với plaintext "azzd" và key "1230" ta có cipher "bbcd". + Chỉ tiến hành encrypt các chữ cái a-z, A-Z Câu hỏi đặt ra là: Nếu biết được thuật toán và có trong tạy cipher, làm cách nào để tìm được plaintext và key. FaL có thử thống kê tần suất xuất hiện của chữ cái, nhưng mà có vẻ như không chính xác lắm. Mong các bạn góp ý giúp.]]>
/hvaonline/posts/list/28340.html#174348 /hvaonline/posts/list/28340.html#174348 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174367 /hvaonline/posts/list/28340.html#174367 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext

choc_ wrote:
Cái này là Vigenere cipher. Muốn phá nó thì phải làm hai việc: 1. Tìm key length. Có thể làm bằng phương pháp Kasaki. Đại loại ý tưởng là tìm những đoạn lập lại trong ciphertext, rồi dựa vào đó mà tính ra key length. 2. Có key length rồi thì mọi thứ sẽ trở nên đơn giản. Viết ciphertext lại theo từng nhóm có độ dài bằng key length, xếp chồng lên nhau, sẽ tạo thành key-length cột. Xét riêng từng cột thì mỗi cột sẽ là một cái Caesar cipher, nên có thể dùng phương pháp tính frequency để tìm ra plaintext và key. 
Cám ơn bạn choc_ nhiều, không ngờ mình lại trùng ý tưởng với ông http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher. Cơ bản mình cũng hiểu được ý tưởng để phá rồi. Giờ sẽ nghĩ xem code ra sao. PS: bạn choc_ có bài tập crypto nào đơn giản, làm 1 topic share cho mọi người luôn đi! :D]]>
/hvaonline/posts/list/28340.html#174372 /hvaonline/posts/list/28340.html#174372 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174389 /hvaonline/posts/list/28340.html#174389 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174395 /hvaonline/posts/list/28340.html#174395 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174403 /hvaonline/posts/list/28340.html#174403 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174408 /hvaonline/posts/list/28340.html#174408 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174419 /hvaonline/posts/list/28340.html#174419 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174427 /hvaonline/posts/list/28340.html#174427 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext khi nào cần (kiến thức toán/tin) thì thêm vào thì đây chính là điều mình đang muốn nói. Hầu như các tác giả chỉ trình bày rất qua loa, mặc dù theo mình thấy thì những kiến thức đó là rất cần. Ví dụ trong các cuốn sách về crypto, hầu như chỉ duy nhất cuốn của Stinson là dành ra một chương để bàn về information theory của Shannon. Các cuốn còn lại đều rất ít đề cập, hoặc là chỉ đưa kết quả, mà không giải thích. Các lĩnh vực toán tin mà mình đưa ra cũng hết sức rộng lớn, mà crypto chỉ ứng dụng một phần nhỏ trong đó. Nếu các tác giả tập trung viết về các phần này thì mình nghĩ cũng chẳng làm cho sách quá dày và khó viết. Thật tế là mình thấy lecture notes của các khóa crypto của nhiều trường viết rất tốt về các mảng đề tài này, nhưng chẳng hiểu sao lúc viết thành sách crypto thì chẳng ai buồn thêm chúng vào. Có lẽ chỉ có mỗi Stinson là viết tương đối đầy đủ nhất, nên sách của ổng được dùng làm textbook. Nếu mai mốt mình có viết một cuốn sách crypto tiếng Việt, thì mình hứa sẽ viết đầy đủ hết các cơ sở toán học của nó ha ha ha.]]> /hvaonline/posts/list/28340.html#174430 /hvaonline/posts/list/28340.html#174430 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174434 /hvaonline/posts/list/28340.html#174434 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext Thật tế là mình thấy lecture notes của các khóa crypto của nhiều trường viết rất tốt về các mảng đề tài này, nhưng chẳng hiểu sao lúc viết thành sách crypto thì chẳng ai buồn thêm chúng vào.   Bởi vì một cuốn sách hay là phải thể hiện được cái mới trong đó. Do đó những kiến thức căn bản (như Information Theory của Shannon) sẽ để lượt bỏ hết để dành chỗ hay cho cuốn sách. Tiện thể cho mình hỏi về vấn đề này. Mình đang làm luận văn về đề tài Steganography. Có 1 phần trong đó mình cần phải improve performance đó là chuyển từ 1 byte array dạng Hex sang một integer string. Tức là đầu vào là một byte array dạng Hex như {0x32,0xff,0xd3,0x3f,0x21,0xa9...} mình cần phải chuyển nó thành dạng integer string như {3442323478905505}. Hiện tại mình cũng đã làm 1 giải thuật đọc từng block 7 bytes Hex vào và parse thành một integer string 17 digits. Nhưng cách này rất chậm, đặc biệt nếu áp dụng cho các file lớn chừng vài trăm kbytes là chạy lâu thôi rồi luôn. Không biết có bạn nào có biết cách nào khác để chuyển HEX-->DEC không?]]> /hvaonline/posts/list/28340.html#174559 /hvaonline/posts/list/28340.html#174559 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext

rongchaua wrote:
Thật tế là mình thấy lecture notes của các khóa crypto của nhiều trường viết rất tốt về các mảng đề tài này, nhưng chẳng hiểu sao lúc viết thành sách crypto thì chẳng ai buồn thêm chúng vào.  
Bởi vì một cuốn sách hay là phải thể hiện được cái mới trong đó. Do đó những kiến thức căn bản (như Information Theory của Shannon) sẽ để lượt bỏ hết để dành chỗ hay cho cuốn sách. Tiện thể cho mình hỏi về vấn đề này. Mình đang làm luận văn về đề tài Steganography. Có 1 phần trong đó mình cần phải improve performance đó là chuyển từ 1 byte array dạng Hex sang một integer string. Tức là đầu vào là một byte array dạng Hex như {0x32,0xff,0xd3,0x3f,0x21,0xa9...} mình cần phải chuyển nó thành dạng integer string như {3442323478905505}. Hiện tại mình cũng đã làm 1 giải thuật đọc từng block 7 bytes Hex vào và parse thành một integer string 17 digits. Nhưng cách này rất chậm, đặc biệt nếu áp dụng cho các file lớn chừng vài trăm kbytes là chạy lâu thôi rồi luôn. Không biết có bạn nào có biết cách nào khác để chuyển HEX-->DEC không? 
Bạn có thể cho biết tại sao lại 7 bytes được không? Hay là bài toán yêu cầu như vậy? Nếu vậy thì đây là phép toán với số lớn. Bạn đã thử dùng gmp chưa? Tiện thể nếu được bạn cho biết luôn bạn dùng thuật toán nào.]]>
/hvaonline/posts/list/28340.html#174590 /hvaonline/posts/list/28340.html#174590 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext Bạn đã thử dùng gmp chưa?  Chưa. ]]> /hvaonline/posts/list/28340.html#174593 /hvaonline/posts/list/28340.html#174593 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext

rongchaua wrote:
Àh mình chỉ đơn giản là covert từ hex sang integer thôi. Tức là 0x1f3 = 499, 0x3ed6=16086... Còn mình dùng 7 bytes là vì với 7 bytes ở Hex 0xFFFFFFFFFFFFFF thì max value bên Dec sẽ là 72057594037927935. Tức là từ 7 bytes ở Hex khi chuyển qua Dec sẽ là 17 bytes (mỗi bytes đại diện cho 1 ký tự). Mức độ phình dữ liệu sẽ là 17/7=2.43 tức là nhỏ nhất so với parse với số lượng byte khác. Ví dụ: Parse 1 byte độ phình sẽ là 3 vì max 1 byte là 255 (3 ký tự), parse 2 byte độ phình sẽ là 2.5 vì max của 2 byte là 65535 (5 ký tự). Mình cũng chưa tìm ra cách nào tối ưu hơn. Mình chỉ cần 1 giải thuật nào đó nhận đầu vào là 1 byte array và cho ra ở phía đầu ra là 1 integer string. Và có thể dịch ngược lại integer string đó ra byte array.
Bạn đã thử dùng gmp chưa? 
Chưa.  
Bạn có thể cho cái ví dụ về "1 byte array và cho ra ở phía đầu ra là 1 integer string" được hông ? :D <Cụ thể ấy>]]>
/hvaonline/posts/list/28340.html#174598 /hvaonline/posts/list/28340.html#174598 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext Bạn có thể cho cái ví dụ về "1 byte array và cho ra ở phía đầu ra là 1 integer string" được hông ?  Cụ thể thì như mình đã nêu ở bài trên ví dụ có byte array {0x1f,0xf3} thì đầu ra sẽ thành 499 <-- integer string. còn Array {0x3e,0xd6} thì đầu ra nó thành 16086 <-- integer string. Tức là hiện tại chỉ là đơn giản chuyển từ HEX-->DEC qua cách đổi hệ số. Giờ thì mình đang tìm cách khác để chuyển vì kiểu đổi cơ số như thế này thì ví dụ lấy 1 file nặng vài MB đọc vào dạng byte array dùng kiểu chuyển cơ số như thế này thì chắc làm cả tiếng chưa parse xong 1 byte. :(. ]]> /hvaonline/posts/list/28340.html#174608 /hvaonline/posts/list/28340.html#174608 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext

rongchaua wrote:
Bạn có thể cho cái ví dụ về "1 byte array và cho ra ở phía đầu ra là 1 integer string" được hông ? 
Cụ thể thì như mình đã nêu ở bài trên ví dụ có byte array {0x1f,0xf3} thì đầu ra sẽ thành 499 <-- integer string. còn Array {0x3e,0xd6} thì đầu ra nó thành 16086 <-- integer string. Tức là hiện tại chỉ là đơn giản chuyển từ HEX-->DEC qua cách đổi hệ số. Giờ thì mình đang tìm cách khác để chuyển vì kiểu đổi cơ số như thế này thì ví dụ lấy 1 file nặng vài MB đọc vào dạng byte array dùng kiểu chuyển cơ số như thế này thì chắc làm cả tiếng chưa parse xong 1 byte. :(.  
Mình tìm ra được một hướng ko biết có khả thi không: Gọi số byte của Hex đóng vào 1 khối để chuyển sang Dec là a: =>Số digits của Hex là 2a => Số digits của Bin là 4*2a = 8a => Số Dec có giá trị lớn nhất là 2^(8a) = 256^a => Số digits của Dec là lg(256^a) = a.lg(256) ~ 2,4a => Độ phình ~ 2,4a / a = 2,4 Cái độ phình bạn vừa tính ở trên với 7byte ~ 2.4 cũng xấp xỉ với 1 byte ~ 3 thôi, do đó mình nghĩ bạn làm càng nhiều byte càng tốt, như vậy số lượng vòng lặp giảm đc tí chút. p.s: nếu có thể bạn lập cái topic mới Thank chủ topic cho ở nhờ vài ngày -:|- ]]>
/hvaonline/posts/list/28340.html#174617 /hvaonline/posts/list/28340.html#174617 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174625 /hvaonline/posts/list/28340.html#174625 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext

K4i wrote:
Khổ, các bác viết tên sách toàn viết tất thì thật là chán quá đi :|. Cũng từng đọc qua một số quyển, mình chỉ xin phép đưa ra một số ý. - Quyển Handbook of Applied Cryptography thì đúng là để tra cứu, không phải là quyển để học :D. - Quyển Cryptography Theory and Practice là một quyển viết đơn giản, khá thú vị và dễ hiểu. - Quyển Applied Cryptography của đại ka Bruce Schneider thì thật sự là mình không khoái lắm, vì đối với mình là khá khó hiểu.  
Hic, handbook mục đích ra là để tra cứu mừ. Mình nghĩ là kỹ sư hay cao hơn đều luôn có handbook bên mình bởi ai có thể nhớ hết được nhiều thứ!]]>
/hvaonline/posts/list/28340.html#174631 /hvaonline/posts/list/28340.html#174631 GMT
Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174783 /hvaonline/posts/list/28340.html#174783 GMT Re: [crypto] Tìm key, plaintext khi biết protocol và ciphertext /hvaonline/posts/list/28340.html#174792 /hvaonline/posts/list/28340.html#174792 GMT