Vadītājam par drošību, datu bāzēm un atvērto kodu

Oct 17 2012

Nesen es rakstīju augsta līmeņa valsts pārstāvim vēstuli par to, ka slēgtā koda vietā būtu jāizmanto atvērtā pirmkoda programmatūra. Šajā vēstulē es daudzkārt izmantoju "Microsoft", jo cilvēki pazīst to un daudzus tās produktus. Tomēr jūs varat aizstāt to ar jebkuru citu slēgtā pirmkoda programmu ražotāju (piemēram, Oracle, Apple, u.tml.), bet vēstules jēga būs tā pati.

Tā kā viens no paziņām palūdza man šīs vēstules kopiju, pieņemu, ka tā būtu noderīga arī citiem. Tāpēc te ir (nedaudz rediģēts 1) vēstules teksts.

Par atvērtā un slēgtā koda programmatūru

Labdien, ________!

Piedodiet par to, ka neatbildēju ātrāk, jo biju aizņemts ar ________ un uzrakstīt šādu vēstuli ir diezgan grūti.

Drošība

Jūs uztraucāties par to, vai atvērtā koda programma ir pietiekami droša, attiecībā pret slēgtā koda programmām.

Pirmkārt, pēc manām domām nav tādas lietas, kā droša sistēma, it sevišķi, ja tā ir pieslēgta internetam. Tam piekrīt vairums manu draugu un paziņu, un tam piekrīt visi, kas labi pārzina drošību. Ir sistēmas, kas ir drošākas par citām, bet tās nekad nav drošas.

Otrkārt, uzskatu, ka tas, cik programma ir "droša", nav atkarīgs no tā, vai to izstrādā slēpjot, vai atklājot tās pirmkodu. Komentāri par vai pret atvērto kodu parasti ir sekojoši:

  1. Pieejams kods ļauj uzlauzējiem atklāt drošības kļūdas un tās izmantot, kamēr slēpts kods no tā ir pasargāts,
  2. atvērtais kods ļauj daudziem pārbaudīt kodu, tāpēc kļūdas tiek izlabotas vēl pirms ļaundari spēj tās izmantot.

Abos šajos argumentos ir daļa taisnības un daļa maldu.

Ja pirmais punkts būtu patiess, tad Microsoft programmas būtu drošākās pasaulē, kas, pēc manām domām, tā nav. Jo tad Linux būtu pasaulē nedrošākā sistēma un Google, Ebay un citi to nevarētu izmantot.

Par otro punktu ir jāsaka, ka, no vienas puses, ir maz programmu, kuru kodu tik tiešām skata daudzi 2. Lielākā daļa atvērtā koda programmu lietotāju kodu neskatās, tāpēc otrais punkts atvērtā pirmkoda programmām parasti nav patiess. No otras puses, arī slēgtā koda programmām detalizētu koda pārbaudi veic ļoti reti.

Galvenais, kāpēc es uzskatu atvērtā pirmkoda programmas par "drošākām", ir tas, ka vienīgais veids, kā to panākt, ir regulāri vērot sistēmu žurnālu failus, lai saprastu, kas ar tām notiek, un tad, kad atklājas kādas ļaundarības, ĀTRI tās novērst.

Un tieši šajā jomā slēgtā koda kompānijas ir daudz vājākas, it sevišķi tur, kur sistēmai ir jāstrādā daudzus gadus. Modernākajām operētājsistēmu versijām (piemēram, Windows 7) Microsoft veic atjaunojumus diezgan aktīvi. Kad kāds (parasti lietotājs) atklāj drošības kļūdu, kāds inženieris to izpēta, sagatavo ielāpu, pārbauda to, un (atkarībā no ievainojamības svarīguma) izplata šo ielāpu uzreiz, vai kopā ar citiem ieplānotajiem operētājsistēmas atjaunojumiem.

Lietojot slēgto kodu, līdz programmas autjaunojumam, lietotājs ir diezgan bezpalīdzīgs.

Izmantojot atvērtā koda programmatūru, lietotājs var paņemt programmas pirmkodu, izlabot to, nokompilēt un sagatavot ielāpu, kuru pēc tam var izmantot visi citi. Pēc tam ielāpu iekļauj sistēmas kodolā (bibliotēkās vai rīkos) un tie nonāk jaunākajā versijā kopā ar kārtējo Linux distributīva atjaunojumu, un citiem lietotājiem kļūda ir novērsta, pirms viņi to vispār ir pamanījuši.

Bet ko darīt ar tādām sistēmām kā: Windows ME, 2000, XP vai citām, kuras Microsoft vairs neatbalsta?

Ja atrodat kādu drošības kļūdu tajās, jums ir jāzvana Microsoft un jāvienojas par ielāpa izveidošanas cenu, ... JA ielāpu vispār izstrādās.

Tas varētu prasīt ilgu laiku, bet ielāps var vispār nebūt. Tāpēc Microsoft var PIESPIEST jūs pāriet uz jaunāku versiju (ar visām migrācijai nepieciešamajām izmaksām) tikai tāpēc, lai jūs nodrošinātu savu sistēmu.

Izmantojot atvērtā koda sistēmu, jūs varat gan izpētīt sistēmu un izlabot to saviem spēkiem, gan atjaunot tikai to sistēmas daļu, kurā ir problēma, gan arī piesaistīt ārējus konsultantus.

Nesen laikrakstā Microsoft rakstīja par to, ka tas (tāpat kā citi slēgtā koda izstrādātāji) "atbild" par savu klientu programmatūru. 

"Atbild" kā? Vai Microsoft apdrošina savus klientus par tā programmas uzlaušanas radītajiem zaudējumiem? Vai Microsoft izstrādā labojumus klientam piederošai programmai, ko Microsoft vairs neatbalsta? Vai esat kādreiz lasījuši lietotāja licences noteikumus? Tas nav atbildīgs pat tad, ja tā programmas kļūdas dēļ jūsu dators nodeg zilās ugunīs. Viņu "garantijas" un "atbildība" ir bezjēdzīgas. Esmu strādājis lielās programmatūras izstrādes kompānijās, un zinu:

Microsoft juristi licences noteikumos nekad neiekļaus neko tādu, par ko Microsoft patiesi būtu "atbildīgs".

Ja Microsoft domā, ka ir vienīgā kompānija, kas var uzņemties programmu kļūdu labošanu, tad es vēlētos norādīt uz tādām kompānijām, kā Red Hat Software, SuSE, Canonical un (par kuru droši vien būsit dzirdējuši) IBM, kuras ir tikpat "atbildīgas" par atvērtā pirmkoda programmām, kā Microsoft ir "atbildīgs" par savu slēgto kodu.

Microsoft pārstāvji teic, ka valsts institūcijām nav zināšanu un prasmju, kas nepieciešamas, lai "tiktu galā ar atvērtā pirmkoda programmatūras radītajiem izaicinājumiem". Pat ja tas ir tiesa, ja turpināsiet izmantot tikai slēgto kodu, jums šādas zināšanas nekad neradīsies.

Un vispār, mana pieredze rāda, ka drošība NAV atkarīga, vai programmas kods ir vai nav pieejams (ja neskaita pēc iespējas ātru ielāpu problēmu), bet gan no:

  1. operētājsistēmas izstrādes filosofijas un principiem,
  2. lietotāju un sistēmu administratoru zināšanām.

Par pirmo punktu ir jānorāda, ka Microsoft Windows tika izstrādāta kā viena lietotāja sistēma bez datortīkla. Vecākās Windows versijās tās kodolu varēja mainīt jebkurš un, palaižot sistēmu, tajā pat nebija "jāpiesakās". Lai arī tagad Windows strādā tīklā, e-pastā ievietotie pielikumi atveras automātiski, failu paplašinājumi tiek slēpti, un ir vēl daudzas citas "īpašības", kas to padara nedrošu no ļaunprātīgiem uzbrukumiem. 

Unix un Linux sistēmas vienmēr ir bijušas satīklotas daudzlietotāju sistēmas. To galvenais drošības princips ir "neuzticēties nepārbaudot". Tieši tāpēc ASV Nacionālā drošības aģentūra (NSA) savām vajadzībām izmanto SELinux (Security Enhanced Linux).

Linux var pat izvēlēties divus papildu drošības risinājumus: SELinux un AppArmor. Katram no tiem ir savas labās īpašības. Linux arī atbalsta Kerberos autentifikācijas mehānismu tīklā, ko izstrādāja MIT.

Otrais punkts ir pats svarīgākais.

Ir ļoti grūti izglītot drošībā visus sistēmas lietotājus.

Tāpēc Unix un Linux "neuzticēties nepārbaudot" princips nodrošina daudz augstāku drošību par citām sistēmām. Un, lai arī neesmu Microsoft drošības eksperts, zinu, ka Microsoft sliecas vājināt savu sistēmu drošību tur, kur ir nepieciešama savietojamība ar vecākām versijām.

Datubāzes

Neesmu īsti drošs, ko jūs domājāt pieminot "datubāzes", jo neesmu eksperts arī tajās (lai arī mācīju par to dizainu un struktūru divdesmit gadus atpakaļ). 

Vairums slēgtā koda datu bāzes, ieskaitot Oracle, strādā un tiek atbalstītas arī Linux operētājsistēmā. Jūs varat iegādāties atbalstu no attiecīgajiem programmatūras ražotājiem. Bet, ja jūs apskatīsiet SourceForge.net, jūs redzēsiet kādus astoņus ierakstus datu bāzēm priekš Linux. Izplatītākās no tām ir:

  • MySQL
  • PostgreSQL
  • Firebird
  • Berkeley DB
  • Couch DB

Katrai no tām ir savas labās īpašības, bet bez tām ir arī daudzas citas.

Visas no tām var apstrādāt milzīgu datu daudzumu. Firebird savulaik bija slēgtā koda sistēma un to pārdeva par tūkstošiem dolāru vienam datoram (un tas bija laikā, kad tūkstotis dolāru bija liela nauda).

Arī datu bāzēm galvenais āķis drošībā un veiktspējā ir — pārzināt to īpašības, pareizi izveidot to struktūru u.tml. Un tas nav atkarīgs no tā, vai izmantojat atvērtā, vai slēgtā koda datu bāzi. Tomēr, izmantojot atvērtā pirmkoda datu bāzi, jūs varat ietaupīt licenču naudu, un varat to ieguldīt apmācībā un uzturēšanā. 

Microsoft un atvērtais pirmkods

Nobeigumā, varu paskaidrot, kā "Microsoft atbalsta atvērto pirmkodu".

Microsoft atbalsta atvērto pirmkodu tāpat, kā es atbalstu zemniekus. Lai arī es nevaru bez tiem iztikt, jo man ir nepieciešama viņu saražotā pārtika, tas nenozīmē, ka es palīdzu viņiem laistīt dārzu.

Microsoft kā kompānija atbalsta tādus atvērtā koda projektus kā PHP vai Apache tikai tāpēc, lai tie strādātu Windows slēgtā koda operētājsistēmā. Ja tie nestrādātu, tad Microsoft operētājsistēma būtu vēl nelietojamāka. Arī viņu pienesums Linux kodolā ir tikai tik daudz, lai Linux serverī varētu strādāt virtuālas Windows sistēmas (vai arī otrādi). Arī šeit viņi tikai cenšas palikt konkurētspējīgi, nevis "pievienojas atvērtajam kodam".

Protams, IR atsevišķi Microsoft darbinieki, kas iegulda atvērtajā pirmkodā, bet praktiski vienmēr viņi strādā brīvprātīgi un viņu darbībai nav nekādas saistības ar Microsoft politiku vai mīlestībai pret atvērto kodu.

Microsoft attieksmi pret sadarbspēju labi parāda tas, kā viņi realizēja savu Java versiju, kas nebija savietojama ir citām realizācijām; kā viņi izstrādāja Kerberos autentifikācijas sistēmu, kas vienīgā atšķīrās no tās, ko izstrādāja MIT (ko izmanto visas citas operētājsistēmas); un kā viņi cenšas gremdēt ODF atvērto dokumentu standartu ar savu OOXML "standartu" (par laimi, ar pēdējo viņiem neveicas).

Ceru, ka esmu atbildējis uz visiem jūsu jautājumiem.

Sirsnīgi, Trakais Suns

  1. ^ Ieskaitot arī tulkotāja pielāgojumus un papildinājumus.
  2. ^ T.i. izpildās Ērika Reimonda formulētais t.s. Linusa Likums: Pietiekami daudziem skatieniem visas kļūdas ir acīmredzamas.
Created by Valdis Vītoliņš on 2012-10-17 20:12
Last modified by Valdis Vītoliņš on 2016-04-01 14:55
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License