Pam na all openssl rand greu’r allwedd y mae tls-crypt ei heisiau
Mae OpenSSL yn cynhyrchu beitiau ar hap; mae tls-crypt angen ffeil allwedd statig strwythuredig, ac mae tls-crypt-v2 angen allwedd na all ond y gweinydd ei lapio. Defnyddiwch openvpn --genkey.
Mae OpenSSL eisoes wedi’i osod, mae gan y gwesteiwr entropi, ac mae cynhyrchu allwedd ag ef yn teimlo fel y llwybr byr amlwg. Bydd yr allbwn yn ar hap ac yn gyfrinachol ac yn hollol ddiwerth, a daw’r methiant fel gwall sianel reoli yn hytrach nag unrhyw beth sy’n crybwyll fformat allwedd. Y camarwain hwnnw yw’r rhan gostus, oherwydd mae’n anfon pobl i archwilio eu seiffrau. Yr hyn y mae’r VPN yn ei ddarllen yw strwythur ffeil penodol, nid bloc mympwyol o feitiau, ac ni ellir cynhyrchu un amrywiad o’r nodwedd y tu allan i’r gweinydd o gwbl.
Beth yn union y mae’n rhaid i’r ffeil ar y ddisg fod
Mae ffeil allwedd statig OpenVPN yn destun. Mae’n dechrau gyda llinell sylw sy’n datgan beth ydyw, yn cario data hecs mewn rhesi o led sefydlog, ac yn cyfrif 256 beit o ddeunydd allwedd i gyd. Mae OpenVPN yn ei darllen fel cyfrinach a rennir y sianel reoli, nid fel tystysgrif, nid fel ymadrodd cyfrinair ac nid fel unrhyw beth y byddai llyfrgell TLS yn ei adnabod.
Mae’r un math o wrthrych yn gwasanaethu’r ddwy nodwedd sianel reoli. Gyda tls-auth, mae angen cyfeiriad ar bob cymar hefyd fel na ellir adlewyrchu pecynnau un ochr yn ôl ato. Gyda tls-crypt, mae un gyfrinach a rennir yn amgryptio ac yn dilysu’r sianel reoli yn y ddau gyfeiriad, sy’n cuddio’r ysgwyd llaw yn ogystal â’i diogelu.
Nid yw hynny’n wybodaeth gyfrinachol, ac nid y fformat yw’r pwynt. Y pwynt yw bod yn rhaid i’r ffeil gyd-fynd yn union â’r hyn y mae’r darllenydd yn ei ddisgwyl: pennawd, lled rhes, newid llinell olaf a chyfanswm hyd. Mae ffeil sy’n un rhes allan yn llwytho fel sothach neu’n methu’n llwyr. Felly mae cymharu dau gymar beit wrth feit yn brawf cyntaf dilys, ac mae’n gyflymach na darllen y naill neu’r llall o’r ffeiliau ffurfweddu.
Y ffordd a gefnogir i greu un
Cynhyrchwch yr allwedd statig blaen gyda’r teclyn a fydd yn ei defnyddio, ac yna cyfeiriwch ati o’r ddau ben:
openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key
Newidiodd sillafu’r opsiwn dros amser: roedd gosodiadau hŷn o gyfnod 2.4 yn defnyddio ffurf â baner ar wahân cyn enw’r ffeil, tra bod adeilediadau cyfredol yn derbyn yr un byrrach. Beth bynnag, yr un math o wrthrych yw’r ffeil sy’n deillio, felly’r prawf yw a yw’r ddau gymar yn dal beitiau union yr un fath.
Mae’r ail genhedlaeth yn ychwanegu strwythur na all unrhyw gynhyrchydd allanol ei ddyfeisio. Mae allwedd gweinydd yn cael ei chreu unwaith, ac mae pob cleient yn derbyn allwedd lapiedig sy’n deillio ohoni:
openvpn --genkey tls-crypt-v2-server /etc/openvpn/tc-v2-server.key
openvpn --genkey tls-crypt-v2-client /etc/openvpn/laptop1.key --tls-crypt-v2 /etc/openvpn/tc-v2-server.key
Nid yw’r hyn y mae’r cleient yn ei dderbyn yn gopi o allwedd y gweinydd ei hun. Mae’n wrthrych lapiedig sy’n cario metadata na all ond y gweinydd ei ddadlapio, a’r lapio hwnnw yw’r rheswm y gellir dadwneud ffeil fesul dyfais heb gyffwrdd ag unrhyw ddyfais arall. Cadwch allwedd y gweinydd ar y gweinydd a’i thrin fel gwraidd yr ymddiriedaeth fesul dyfais honno.
Lle mae beitiau wedi’u gwneud â llaw yn chwalu
Byddai argraffu 256 beit ar hap fel hecs o dan bennawd cywir, mewn theori, yn rhoi ffeil allwedd statig sy’n llwytho. Mae’n parhau i fod yn syniad gwael. Mae pob manylyn fformatio’n dod yn gyfle i gynhyrchu deunydd sy’n methu wrth lwytho neu, yn waeth, yn gadael dau gymar â gwerthoedd gwahanol na ddangosant eu hunain ond fel methiant dilysu.
Nid oes dim cyfwerth yn bosibl gyda’r amrywiad v2. Nid yw allwedd cleient lapiedig yn bodoli ond fel allbwn o broses allwedd y gweinydd, ac mae’r gweinydd yn cadw’r deunydd sydd ei angen i’w ddadlapio. Bydd blob ar hap yn cael ei wrthod neu’n methu’n syml i ddadgryptio, ac ni fydd y naill na’r llall o’r negeseuon yn crybwyll hap.
Mae cydnawsedd fersiwn yn gorwedd ar ben hyn i gyd. Mae’r genhedlaeth gyntaf angen rhyddhad sy’n ei chefnogi ar y ddau ben, ac mae’r ail angen rhyddhad mwy newydd eto. Ni all cleient a adeiladwyd cyn bod y nodwedd yn bodoli gwblhau ysgwyd llaw â gweinydd sy’n derbyn deunydd lapiedig yn unig, ac mae’r methiant y mae’n ei adrodd yn pwyntio at y sianel reoli yn hytrach nag at y fersiwn.
Cylchdroi heb gloi pawb allan
Mae cylchdroi un gyfrinach a rennir yn ymarfer cydlynu yn hytrach nag un technegol. Mae angen y ffeil amnewid yn llaw pob cleient cyn i’r gweinydd dynnu’r un flaenorol yn ôl, ac mae unrhyw beiriant sy’n dal yr hen werth yn methu ar yr eiliad y bydd hynny’n digwydd. Peidiwch â dechrau’r cylchdroi hwnnw yng nghanol diwrnod gwaith.
Gyda’r trefniant v2, mae cylchdroi fesul dyfais: cyhoeddwch allwedd lapiedig newydd ar gyfer un peiriant ac ymddeolwch yr hen un ar gyfer y peiriant hwnnw yn unig. Dyna’r brif ddadl dros symud unwaith y bydd pob cleient ar ryddhad sy’n ei chefnogi.
Mae caniatâd ffeil yn perthyn i’r un sgwrs. Dylai’r allwedd fod yn ddarllenadwy gan y cyfrif sy’n rhedeg y gwasanaeth yn unig, ac ni ddylai fyw yn yr un storfa â’r proffiliau y mae’n eu diogelu. Mae cyfeirlyfr OpenVPN 2.6 yn dogfennu’r ffurfiau cynhyrchu a’r adrannau deunydd allwedd, sy’n ffynhonnell well na gorchymyn wedi’i gopïo o bost fforwm.