Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Došlo k úniku databáze s hesly uživatelů na jabbim.cz, jabbim.com, jabbim.pl, jabbim.sk, njs.netlab.cz, jabber.cz, jabster.pl a jabber.root.cz. Útočník pravděpodobně zneužil SQL injection chyby v skriptu pro hledání uživatelů, útok byl veden z Ruska. Hesla byla uložena v plaintextu.
Tiskni
Sdílej:
Co takhle ho zaroven ukladat zahashovany a posilat zasifrovany? to prece delaj vsichni ostatni. moc nechapu co mysli tim, ze to nejde delat zaroven.1) Není pravda, že to dělají všichni, naopak nedělá to prakticky nikdo. 2) Bezpečné uložení hesla a bezpečný přenos hesla nejdou úplně dobře dohromady. Heslo není dvojice asymetrických klíčů. Jak píše hanzz, tak to částečně řeší SCRAM, který je o něco odolnější než běžně implementované metody. 3) Další možnost je kombinace TLS a posílání v plaintextu, což je skutečně celkem rozšířené, ale to rozhodně není vzájemná autentizace heslem. Bezpečnost této metody je založená na kombinaci asymetrických klíčů a hesla, kdy se nejdříve autentizuje server klíčem, který ale klient nemusí mít jak ověřit, a teprve potom se autentizuje klient heslem s důvěrou, že ho neleakuje někomu cizímu.
Co z toho považuju za dostatečnou náhradu čehokoli, co závisí na plaintextu v databázi? Cokoli.SCRAM závisí na plaintextu v databázi? To jsou mi novinky… Proč tam máš tolik variant SCRAMu a ani jedna není ta nejlepší, tedy „SCRAM a vůbec nic v databázi“?
Co z toho považuju za dostatečnou náhradu čehokoli, co závisí na plaintextu v databázi?Na to jsem se neptal.
Ak budeme predpokladat, ze "the most secure authentication mechanisms" je nieco ine ako plain text, tak "the server needs to know the user password" nie je pravda (za predpokladu, ze sa tym mysli heslo v plain texte).Pokud mezi nejčastější bezpečné autentizační mechanismy řadíme vše, co zajišťuje autentizaci heslem bez použití dalších prostředků (jako TLS) a vytrubování hesla po síti, jaké mechanismy to budou? Bude alespoň jeden z nejběžnějších mechanismů něco ve stylu
send(nonce) && expect(hash(plain, nonce))
?
tak ze server bude mat ulozeny na serveri iba hash heslaAni to není zrovna přesný popis toho, co SCRAM dělá.
To je hlupost! Ide to cele implementovat cez SASL SCRAM-SHA, tak ze server bude mat ulozeny na serveri iba hash hesla. Priklad: Dovecot SASLJak se pak k tomu systému přihlásím přes web z běžného webového prohlížeče tak, aby se heslo neposílalo po síti?
Prijde mi, ze kdyz klient "just blindly clicking "OK" to warnings", tak je to jeho blbostPodle mě jsou na tomto názoru založené bezpečnostní mechanismy zcela mimo realitu.
zatimco kdyz ja mam ulozena hesla v nehashovane podobe, tak je to moje blbost.To je alibismus ;).
Nejsem si jisty, zda chapu SCRAM -- muze mi nekdo strucne vysvetlit ten algoritmus?Co do vlastností, je to takový hybrid mezi PLAIN a CRAM/DIGEST s dalšími příměsemi, který hashováním zajistí, že k prolomení nestačí odposlech komunikace, stejně jako nestačí ukradení databáze hesel. Není problém si najít specifikaci a pohrabat se v ní, před časem jsem to udělal, ale teď už si to ani zdaleka nepamatuju ;). Hlavně je potřeba od SCRAM nečekat zázraky, přihlašování heslem (tedy sérií znaků vybraných a zapamatovaných člověkem) má svá omezení.
Je to lepsi v tom, ze utocnik neziska primo hesla (napr do jinych sluzeb)+1
nicmene se porad se muze, kdyz uz si jednou precte databazi, prihlasovat na tento server jako nekdo jiny.To pokud vím neplatí, tedy nejen že v DB není plaintext heslo, ale není tam ani dostatek informací pro přihlášení.
Mimochodem, nevite, zda ma abclinuxu zahashovana helsa?Při registraci se posílají plaintextem. Výhodou registračních mechanismů postavených nad SCRAM je, že se můžeš vyhnout i tomu ;).
Nejsem si jisty, zda chapu SCRAM -- muze mi nekdo strucne vysvetlit ten algoritmus? (tedy jak tam letaji informace)Ok, skusim... Neviem, ci si to cele pamatam spravne, ked tak ma snad niekto opravi... Server ma v databazi ulozenu n-ticu: (uzivatel, hash-fcia, salt, pocet iteracii, hash), kde hash je vystup z PBKDF2 schemy pre hash-fciu, salt, pocet iteracii (to co je v databaze) a hesla pre uzivatela. 1. Klient posle serveru uzivatelske meno a nahodne vygenerovane cislo c1. 2. Server si potom vygeneruje nahodne cislo c2 a posle klientovi pre uzivatelske meno z databazy hash-fciu, salt a pocet iteracii pre PBKDF2 schemu spolocne s cislom c1 a c2. 3. Klient si potom zrata dlhy string s1, ktory vypadne z PBKDF2 schemy pre hash-fciu, salt, pocet iteracii (co dostane od serveru) a hesla (ktore vie len on). Potom si zrata string s2 podla HMAC schemy pouzitim hash-fcie, stringu s1 a cisel c1, c2. Potom si zrata string s3 ako hash hash-fcie zo stringu s1. Potom si zrata string s4 podla HMAC schemy pouzitim hash-fcie, stringu s3 a cisel c1 a c2. Potom si zrata xor stringov s4 a s2 a posle to serveru. 4. Server si potom zrata string ss2 podla HMAC schemy pouzitim hash-fcie, hashu z databazy a cisel c1 a c2. Teda ss2 by malo byt rovnake ako s2 u klienta. Potom si server zrata string ss3 ako vystup z hash-fcie zo stringu hash (co je z databazy). Potom si zrata string ss4 podla HMAC schemy zo stringu ss3 a cisel c1 a c2. Potom spravi xor stringu od klienta a stringu ss4 a porovna ci sa rovna stringu ss2.
Klient k prihlaeni nepotrebuje heslo na nic jineho nez spocteni s1, tedy aby se prihlasil, nepotrebuje heslo, staci mu s1.Podle toho popisu počítá ještě HMAC nad c1 a c2, které se generují pokaždé jiné.
Obcas se nestacim divit, jake veci jsou "zhave novinky", kdyz veci jako asymetricke sifrovani jsou uz tak stare...Vždyť je to teprve 40 let. Mnohem důležitější je akcelerace JavaScriptu a HTML5, bezpečnost nikdo nepotřebuje a může se řešit potom. A je toho víc…
Podle toho popisu počítá ještě HMAC nad c1 a c2, které se generují pokaždé jiné.Nechapu -- jediny vyskyt slova "heslo" v celem algoritmu je:
Klient si potom zrata dlhy string s1, ktory vypadne z PBKDF2 schemy pre hash-fciu, salt, pocet iteracii (co dostane od serveru) a hesla (ktore vie len on).A pri pocitani toho s1 se c1 ani c2 nepouzije. V kterem bode nemam pravdu? (1) nebo (2)?
Potom si zrata string s2 podla HMAC schemy pouzitim hash-fcie [na heslo], stringu s1 a cisel c1, c2.Specifikaci jsem ale nestudoval.
A pri pocitani toho s1 se c1 ani c2 nepouzije.Pravda.
V kterem bode nemam pravdu? (1) nebo (2)?V tom prvním, SaltedPassword (s1) se na serveru neukládá a server ho ani nikdy neuvidí. Zkusím udělat vlastní rozbor, ale upozorňuju, že na krypto jsem lama... Normalize(password) je to, čemu by se dalo říkat heslo (normalizace se týká unicode, nikoliv kryptografie). Pokud se klient bezpečně nejen přihlašuje, ale i registruje, server se ho nikdy nedozví, aby neměl informace potřebné pro přihlášení na cizí servery. V každém případě se na serveru neukládá. Generuje se z něj SaltedPassword (s1), který rovněž server nezná. Pomocí HMAC a různých statických řetězců se ze SaltedPassword vytvoří dvojice klíčů ServerKey a ClientKey. Tahle dvojice je stále ještě postačující k přihlášení. Aby je mohl klient zrekonstrujovat jen na základě hesla, musí kvůli němu mít server uloženou sůl a počet iterací a tyto dvě informace poskytne na požádání komukoli, kdo se pokusí přihlásit. Dále server musí mít uložený ServerKey, aby se měl čím autentizovat. ClientKey na serveru uložený není a tedy není na serveru uložený dostatek informací k přihlášení. Útočník, který získal databázi, tak má nově k dispozici pouze ServerKey, čímž pádem se nemůže vydávat za uživatele, ale samozřejmě se může vydávat za server. To jednak značí, že TLS certifikáty stále mají svůj smysl a taky že je po prozrazení databáze dobré všechny uživatele nechat obnovit heslo s novou solí a tím zneplatnit leaknutý ServerKey. Na serveru je namísto toho uložený StoredKey, což je jednoduchý hash z ClientKey. Ten postačuje k ověření klienta. Do ověření je ještě nutné zařadit nonce, z níž půlku určuje klient a půlku server, ale SCRAM toto řeší jednoduše tak, že sebere všechnu dosavadní komunikaci a říká jí AuthMessage. Ta už z principu obsahuje nonce a zároveň celou komunikaci podepisuje. Klient i server teď samozřejmě znají HMAC ze StoredKey/ServerKey a AuthMessage pod názvy ClientSignature/ServerSignature. Připomínám, že už zahrnují nonce. Server tak může lehce dokázat, že zná ServerKey prostým posláním ServerSignature*. Klient musí ClientSignature ještě XORovat ClientKey (vznikne ClientProof), čímž ho efektivně předá serveru, který ho úspěšně zahashuje na StoredKey a tudíž ověří. A tím je transakce ukončena. * Ve skutečnosti ještě musí počkat na klienta, protože AuthMessage obsahuje vedle první zprávy od klienta a první zprávy od serveru ještě část druhé zprávy klienta (vše kromě ClientProof).
ClientKey na serveru uložený není a tedy není na serveru uložený dostatek informací k přihlášení. Útočník, který získal databázi, tak má nově k dispozici pouze ServerKey, čímž pádem se nemůže vydávat za uživatele, ale samozřejmě se může vydávat za server. To jednak značí, že TLS certifikáty stále mají svůj smysl a taky že je po prozrazení databáze dobré všechny uživatele nechat obnovit heslo s novou solí a tím zneplatnit leaknutý ServerKey.Ještě jsem zapomněl napsat, že leaknutý StoredKey už umožňuje získání ClientKey při odposlechu, takže (pokud server neukládá heslo v plaintextu) není od věci čas od času je podle hesla přegenerovat s novou solí, kdyby se náhodou už někde válely.
X = H(heslo, "blabla")
(pro dokazani ze je to server) a Y = H(H(heslo, "jinebla"))
(pro overeni klienta). Klient pochopitelne zna heslo
, tedy i vse, co server.
nonce
.
H(X, nonce)
, aby klient vedel, ze je to server.
H(Y, nonce) xor H(heslo, "jinebla")
. Server z toho ziska samotne H(heslo, "jinebla")
, ktere si neuklada, ale overi, zda po aplikaci hashovaci fce dostane Y
.
heslo
mysli uz jednou zahashovane heslo se soli. Proc je tohle treba, mi jeste uplne jasne neni, kdyz se heslo
samotne nikde neposila, ale budiz.
A aby to bylo nejak jeste bezpecnejsi, tak se pod heslo mysli uz jednou zahashovane heslo se soli. Proc je tohle treba, mi jeste uplne jasne neni, kdyz se heslo samotne nikde neposila, ale budiz.Abys mohl používat stejné heslo na víc webech a nešlo to moc dobře crackovat?
Je to moc dlouhé, aby se mi tím chtělo probírat v tuhle hodinu, takže rovnou položím klíčovou otázku: pokud útočník nějakým způsobem získá kopii toho, co má uloženo server, bude mu to stačit k tomu, aby se úspěšně autentizoval vůči tomu serveru?Nikoliv.
A v tom případě mi uniká, co to přináší oproti variantě, kdy server bude znát rovnou heslo (vynechám-li případ uživatele, který používá stejné heslo na padesáti dalších webech).1) Vynechat případ uživatele se stejným heslem na více místech je podle mě chyba. 2) Odpověď je skryta v chybném neodbytném pocitu, za předpokladu, že nevíš něco, co my ostatní včetně autorů SCRAM nevíme.
Odpověď je skryta v chybném neodbytném pocitu, za předpokladu, že nevíš něco, co my ostatní včetně autorů SCRAM nevíme.
Tak jsem si to přečetl znovu a pořádně a pořád jsem nenašel, kde konkrétně je to místo, které není schopen zreprodukovat ten, kdo má kopii autentizačních informací ze serveru, ale nezná samotné heslo. Takže zkus raději napsat, kde konkrétně v tom algoritmu to místo je.
Vynechat případ uživatele se stejným heslem na více místech je podle mě chyba.
Já jsem ale jasně napsal, že tento konkrétní problém to řeší. Pro mne je to ale moc slabá útěcha.
Takže zkus raději napsat, kde konkrétně v tom algoritmu to místo je.Už se stalo. Konkrétně se jedná o rozdíl mezi ClientKey a StoredKey. Zatímco druhý má server uložený, první má server k dispozici jen v době přihlašování.
Tak jsem se nakonec radši podíval přímo do RFC 5802 a vypadá to, že celý ten popis v komentáři 27, o kterém jsme se celou dobu bavili, je nejen zmatený, ale hlavně nepřesný a zavádějící.
Tak, jak je to popsáno v RFC 5802, to opravdu funguje tak, že nestačí ani samotná data ze serveru ani samotný odposlech. Ale že bych měl z toho návrhu tak dobrý pocit jako třeba z Diffie-Hellmana, RSA nebo DSA, to říct nemůžu.
Tak, jak je to popsáno v RFC 5802, to opravdu funguje tak, že nestačí ani samotná data ze serveru ani samotný odposlech. Ale že bych měl z toho návrhu tak dobrý pocit jako třeba z Diffie-Hellmana, RSA nebo DSA, to říct nemůžu.Proto jsem pro jistotu už v několika komentářích psal, že od toho člověk nesmí chtít zázraky ;).
Safra, nekdo mi ukradl moje ultratajne heslo z netlabu... muj jedinecny string "heslo"...
Hmm, prečo práve plaintext? Chápem prečo nechcú hashe, ale ... malo by to nejaké výrazné nevýhody keby boli heslá šifrované? Pomocou SQL injection by sa útočník aspoň nedostal k privátnemu kľúču.
Je to velmi nepříjemné, omlouváme se za způsobené problémy. -> It is very annoying, we apologize for the inconvenience caused.
Chapu, ze neni easy zabezpecit heslo od klienta az po server, ale ukladat hesla na serveru v plaintextu je fakt silene.Spíše než šílené je to všeobecný standard, který má vedle nevýhod i své nesporné výhody.
své nesporné výhody.Teda nenapadá ma ani jedna, ale rád sa nechám poučiť.
Teda nenapadá ma ani jedna, ale rád sa nechám poučiť.Dočkáš se...
Chapu, ze neni easy zabezpecit heslo od klienta az po server, ale ukladat hesla na serveru v plaintextu je fakt silene.Je, ale co chceš dělat, když ani 40 let po vynálezu asymetrické kryptografie lepší způsoby skoro nikdo nepodporuje? Nepoužívat Internet?
A aké sú tie lepšie spôsoby?Používáš SSH klíče? Tak přesně to je lepší způsob. Můžeš dát svůj veřejný klíč kolika kompromitovaným serverům chceš a nic se nestane. Dokonce nejde provést ani MITM. Možná namítneš, že jsi roamující uživatel, který obchází internetové kavárny (a neřeší, že v nich může být backdoor) a chceš mít možnost službu použít i když přijdeš k cizímu počítači, kde svůj veřejný klíč nemáš. I pak je tu řešení -- dvojice klíčů jde vygenerovat z hesla, které se zadává lokálně - a tvé heslo opět neputuje na druhou stranu.
To mám ísť za správcom serveru a vypýtať si jeho verejný kľúč, aby som vedel, že mám ten správny? (ak si teda budem môcť nejako overiť, že mi kľúč poskytuje správna osoba)Všimni si, že autentizaci protistrany jsem vůbec neřešil.
ale ukladat hesla na serveru v plaintextu je fakt silene.
Když hashovat můžeš, tak je to lepší… ale na druhou stranu: jako uživatel službě stejně nemůžeš věřit, takže fakt šílené je spíš použít jedno heslo u více poskytovatelů.
To bys musel mít protokol/klienta, u kterého máš jistotu, že nikdy (ani při registraci) nepošle čitelné heslo, vždy bude zahashované a posolené (navíc pro každého poskytovatele jinak, aby hash z jedné DB nešlo použít u jiné služby), ale tím se dostáváš zase na začátek: pro přihlášení ke službě stačí znát údaj z DB (v tomto případě hash, ne čitelné heslo) a je to stejné, jako mít v DB čitelná hesla a pro každou službu používat jiné (akorát s tou výhodou, že si uživatel pamatuje jen jedno heslo). Takže by to vypadalo nějak takhle:
hash(heslo, sůl(uživatelskéJméno, doménaPoskytovatele, službaPoskytovatele))
např.
hash("heslo123", sůl("radix", "jabber.cz", "xmpp"))
a nad tím jde udělat další kolečko hashování/solení, aby se tento hash (v zásadě heslo) neposílal v čitelné podobě. V lepším případě přidat vzájemné ověření, kde i server prokazuje svoji totožnost tím, že toto sdílené tajemství zná. Ale tak jako tak potřebuješ chránit hlavně přenášená data, obsah komunikace, ne jen nějaké heslo, takže to stejně musí být zabalené do protokolu typu SSL/TLS/SSH.
A to SQL injection - to bude zase nejaka splatlanina v PHP, co?
Bezpečně to jde udělat i v tom PHP. Stačí využít možností relační databáze – vlastník schématu a tabulek je jiný uživatel, než ten, kterým přistupuje k DB webový server nebo jiná aplikace – tento uživatel má GRANTovaná jen omezená práva, nemůže číst tabulku/sloupec s hesly, ale může jen volat DB funkci, která heslo ověří (vrací booleovskou hodnotu, případně to může být posloupnost funkcí, pokud jde o nějakou složitější autentizační metodu).
BTW: ne že bych chtěl PHP obhajovat – Java je samozřejmě lepší – ale i to PHP umělo (už v době, kdy jsem s ním začínal) PDO a parametrizované dotazy.
+1
Sám jsem k tomu včera cosi ublognul.
ne čitelné heslo
Jak jsem pochopil, tak jediné o co jim jde je aby v db nebylo to jejich heslo. Aby prostě nebylo vidět. Jim je ve skutečnosti úplně jedno, zda to, co se uloží do db, bude hodnota[i] = (heslo[i] + 128) mod 256 (kdybych se v té konguenci náhodou spletl, tak mě omluvte, prostě klasická rotace). Naopak budou úplně happy, protože v té db neuvidí to svoje "nbusr123".
A to SQL injection
Tohle je věc, který by naopak rozčílila mě. Prepared statements se používaly před více než 10 lety. Nevím, jak je stará služba Jabbim a je to celkem jedno, ale v době jejího vzniku se o sql injection a prepared statement určitě vědělo. A pokud ne, tak se to mělo opravit hned. Ne až po x letech. Tohle by mě na celé věci štvalo xkrát víc (kdybych tam měl účet), než nějaký plain v db.
Prepared statements se používaly před více než 10 lety.
Spíš bych řekl "byly k dispozici". Problém je právě v tom, že se moc nepoužívaly - a spousta lidí je nepoužívá dodnes. Jen pro ilustraci: zkusil jsem (teď) zadat do Googlu "php mysql tutorial" a projít prvních pět. Jen jeden necpal hodnoty proměnných přímo do insert query, ale ukázal prepared statements. A i ten se k tomu dostal až poté, co o příklad dříve vyrobil insert query včetně vkládaných hodnot (což ale byly konstanty, ne hodnoty proměnných).
Sám jsem k tomu včera cosi ublognul.Zacnes tim, ze si nadefinujes, co je to heslo. Ovsem ta tva definice vubec neodpovida realite, tzn. jak se ve skutecnosti hesla pouzivaji. Neplet si to s tim, jak si myslis, ze by se hesla mela pouzivat. Ano, MD5 i SHA1 jsou slabe, ale co to vlastne znamena? To, ze je v dohlednem case realisticke najit kolizi, tj. takovy plaintext, ktery generuje dany hash. Tim ale nedostanes puvodni heslo, jen (z hlediska hashovaci funkce) ekvivalentni plaintext. Pokud pouzijes sul, tak je i MD5 pro ucely hesla bezpecne v tom smyslu, ze dump z databaze ti nepomuze ke zneuziti uctu na jinych sluzbach - ty sice najdes kolize hesla se soli, ale to je ti na jinych webech s jinou soli a jinou hashovaci funkci uplne na nic. Jinak vytvaret si vlastni sifrovaci schemata pouzitim primitiv jako SHA1/MD5 a soli je zcestne a uplne zbytecne, standardy jako PKCS#5 tu nejsou pro nic za nic.
Jak jsem pochopil, tak jediné o co jim jde je aby v db nebylo to jejich heslo. Aby prostě nebylo vidět. Jim je ve skutečnosti úplně jedno, zda to, co se uloží do db, bude hodnota[i] = (heslo[i] + 128) mod 256 (kdybych se v té konguenci náhodou spletl, tak mě omluvte, prostě klasická rotace). Naopak budou úplně happy, protože v té db neuvidí to svoje "nbusr123".To jsi teda pochopil spatne.
Ovsem ta tva definice vubec neodpovida realite, tzn. jak se ve skutecnosti hesla pouzivaji. Neplet si to s tim, jak si myslis, ze by se hesla mela pouzivat.
Asi jsem se v tom odstavci o ironii snažil málo. Vím, jak se hesla používají ve skutečnosti (což už musí být jasné už jen z toho jakou práci dělám) a přesně proto jsem to napsal. Myslím, že z dalších odstavců je to celkem jasné.
Tim ale nedostanes puvodni heslo,
No to je ti ale jedno, protože pokud tuto kolizi použiješ na jiné služby, se stejnou hash fcí, tak jsi tam.
Pokud pouzijes sul, tak je i MD5 pro ucely hesla bezpecne v tom smyslu, ze dump z databaze ti nepomuze ke zneuziti uctu na jinych sluzbach - ty sice najdes kolize hesla se soli, ale to je ti na jinych webech s jinou soli a jinou hashovaci funkci uplne na nic. Jinak vytvaret si vlastni sifrovaci schemata pouzitim primitiv jako SHA1/MD5 a soli je zcestne a uplne zbytecne, standardy jako PKCS#5 tu nejsou pro nic za nic.
Netuším, kam až jsi ten článek četl, ale asi ne celý, protože jinak by jsi z tohoto ten závěr učinit nemohl. Na mnoha místech uvádím lepší metody, až po tu (podle mě) nejlepší a současně nejpohodlnější, a to využití asymetrické kryptografie.
To jsi teda pochopil spatne.
Opravdu? Můžeš mi prosím zde na abclinuxu, nebo vedle na rootu ukázat alepoň jeden komentář od lidí, kterým tak hrozně vadí plain hesla, který naznačuje něco víc než jen rot128? Já jsem nenašel ani jediný. To je také důvod toho ublognutí. Protože tato diskuse není první (a nebude ani poslední) a každá jede podle stejného schématu, ve kterém se ukáže, že těm ukřičeným vadí jen to, že to heslo je někde vidět a ve skutečnosti vůbec nechtějí řešit nic dalšího. Jen to heslo zneprůhlednit. Jakkoliv.
Hadej co se stane, kdyz v logice pouzijes mylny predpoklad. Cela argumentace v blogpostu je zalozena na necem, co neni pravda. Dalo by se to oznacit i za pokus o argumentacni klam.Ovsem ta tva definice vubec neodpovida realite, tzn. jak se ve skutecnosti hesla pouzivaji. Neplet si to s tim, jak si myslis, ze by se hesla mela pouzivat.Asi jsem se v tom odstavci o ironii snažil málo. Vím, jak se hesla používají ve skutečnosti (což už musí být jasné už jen z toho jakou práci dělám) a přesně proto jsem to napsal. Myslím, že z dalších odstavců je to celkem jasné.
Ha, uz timto trivialnim pouzitim hashovaci funkce jsme snizili mnozinu potencialne zneuzitelnych sluzeb jen na ty pouzivajici stejnou hashovaci funkci bez zadne soli nebo jine transformace. Pridej nahodnou sul a kolizni plaintext neni zneuzitelny vubec.Tim ale nedostanes puvodni heslo,No to je ti ale jedno, protože pokud tuto kolizi použiješ na jiné služby, se stejnou hash fcí, tak jsi tam.
Nevim, na co narazis.Pokud pouzijes sul, tak je i MD5 pro ucely hesla bezpecne v tom smyslu, ze dump z databaze ti nepomuze ke zneuziti uctu na jinych sluzbach - ty sice najdes kolize hesla se soli, ale to je ti na jinych webech s jinou soli a jinou hashovaci funkci uplne na nic. Jinak vytvaret si vlastni sifrovaci schemata pouzitim primitiv jako SHA1/MD5 a soli je zcestne a uplne zbytecne, standardy jako PKCS#5 tu nejsou pro nic za nic.Netuším, kam až jsi ten článek četl, ale asi ne celý, protože jinak by jsi z tohoto ten závěr učinit nemohl.
Tem "stezovacum" jde o to, aby si nikdo nemohl precist jejich plain text heslo. Rot128 tomu nepomuze, protoze kdyz udelas jeste jednou rot128, mas zpet plain text. Pri spravnem pouziti hashe nic takoveho nehrozi. Nemam chut hledat nejake dukazy na neco, co je ocividne zrejme asi vsem krome tebe.To jsi teda pochopil spatne.Opravdu? Můžeš mi prosím zde na abclinuxu, nebo vedle na rootu ukázat alepoň jeden komentář od lidí, kterým tak hrozně vadí plain hesla, který naznačuje něco víc než jen rot128? Já jsem nenašel ani jediný. To je také důvod toho ublognutí. Protože tato diskuse není první (a nebude ani poslední) a každá jede podle stejného schématu, ve kterém se ukáže, že těm ukřičeným vadí jen to, že to heslo je někde vidět a ve skutečnosti vůbec nechtějí řešit nic dalšího. Jen to heslo zneprůhlednit. Jakkoliv.
Hadej co se stane, kdyz v logice pouzijes mylny predpoklad. Cela argumentace v blogpostu je zalozena na necem, co neni pravda. Dalo by se to oznacit i za pokus o argumentacni klam.
Nechápu smysl této věty v daném kontextu. Lidé, kteří mě znají a můj blog čtou, moc dobře vědí na jaké úrovni já operuju. Stejně tak dobře vědí, že když napíšu, že heslo je unikátní per službu a má entropii 112b, tak moc dobře vědí, že já vím, jaká je realita. To ale nic nemění na tom, že heslo je skutečně z definice (NISTu) řetězec s 112b entropie. Fakt mi to připadá jako vysvětlovat vtip, veškerá pointa se tím ztratí. Zápisek v blogu je z definice poměrně úzce spojen s osobou autora a pro náhodného kolemjdoucího, který se nezajímá o kontext, může být nepochopitelný. Ale náhodný kolemjdoucí opravdu není cílová skupina mého osobního webu (pakliže si ten kontext ani nechce doplnit).
Pridej nahodnou sul a kolizni plaintext neni zneuzitelny vubec.
+ příslušně změň komunikační protokol, slušelo by se dodat.
BTW, duvod nasrani lidi je velmi podobny tomu SQL injection:
- hashovani hesel je velmi snadne na implementaci
- unik plaintext hesel je pruser pro velkou cast uzivatelu
Ad 1) Nemusí být vždy za všech okolností. Může se změnit protokol (podporují jej klienti?) a také se tím omezí použítí dalších služeb (jabber například může mít transporty na jiné služby a k těmto službám si musí pamatovat hesla -- omezíte tyto služby nebo si ponecháte hesla? Obojí současně nelze.).
Ad 2) Nijak nesouvisí s hashování hesel. Únik plaintext hesel může klidně zařídit samotný provozovatel služby. Jak jsem psal v blogu. Případně i útočník, co si do té serverové aplikace vpraví svůj sniffer.
Ad 2) Uživatelé toto mají ve svých rukou, stačí používat unikátní hesla per službu. Já vím, je to těžké, nejde si to zapamatovat apod. Ale pokud chtějí používat hesla a současně se bojí o jejich bezpečnost, žádná jiná varianta není.
Bavime se tu o persistenci hesel, zmena interface neni potreba:Pridej nahodnou sul a kolizni plaintext neni zneuzitelny vubec.+ příslušně změň komunikační protokol, slušelo by se dodat.
V pripade externich sluzeb je to problematicke. Ale hesla uctu jabbim.cz a jednotlivych transportu jsou prece odlisne veci. Hesla k transportum asi musi byt v plaintextu, hesla k samotnemu uctu jabbim.cz muzeme zahashovat.BTW, duvod nasrani lidi je velmi podobny tomu SQL injection:
- hashovani hesel je velmi snadne na implementaci
- unik plaintext hesel je pruser pro velkou cast uzivatelu
Ad 1) Nemusí být vždy za všech okolností. Může se změnit protokol (podporují jej klienti?) a také se tím omezí použítí dalších služeb (jabber například může mít transporty na jiné služby a k těmto službám si musí pamatovat hesla -- omezíte tyto služby nebo si ponecháte hesla? Obojí současně nelze.).
Jaktoze to nesouvisi s hashovanim hesel? Pokud by jabbim.cz hesla hashoval, plain text hesla by neunikla. Jabbim.cz nehashoval, hesla unikla.Ad 2) Nijak nesouvisí s hashování hesel. Únik plaintext hesel může klidně zařídit samotný provozovatel služby. Jak jsem psal v blogu. Případně i útočník, co si do té serverové aplikace vpraví svůj sniffer.
Predkladas tu falesnou dichotomii - bud mas absolutni bezpecnost nebo je to vlastne jedno. V realu se uzivatele spokoji s urcitou mirou bezpecnosti v kombinaci s urcitou mirou pohodli - nejaky sweetspot.Ad 2) Uživatelé toto mají ve svých rukou, stačí používat unikátní hesla per službu. Já vím, je to těžké, nejde si to zapamatovat apod. Ale pokud chtějí používat hesla a současně se bojí o jejich bezpečnost, žádná jiná varianta není.
Hesla k transportum asi musi byt v plaintextu, hesla k samotnemu uctu jabbim.cz muzeme zahashovat.
Takže náhle hesla v plaintextu nevadí?
Varianta s hashem ma daleko do dokonalosti, ale odstranuje jeden (velmi dulezity) attack vector.
Takže se ví, že to může být uděláno lépe, ale prostě se to neudělá lépe?
Neni securita prave o tomto, minimalizovat mnozstvi potencialnich attack vectoru tak, jak to jen jde (jak je to prakticke)?
U mě ne. Mě je fakt jedno, zda někdo vymění zámek za o třídu lepší, když ten útočník do toho může vlézt dírou v plotě. Dokud jsou díry v plotě, tak nemá smysl tam dávat jakýkoliv zámek.
V realu se uzivatele spokoji s urcitou mirou bezpecnosti v kombinaci s urcitou mirou pohodli - nejaky sweetspot.
Většina křičících uživatelů by se spokojila s rot128. Tak to zavedeme a bude, ne? Je to lepší než nic. Ty útočníky, co nezají grupy to odradí. Je to lepší než nic, ne?
Vas bych za admina vazne nechtel. Na zbytek nema cenu reagovat ...Neni securita prave o tomto, minimalizovat mnozstvi potencialnich attack vectoru tak, jak to jen jde (jak je to prakticke)?U mě ne. Mě je fakt jedno, zda někdo vymění zámek za o třídu lepší, když ten útočník do toho může vlézt dírou v plotě. Dokud jsou díry v plotě, tak nemá smysl tam dávat jakýkoliv zámek.
Vas bych za admina vazne nechtel.
Já bych zase nechtěl mít za admina člověka, co neustále vyměňuje zámek a je naprosto slepý k tomu, že má ve zdi díry, ze tu zeď útočníci přelézají a podhrabávají.
To, ze je v dohlednem case realisticke najit kolizi, tj. takovy plaintext, ktery generuje dany hash.
To, co popisujete, je nalezení kolize k danému hashi. Zdá se mi krajně nepravděpodobné, že kdyby tohle někdo pro MD5 nebo SHA-1 uměl a veřejně se k tomu přiznal, taková zpráva by mi unikla.
Já si zase vzpomněl na děvku od linjabu .
Kdybych měl na jabbimu účet, tak by mi daleko víc vadilo, kdyby se někdo mohl dostat k datům na tom účtu.Pomocí těch náhodných znaků se můžeš přihlásit k tomu účtu a dostat se tak k datům. Apropo, vy máte na Jabber serveru nějaká data kromě seznamu kontaktů?
Pomocí těch náhodných znaků se můžeš přihlásit k tomu účtu a dostat se tak k datům.
No, to zajisté ano, ale všichni řeší únik hesel. Já bych řešil únik dat.
kdyby se tu pouzival nejaky hash misto plaintextu, tak by tihle lide byli uplne v pohodeNebyli, protože na tom serveru má útočník spuštěný sniffer, který heslo odchytne během předávání. Jen se o tom ještě veřejně neví.
H(heslo + jméno_domény)
a to poslal na druhou stranu jako heslo. Je zajímavé, že něco tak triviálního prohlížeče neumí.
Můžu se zeptat všech v této diskusi, kterým tak vadí, že někdo zná nějaké náhodné řetězce, proč jim to vadí?Kde beres jistotu, ze to jsou nahodne retezce?
V cem se projevuje, ze to Google zariznul? Ja mam vetsinu jabber kontaktu na gmailu a funguji.Asi ještě nepřešli na Hangouts.
mají povolenou autentizaci jen pomocí SCRAMTo je snad věc klienta, ne? Ty se SCRAMem snažíš chránit před serverem (resp. MITM) a najednou bys věřil seznamu autentizačních metod, který ti pošle ten stejný server/MITM, před kterým se snažíš chránit.
V tomhle případě jsem to bral z pohledu serveru, resp. administrátora, který nechce být za trotla na abclinuxu.cz, že uchovává hesla v plain-textu.Kdysi měl jeden nejmenovaný portál zvenku přístupný LDAP a přes něj mohl kdokoli číst hesla uživatelů v čistém tvaru
Vezmeme si par veci: 1) posilam heslo po nesifrovanem kanalu -> chyba uzivatele 2) posilam heslo po sifrovanem kanalu, ale v knihovne je problem -> chyba knihovny 3) ulozim heslo v nesifrovanem podobe a necham si jej ukrast -> moje chybaNapíšu takovýhle nesmysl -> chyba v matrixu.
1) posilam heslo po nesifrovanem kanalu -> chyba uzivateleTakže nemohu podporovat třeba mobilní J2ME klienty, co neumí SSL.
2) posilam heslo po sifrovanem kanalu, ale v knihovne je problem -> chyba knihovnyVybuchla mi jaderná elektrárna, protože spadly Windows 95, co to celé řídily -> chyba Microsoftu. No asi ne.
3) ulozim heslo v nesifrovanem podobe a necham si jej ukrast -> moje chybaUložím heslo v nešifrované podobě, aby se nemuselo v nešifrované podobě přenášet, a až přijde Heartbleed, tak jsem v suchu -> ???
PS: nejak jsem si nevsiml, ze by nekdo nadaval po chybe Heartbleed a pozadoval jiny typ autentizaceJá.
1) Samozrejme jako provozovatel jabber serveru muzu podporovat mobilni J2ME klienty, co neumi SSL a klidne si posilaji heslo jako plaintext. Ale pokud se uzivatele takhle prihlasuji a nekdo zjisti jejich heslo, je to pouze a jen jejich chyba.A právě proto je v XMPP možnost challenge-response autentizace. Díky tomu nemusíš mít SSL/TLS a přitom se tokenem, kterým se autorizuješ, nikdo jiný nepřihlásí.
2) Tady rozvedu i odpoved: samozrejme, ze v tomto pripade je to chyba ridiciho systemu. Koho asi jineho ? Pokud mel ridici system v popisu prace spravne ridit JE a ona kvuli jeho padu vybuchla, tak nevim kdo jiny by mel nest odpovednost.Podle mě je chyba administrátora nebo návrháře řídícího systému, že nechal kritickou aplikaci běžet na nestabilním operačním systému. Úplně stejně je chyba návrháře protokolu či administrátora systému, že nechal čitelné heslo posílat při každém přihlášení po síti, případně že ho nechal při každém přihlášení dostupné mizerné šifrovací knihovně.
3) Az prijde heartbleed, tak jsi mozna v suchu, nez ti nekdo slohne kompletni databazi s hesly v nezasifrovane podobe. A pokud provozujes takovou sluzbu, pak za to neses odpovednost ty, narozdil od pripadu chyby v knihovne SSL.Aha, takže když spustím Jabber server na Windows 95 a někdo mě vyhackuje (nebude to nejspíš trvat moc dlouho…), tak jsem z obliga, protože to není moje chyba.
PS: A jaky zpusob autentizace pozadujes ?Takový, při kterém server heslo vůbec nezná a ani se nepřenáší po drátě. Vynalezli ho před 40 lety a jmenuje se RSA.
Ta challenge-response autentizace by ale stejně tak dobře mohla být SCRAM, tudíž by to uspokojilo i lidi, kteří mají problém s plaintext hesly v databázi, že? "Legacy" klienti by prostě měli smůlu (případně pokud podporují alespoň StartTLS, mohli by, pokud to riziko přijmou, nebo se nějak zabezpečí proti podvržení certifikátu a slabým šifrám (což se dá udělat asi na úrovni SSL knihovny a úložiště certifikátů), posílat plaintext heslo a celý SCRAM provede server sám).1) Samozrejme jako provozovatel jabber serveru muzu podporovat mobilni J2ME klienty, co neumi SSL a klidne si posilaji heslo jako plaintext. Ale pokud se uzivatele takhle prihlasuji a nekdo zjisti jejich heslo, je to pouze a jen jejich chyba.A právě proto je v XMPP možnost challenge-response autentizace. Díky tomu nemusíš mít SSL/TLS a přitom se tokenem, kterým se autorizuješ, nikdo jiný nepřihlásí.
Ta challenge-response autentizace by ale stejně tak dobře mohla být SCRAM, tudíž by to uspokojilo i lidi, kteří mají problém s plaintext hesly v databázi, že?Ano, ale jak už jsem psal, nikdo to nebyl schopen nikam implementovat (nebo alespoň donedávna).