banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thủ thuật reverse engineering Mật mã hoá bằng phép nhân (st)  XML
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 11:29:14 (+0700) | #31 | 236286
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

mrro wrote:

nói cách khác, câu hỏi là: làm sao có thể dùng lại khoá nhiều lần mà vẫn an toàn? (vì nếu mà chỉ dùng khoá được một lần rồi phải đổi, thì thôi dùng one time pad luôn cho nó sướng smilie. muốn như thế, thì điều kiện cần là mỗi lần mã hoá, dẫu cùng khoá, cùng bản rõ, kết quả phải là những bản mã khác nhau hoàn toàn.

đương nhiên các mật mã cụm như AES hay DES không làm được việc đó. thành ra người ta mới xây dựng ra các chế độ hoạt động cho các mật mã cụm này và chính các chế độ hoạt động mới đảm bảo được tính xác suất của các thuật toán mã hoá.
 

Hi anh smilie em hiểu mấy cái anh nói, em chỉ thắc mắc là không biết nó có liên quan gì đến chosen plaintext attack không ? vì theo em hiểu chosen plaintext attack giúp tìm được key hoặc một phần thông tin về key khi attacker có thể chọn plaintext để encrypt. Trong các ví dụ của anh key vẫn hoàn toàn chưa lộ, khi tập hợp giá trị của plaintext nhỏ như vậy thì hoạ chăng chỉ có one-time-pad như anh nói là phù hợp ?

Hơn nữa với bất cứ encryption nào, hàm encrypt với 1 key là hàm one-to-one (và onto??). Ở các chế độ làm việc như CBC hay CTR nếu không đổi IV thì giá trị cipher text cũng không thể đổi nếu key giữ nguyên. Theo em biết IV có thể được gửi kèm với cypher text để phục vụ cho việc giải mã mà không ảnh hưởng đến tính bảo mật.

Ở encryption mà alice post, tương tự T(0) hoàn toàn có thể được thay đổi và gửi kèm cùng cipher text. Việc lộ T(0) không nên ảnh hưởng đến độ bảo mật của hàm mã hoá. Đúng như anh nói là đây chính là điểm cần phải chứng minh và kiểm nghiệm.

-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 13:00:12 (+0700) | #32 | 236294
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
hi Windak, anh đánh số mấy cái ý của em để dễ trả lời bên dưới.

WinDak wrote:

1. Hi anh em hiểu mấy cái anh nói, em chỉ thắc mắc là không biết nó có liên quan gì đến chosen plaintext attack vì theo em hiểu chosen plaintext attack giúp tìm được key hoặc một phần thông tin về key khi attacker có thể chọn plaintext để encrypt. Trong các ví dụ của anh key vẫn hoàn toàn chưa lộ.

2. Hơn nữa với bất cứ encryption nào, hàm encrypt với 1 key là hàm one-to-one và onto. Ở các chế độ làm việc như CBC hay CTR nếu không đổi IV thì giá trị cipher text cũng không thể đổi nếu key giữ nguyên. Theo em biết IV có thể được gửi kèm với cypher text để phục vụ cho việc giải mã mà không ảnh hưởng đến tính bảo mật.

3. Ở encryption mà alice post, tương tự T(0) hoàn toàn có thể được thay đổi và gửi kèm cùng cipher text. Việc lộ T(0) không nên ảnh hưởng đến độ bảo mật của hàm mã hoá. Đúng như anh nói là đây chính là điểm cần phải chứng minh và kiểm nghiệm.
 


1. em hiểu vậy là không đúng rồi. mục tiêu của một hệ mã là để bảo vệ bản rõ, chứ không phải bảo vệ khoá. khoá là một trong những phương tiện để đạt được mục tiêu đó. chẳng hạn như em cũng thấy các thuật toán mã hoá tất định mà anh liệt kê ra ở trên đều không tiết lộ khoá, nhưng rõ ràng là chúng không an toàn.

2. em quan sát chính xác. dẫu vậy định nghĩa của CBC và CTR đều bắt buộc IV phải là ngẫu nhiên và không thể đoán trước. khi em xài CBC hay CTR mà IV là cố định hay có thể đoán trước thì sẽ bị nhiều dạng tấn công. vừa rồi có tin đồn mã nguồn IPSEC trong nhân OpenBSD bị gài cửa hậu và dạng cửa hậu bị gài vào có thể chỉ đơn giản là làm cho IV đoán trước được.

3. em đọc lại bài ở trên của anh. alice có nói là T[0] được dẫn suất từ khoá Z, chứ không phải là một chuỗi ngẫu nhiên như vai trò của IV trong CBC.

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 14:22:37 (+0700) | #33 | 236298
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

WinDak wrote:
1. Hi anh em hiểu mấy cái anh nói, em chỉ thắc mắc là không biết nó có liên quan gì đến chosen plaintext attack vì theo em hiểu chosen plaintext attack giúp tìm được key hoặc một phần thông tin về key khi attacker có thể chọn plaintext để encrypt. Trong các ví dụ của anh key vẫn hoàn toàn chưa lộ.

2. Hơn nữa với bất cứ encryption nào, hàm encrypt với 1 key là hàm one-to-one và onto. Ở các chế độ làm việc như CBC hay CTR nếu không đổi IV thì giá trị cipher text cũng không thể đổi nếu key giữ nguyên. Theo em biết IV có thể được gửi kèm với cypher text để phục vụ cho việc giải mã mà không ảnh hưởng đến tính bảo mật.

3. Ở encryption mà alice post, tương tự T(0) hoàn toàn có thể được thay đổi và gửi kèm cùng cipher text. Việc lộ T(0) không nên ảnh hưởng đến độ bảo mật của hàm mã hoá. Đúng như anh nói là đây chính là điểm cần phải chứng minh và kiểm nghiệm.
 

Mình mượn tạm công sức của mrro smilie
1. Cái này thì bạn mrro đã nói ở trên rồi.
2. Nên cẩn thận khi nói một cách tổng quát về encryption. Vì ở dạng tổng quát, encryption hoàn toàn có thể mang tính xác suất, và ngay cả decryption cũng có thể mang tính xác suất. Việc định nghĩa encryption theo dạng bijective correspondence chỉ là một thuộc tính thường thấy trong mật mã cụm.
3. À nếu như mà cái khoá nắn lại sinh ra từ khoá Z thì thực sự là không có nhiều tác dụng lắm, lí do đúng là như mrro đã kể trên.

Mind your thought.
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 15:16:19 (+0700) | #34 | 236301
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

StarGhost wrote:

Mình mượn tạm công sức của mrro smilie
1. Cái này thì bạn mrro đã nói ở trên rồi.
2. Nên cẩn thận khi nói một cách tổng quát về encryption. Vì ở dạng tổng quát, encryption hoàn toàn có thể mang tính xác suất, và ngay cả decryption cũng có thể mang tính xác suất. Việc định nghĩa encryption theo dạng bijective correspondence chỉ là một thuộc tính thường thấy trong mật mã cụm.
3. À nếu như mà cái khoá nắn lại sinh ra từ khoá Z thì thực sự là không có nhiều tác dụng lắm, lí do đúng là như mrro đã kể trên.
 


smilie cảm ơn mrro và StarGhost cho thêm thông tin, dĩ nhiên mình chỉ là novice sẽ có những phát biểu chưa chuẩn xác. Xin StarGhost cho ví dụ về encryption / decryption algorithm không có tính bijective correspondence như bạn nói để tìm hiểu thêm.
-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 16:15:28 (+0700) | #35 | 236305
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@WinDak: chỉ cần ciphertext có kích thước lớn hơn plaintext thì thuật toán mã hoá (fixed key) đã không còn là bijective function rồi, vì nó không còn surjective nữa. Còn về decryption, nếu như định nghĩa encryption theo dạng D(E(P)) = P thì decryption bắt buộc phải là deterministic. Ngược lại, bạn có thể thiết kế một thuật toán để sao cho Pr[D(E(P)) != P] = negl, hoặc một giá trị đủ nhỏ, như vậy trên lý thuyết decryption trở thành probabilisic, nhưng trong thực tế thì vẫn có thể chấp nhận được. Ngoài ra bạn cũng có thể thiết kế encryption sao cho nó không injective, ví dụ để dùng trong oblivious transfer. Nhưng tất nhiên còn tuỳ vào quan điểm của bạn về cái gọi là encryption.
Mind your thought.
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 16:38:45 (+0700) | #36 | 236306
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

StarGhost wrote:
@WinDak: chỉ cần ciphertext có kích thước lớn hơn plaintext thì thuật toán mã hoá (fixed key) đã không còn là bijective function rồi, vì nó không còn surjective nữa. Còn về decryption, nếu như định nghĩa encryption theo dạng D(E(P)) = P thì decryption bắt buộc phải là deterministic. Ngược lại, bạn có thể thiết kế một thuật toán để sao cho Pr[D(E(P)) != P] = negl, hoặc một giá trị đủ nhỏ, như vậy trên lý thuyết decryption trở thành probabilisic, nhưng trong thực tế thì vẫn có thể chấp nhận được. Ngoài ra bạn cũng có thể thiết kế encryption sao cho nó không injective, ví dụ để dùng trong oblivious transfer. Nhưng tất nhiên còn tuỳ vào quan điểm của bạn về cái gọi là encryption.  


StarGhost nói thế thì mình thấy không được thuyết phục, dĩ nhiên mình có thể tạo 1 cái function bất kỳ và gọi nó là "my_encryption" nhưng liệu nó có giá trị trên thực tế không ? cho nên mình muốn biết một ví dụ mà nó được design và sử dụng trong thực tế.

Ví dụ như StarGhost nói kích thước ciphertext > plaintext, rõ ràng là nó không bijective nhưng liệu nó có hữu ích trong bất cứ application nào không ? Còn D(E(P)) =P thì rõ ràng nó là định nghĩa của decryption, liệu design cho nó có khả năng D(E(P)) != P thì được lợi gì ?

Hi vọng StarGhost giải thích thêm.Mình cũng sẽ xem thử oblivious transfer

-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 17:04:47 (+0700) | #37 | 236307
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@WinDak: có lẽ bạn đòi hỏi quá cao nếu như cái gì cũng phải có giá trị thực tế, đặc biệt khi đụng đến các định nghĩa vốn cần phải tổng quát hoá để phục vụ cho công tác nghiên cứu. Probabilistic encryption thì bạn cứ tìm hiểu sẽ biết ứng dụng thực tế của nó là thế nào.

Việc D(E(P)) != P có được lợi hay không thì còn tuỳ vào hoàn cảnh cụ thể. Bản thân mình chưa nghĩ ra hoàn cảnh nào cụ thể (ngoài oblivious transfer) nhưng mình cũng không vì thế mà dám chắc rằng nó sẽ không có lợi gì.
Mind your thought.
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 19:23:25 (+0700) | #38 | 236315
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
@StarGhost: Thật ra mình đồng ý là block cipher có tính chất bijection chứ không phải toàn bộ (phát biểu ở trên chưa chính xác và nên sửa lại) nên cũng không cần cãi nhau thêm. Cái mình tò mò muốn biết là liệu có encryption function nào mà không bijection như StarGhost nói được sử dụng để encrypt hay chưa ?

Ngay cả Probabilistic Encryption (Blum-Goldwasser) mình có tìm hiểu cũng chèn vào 1 yếu tố random, yếu tố này cần phải được biết(hoặc được tìm ra một cách nào đó) bởi cả encryption function và decryption function nên nếu coi nó là một phần của cả plaintext và cipher text thì function vẫn là deterministic ?
-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 19:54:36 (+0700) | #39 | 236316
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@WinDak: theo mình biết thì chưa có block cipher nào như vậy. Nhưng như vậy căn bản không liên quan nhiều đến việc liệu block cipher có cần thiết phải là bijective function hay không. Thuật toán mã hoá ở trên đã manh nha xuất hiện suy nghĩ probabilistic encryption, mặc dù có vẻ chưa thành công lắm.

Trong probabilistic encryption, bạn không có thêm cái gì vào plaintext hết, plaintext là những gì bạn đọc hiểu, chứ bạn không thêm yếu tố ngẫu nhiên nào vào nó. Yếu tố ngẫu nhiên chỉ xuất hiện trong ciphertext (dưới một dạng nào đó), và chính vì vậy người ta gọi là probabilistic encryption. Bạn nên coi encryption function là một oracle thì sẽ thấy tính probabilistic của nó.

p/s: ngoài ra mình đề nghị bạn không đánh đồng việc thảo luận với việc cãi nhau, vì mức độ của nó còn quá "dễ chịu". smilie
Mind your thought.
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 20:53:29 (+0700) | #40 | 236319
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

Nhưng như vậy căn bản không liên quan nhiều đến việc liệu block cipher có cần thiết phải là bijective function hay khôn
 

Cái này có thể suy từ định nghĩa của block cipher ?
"block cipher is a symmetric key cipher operating on fixed-length groups of bits, called blocks, with an unvarying transformation. A block cipher encryption algorithm might take (for example) a 128-bit block of plaintext as input, and output a corresponding 128-bit block of ciphertext" (wikipedia)
"block cipher is reversible, encrypt 128-bit plaintext and generate another 128-bit cipher text"
"a block cipher with block size of k-bit specifies a permutation on k-bit values for each of key value" (Practical Cryptography)

StarGhost wrote:

Yếu tố ngẫu nhiên chỉ xuất hiện trong ciphertext (dưới một dạng nào đó), và chính vì vậy người ta gọi là probabilistic encryption (PE)
 

Cái này thì không chắc là StarGhost đúng vì theo định nghĩa (wiki) thì bất cứ encryption nào có yếu tố random đều gọi là probabilistic, không kể nó nằm ở đâu. trong trường hợp kia, mình chỉ nhận xét một điểm nhỏ là nếu xét tập plaintext+randombit và tập cyphertext+randombit thì hàm encryption vẫn bijection vì given 1 plaintext và 1 randombit chỉ có duy nhất 1 cyphertext và 1 random bit và ngược lại.

StarGhost wrote:

p/s: ngoài ra mình đề nghị bạn không đánh đồng việc thảo luận với việc cãi nhau, vì mức độ của nó còn quá "dễ chịu". smilie
 

p/s: smilie haha, bác bắt bẻ từ ngữ em quá, hiểu ý là được mà
-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 21:53:00 (+0700) | #41 | 236327
[Avatar]
alice
Elite Member

[Minus]    0    [Plus]
Joined: 20/01/2005 22:23:24
Messages: 87
Location: Wonderland
Offline
[Profile] [PM]
Chào các bạn. Cảm ơn mrro, StarGhost và WinDak đã tham gia thảo luận. Alice rất vui vì bài viết alice sưu tầm này được quan tâm. Nhưng thú thực là alice hơi ngạc nhiên vì các bạn thảo luận về mode of operation. Alice mong đợi những "mũi kiếm" phản biện chĩa vào hướng khác cơ -- hướng nào thì tạm gác lại để nói sau. Bây giờ là về vấn đề hiện đang được tranh luận, do mrro nêu ra đầu tiên:

  • Vì sao tweak lại không ngẫu nhiên, không thể đoán trước, như IV?
  • Vì sao tweak phải là bí mật mà không phải là công khai, như IV?
  • Tại sao mode lại gắn chặt với underlying cipher, mà không tổng quát để có thể áp dụng cho mọi cipher?


Về vấn đề này, thì alice lại nghĩ nó bình thường, không có gì đáng chú ý. Nhưng alice sẽ cố gắng nhìn theo con mắt của người quan tâm để giải thích, theo khả năng của alice.

1. Quá trình phát triển của tweakable block cipher có thể tạm chia thành 5 giai đoạn. Những năm 1950 là giai đoạn mã hoá bằng tay -- máy tính điện tử chưa có, hoặc có mà còn quá đắt, chỉ dùng cho cryptanalysis. Những năm 1960 là giai đoạn bắt đầu mã hoá bằng máy -- có block cipher chạy trên máy tính, chưa có ý niệm về mode. Những năm 1970, tạm gọi là giai đoạn GOST, block cipher đã hoàn thiện, modes được định nghĩa cho từng cipher và gắn chặt với cipher. Gamma mode của GOST là thí dụ. Những năm 1980, tạm gọi là giai đoạn DES, modes được thiết kế cho DES nhưng đem ra sử dụng cho cipher khác, tức là tách rời ra khỏi cipher. Những năm 1990, tạm gọi là giai đoạn tiền AES, bắt đầu những nghiên cứu để đưa spice, sau này gọi là tweak, vào mật mã dùng thay cho IV. Những năm 2000 trở lại đây, tạm gọi là thời kỳ hậu AES hay tiền SHA3, một mặt đúc kết các nghiên cứu dở dang của giai đoạn trước thành kết quả là một số tweak modes có tính chất tổng quát cho mọi cipher, mặt khác xây dựng các tweakable cipher, tức cipher chèn tweak vào theo một cách riêng -- tương tự như cách tiếp cận vấn đề của những năm 1970. LRW, XEX, XTS, Salsa / Cha Cha và Threefish / Skein là thí dụ.

2. Tweak giống như IV ở chỗ nó cũng là extra parameter. Tweak giống IV ở chỗ nó cũng nhắm tới các tiêu chí an toàn như là an toàn trước CPA (chosen plaintext attack) và trước CCA (chosen ciphertext attack). Các tiêu chí an toàn đối với tweakable cipher có thể với định nghĩa hơi khác hơn so với khi áp dụng lên IV-oriented modes nhưng về cơ bản là cũng thế. Tweak khác IV ở điểm là không đòi hỏi tính ngẫu nhiên. Tweak khác IV ở điểm là quá trình mã hoá nếu chỉ dùng tweak thì thôi thì hoàn toàn tất định. Và cuối cùng tweak còn khác IV ở chỗ là đòi hỏi tính bí mật trong một số trường hợp. Theo alice biết, mọi tweak modes đều đòi hỏi tweak bí mật, còn tweakable ciphers thì có khi đòi hỏi có khi không. Tweak modes đòi hỏi tweak bí mật vì security proof cần giả thiết đó; nói đúng hơn thì xây dựng tweak công khai rất khó và tweak như thế rất phức tạp => kém hiệu quả. Tweakable ciphers có khi đòi hỏi có khi không bởi vì không có security proof (đó là thường, có thì mới lạ). Người ta xây dựng tweakable ciphers bởi vì tweak modes trong nhiều ứng dụng là không đủ nhanh. Trong tweakable ciphers, tweak nhúng sâu vào cipher, gắn chặt vào cipher chứ không tổng quát bởi vì nếu tách rời ra thì không đủ mạnh.

3. Trong cryptanalysis thì khoá cũng là biến như plaintext và ciphertext, nghĩa là nó thay đổi. Nhiều phương pháp cryptanalysis có thể áp dụng cho cipher với khoá thay đổi. Những người thiết kế cipher rất chú trọng đến việc cipher của mình sẽ phản ứng như thế nào trước sự thay đổi của khoá. Cho nên tweak có hay không chỉ là hình thức mà thôi. Nếu cipher mạnh thì 1 khoá độc lập cũng là mạnh. Nếu nó yếu thì dù có 10 khoá độc lập cũng vẫn là yếu. Nên đối với cipher nhiều khoá thì thường là tất cả cùng đều sinh ra từ 1 khoá. NMAC / HMAC là thí dụ.

Bây giờ, trở lại vấn đề chính khiến alice quan tâm ở cipher này: cryptanalysis. Khảo sát sơ bộ 1 hàm G nhỏ (độ dài word =16 bit) cho thấy nó không giống như 1 random permutation. Cần khoảng 2 - 2.5 hàm G nối tiếp nhau mới đủ làm cho nó trở thành giống như random. Trong khi đó, đối với Skipjack cipher tiền thân của nó, hàm G ngoại trừ tính chất complementarity cố hữu ra thì rất giống 1 random permutation. Điều này khiến cho alice nghĩ rằng có thể bẻ gãy được, không nhiều thì ít.

Nhưng bẻ gãy cách nào thì mới phải bàn.

Mời các bạn tiếp tục thảo luận.
Như hà nghịch lỗ lai xâm phạm
如 何 逆 虜 來 侵 犯
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 27/04/2011 21:55:20 (+0700) | #42 | 236328
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@WinDak: không có tập gì gọi là tập plaintext+randombit, bởi vì randombit và sự tạo thành nó nằm trong internal operation của encryption function, và input của encryption function chỉ là plaintext, chứ không phải plaintext+randombit. Thậm chí, tính bí mật của giá trị randombit này còn quyết định độ an toàn của thuật toán, thế nên không thể bao gồm nó vào trong plaintext space được. Ngược lại, output của encryption function thì lại là ciphertext với yếu tố random (ví dụ ciphertext+randombit).

WinDak wrote:
"block cipher is a symmetric key cipher operating on fixed-length groups of bits, called blocks, with an unvarying transformation. A block cipher encryption algorithm might take (for example) a 128-bit block of plaintext as input, and output a corresponding 128-bit block of ciphertext" (wikipedia)
"block cipher is reversible, encrypt 128-bit plaintext and generate another 128-bit cipher text"
"a block cipher with block size of k-bit specifies a permutation on k-bit values for each of key value" (Practical Cryptography)  

À vấn đề này lại quay lại chuyện dùng khoá nắn trong thuật toán mã hoá mà alice đưa ra. Đây đúng là định nghĩa mà người ta thường dùng cho block cipher, và theo định nghĩa này thì đúng là theo bạn nói block cipher là bijective function. Lý do người ta không bao gồm probabilistic encryption vào trong định nghĩa này thì mình đã nói ở trên. Tuy nhiên quan điểm của mình là bạn không nên tự giới hạn suy nghĩ của mình vì cố gắng tuân theo định nghĩa này, nếu như bạn có một ý tưởng nào đó về probabilistic encryption cho block cipher, giống như việc sử dụng khoá nắn của thuật toán ở trên.

@alice: về vấn đề cryptanalysis thì chắc là phải đợi nghiên cứu một hồi thì mới dám thảo luận, nhất là khi kĩ năng chuyên môn không có. Nhưng vì lâu lâu mới có thảo luận hay nên mình cũng sẽ cố gắng xem sao. smilie
Mind your thought.
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 28/04/2011 06:22:26 (+0700) | #43 | 236336
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
smilie Xin lỗi bác alice vì em drag cái thảo luận này quá, tất cả để thoả mãn cái sự tò mò.


Tuy nhiên quan điểm của mình là bạn không nên tự giới hạn suy nghĩ của mình vì cố gắng tuân theo định nghĩa này, nếu như bạn có một ý tưởng nào đó về probabilistic encryption cho block cipher, giống như việc sử dụng khoá nắn của thuật toán ở trên.
 

Hehe, lúc này thì mình sẽ propose định nghĩa mới giống như cách mà Tweakable Cipher lúc mới được trình bày có đưa ra

Trở lại vấn đề alice nêu

"alice" wrote:

Theo alice biết, mọi tweak modes đều đòi hỏi tweak bí mật, còn tweakable ciphers thì có khi đòi hỏi có khi không. Tweak modes đòi hỏi tweak bí mật vì security proof cần giả thiết đó; nói đúng hơn thì xây dựng tweak công khai rất khó và tweak như thế rất phức tạp => kém hiệu quả
 

Mình có điều chưa hiểu chỗ này, alice nói tweak phải bí mật nhưng theo mình biết ít nhất ta cần T0 giống như IV là một phần của cipher text cho việc giải mã. Nếu không mỗi lần sử dụng T0 mới thì lại phải sử dụng trao đổi khoá để truyền T0 ? như vậy có phải là phản tác dụng của tweak hay các cipher mode ? same key nhưng kết quả khác nhau ?

Nếu nói tweak cần phải unpredictable, không đoán được dựa trên bất cứ kết quả nào sẽ hợp lí hơn ?

"alice" wrote:

Bây giờ, trở lại vấn đề chính khiến alice quan tâm ở cipher này: cryptanalysis. Khảo sát sơ bộ 1 hàm G nhỏ (độ dài word =16 bit) cho thấy nó không giống như 1 random permutation. Cần khoảng 2 - 2.5 hàm G nối tiếp nhau mới đủ làm cho nó trở thành giống như random
 

Cái này mình thấy cũng chưa thể chứng minh được là yếu, vì ngay cả các block cipher mạnh nếu sử dụng ít vòng cũng không an toàn. Nhiều vòng yếu hợp lại vẫn có thể tạo thành cipher mạnh.
-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 28/04/2011 22:36:51 (+0700) | #44 | 236378
[Avatar]
alice
Elite Member

[Minus]    0    [Plus]
Joined: 20/01/2005 22:23:24
Messages: 87
Location: Wonderland
Offline
[Profile] [PM]

WinDak wrote:

"alice" wrote:

Theo alice biết, mọi tweak modes đều đòi hỏi tweak bí mật, còn tweakable ciphers thì có khi đòi hỏi có khi không. Tweak modes đòi hỏi tweak bí mật vì security proof cần giả thiết đó; nói đúng hơn thì xây dựng tweak công khai rất khó và tweak như thế rất phức tạp => kém hiệu quả
 

Mình có điều chưa hiểu chỗ này, alice nói tweak phải bí mật nhưng theo mình biết ít nhất ta cần T0 giống như IV là một phần của cipher text cho việc giải mã. Nếu không mỗi lần sử dụng T0 mới thì lại phải sử dụng trao đổi khoá để truyền T0 ? như vậy có phải là phản tác dụng của tweak hay các cipher mode ? same key nhưng kết quả khác nhau ?

Nếu nói tweak cần phải unpredictable, không đoán được dựa trên bất cứ kết quả nào sẽ hợp lí hơn ? 

Ý WinDak hỏi là đối với mật mã alice đang đưa ra? Mật mã này gọi tham số T là tweak. Nhưng alice so sánh với cách dùng từ tweak phổ biến thì nghĩ rằng tweak là j (chỉ số block) có lẽ đúng hơn. j không cần phải unpredictable, và không thể unpredictable. Còn T thì nếu unpredictable thì tốt, nhưng nếu không thì alice cũng chưa thấy cách nào bẻ gãy được. Mật mã này tương tự như vài tweakable cipher khác, T được insert vào trong cipher theo một cách khá phức tạp, khác với tweak modes. Alice nghĩ rằng điều này là cần thiết bởi với một định nghĩa nhất định về unpredictablility thì T(j) vẫn là predictable ngay cả khi T(0) bí mật.

Về việc dùng lại khoá, theo spec đó, T(0) là một khoá và khi cần T(0) mới thì phải trao đổi khoá thôi. Điều này alice nghĩ cũng không phải là hạn chế gì ghê gớm. Thí dụ trong liên lạc, mỗi session mới đều nên đổi khoá mới, còn trong session thì không cần phải đổi khoá nào dù là T(0) bởi vì cứ mỗi j nó sẽ sinh ra một T(j) mới. Có thể sẽ tiện hơn nếu định dạng j gồm vài phần, j=(j1,j2,j3), trong đó j1 là session ID, j2 là packet ID, j3 là index của plain/cipher block trong packet. Khi đó không cần phải tốn thêm 4w bit để truyền j (vì j1, j2 được truyền trong overhead của protocol rồi, j3 thì người nhận đã biết). Và khi đó việc mất một số packet cũng không ngăn cản giải mã những packet nhận được tiếp theo.

Nếu T(0) công khai thì không cần phải trao đổi khoá mà có thể truyền bình thường cho người nhận. Nếu T(0) công khai (hoặc bị lộ), thú thực alice cũng chưa nhìn thấy cách nào có thể lợi dụng được nó để bẻ những khoá còn lại. Nhưng rõ ràng nếu T(0) công khai thì T(j) không còn unpredictable nữa theo bất cứ định nghĩa nào về "unpredictability". alice không phải là tác giả mật mã, cũng chưa tìm hiểu nó thấu đáo nên không thể nói gì hơn.

WinDak wrote:

"alice" wrote:

Bây giờ, trở lại vấn đề chính khiến alice quan tâm ở cipher này: cryptanalysis. Khảo sát sơ bộ 1 hàm G nhỏ (độ dài word =16 bit) cho thấy nó không giống như 1 random permutation. Cần khoảng 2 - 2.5 hàm G nối tiếp nhau mới đủ làm cho nó trở thành giống như random
 

Cái này mình thấy cũng chưa thể chứng minh được là yếu, vì ngay cả các block cipher mạnh nếu sử dụng ít vòng cũng không an toàn. Nhiều vòng yếu hợp lại vẫn có thể tạo thành cipher mạnh. 


Nếu chỉ với kết quả trên thì đúng là chưa thể kết luận được gì. Nhưng WinDak đừng quên là cipher này có cấu trúc đồng nhất với Skipjack, chỉ khác hàm G. Impossible differential attack từ năm 1998 (đến nay vẫn là attack thành công nhất lên Skipjack) đã cho thấy Skipjack chỉ cần thiếu 1 vòng thôi là bị bẻ gãy. Theo đó alice suy luận rằng với hàm G như vậy, khả năng lớn là cipher này có độ bảo mật dưới 5w bit.
Như hà nghịch lỗ lai xâm phạm
如 何 逆 虜 來 侵 犯
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 29/04/2011 15:03:53 (+0700) | #45 | 236418
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
@alice:
Thanks alice, mình hiểu rồi, nếu xét đối với mật mã mà alice giới thiệu thì tweak ở đây là (j) thì hợp lí hơn. T0 theo tác giả nói sẽ được xem một khoá phụ, còn j thì hoạt động theo kiểu counter IV và nó sẽ coi như public và sẽ predictable.

Counter IV được kết luận là không an toàn đối với các block cipher mode chỉ XOR với plaintext (CBC). còn trong trường hợp này j tạo ra T(j) rồi còn merge vào trong mỗi round, nên "hi vọng" sẽ an toàn.

alice wrote:

Nếu chỉ với kết quả trên thì đúng là chưa thể kết luận được gì. Nhưng WinDak đừng quên là cipher này có cấu trúc đồng nhất với Skipjack, chỉ khác hàm G. Impossible differential attack từ năm 1998 (đến nay vẫn là attack thành công nhất lên Skipjack) đã cho thấy Skipjack chỉ cần thiếu 1 vòng thôi là bị bẻ gãy. Theo đó alice suy luận rằng với hàm G như vậy, khả năng lớn là cipher này có độ bảo mật dưới 5w bit.
 

Cái này thật sự đáng để tìm hiểu thêm, kiến thức của mình còn quá ít để nhận xét gì. Không biết nhóm tác giả này là ai, rất tò mò muốn biết họ sẽ publish thuật toán này ở đâu để theo dõi.
-- w~ --
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 03/05/2011 13:51:01 (+0700) | #46 | 236561
NQL05
Member

[Minus]    0    [Plus]
Joined: 12/08/2005 01:43:23
Messages: 16
Offline
[Profile] [PM]

alice wrote:
24. Vấn đề thực thi cuối cùng mà mình đề cập là phép tính nghịch đảo theo phép nhân modulo 2↑w (modular multiplicative inverse) cần thiết để giải mã. Phép tính này có thời gian tính toán không phải là O(1) mà là O(w) ...

...

Code:
word inverse(word a)
{
    word b = a;
    for(int w=30; w; w--)
    {
        b *= b;
        b *= a;
    }
    return b;
}


 


Có cách khác nhanh hơn chỉ mất O(log w) và cũng rất secure:

Code:
word inverse(word a)
{
    word b = 2 - a; // ab == 1 mod 4
    b *= 2 - a*b; // ab == 1 mod 16
    b *= 2 - a*b; // ab == 1 mod 256
    b *= 2 - a*b; // ab == 1 mod 65536
    b *= 2 - a*b; // ab == 1 mod 4294967296
    return b;
}
[Up] [Print Copy]
  [Article]   Mật mã hoá bằng phép nhân (st) 08/04/2012 21:47:32 (+0700) | #47 | 261046
[Avatar]
alice
Elite Member

[Minus]    0    [Plus]
Joined: 20/01/2005 22:23:24
Messages: 87
Location: Wonderland
Offline
[Profile] [PM]
Hơn 1 năm rồi mới quay lại chủ đề cũ này. Bây giờ alice mới tìm được 1 cái đáng nói đây.

Giả sử a là một từ w bit, ta ký hiệu

¬a = a ^ 2↑(w-1)

Để ý rằng ¬a = a + 2↑(w-1) = a - 2↑(w-1).

Giả sử (a1, a2,...) là chuỗi nhiều từ w bit, ta ký hiệu

¬(a1, a2,...) = (¬a1, ¬a2,...)

Thuật toán mật mã hoá có một nhược điểm đáng lo ngại là

ENCRYPT(X, Z, T, U) = ENCRYPT(X, ¬Z, T, ¬U)

Việc fix nhược điểm trên là không dễ dàng.

Nhược điểm trên phát sinh từ thuật toán sinh chuỗi phần tử đơn vị u(0), u(1), u(2),...., u(63). Mọi u(k) được tính bằng một đa thức có dạng p(U) hoán vị trên vành số nguyên mod 2↑w. Có thể chứng minh rằng bất cứ đa thức p(U) nào hoán vị trên vành (khi được xem là một hàm) cũng đều có tính chất p(¬U) = ¬p(U). Tính chất này gây ra nhược điểm trên.

Bài phân tích của Ada ở trang web congdongcviet.com (phiên bản .PDF) có đưa ra vài lý do để khuyên rằng chuỗi phần tử đơn vị nên là một chuỗi số chẵn lẻ luân phiên, từ đó đưa ra 2 thuật toán để sinh chuỗi này. Cả 2 đều dựa trên các đa thức hoán vị trên vành. Cả 2 đều có nhược điểm trên.

Ngoài ra, dễ thấy rằng nếu gọi a' là nghịch đảo của a qua phép nhân "cải tiến" . hay (.) thì (¬a)' = ¬(a'). Do đó, thay thế 1 hay nhiều phép nhân "cải tiến" trong các hàm G bằng các phép chia "cải tiến" cũng không fix được nhược điểm trên.

Nhược điểm trên có thể đánh giá là nghiêm trọng như tính bù của mật mã DES, làm độ dài khoá hiệu dụng mất đi 1 bit.

Nếu được phân cấp bảo mật 10w bit thì có thể nói rằng, với nhược điểm trên, thuật toán mật mã hoá dựa trên phép nhân này đã bị bẻ gãy.
Như hà nghịch lỗ lai xâm phạm
如 何 逆 虜 來 侵 犯
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|