Čína se bojí zadních dvířek od Majkrosoftu. Proč se jich nebojí od Canonicalu? Obě jsou zahraniční firmy z kapitalistické ciziny... Jistě, MS neposkytuje zdrojové kódy, ale je někdo schopný je projet všechny u linuxu? A ksyž si budou něco dodělávat sami, co parazit zevnitř, který tam něco dostane?
Od kdy je Linux dílem firmy Canonical?
Lidí na to, aby prolézali zdrojáky, mají dost - hledání v tom, co udělal někdo jiný a případné úpravy, je typická práce pro Číňana - vymyslet něco z gruntu nového je pro ně problém, ale v tomto jsou velmi dobří.
Za chvíli stejně přicválá MS úderka pod jménem Lael a vysvětlí nám, že se zpráva nezakládá na pravdě, protože Čína neexistuje...
Dosaďte si za Ubuntu libovolné jiné distro. Navíc do open source není problém zanést backdoor. Stačí jeden anonym, který párkrát přispěje hodnotným kódem, a pak udělá drobnou "chybku".
Ad že se zpráva nezakládá na pravdě - minimálně titulek je zavádějící, protože se jedná jen o čínskou státní správu a vybrané státní podniky. K tomu přičtěte to co psal nějaký kolega tady:
http://www.root.cz/zpravicky/cina-kompletne-prejde-na-linux-do-roku-2020/519831/
Mohou si zdrojáky zkompilovat a zkontrolovat proti binárkám od MS. Budou se lišit jen digitálním podpisem, který u "domácí" kompilace pochopitelně chybí, což ale nijak nebrání srovnání souborů.
Předpokládám že vlády mají licenci pouze pro instalaci binárek od MS. Smlouvy jsem nečetl :)
Binárky se můžou lišit i jinak než digitálním podpisem, stačí aby bylo v kódu třeba __TIME__. Potom by musel nastoupit reverse engineering, jinak se nezjistí, jestli je to neškodná změna nebo backdoor. Navíc se to musím překládat kompilátorem od MS, který sám o sobě může generovat ve výsledném kódu backdoory, takže jsou potřeba i zdrojáky od kompilátoru... Pak taky musí MS dodávat zdrojáky/patch ke každé aktualizaci...
Proč by bylo v kódu makro __TIME__? To by se pak i MS lišily překlady stejné verze z různých časů.
Navíc i kdyby to makro v kódu bylo, je to string literal, a při srovnání jasně vidíte o co jde (zvlášť když máte PBD a DBG soubory).
Ad kompilátor - záleží na úrovni NDA, ale v principu není problém ho dostat.
Ad musí MS dodávat zdrojáky/patch ke každé aktualizaci - na to má MS webový portál.
Vobec si neviem predstavit kompilaciu Windows. Videl som kompilacie velkych projektov a to bola teda fuska. Koli efektivite sa tam programovalo v specialnom prekompilatore ktory sam vygeneroval ceckovy kod a az ten sa skompiloval. Samotny ceckovy kod bol gulas, nieco ako obfuskovana java. Bolo treba poznat pseudojazyk prekompilatora a vtedy sa dal citat kod. Dalej tam boli nastavenia prekompilatora podla ktoreho generoval kod, boli ich tony, nastavit ich vedeli piati ludia na svete. Predpokladam ze Microsoft to ma rovnako inak by sa jeho programatori zblaznili. Ked vidim ako kazdy tyzden pride jedno giga updatov na office tak neverim ze to programatori pisu v cecku.
Kód Windows je poměrně čistý a čitelný, alespoň pro lidi kteří píšou pro Win32. Jde o směsici C, C++ a C#.
MS provádí buildy s různou frekvencí podle produktu a fáze vývoje. V "hot phase" se zpravidla builduje každý den. Vývojáři nejprve kompilují a testují na svých strojích, a pokud je to OK, provedou check-in s případným řešením konfliktů. Za největší ostudu se považuje, když váš kód rozbije denní build. Svého času jste mohl dokonce vidět vývojáře, kteří nosili kozí rohy, dokud nerozbil denní build někdo jiný :)
Laeli, jeden takový detail. V rámci zvýšení bezpečnosti se doporučuje zapnout při kompilaci aplikace a knihoven jednu funkci linkeru, která funkce / metody v programu náhodně rozhází. Mělo by se tím zkomplikovat hackování stylem "na adrese 0xabcde123 přepiš.... a pak spusť kód od adresy 0x123456". Takže po kompilaci bude binárka úplně jiná!!! Takže ani SHA1, ani bin diff, ani disassembly bez kvanta ruční práce navíc nezajistí, že ten zdroják je stejný.
Tim chces rict, ze se tam randomizacedeje compiletime a tak jsou vsechny binarky z daneho buildu stejne randomizovane?
http://pocitace.tomasek.cz/debian-randomness/img/tcv80ipepkza7.jpg
Knihovnám se dá nastavit fixní base address pomocí option /BASE. Nicméně s ASLR to odpadá. Navíc /BASE se chová deterministicky, takže ze stejného zdrojáku vyleze vždy stejná binárka.
Pokud máte na mysli něco co opravdu vede při každém překladu stejného zdrojáku k různému výsledku, dejte sem víc informací.