Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Karlitos 27. 07. 2015, 17:10:35
-
Ahoj,
zacal jsem pracovat ve firme, kde maji jedno univerzalni heslo na na mnoho sluzeb (LDAP), ale neumoznuji aby si ho zamestnanec zvolil. No asi kdyz bych tlacil na administratory tak by to slo ale nebudu to delat hned po nastupu.
Koukal sem ze nekteri kolegove/kolegyne skncily s post-item na monitoru, takze ezpecnost na prvnim miste :)
Me me napadlo udelat si nejaky jednoduchy skriptik, ktery by mi po zadani vlastniho hesla desiroval to firemni a vlozil ho do schranky. Tu druhou cast resi velmi dobre python modul pyperclip, tak ted resim jak delat to sifrovani/desifrovani.
Na internetu jsem nasel nejake navody a skoncil u:
#!/usr/bin/env python
import pyperclip
from Crypto.Cipher import AES
import base64
import getpass
key = 'moje_tajne_silne_heslo'
pwd = 'firemni_heslo'
cipher = AES.new(key.rjust(32), AES.MODE_CBC, 'This is an IV456')
encoded = base64.b64encode(cipher.encrypt(pwd.rjust(16)))
print 'Encoded', encoded
try:
key2 = getpass.getpass('Input your key: ')
cipher2 = AES.new(key2.rjust(32), AES.MODE_CBC, 'This is an IV456')
decoded = cipher2.decrypt(base64.b64decode(encoded)).strip()
print 'Decoded', decoded
pyperclip.copy(decoded)
except:
print 'Exception occured, perhaps wrong password'
Rad bych se jen zeptal jestli je tenhle postup principialne v poradku/nejde udelat lepe a jednoduseji. Predevsim mi jde jen o to abych nemusel mit firemni heslo nekde na apirku nebo ulozene v plain-textu
-
Když opomenu to, že je ten AES použit naprosto primitivně (radikálně to sníží bezpečnost celé šifry, ale pořád zůstává o dost lepší, než post-it), tak je hlavní problém v tom, že skript nedetekuje chybné zadání hesla (key2). Při špatném key2 nevznikne výjimka, ale nesmyslné heslo (decoded). Pro zachování úrovně skriptu bych doporučil přidat před ten "print 'Decoded', decoded" ještě "assert len(decoded) < 16" ;-)
-
A teď vážně: třeba takový https://pypi.python.org/pypi/simple-crypt vypadá (aspoň na první pohled) o dost líp...
-
Nadhera diky presne tohle sem hledal :)
-
Proč nemůžeš proboha použít něco hotového jako gpg nebo openssl?
-
Proč nemůžeš proboha použít něco hotového jako gpg nebo openssl?
Me nejde o nejvyssi stupen bezpecnosti spis o nejake pragmaticke reseni abych si nemusel to firemni heslo pamatovat, nemusel ho mit nikde v plain-textu a mohl ho presto co nejjednoduseji pouzit. Takhle sem se aspon naucil par novych veci v pythonu :-)
-
A teď vážně: třeba takový https://pypi.python.org/pypi/simple-crypt vypadá (aspoň na první pohled) o dost líp...
Tak jsem to zkousel a je to krasne jednoduche, blbuproste, bezpecne ... ale poo ...ma ..leeeee. Na starsim Core i5 mi to za-/desifrovani zabere kolem 2 sekund cimz se to nehodi pro zamyslene pouziti.
-
Odporucam pass: http://fedoramagazine.org/using-pass-to-manage-your-passwords-on-fedora/
Jednoduche, bezpecne, v prikazovom riadku.
-
a co pouzit proste passwordstore : http://www.passwordstore.org/
-
A teď vážně: třeba takový https://pypi.python.org/pypi/simple-crypt vypadá (aspoň na první pohled) o dost líp...
Tak jsem to zkousel a je to krasne jednoduche, blbuproste, bezpecne ... ale poo ...ma ..leeeee. Na starsim Core i5 mi to za-/desifrovani zabere kolem 2 sekund cimz se to nehodi pro zamyslene pouziti.
není důvod, aby bylo AES takhle pomalé. asi jedeš podle toho instantního receptu a používáš RSA, takže generování klíče nějakou chvilku zabere.. :) A nakonec to šifruješ vlastně 2x - zprávu i samotný klíč, úplně zbytečně.
-
Vsem moc dekuji za rady, pass jsem doted neznal a splnuje presne to jsem potreboval vcetne kopirovani hesla do schranky. :) Ted jeste vyresit jak prez nejake jednoduche Gui TK/PyQT mu predat passphrase. V man strankach jsem k tomu nenasel prislusny parametr.
-
Pozri man zenity. Pokial viem byva stabdardne predinslalovane skoro vsade. zenity --password ti na stdout vrati cokolvek zadas do toho dialogoveho okna, tak by si to snad mohol nejak cez pipe dostat do tvojho skriptu.
-
Tak jsem to zkousel a je to krasne jednoduche, blbuproste, bezpecne ... ale poo ...ma ..leeeee. Na starsim Core i5 mi to za-/desifrovani zabere kolem 2 sekund cimz se to nehodi pro zamyslene pouziti.
Je to pomalé kvůli 100000 cyklům PBKDF2. Zpomalí to obdobně hádání hesla hrubou silou - proto se to takto používá. Jestli zadáváš hesla častěji než jednou za 2 sekundy (!?), tak se dá snížit počet cyklů: třeba na 10000 nastavením LATEST=1 (simplecrypt/__init__.py).
-
Vsem moc dekuji za rady, pass jsem doted neznal a splnuje presne to jsem potreboval vcetne kopirovani hesla do schranky. :) Ted jeste vyresit jak prez nejake jednoduche Gui TK/PyQT mu predat passphrase. V man strankach jsem k tomu nenasel prislusny parametr.
Hledej dál, určitě to jde, neb mi to tak funguje - používám pass a pokud nějaký program chce heslo nebo o heslo požádám sám (na to používám dmenu), vyskočí na mě okno (GTK), které se mě zeptá na heslo. Klíčová slova budou patrně gpg-agent, pinentry, ale už si napamatuju, co je potřeba kde nastavit.