Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Vít Šesták (v6ak)

Stran: 1 ... 18 19 [20] 21 22 ... 32
286
Samozřejmě, že bez rootu není jiná možnost, než neustále spuštěná aplikace (žeroucí baterii)

Zajímalo by mě, kde se bere ten mýtus, že spuštěná aplikace automaticky žere baterii. Spuštěná aplikace žere RAM, aspoň trošku. Pokud ale nemá co dělat a je dobře napsaná, baterii žrát nebude. Nemá totiž důvod něco dělat a může spát.

Ano, při posílání dat bude potřebovat něco trochu času CPU, a i tedy energie. Asi toho bude řádově méně než na následnou bezdrátovou komunikaci. A pokud některé požadavky zakáže, může i něco ušetřit.

Nevýhodu řešení přes pseudoVPN vidím jinde – když jsem to zkoušel, rozbíjelo mi to hotspot. Autor aplikace vysvětloval, že je to known issue a že to nejde jinak. Nezkoumal jsem to, možná to jen jinak neuměl autor té aplikace, možná to už dnes není problém. Tak jako tak, pokud chcete telefon používat jako hotspot, doporučuju u aplikací používajících VPN ověřit, jak bude hotspot fungovat.

287
Je možné programovat v čemkoli, co

1. Přeložíte do příslušného bytecode. To odpovídá bytecode z Javy 1.3 (přesněji bytecode verze 47.0), plus je nutné splnit další specifické požadavky (nepoužití instrukcí JSR a RET + StackMap), které zjednodušují práci JVM (teda vlastně KVM). Tyto další požadavky lze ale splnit celkem snadno – běžně se generuje bytecode nesplňující tyto požadavky, a následně se nástrojem preverify upravuje, aby je splňoval.
2. Použije správnou standardní knihovnu (MIDP+CLDC).

Teoreticky lze použít i novější verzi jazyka Java a následně nástroji jako Retrotranslator a případně snad k tomu i Retrolambda to přeložit do 1.3. To ale prakticky nemusí být až takový přínos – stejně potřebujete použít standardní knihovnu pro MIDP+CLDC, která například v kolekcích určitě nepoužívá generika.

Použití jiných jazyků než Java tak teoreticky možné je, s trochou snahy dokonce i pokud generují novější bytecode. V praxi ale můžete snadno narazit:

* Kompilátor automaticky použije třídy/metody, které nemá v MIDP+CLDC k dispozici. To se dost možná stane u dynamických jazyků jako Groovy nebo Clojure, protože nemáte k dispozici reflexi.
* Jazyk vyžaduje dodatečnou standardní knihovnu, která nemusí být plně kompatibilní.
* Formálně se dostanete ke kódu, který splňuje standardy, ale kvůli kompilátoru generujícímu obrovský kód (zkusil jsem si disassemblovat Hello World v Groovy++) nebo standardní knihovně dostanete JAR v řádu jednotek nebo desítek MiB. Je otázkou, jak si s tím poradí který telefon.
* Nebo se můžete dostat k funkčnímu, ale pomalému kódu. I když, to spíš nebude fungovat vůbec, protože to shoří na reflexi.

Částečně zde může pomoci ProGuard, který umí mimo jiné prořezat nepotřebný kód, ale taky nezvládne všechno. V praxi se IMHO snadno můžete dostat do situace, kdy u jednoduché aplikace strávíte více času laděním buildovacího procesu, než kolik ušetříte použitím příjemnějšího jazyka.

Jediný jiný jazyk, o kterém vím, že by teoreticky měl být tady celkem použitelný, je Mirah, který se snaží být staticky typovaným Ruby pro JVM. Nemá vlastní standardní knihovnu a má se kompilovat prý celkem přímočaře. Moc se nevyvíjí, ale na to se u programování v J2ME asi moc nehraje…

Nemůžete ale použít nativní kód ani nativní pointerovou aritmetiku. Cčko je asi prakticky mimo hru. I kdybychom měli kompilátor C do class souborů, jsou tu praktické problémy. Co s pointerovou aritmetikou? Ano, dá se udělat jedno velké pole, v rámci kterého simulujete pointerovou aritmetiku, něco podobného AFAIR dělá pro JS nástroj Emscripten. Tím ale ztratíte výkon (narozdíl od JS tu pro to není speciální podpora v JVM) a zkomplikujete interoperabilitu se standardní knihovnou, kterou potřebujete použít na UI apod. Pro aplikace psané na zelené louce to tedy nemá moc smysl. Nebo je možné C (nebo spíše C++) trošku uzpůsobit podmínkám a používat Javové třídy jako java.lang.String (namíšto std::string nebo char*). Pak ale celkem nevyhnutelně skončíte u jazyka prakticky dost podobného Javě, protože Java staví na Cčkové syntaxi. S trochou nadsázky tento jazyk C++4J může mít transpiler do Javy napsaný v Bashi pomocí sedu.

288
Hardware / Re:Náhrada SD karty v Raspberry pi?
« kdy: 12. 06. 2019, 20:34:46 »
Ten brown-out by mě zajímal. U první generace, kde jsem nedávno zjistil, že jsem to roky krmil cca 4.75V (blbej kabel), a nijak si to nestěžovalo, bych brown-out očekával. Druhá generace ale má nějaké měření podpětí, tam bych čekal, že si to brown-out pohlídá. Oficiální zmínku o ochraně před brown-outem jsem nenašel, jen https://www.raspberrypi.org/forums/viewtopic.php?p=711323&sid=fc637d52379429ecf016770461692f14#p711323 .

289
Hardware / Re:Náhrada SD karty v Raspberry pi?
« kdy: 11. 06. 2019, 14:36:00 »
Otázka taky je, jaké microSD karty zvolíme:

* Samsung Pro jsou sice dražší, ale slibují vydržet. Snad i desetkrát, tuším.
* A1 nebo A2 by mohly mít inteligentnější řadiče, ale je to spekulace.

Zatím jedu na nějaké řadové class 10 a dokud to pojede, asi nemám důvod měnit.

290
Hardware / Re:Náhrada SD karty v Raspberry pi?
« kdy: 11. 06. 2019, 13:21:53 »
MicroSD se opotřebovává hlavně zápisy. Pokud data budete zapisovat primárně mimo MicroSD, klidně vydrží spoustu let.

Druhá věc je, která data potřebujete jak moc chránit. Systém lze nainstalovat znovu (můžete si usnadnit třeba pomocí Ansible).

Třetí věc je, jestli je RAID vhodné řešení – jde-li o stejné flashky stejné série i stejného stáří, selhání budou korelovat…

291
Hardware / Re:Intel nebo AMD?
« kdy: 11. 06. 2019, 13:15:52 »
Ano, Intel může zbankrotovat jako Nokia… která ovšem nezbankrotovala. Nějakou dobu byl Intel nahoře a AMD dole, ale AMD to přežilo. Pokud se misky vah obrátí, je důvod, proč by to Intel neměl přežít?

Nejvýkonnější CPU mě nechávají chladným. Mě zajímá, kdo nabídne rozumně výkonný CPU+GPU za rozumnou cenu s rozumnou podporou virtualizace, nízkou spotřebou, dobrou podporou driverů na Linuxu a co nejméně bugy typu Spectre/Meltdown/whatever. Tady je AMD od Ryzenu prý už celkem konkurenceschopné, z hlediska bugů je na tom asi o něco lépe. Můj příští notebook může mít procesor od AMD, ale ještě se uvidí.

292
To, že stejnou zprávu zašifrujete pokaždé jinak, je běžný požadavek, a až na speciality jako AES-SIV (které se explicitně snaží být deterministické) je to dnes v moderní kryptografii zajištěno snad všude, protože máte nějakou nonce, o kterou se algoritmus opře. Nedělá se to jen kvůli tomu, aby útočník nedovedl detekovat dvě identické zprávy, ale i aby nedovedl detekovat dvě podobné zprávy (stejný prefix, stejný suffix, …), případně i kvůli dalším útokům (xor attack na streamovou šifru). Podmínkou je samozřejmě unikátní nonce* a nesmíme použít nějakou legacy věc jako ECB.

*) Jedna z mnoha nástrah pro začátečníky: Chce to po mě nějaký nonce, co já vím, co to je? Hodím tam pár bajtů, co my přišly pod ruku. Jé, ono to nějak šifruje, to asi bude OK. Jenže není, takováto věc může útočníkovi odkrýt zajímavé informace.


293
Vývoj / Re:SW pro náhradu kódu
« kdy: 02. 06. 2019, 08:35:00 »
Bez dalšího upřesnění se asi nedá napsat o moc víc, než co napsal Filip Jirsák. Nástroje pro refaktoring je kategorie nástrojů, které se cca hodí u refaktoringu, ale mohou se hodit i jindy – třeba v případě přidání parametru. Mám pocit, že do nástrojů pro refaktoring se háže skoro všechno, co v principu může mít globální dopad na kód.

V případě nástrojů od JetBrains souhlasím, že patří ke špičce. Nicméně Community edition vydávají nejspíš podle toho, kde mají konkurenci. Pokud budete chtít i práci se SQL, nejspíš budete potřebovat ultimate edition. Je na Vás, jestli Vám to za ty peníze ušetří dostatek práce. V případě jednorázových záležitostí se může vyplatit měsíční předplatné. Ale pokud to za ten měsíc ušetří aspoň tak hodinu nebo dvě (podle Vaší hodinovky a podle konkrétního produktu), pak se to začíná vyplácet. A pro nekomerční použití (opensource, studenti, …) za určitých podmínek jsou zdarma.

294
Teoreticky u asynchronní komunikace bychom PFS mohli dosáhnout pomocí nějakých krátkodobějších klíčů. I když, nevím, jestli bych tomu říkal PFS. A praktické využití je s otazníkem, můžeme být nuceni ten klíč například uložit na disk. Nebo jej uložíme do RAM a v případě restartu budeme po protistraně chtít zprávu poslat znovu, což ale otevírá prostor pro další útoky.

> PFC

Co je PFC? Myslel jsem si, že jde o překlep k „PFS“, ale vidím to tu opakovaně…

 > A taky jedno z potenciálních míst útoku, když se útočníkovi podaří některé nabízené algoritmy z komunikace odstranit a donutí tak obě strany, aby se dohodly na nějaké slabé šifře, kterou umí útočník zlomit.

Určitě je dobré slabé ciphersuites pokazazovat, ale mohou znamenat menší riziko, než jak to může vypadat na první pohled. Aby se použila nějaká slabá šifra (přesněji ciphersuite), musí (aspoň při správně implementaci TLS) současně:

1. Klient tuto ciphersuite podporovat (a tedy poslat v seznamu podporovaných ciphersuites client hello).
2. Server tuto šifru podporovat.
3. Server tuto šifru musí vybrat, tedy ji musí upřednostnit před všemi ostatními cuphersuites poslanými prohlížečem.

Nabízí se tu ještě možnost, jak toto obejít. Útočník pozmění komunikaci (nejspíš zúží seznam podporovaných ciphersuites v client hello) a nechá klienta se serverem vyjednat slabší ciphersuite. To by ale mělo být odhaleno, pokud si dobře pamatuju, v závěru handshake při zprávě finished. Takže jediná šance, jak by mohl útočník provést downgrade (bez zneužití implementačních chyb a při podpoře a preferenci lepších ciphersuites) je udělat zásadní průlom již při handshake. To se teoreticky může stát, ale při pohledu na historické zranitelnosti, uspějete možná tak u export-grade ciphersuites.

Pokud je tedy podporována dostatečně velká škála moderních ciphersuites, pak nějaká archaická nemusí být s trochou štěstí rizikem. Tím nepopírám, že je best practice to vypnout, pokud to jde.

> Takže dnes se https používá 3 algoritmy:

Kromě podpisových algoritmů certifikátu (kterých se mimochodem může použít i více při jednom spojení), algoritmu pro výměnu klíčů a algoritmu pro samotné šifrování tu je ještě:

* Typicky mode of operation (pokud to má u dané šifry smysl).
* Autentizační algoritmus. Pomocí něj lze detekovat, že se někdo snaží komunikaci pozměnit. Když budu vědět, že posíláte šifrovaně příkaz k platbě, mám za určitých podmínek určité možnosti to různě upravit – změnit třeba částku nebo příjemce. Tomu ale brání právě autentizace (MAC). MAC je jako digitální podpis, ale symetrický.  Někdy je autentizace již součástí mode of operation, což je například u AES-GCM a tuším obecně u všech ciphersuites v TLS 1.3.
* Pseudorandom function – nějaká hashovací funkce. Nechci teď hledat, kde se přesně používá, ani sem psát nějaké tušení.
* A to je snad všechno (lovím to z hlavy).

295
Vývoj / Re:Python bytearray to string
« kdy: 23. 04. 2019, 17:40:38 »
Já bych radil se vyvarovat tomuto přepisování proměnných. Samozřejmě, řádek reading = reading.decode("utf-8") bude fungovat, ale znesnadňuje to čtení – najednou v té proměnné mám jinou hodnotu, dokonce i jiný typ. Radši bych vytvořil novou proměnnou a napsal něco jako reading = reading_bytes.decode("utf-8").

(Nechávám stranou, jestli „reading“ je vhodný název proměnné.)

296
Software / Re:Je Whonix zcela anonymní a bezpečný systém?
« kdy: 12. 03. 2019, 22:23:17 »
Zcela bezpečný – ne, i Whonixu a virtualizačního systému se týkají různé zranitelnosti.

Má Whonix nějaký přínos? Ano, s jeho architekturou mohou tyto zranitelnosti mít nižší dopad. Zvlášť na QubesOS při použití DisposableVM útočník nejspíš pwnuje jen aktuální relaci a ne celý počítač.

297
Hardware / Re:Tip na ergonomickou klávesnici
« kdy: 02. 03. 2019, 09:28:38 »
Může být. Ale i tak to asi používáte víc než běžný franta.

298
Hardware / Re:Tip na ergonomickou klávesnici
« kdy: 27. 02. 2019, 20:38:35 »
Čistě subjektivně: No „často“ je relativní a IMHO je to spíše otázka statistiky. Programátoři častěji používají různé klávesové zkratky, zatímco běžní frantové uživatelé spíše vzácně. Součástí těch zkratek je nezřídkakdy i F<n>. Ostatně to asi bude i ten důvod, proč výrobci mnoha notebooků řadě funkčních kláves dávají primárně jiný význam (franta rozumí, co jsou klávesy play/mute/next/previous, zatímco F1–F12 mu nic neřeknou) nebo je rovnou nahrazují touchbarem. Současně je to i důvod, proč si to programátoři přenastavují.

Asi by v tom textu šlo zobecnit „programátor“ na „power user“, protože přímo s programováním to až tak společného nemá.

299
Hardware / Re:Tip na ergonomickou klávesnici
« kdy: 26. 02. 2019, 20:47:17 »
Mám Ergodox, což je klávesnice, která asi nezapře určité kořeny v Maltronu. Bohužel je jen 2D. (Na druhou stranu, je přenosnější.) Mám tu fotku (od té doby ± stejné, akorát místo touchpadu jsem si pořídil trackball): https://photos.app.goo.gl/hdacZhR8CCFFcRnaA

Na notebooku taky trochu píšu a nedělá mi to moc problém. Akorát občas se přistihnu, jak třeba ctrl mačkám palcem…

Docela by mě ale zajímalo, jak Maltron docílil, že nepotřebuje výstupky na F a J. Já si naopak přidal i na I/5.

300
Zopakovat request – to není tak jednoduché. Nestačí zopakovat request, je potřeba začít znovu celou transakci. Některé requesty se mohou tvořit podle výsledků předchozích requestů, pak slepé opakování requestů nedává smysl…

Framework by to mohl zkusit zopakovat, pokud bude mít třeba callback, který udělá celou transakci. Takový callback by neměl mít side effecty* mimo tu databázi, jinak se mohou dít podivné věci, jako třeba několikrát odeslaný e-mail.

*) Je potřeba se na to dívat při rozumné úrovni abstrakce – možná třeba logování zde nemusíme brát jako side effect.

Stran: 1 ... 18 19 [20] 21 22 ... 32