Orúkọ méjèèjì jẹ́ ìkọ́lé AEAD, àwọn méjèèjì ni a ti fi sí ipò àpapọ̀, àti lórí sáfà x86 tí ó wà báyìí, èyíkéyìí nínú wọn yóò kún ọ̀nà ìsopọ̀ gigabit láìsí ìsapá tí ó hàn. Yíyan náà dẹ́kun jíjẹ́ aláìní ìdí nígbà tí o bá kúrò lórí sáfà yẹn: àwọn rótàrì olówó pọ́ọ̀kú, àwọn fọ́nù àtijọ́ àti àwọn ẹ̀rọ àròtẹ́lẹ̀ kì í sábà ní ìmúyára AES, níbẹ̀ sì ni ìyàtọ̀ pọ̀. Nítorí náà ìfiwéra kì í ṣe èyí tí ìkọ̀kọ̀ yára jù, bí kò ṣe èyí tí ìkọ̀kọ̀ ń ṣiṣẹ́ dáadáa lórí ẹ̀ka ojú-ọ̀nà yìí, àti bóyá ìlànà náà ń fúnni ní yíyan rárá.

Iṣẹ́ kan náà, ọkàn tí ó yàtọ̀

Ìkọ́lé méjèèjì ń fúnni ní àṣírí àti ìpéye ní ìgbà kan náà, wọ́n sì ń jẹ́rìí dátà tí ó so mọ́, ìdí nìyẹn tí àwọn ìlànà VPN fi ń lò wọ́n fún ọ̀nà dátà. Ìyàtọ̀ wà ní inú: AES-GCM ni ìkọ̀kọ̀ àkójọ AES ní ipò kíkà pẹ̀lú olùjẹ́rìí pọ́línómíálì lórí GF(2^128), nígbà tí ChaCha20-Poly1305 jẹ́ ìkọ̀kọ̀ ṣíṣàn pẹ̀lú kọ́kọ́rọ́ 256 bítì àti olùjẹ́rìí ẹ̀ẹ̀kan péré tí ó yàtọ̀.

Èyí tí ó ṣe pàtàkì nínú ìṣiṣẹ́ jẹ́ ti gbogbo: àwọn méjèèjì kùnà pátápátá nígbà tí a bá tún nonce lò, àwọn méjèèjì nílò ìṣàkóso àyè nonce fún kọ́kọ́rọ́ kọ̀ọ̀kan, kò sì sí èyí tí ó ń tún alábàákẹ́gbẹ́ tí ń jẹ́rìí nkan tí kò tọ́ ṣe. Àkọsílẹ̀ tí ó sọ AES-256-GCM kò ní ààbò ju èyí tí ó sọ CHACHA20-POLY1305 lọ; àwọn méjèèjì lágbára nígbà tí ìmúṣẹ bá tọ́.

Ibẹ̀ tí AES-GCM ti ṣẹ́gun

AES ní àwọn ìtọ́ni pàtàkì lórí ọ̀pọ̀ CPU òde òní: AES-NI lórí x86, àwọn ìmúgbòòrò kripto lórí ARMv8 àti àwọn ìbámu lórí àwọn àpẹẹrẹ POWER àti RISC-V tuntun. Nígbà tí wọ́n bá wà, GCM ń ṣiṣẹ́ ọ̀pọ̀ àkójọ lẹ́sẹẹsẹ fún ẹ̀ka ìyí kọ̀ọ̀kan, ìmúṣẹ sọ́fíwéà sì di aláìní ìtumọ̀. Èyí ni ipò tí ó wọ́pọ̀ fún àwọn sáfà, kọ̀mpútà orí tábìlì àti fọ́nù òde òní, ìdí nìyẹn tí ìmọ̀ràn láti lo AES fi jẹ́ ìpinnu àkọ́kọ́ tí ó bọ́gbọ́n mu nínú ilé-iṣẹ́ dátà.

Ìṣòro náà ni ipò ìpele kejì. Láìsí àwọn ìtọ́ni pàtàkì, AES nínú sọ́fíwéà máa ń lọra, àwọn ìmúṣẹ sọ́fíwéà tí ó dá lórí tábìlì sì ni àwọn tí ó ní ìtàn gígùn ti àwọn ìṣòro àkókò cache. Olùkójọ VPN nínú ẹ̀rọ àròtẹ́lẹ̀ tí olùgbàlejò rẹ̀ kò fi àwọn àsíá AES hàn fún àlejò ni ipò yìí gan-an, ó sì rọ̀rùn láti pàdánù nítorí pé CPU olùgbàlejò ní ẹ̀yà yẹn.

Ṣàyẹ̀wò ohun tí ìlànà ń rí gan-an, kì í ṣe ohun tí CPU ń ṣètìlẹ́yìn fún: grep -o aes /proc/cpuinfo | head -1 lórí Linux, tàbí àsíá ẹ̀yà tí ó bá mu nínú àwòrán CPU hypervisor.

Ibẹ̀ tí ChaCha20-Poly1305 ti ṣẹ́gun

ChaCha20 yára nínú sọ́fíwéà tí a lè gbé kiri nítorí pé ó ń lo àfikún, yíyí àti XOR nìkan, àwọn ìmúṣẹ rẹ̀ sì ń yẹra fún wíwá tábìlì tí ó dá lórí àṣírí nípasẹ̀ àpẹẹrẹ. Lórí ẹ̀rọ tí kò ní ìmúyára AES, ìyẹn jẹ́ àǹfààní gidi, ìdí nìyẹn tí WireGuard fi yàn án: àpèjúwe ìlànà WireGuard ń kọ ChaCha20-Poly1305 sílẹ̀ gẹ́gẹ́ bí ìkọ̀kọ̀ dátà rẹ̀ láìsí àfidípò.

Yíyan kan náà sọ nkan tí ó wúlò: lórí ẹ̀rọ tí AES ti yára, WireGuard ń fi díẹ̀ nínú ìṣàn jáde sílẹ̀ ní ìfiwéra pẹ̀lú AES-GCM, àwọn olùkọ̀wé rẹ̀ sì ti tẹ́wọ́gbà ìyẹn fún ìhùwàsí tí a lè sọtẹ́lẹ̀ lórí fọ́nù, rótàrì ilé àti olùgbàlejò kọ́ńtéínà. Bí ẹgbẹ́ rẹ bá jẹ́ àwọn àpótí ARM kékeré ní pàtàkì, ìpààrọ̀ yẹn wà ní ẹ̀gbẹ́ rẹ.

Ipò òdìkejì ni olùkójọ x86 tí ó dí, níbẹ̀ tí AES-GCM pẹ̀lú AES-NI jẹ́ ọ̀nà tí ó yára jù tí a sì ń ṣètìlẹ́yìn fún dáadáa, níbẹ̀ tí ChaCha20 ń ná CPU tí a lè díwọ̀n fún gbogbo gigabit. Kò sí ìkọ́lé tí ó jẹ́ àìlera; ìbéèrè ni èyí tí ẹ̀rọ rẹ ń ṣe ní ọ̀wọ̀n.

Ohun tí ìlànà rẹ gbà ọ́ láyè láti yàn gan-an

ProtocolWhat you get
WireGuardChaCha20-Poly1305 only; no negotiation
OpenVPN 2.5 and laterData channel negotiated from data-ciphers: AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305
IPsec / IKEv2AES-GCM as a combined-mode transform, or ChaCha20-Poly1305 where both peers implement it
OpenVPN control channelTLS decides; TLS 1.3 offers AES-GCM and ChaCha20-Poly1305 suites

Kíyèsí pípín nínú OpenVPN: ọ̀nà ìṣàkóso àti ọ̀nà dátà ni a ń ṣe ìdúnàádúrà wọn lọ́tọ̀, nítorí náà àkójọ tí o rí fún TLS kò sọ nkan nípa ìkọ̀kọ̀ tí ń dáàbò bo ẹrù rẹ. Àkópọ̀ ìpàdé ń sọ àwọn méjèèjì, kíkà ọ̀kan nínú àwọn méjèèjì sì jẹ́ orísun ìdàrúdàpọ̀ tí ó wọ́pọ̀.

Nínú OpenVPN ìkọ̀kọ̀ ọ̀nà dátà wá láti inú àkọsílẹ̀ data-ciphers ní ẹ̀gbẹ́ méjèèjì. Bí àkọsílẹ̀ sáfà àti ti oníbàárà kò bá pàdé, ìsopọ̀ yóò padà sí ohun tí data-ciphers-fallback gbà láyè tàbí yóò kùnà pátápátá, a sì máa ń fi ìkùnà yẹn sí ìpele tí kò tọ́. Fi àkọsílẹ̀ kan náà sí ẹ̀gbẹ́ méjèèjì, lẹ́yìn náà jẹ́rìí àbájáde ìdúnàádúrà nínú àkọsílẹ̀ ìṣẹ̀lẹ̀ dípò ríronú pé a bọ̀wọ̀ fún ìtòlẹ́sẹẹsẹ àkọsílẹ̀ náà.

Pinnu láti inú òtítọ́ mẹ́ta nípa ìgbékalẹ̀

Ìkọ́kọ́, ṣé àwọn ojú-ọ̀nà ní ìmúyára AES? Bí ẹgbẹ́ kọ̀ọ̀kan bá ní, AES-GCM ni yíyan tí ó pọ́ọ̀kú jù àti ìpinnu àkọ́kọ́ nínú ọ̀pọ̀ ìṣètò tí a ń tọ́jú. Bí ìpín tí ó ṣe pàtàkì bá jẹ́ rótàrì kékeré tàbí fọ́nù àtijọ́, ChaCha20-Poly1305 ń dáàbò bo ìrù ẹgbẹ́ náà láti di ààlà agbára.

Ìkejì, ṣé ìlànà náà ń fúnni ní yíyan rárá? Pẹ̀lú WireGuard a ti ṣe ìpinnu náà fún ọ, iṣẹ́ tí ó wúlò sì ni láti jẹ́rìí pé àwọn irinṣẹ́ yíká kò ń fi nkan mìíràn sí ipò rẹ̀ ní ìdákẹ́jẹ́. Pẹ̀lú OpenVPN àti IPsec ìdáhùn ni ìlà ìṣètò kan àti àbájáde ìdúnàádúrà tí a gbọ́dọ̀ kọ sílẹ̀.

Ìkẹta, ṣé ẹ̀gbẹ́ méjèèjì lè gbà? Ìkọ̀kọ̀ tí ẹgbẹ́ kan kò mú ṣẹ kì í ṣe ìpinnu ìṣe, ìdáwọ́lé ni. Ìdí nìyẹn tí àkọsílẹ̀ ẹgbẹ́ fi ṣe pàtàkì ju ìwọ̀n èyíkéyìí lọ: ẹgbẹ́ àdàlù nílò ìpàdé àwọn agbára, kì í ṣe ìfẹ́ ẹ̀rọ tí ó yára jù.

Bí o bá ń díwọ̀n, jẹ́ kí ẹ̀rọ, ojú-ọ̀nà àti ẹrù jẹ́ bákan náà kí o sì yí nkan kan padà. Ìdánwò tí ń fi sáfà méjì wé ní àwọn ẹkùn orílẹ̀-èdè tí ó yàtọ̀ ń díwọ̀n ọ̀nà, kì í ṣe ìkọ̀kọ̀, ìwọ̀n lórí kọ̀mpútà gbé-ẹrù kò sì sọ nkan nípa olùgbàlejò kọ́ńtéínà tí a fi àwọn àsíá CPU rẹ̀ pamọ́. Fi wé, lẹ́yìn náà kọ èyí tí ìkọ̀kọ̀ tí a ṣe ìdúnàádúrà rẹ̀ gan-an: àkọsílẹ̀ yẹn ní iye ju ìwọ̀n lọ.

Àwọn àpilẹ̀kọ tó jọra