第二,我簡單的看了壹下源碼,似乎兩個方向(客戶端到服務端和服務端到客戶端)用的是相同的IV(encryptor和decryptor用同樣的IV的初始化)。這意味著AES-CFB有IV重用,這是絕對的錯誤用法,直接導致攻擊者能夠解密數據包。(作者扯了半天的所謂OTP只是所有加密算法的基本要求,然而如果我的理解沒錯,他沒用對)。
第三,基於UDP的安全協議都有被replay attack的可能,這個協議好像沒有寫怎麽防止?
第四,這個PSK是程序隨機生成還是用戶指定?如果是用戶指定,用SHA256生成key是不夠的,因為用戶指定的key往往強度不夠,需要用key stretching function比如scrypt或者pbkdf2-hmac來處理。