<![CDATA[Latest posts for the topic "Mã hoá rồi kí hay kí rồi mã hoá?"]]> /hvaonline/posts/list/8.html JForum - http://www.jforum.net Mã hoá rồi kí hay kí rồi mã hoá? A, bạn em là B
B: mã rồi ký hoặc ký rồi mã thì cũng như nhau cả thôi bác ak B: vì tất cả đều thực hiện trên cùng 1 máy mà B: chứ ko bị đánh cắp thông tin giữa 2 nhiệm vụ đó B: nên ko nói cách nào ổn hơn cách nào đâu bác ak :D A: đây là câu trả lời thỏa đáng nè: Alice gửi cho Bob thông điệp. Alice mã hóa thông điệp, sau đó mới kí lên thông điệp, rồi gửi đi trên đường truyền (khi này chỉ có thông điệp được mã hóa, chữ kí thì không). Nếu trên đường truyền có kẻ thứ ba, tạm gọi là Oscar bắt đc cái thông điệp kèm theo cái chữ kí đó. Oscar hoàn toàn có thể lấy được cái thông điệp đã bị mã hóa kia rồi kí lại bằng chứ kí của mình (Oscar) rồi mới chuyển đi cho Bob. Khi đó Bob nhận được thông điệp và kiểm tra nó sẽ được xác định đây là thông điệp do Oscar gửi đi mà không phải do Alice. Còn trường hợp kí luôn lên rồi mới mã hóa chuyển đi thì Oscar sẽ khó lòng có thể giải mã được thông điệp+chữ kí để có thể thay đổi chữ kí vì Oscar không biết được khóa bí mật của Bob để giải mã. Tạm giải thích là như thế A: quy trình trong trường hợp mã hóa rồi mới kí như sau: Alice dùng khóa công khai của Bob để mã hóa thông điệp, gọi cái thông điệp sau khi đã đc mã hóa này là Z. Sau đó dùng khóa bí mật của mình (Alice) + nội dung thông điệp (đã mã hóa) để kí. Gọi cái chữ kí này là Y. Khi đó Alice sẽ truyền đi cặp (Z,Y), Khi Bob nhận được thì sẽ thử tất cả các khóa công khai mà mình có để xem ai là chủ của cái chữ kí này (ở đây là Alice), sau khi đã xác định được ai kí lên thì mới bắt đầu giải mã thông điệp A: Vấn đề trong trường hợp này là khi có người thứ 3 (ở đây là Oscar) tham gia vào quá trình truyền Oscar sẽ thay cái chữ kí Y của Alice = cái chữ kí của mình, tạm gọi là O rồi gửi đi cho Bob. Khi đó Bob sẽ nhận được là (Z, O), Bob cũng tiến hành thử các khóa công khai để xem ai là chủ của chữ kí và khi thử xong thì đó là chữ kí của Oscar (kẻ không mong muốn) A: bác thử nghĩ trong trường hợp Mỹ và Philipin liên kết chống Trung Quốc, Mỹ nó gửi cho Phil 1 cái lệnh rồi kí lên tên nó, không may thằng Trung Quốc nó bắt đc trước, nó thay = chữ kí của nó, các bác Phil nhận được thấy của bọn Khựa nó gửi, thì chả đốt luôn chứ còn giải mã ra làm gì nữa :)) B: thế nó ký rồi mới mã thì nó gửi cái gì đi? A: kí rồi mới mã thì nó mã = cái khóa công khai của thằng nhận, muốn giải mã phải có khóa bí mật của thằng nhận, mà khóa bí mật thì chỉ có mình thằng nhận biết chứ làm sao mà ai biết được nữa :D A: gửi đi cái bản mã hóa như bác thấy thì nó có phép hợp cái chữ kí với cái thông điệp lại làm 1 rồi mã hóa rồi gửi đi thôi, đến đầu kia sau khi giải mã xong mới tách chữ kí với thông điệp ra để xác thực B: em phân tích thuật toán của bác thế này. bác ký xong được bản Y. sau đó bác mã bản Y này được bản Z. rồi bác gửi cả Y và Z đi sang bên kia đúng ko? B: làm thế này cũng được. nhưng mà dữ liệu gửi đi rất nhiều. tự dưng bị gấp đôi B: nhưng nếu như ta ký lên bản rõ được bản Y, mã Y được Z rồi gửi cả Y và Z đi thì dữ liệu cũng bị lộ thôi. và thế thì cần mã hóa để ra Z làm gì :D B: cách tốt nhất để bắt trên đường truyền mà ko bị xem đó là chỉ gửi 1 bản vừa được ký vừa được mã thôi B: như thế thì chẳng còn quan tâm mã trước hay ký trước :D B: bác hiểu ý em nói chứ? A: bản rõ là X, chữ kí của bản rõ là Y= sigature(X), Y ghép vào với X tạo thành thông điệp đã được kí M, mã hóa Z= encrypt(M). Sau đó gửi Z đi thôi A: còn mã trước kí sau nó là: Bản rõ X, mã hóa ra Z= encrypt(X), kí là Y=signature(Z), ghép Z vào Y thành M rồi gửi M đi 
]]>
/hvaonline/posts/list/42243.html#262957 /hvaonline/posts/list/42243.html#262957 GMT
Mã hoá rồi kí hay kí rồi mã hoá? /hvaonline/posts/list/42243.html#262960 /hvaonline/posts/list/42243.html#262960 GMT Mã hoá rồi kí hay kí rồi mã hoá? /hvaonline/posts/list/42243.html#262965 /hvaonline/posts/list/42243.html#262965 GMT Mã hoá rồi kí hay kí rồi mã hoá?

vd_ wrote:
Đọc cái này đi bạn (sign = authenticate) http://blog.thoughtcrime.org/the-cryptographic-doom-principle  
đọc qua thì mình thấy họ nói cách Encrypt Then Authenticate : The sender encrypts the plaintext, then appends a MAC of the ciphertext. Ek1(P) || MACk2(Ek1(P)) là cách tối ưu. Vậy khi người nhận nhận được cái message này họ sẽ tiến hành Xác thực (Authenticate) cái message này đầu tiên. Vấn đề là, nếu có kẻ tấn công (attacker) lấy được cái message này, và hắn (attacker) không cần quan tâm đến nội dung của cái plaintext kia là gì, hắn gỡ cái MAC của sender ra rồi lại gắn lại cái MAC của hắn vào tạm gọi là MACk3(Ek1(P)) khi đó message sẽ trở thành Ek1(P) || MACk3(Ek1(P)) đến bên người nhận họ xác thực thì đó không phải là của người gửi (sender) mà lại là của kẻ tấn công]]>
/hvaonline/posts/list/42243.html#262968 /hvaonline/posts/list/42243.html#262968 GMT
Mã hoá rồi kí hay kí rồi mã hoá? /hvaonline/posts/list/42243.html#262974 /hvaonline/posts/list/42243.html#262974 GMT Mã hoá rồi kí hay kí rồi mã hoá?

foaato wrote:
cách Encrypt Then Authenticate : The sender encrypts the plaintext, then appends a MAC of the ciphertext. Ek1(P) || MACk2(Ek1(P)) là cách tối ưu. Vậy khi người nhận nhận được cái message này họ sẽ tiến hành Xác thực (Authenticate) cái message này đầu tiên. Vấn đề là, nếu có kẻ tấn công (attacker) lấy được cái message này, và hắn (attacker) không cần quan tâm đến nội dung của cái plaintext kia là gì, hắn gỡ cái MAC của sender ra rồi lại gắn lại cái MAC của hắn vào tạm gọi là MACk3(Ek1(P)) khi đó message sẽ trở thành Ek1(P) || MACk3(Ek1(P)) đến bên người nhận họ xác thực thì đó không phải là của người gửi (sender) mà lại là của kẻ tấn công  
mình đoán đây chính là thứ mà bạn muốn hỏi - trong symmetric crypto thì nên kết hợp mã hoá (encrypt) và xác thực (MAC) như thế nào. đây cũng là câu hỏi thường gặp hàng ngày của nhiều người khi bắt đầu sử dụng mật mã. có nhiều cách kết hợp khác nhau, nhưng cách encrypt-then-MAC là an toàn nhất (có thể xem chứng minh ở đây: http://charlotte.ucsd.edu/users/mihir/papers/oem.pdf). bây giờ hình dung giữa Alice và Bob có một kênh truyền dữ liệu và giả sử bằng một cách nào đó Alice và Bob đã có chung với nhau một khoá bí mật (thông qua một giao thức authenticated key-exchange). bây giờ hai bên muốn truyền dữ liệu qua lại. nguyên tắc cơ bản để có một kênh truyền an toàn là: truyền cái gì thì bảo vệ integrity của cái đó. với encrypt-and-MAC, chúng ta gửi C = E_k(P) nhưng lại bảo vệ integrity của P (đó là còn chưa kể MAC có thể tiết lộ thông tin về P). với MAC-then-encrypt, chúng ta hoàn toàn không bảo vệ integrity của thông điệp mà chúng ta truyền đi. chỉ có với encrypt-then-MAC thì nhờ bước MAC cuối cùng mà thông điệp gửi đi được đảm bảo integrity. lưu ý rằng MAC vừa bảo vệ được integrity về nội dung thông điệp, vừa bảo đảm được integrity về danh tính của người gửi. vì Bob biết mình đang muốn nhận thông tin từ Alice, nên Bob sẽ xác thực dữ liệu trên kênh truyền bằng khoá chung giữa Bob và Alice. Nếu việc xác thực không thành công (thao tác verify của thuật toán MAC trả về false), Bob biết ngay thông điệp hoặc là đã bị thay đổi, hoặc là không đến từ Alice. Cách tốt nhất cho Bob lúc này là huỷ bỏ thông điệp. nói cách khác, Bob chỉ chấp nhận thông điệp M nếu như Alice gửi M cho Bob. thành ra tấn công mà bạn foaato đưa ra hoàn toàn không ảnh hưởng gì đến sự an toàn của kênh truyền. khi nhận được thông điệp đã bị foaato sửa đổi, Bob sẽ có cách phát hiện và không chấp nhận nó. điều duy nhất mà foaato có thể làm là ngăn cản sự liên lạc giữa Bob và Alice. kỳ thực thì khả năng này cũng bằng với khả năng của một công cụ cực kỳ hiện đại khác có tên là... cây kéo. khi đó foaato chỉ cần cắt đứt dây mạng là xong :-D. -m]]>
/hvaonline/posts/list/42243.html#263009 /hvaonline/posts/list/42243.html#263009 GMT
Mã hoá rồi kí hay kí rồi mã hoá? A: quy trình trong trường hợp mã hóa rồi mới kí như sau: Alice dùng khóa công khai của Bob để mã hóa thông điệp, gọi cái thông điệp sau khi đã đc mã hóa này là Z. Sau đó dùng khóa bí mật của mình (Alice) + nội dung thông điệp (đã mã hóa) để kí. Gọi cái chữ kí này là Y. Khi đó Alice sẽ truyền đi cặp (Z,Y), Khi Bob nhận được thì sẽ thử tất cả các khóa công khai mà mình có để xem ai là chủ của cái chữ kí này (ở đây là Alice), sau khi đã xác định được ai kí lên thì mới bắt đầu giải mã thông điệp   Nhưng cách giải thích chắc cũng tương tự + khoái vụ cái kéo kỳ diệu :P giờ thì đã hiểu bản chất hậu quả của vụ tấn công này của bạn foaato. mrro nghĩ sao vụ replay attack ? có thể sảy ra không anh ? A -> B : M = [ E(P = chuyển khoản 100$ cho C) || MAC ] C tóm được M, thấy tài khoản tăng 100, nhào dzo ngay sau đó gửi M đi 100 lần => C có 10000$ trong tài khoản. Bạn foaato rất nên tham gia lớp crypto-class online của Stanford do mrro trợ giảng ;). Trong đó có 1 bài giải thích sự khác nhau giữa Mac-AND-encrypt , Mac-THEN-Encrypt, Encrypt-THEN-Mac ]]> /hvaonline/posts/list/42243.html#263012 /hvaonline/posts/list/42243.html#263012 GMT Mã hoá rồi kí hay kí rồi mã hoá? /hvaonline/posts/list/42243.html#263017 /hvaonline/posts/list/42243.html#263017 GMT Mã hoá rồi kí hay kí rồi mã hoá? /hvaonline/posts/list/42243.html#265454 /hvaonline/posts/list/42243.html#265454 GMT