A kulcsgeneráláshoz nem kell ideiglenes fájl, és ennek elhagyása kevesebbet javít, mint amit a legtöbb útmutató sugall. Amit megszüntet, az egy fájl életciklusa és a körülötte folyó takarítási verseny. Amit érintetlenül hagy, az minden lehetőség a titok későbbi kiszivárogtatására. A helyesség problémája ezekben a szkriptekben általában máshol ül, mert a diagnosztika és a kulcsanyag különböző folyamokon utazik.

A fájl soha nem az a kitettség volt, amire gondolt

Az ideiglenes fájl konkrét kockázat, ha mindenki számára olvasható, ha túlél egy összeomlást, vagy ha egy kivétel után kimarad egy takarítási lépés. Ezek valósak, és érdemes javítani rajtuk. Helyiek, láthatók és könnyen tesztelhetők is. Nevezze meg mindegyiket a saját szkriptjében, mielőtt arra jut, hogy a változtatás csak kozmetikai volt.

A halkabb kockázatok lejjebb ülnek: a hibakeresés közben kinyomtatott kulcs, a teljes eredményobjektumot szerializáló kivétel, az összeomláskezelő, amely memóriadumpot ír, a naplógyűjtő, amely megkapja a fájl elérési útját, majd a tartalmat. Az ideiglenes fájl elkerülése egyikért sem tesz semmit, és ennek ellenkezőjét hinni az az út, ahogyan egy jó szándékú újraírás a titkot korábbinál kitettebbem hagyja. Tekintse a változtatást egyetlen javításnak egy sorban, nem a megoldásnak.

Mit ír a kliens, ha nincs megadva fájlnév

A kliens jelenlegi verziói a generált kulcsot a szabványos kimenetre küldik, ha a kulcsparancs kimeneti útvonal nélkül kerül megadásra. Ez a dokumentált viselkedés teszi életképessé a memóriabeli megközelítést, és megszünteti a régebbi trükk szükségességét, hogy az eszközt egy eszközútvonalra irányítsuk.

import subprocess
proc = subprocess.run(
    ["openvpn", "--genkey", "tls-crypt"],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    check=True,
)
key_material = proc.stdout

Adja át a parancsot listaként. Itt nincs szükség héj-kiterjesztésre, és egy héj engedélyezése az argumentumhatárt olyan idézőjelektől tenné függővé, amelyeket nem Ön szabályoz. A szándékolt végrehajtható fájlt abszolút útvonallal használja, ha a szkript a vártnál eltérő keresési útvonallal futhat.

A visszatérési kód ellenőrzése megakadályozza, hogy a sikeres ág továbbfusson egy sikertelen hívás után. Enélkül egy üres bájtsor továbbfolyhat, és csak jóval később bukik el, ott, ahol a kulcsot használják, és a hibaüzenet már egyáltalán nem említi a generálást.

Két folyam, két jelentés

A szabványos kimenet hordozza a kulcsot. A szabványos hiba hordozza mindazt, amit az eszköz mondani akar, beleértve a konfigurációra, a verzióra és a kulcstípusra vonatkozó figyelmeztetéseket. Mindkettőt egy pufferbe terelni az a hiba, amely hihetően kinéző kulcsot állít elő, a közepébe varrt mondattal.

Tartsa külön a hibaútját is. Amikor a hívás meghiúsul, jelentse a meghiúsult parancsot és a kilépési állapotot, majd tudatosan döntse el, hogy a szabványos hiba bármely része biztonságos-e megjelenítésre. A teljes eredményobjektum naplóba öntése a szokásos rövidítés, és magával viheti a kulcsot.

A binárisan biztonságos olvasás számít, ha később hash-el vagy összehasonlítja az anyagot. A szövegmód váratlan kódolással olyan bájtokat változtathat meg, amelyeket soha nem szántak szövegnek, és a megváltozott kulcs megkülönböztethetetlen a rossztól, amíg egy kézfogás meg nem bukik.

Ha mégis megőrzi, tegye tudatosan

A legtöbb telepítésnek előbb-utóbb szüksége van a kulcsra a lemezen, az átjárón vagy egy titoktárban. Írja meg egyszer, létrehozástól kezdve korlátozó jogosultságokkal, nem egy későbbi chmod-dal, és tegye atomikussá az írást, hogy egy részleges fájl soha ne az legyen, amelyet egy szolgáltatás indításkor olvas. Az ugyanabban a könyvtárban lévő útvonalról való átnevezés ehhez általában elég. Távolítsa el az előkészítő útvonalat a hibaágon, mert a sikertelen írás pontosan az a másolat, amelyet az emberek elfelejtenek.

Állítsa be a fájl módját a létrehozáskor, és a könyvtár módját is tartsa korlátozónak. Kerülje az olyan hely alatti útvonalakat, amelyet egy biztonsági mentési feladat gondolkodás nélkül elsöpör, mert az éjszakai mentésben lévő titok az adott mentés minden másolatában titok. Ugyanez vonatkozik egy megosztott kötetre, amelyet más szolgáltatások olvashatnak.

A megosztott kulcs nem identitás

Ennek az anyagnak a létrehozása nem ad ki tanúsítványt, nem regisztrál klienst és nem állapítja meg, ki kapcsolódik. A megosztott kulcs egy csatornát véd olyan felek között, akik már megbíznak egymásban; az identitás továbbra is a tanúsítványból és az előtte álló bármilyen hitelesítésből származik.

A kulcstípusok sem cserélhetők fel. Az egyik funkcióhoz tartozó szimmetrikus kulcs nem közvetlen helyettesítője egy másiknak, és az újabb kiadások saját változataikat adják hozzá, mindkét végén eltérő fájlokkal. Azt a típust hozza létre, amelyet a konfigurációja valóban megnevez, majd használja abban a szerepben, amelyet ez a típus meghatároz.

Valódi kapcsolattal tesztelje az eredményt, ne a fájlméret vizsgálatával. Ha a kézfogás befejeződik, és a naplók nem mutatnak kulcsfigyelmeztetést, a generálási útvonal helyes; ha a kulcsot egy összevont folyam elvágta volna, a kapcsolat úgy bukna el, hogy a társra mutatna, nem a szkriptre.

Kapcsolódó cikkek