Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Karlitos 27. 07. 2015, 17:10:35

Název: Šifrování pomocí hesla v Pythonu
Přispěvatel: 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:
Kód: [Vybrat]
#!/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
Název: Re:Jak jednoduse za-/odsifrovat text pomoci hesla v Pythonu
Přispěvatel: Shortpass 27. 07. 2015, 18:19:43
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" ;-)
Název: Re:Jak jednoduse za-/odsifrovat text pomoci hesla v Pythonu
Přispěvatel: Shortpass 27. 07. 2015, 18:26:36
A teď vážně: třeba takový https://pypi.python.org/pypi/simple-crypt vypadá (aspoň na první pohled) o dost líp...
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: Karlitos 27. 07. 2015, 23:24:35
Nadhera diky presne tohle sem hledal  :)
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: Jenda 28. 07. 2015, 02:40:23
Proč nemůžeš proboha použít něco hotového jako gpg nebo openssl?
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: Karlitos 28. 07. 2015, 08:40:47
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 :-)
Název: Re:Jak jednoduse za-/odsifrovat text pomoci hesla v Pythonu
Přispěvatel: Karlitos 28. 07. 2015, 09:50:51
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.
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: aaa158 28. 07. 2015, 10:50:26
Odporucam pass: http://fedoramagazine.org/using-pass-to-manage-your-passwords-on-fedora/
Jednoduche, bezpecne, v prikazovom riadku.
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: xxxx 28. 07. 2015, 10:59:46
a co pouzit proste passwordstore : http://www.passwordstore.org/
Název: Re:Jak jednoduse za-/odsifrovat text pomoci hesla v Pythonu
Přispěvatel: frk 28. 07. 2015, 11:25:00
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ě.
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: Karlitos 28. 07. 2015, 13:56:37
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.
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: czz 28. 07. 2015, 14:46:52
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.
Název: Re:Jak jednoduse za-/odsifrovat text pomoci hesla v Pythonu
Přispěvatel: Shortpass 28. 07. 2015, 17:25:13
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).
Název: Re:Šifrování pomocí hesla v Pythonu
Přispěvatel: T 28. 07. 2015, 18:12:06
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.