"ChaCha20" 加密演算法的名字由來有什麼典故?
Google 的 ChaCha 加密演算法,為什麼叫做 "ChaCha"?
據RFC 7539,演算法名為"ChaCha",20是因為 ChaCha20 中有20個"round".
關於 "ChaCha",據題主搜索,最有可能的來源是印度某漫畫 "Chacha Chaudhary".
請問有沒有更有依據的ChaCha的名字來源?謝謝
似乎密碼學界有使用舞蹈命名演算法的習慣,例如 SHA-3 的別名 「Keccak」 來自於巴厘島的一種傳統舞 Kecak (https://twitter.com/veorq/status/253405318992769024),Salsa、Rumba 和 ChaCha 這個則是拉丁舞系的莎莎舞、倫巴和恰恰 (https://eprint.iacr.org/2007/472.pdf)。
至於學界為什麼喜歡用舞蹈命名,據說 (據我的密碼學老師上課說,他也沒給出處) 來自福爾摩斯小說 "The Adventure of the Dancing Men",就是那本圍繞一個畫了一串跳舞小人的密寫字條展開的以及出現名言 "What one man can invent, another can discover" 的故事 (The Adventure of the Dancing Men)。
我覺得加密演算法的名字純粹是作者個人的喜好吧,很多並沒有什麼典故。國內外學術界提出來的加密演算法,沒有上萬也有大幾千了。名字五花八門什麼類別的都有。
一般被採納為國際標準的都是標準名字縮寫(原來演算法的名字大眾不熟知),有些標準是國際組織發起計劃徵集來的,很多大牛學者設計演算法提交給標準組織評估。
例如大家熟知的
AES(Advanced Encryption Standard,高級加密標準)
DES(Data Encryption Standard,數據加密標準)
IDEA(International Data Encryption Algorithm,國際數據加密演算法),來學嘉老師
ZUC(祖沖之演算法),馮登國老師,已經被國際組織3GPP推薦為4G無線通信的第三套國際加密和完整性標準的候選演算法
有些用食物來命名 例如Grain系列流密碼(eStream計劃硬體組三個獲勝演算法之一),Sprout演算法,Plantlet演算法,Fruit演算法
有些用小動物來命名 例如Lizard演算法,Mantis演算法。
有些用人物來命名 例如MICKEY演算法,Prince演算法。
。。。。。
感覺有點強行歸類的意思,其實就跟過家家給娃娃起名字一樣,你叫啥都可以。
至於後面的數字部分一般代表密鑰長度或者輪數,例如Grain-80代表80比特密鑰版本的,Grain-128代表128比特密鑰版本,Grain-128a的a代表是帶認證(authentication)版本的
還有些演算法被人找出缺陷,被攻擊,做點改動,更新一下版本變成 v1,v2版的。
自己的一點想法,如有錯誤歡迎批評指正。
推薦閱讀: