Posts Tagged ‘крокодилски’

2017-02-22 FizzBuzz 2

Wednesday, February 22nd, 2017

Понеже идеята ми се мотае в главата от месец-два и тая нощ ми хрумна финалната оптимизация, ето продължението на post-а за fizzbuzz:

int i=0,p;
static void *pos[4]= {&&digit, &&fizz, &&buzz, &&fizzbuzz};
static void *loop[2] = { &&loopst, &&loopend};
int s3[3]={1,0,0},s5[5]={2,0,0,0,0};
char buff[2048];
char dgts[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
int buffpos=0;

loopst:
	i++;
	p= s3[i%3] | s5[i%5]; 
	goto *pos[p];

fizz:
	memcpy(&buff[buffpos],"Fizz", 4);
	buffpos+=4;
	goto end;
buzz:
	memcpy(&buff[buffpos],"Buzz", 4);
	buffpos+=4;
	goto end;
fizzbuzz:
	memcpy(&buff[buffpos],"FizzBuzz", 8);
	buffpos+=8;
	goto end;
digit:
	buff[buffpos++]=dgts[i/16];
	buff[buffpos++]=dgts[i%16];
end:
	buff[buffpos++]='\n';
	goto *loop[i/100];
loopend:
write(1, buff, buffpos);

Известно време се чудех как може цялото нещо да стане без никакъв branch, т.е. и без проверката за край на цикъла. Първоначалната ми идея беше да я карам на асемблер и да използвам като в exploit-ите NOP sled, нещо от типа (извинете ме за калпавия асемблер):

	JMP loopst
	JMP loopend
loopst:
	NOP
	NOP
...
	NOP
	; fizzbuzz implementation
	; i is in RAX
...
	MOV RBX, 0
	SUB RBX, RAX
	SUB RBX, $LENGTH
	SUB EIP, RBX
loopend:

Или, накратко, колкото повече се увеличава i, толкова повече скачам назад с релативния JMP (който съм написал като вадене на нещо от EIP, което най-вероятно изобщо не е валидно), докато не ударя JMP, който ме изхвърля. Като оптимизация бях решил, че мога да shift-вам стойността с 4, така че sled-а да е само 25 броя.

В един момент ми хрумна, че мога да мина и без sled-а, като правя деление (което е отвратителна операция, но спестява кофа nop-ове). Така се получи по-горния вариант на C, който не е съвсем C, а просто някаква странна асемблероподобна гняс.

Иначе, важно е да се отбележи, че на какъвто и да е модерен процесор по-горния код е далеч по-неефективен от простото решение с if-ове, най-вече защото branch prediction и всички други екстри се справят много добре с всякаквите if-ове, но доста по-трудно могат да се сетят тия jmp-ове към таблици базирани на някакви стойности къде точно ще идат, за да се прави спекулативното изпълнение. Не съм си играл да benchmark-вам (въпреки, че имам желание), но като цяло горния код има шанс да се справя по-добре само на неща като 8086 и компания.

И като идея за следващата подобна мизерия, може би може да се оптимизира истински чрез ползване на някое от разширенията за работа с вектори/големи стойности и се unroll-не цикъла, например да се прави на стъпки от по 4 с някаква инструкция, която смята делители (кой-знае какви странни неща има вкарани вече в x86 instruction set-а).

2017-02-13 сватба

Monday, February 13th, 2017

Ожених се.
(сега погледнете датата в title, че не е първи април, и продължете нататъка)

В петък (10.02, отбелязвам да не забравя в бъдеще) в 13:00 се ожених за (вече госпожа) Елена Дяволова. Понеже ни мързи да си сменяме личните карти, не сме си сменяли имената (иначе се чудех как малкия можем да го кръстим Колев-Дяволов, щото звучи точно като да коли дяволи…). Решихме да не правим голямо тържество, понеже {работа, мързел, бременна Елена, умора}, най-много да избягаме от всички за едно пътешествие.

Снимка с кумовете (и някаква растителност).

2016-12-31 равносметка

Saturday, December 31st, 2016

И време за стандартната годишна равносметка…

– Ще ставам баща. Това мисля, че за всички е доста изненадващо, даже малко и за Елена :)
– Избутахме OpenFest 2016 – много работа, много неща, като цяло изяде сериозна част от времето ми за годината;
– Имах количество занимания около initLab, който още оцелява;
– Направих няколко BGP workshop-а (и може би скоро трябва да направя още един, докато мога);
– Занимавах се с видеото на FOSDEM 2016, и догодина пак (направили сме бая интересен setup, който се интересува може да види в github);
– В общи линии за да тестваме нещата за FOSDEM ходихме да правим видео/аудио записване и streaming на State of the Map 2016;
– Направих една лекция (на PlovdivConf) и планирах и една на тема теоретична политика, която не можах да довърша (като цяло имам вече поне 5 висящи написани до средата лекции);
– Умря Pieter Hintjens;
– Да не повярва човек, не писах повече тая година…

И да стои и да се вижда, ето списъкът висящи ми лекции:
– “Теоретична политика” (системи за гласуване/взимане на решения, компромиси и т.н.);
– Debug workshop;
– VoIP/asterisk workshop (или цял курс);
– Приложение на принципи от системната администрация в реалния живот;
– Представяне на initLab с много картинки;
– Криптография за журналисти;
– Подкарване и поддръжка на собствен mail server;

Мисля, че имах идея и за още някакви. Един хубав ден мога да допиша поне една-две от тях и да ги кача в блога, че време за говорене не се намира :)
(а много ми се иска да систематизирам нещо по темата системи от хора и други неща, но това няма да стане в следващите една-две години)

2016-06-24 радио-link

Friday, June 24th, 2016

(blog post за разсейване)

Пешо (който организира uzana.io) си взе няколко ubiquiti airmax-а, с които да си пусне net (като разстоянието, което има да покрие е около 12км). За да им направим истински тест, решихме да ги вържем от у нас (Лозенец, близо до водната кула) до у тях (Костинброд), което е около 18км.

Лъчът се оказа достатъчно широк, че да не трябва ултра-точно насочване, и резултатът може да се види в един smokeping, който пуснах да дебне. Има едно прекъсване при донастройване първия ден на вертикалата от Костинбродската страна. Като цяло нощно време загубите са малко, през деня обаче има бая зашумяване по пътя – например НДК е точно по правата линия и техния wifi се чува бая добре с тия антени…
(тия антени чуват наистина много добре, май мога да слушам wifi-та на няколко километра с тях)

Може да се види снимка на гледката от моя покрив. Да, знаем, че сме го закачили на гръмоотвода.

След упражнението се оказа, че аз имам root на router-а на Пешо, та първо най-накрая си подкарах bgp за моя ipv6 вкъщи, после подкарах при него, и накрая ги interconnect-нах през радиовръзката. Сега ако ми спре net-a вкъщи, ще имам поне ipv6 през Костинброд. Наливам пълна таблица и на двете места, сложил съм local preference на пътищата от него да е по-малък (и по същия начин на двата router-а от другата страна моя prefix през неговия link е с по-малък localpref), като цяло съвсем стандартен setup :)

Мога спокойно да кажа, че вкъщи свързаността ми вече е географски подсигурена.

2016-05-15

Saturday, May 14th, 2016

Една от лъжите, които казвам е “от утре почвам да пиша редовно”.

В последните две седмици се случиха куп неща, които в общи линии май трябва да си припомням по логове:
– Довършихме редакцията на видеата от OpenFest 2015, всички са качени в архива и youtube. Най-накрая може да се каже, че имаме събран екип да се занимава с редакцията (което не успя да стане около самия фест);
– Видеата от ТърновоConf 2016 са в pipeline, просто около празниците и наваксването с работа след тях никой няма време;
– В лаба вече има първата co-locate-ната машина (кръстена по някакви извратени причини “pinkiepie”);
– Към автоматизациите в лаба беше добавена поредната тривиална такава, ако някой остави външната врата отворена над 5 минути, Стивън Хокинг звъни на всички телефони да каже да бъде затворена (наложи се поради някои лоши навици на пушачите);
– Пак около това, има приличен шанс да опънем хубава оптика до лаба в следващия месец и да намерим приложение на част от оптичната техника;
– Мина лекцията/workshop за ICS security в лаба, очаквайте записи;
– Силно си изоставам с четенето на книги;
– Взех си rack за вкъщи, за да успея да набутам в него малко техника и да си освободя бюрата. Обмислям да взема и за лаба още един-два с подобна цел (понеже имаме много техника, натрупана на купища);
– Успях да си сменя (почти) навсякъде сертификатите с такива от letsencrypt. Имаше доста гафове, и си мисля, че можех просто да издавам по един сертификат на сървър с всичките имена в него, вместо за всеки vhost неговите си, ще видим дали ще променя метода за в бъдеще. За заинтересуваните – ползвам acme-tiny;
– Човек и добре да живее, debug-ва erlang. Продължавам да не го понасям тоя език.

В плановете за петилетката има да напиша нещо за всичките дребни интересни хакове и неща около лаба и като цяло проектите, с които си играем (какво може да се прави със SDR, странностите с релета и телефонни централи, routing и тунели), да намеря време да си почина, да ида на концерта на Tuber (21.05, в mixtape), да подаря още някакво количество книги (дарих малко на една библиотека, та сега сравнително малко книги стоят по бюрото и масите наоколо). Мисля, че ми трябва и план да не си правя много планове, ама там ще видим:)

2016-04-26 смърт

Tuesday, April 26th, 2016

(това го пиша, щото темата ми е интересна, нямам планове да умирам скоро)

Около един post на Meredith Patterson (който също си заслужава да се прочете) попаднах на “A Protocol for Dying на Pieter Hintjens (за чието име съм сигурен, че не мога да произнеса правилно). Това ми припомни малко моите преживявания около невралгията и болницата и най-вече завещанието, и учудването на разни хора, че изобщо съм обмислял ситуацията и всичките варианти.

Смъртта е донякъде интересна тема, най-вече понеже е едно от нещата, за които се говори най-трудно – по най-различни причини хората сме направени така, че темата да ни блокира по най-различни начини, от простото споменаване, през държанието около болни и умиращи, до трудностите при убиването на хора. Това от своя страна води до това да ни свари тотално неподготвени. Протоколът, описан от Hintjens и идеите на Meredith са в общи линии една стъпка в правилната посока, още един факт от живота, с който трябва да свикнем. Интересно ми е дали следващата голяма кампания из медиите ще бъде на подобна тема (както сега се забелязва с най-накрая сериозното включване на хомосексуалността в повечето сериали/филми/книги, което не може да се забележи в тези от преди 30-40 години).

Може би ни трябва годишен Think/talk about death day?:)

2016-04-22

Friday, April 22nd, 2016

Трябва да пиша по-редовно, да не се получава миш-маш като тоя по-долу.

Както обикновено, ми върви на дебъгване. В последната седмица от по-странните неща се сещам за:
– build на android image (за нещо, правено и писано от (некадърни) китайци);
– Java/groovy;
– Python;
– И нормалното количество VoIP бози.
За да завърша картинката, обмислям да седна да подкарам VAX-а, който виси в initLab.

Тая вечер ходих на концерт на “band H.”, хора, които свирят Tool. Прилично се справиха, въпреки че им куцаше ритъма на моменти (което не е учудващо, Tool са учудващо гадни за свирене).
(по някаква причина в същия ден имаше 3 концерта – band H., Smallman и Irfan, не беше лесен избора)
(random човек ме разпозна на концерта и каза колко се радва на разните проекти като initLab, дето правим)

Седнах да подкарвам най-накрая сертификати от letsencrypt за нещата по marla, и успях да наслагам на половината, преди да ме удари resource limit-а при тях. Следващата седмица ще ги довърша. Разписах нещата с acme-tiny, базирано на нещо, което Петко беше драснал за лаба, оказва се сравнително просто (ако config-а е подреден както трябва) да се parse-ва apache config-а и да се смята какви точно сертификати да се генерират за кого.
(открих кофа неща, които вече не се host-ват при мен и ги почистих)

Събрал съм резултатите от теста на FOSDEM-ската техника (сравнение на запис на stream-а и encode-нат резултат, от нашия и от FOSDEM-ския setup), и като цяло с още малко пипване това може да се окаже достатъчно лесно за по-малки конференции (на които не си влачим 6-7-8 човека от екипа).

На opendata.government.bg тия дни пак качиха нещо интересно (тоя път – целия търговски регистър от 2008ма досега) и пак претовариха нещастната виртуалка (която е един debian в/у microsoft hyper-v). Обмислям някаква магия да може да преживява такива неща по-лесно, щото не се очаква да намалеят интересните данни.

За който се интересува, върви световното първенство по snooker, прилично забавно е. Тия дни пътувахме в метрото и tether-нати през телефона ми и с един таблет си гледахме вървящия мач…
(да живее технологията)

И не си спомням нещо друго да ми се е случвало.

2016-01-12 търсене на проби от големия китайски firewall

Tuesday, January 12th, 2016

Добрите хора, дето анализират активните проби на големия китайски firewall са пуснали инструменти за преглеждане на логове – bz2 или директно git clone https://www.bamsoftware.com/git/active-probing.git . Няма лошо да свалите и да тествате дали се намира нещо по вашите логове, ако е много, може да питате researcher-ите дали ще им е полезно :)

За някои типове логове се налага малко пипване, например в grep-garbage-http.py да се пипне regex-а да е

combined_log_re = re.compile(r'^([\w:._-]+) ([\w._-]+) ([\w._-]+|"[\w._-]*") \[(.*) ([+-])(\d\d)(\d\d)\] "(.*)" (\d+) (\d+|-) "(.*)" "(.*)"')

(маха се $ накрая, понеже в моите логове накрая се сипва vhost-а)
За един друг тип логове направих

sed 's/^[a-z0-9:.]* //' 

за да почистя от началото vhost:port (понеже се оказа, че имам и такива)

Равносметка 2015

Thursday, December 31st, 2015

И кратка равносметка на 2015:

– Приключих с първия пас на редактирането на Reverse engineering for beginners, и може да помисля за втори в/у новите неща, които са се появили.
– Правихме пак курс по сигурно програмиране, след който заедно с още няколко неща там вече нищо общо не искам да имам с ФМИ.
– Направих нов не-курс, този път си сглобихме малко ISP, като някаква част от setup-а му остана за net-а на initlab.
– Пуснах ipv6 тунелен брокер за разни хора, дето си нямат ipv6 у тях (и вече някои от тях правят странни топологии :) ).
– Направихме доста събития от турнето;
– Случи се openfest 2015, където с Яна бяхме главните координатори. Не беше леко преживяване, и още не съм си подредил мислите по въпроса. (Видео-записите – скоро).
– Почнах пак работа в securax, като още ме е срам да казвам, че се водя мениджмънт (и за да компенсирам, админствам малко неща).
– Направих една лекция, и написах една друга до средата. Мисля, че трябва да отделя малко повече време в писане.
– Пак не блогвах достатъчно.

(мислех да кача малко снимки, дето съм правил на 32c3, но повечето са на бутилки от whisky workshop-а)

2015-11-14 trade-offs / компромиси

Saturday, November 14th, 2015

(и преди да съм разписал хилядите неща от openfest, нещо, което ми се мотае в главата поне от година, и което Public Choice III ми доизясни)

Нещо много фундаментално в живота (и информатиката) е trade-off-а, или компромисът. Оказва се твърде често срещан, и реално погледнато незаменим като метод за решаване на проблеми. За съжаление ще трябва да дам някаква формална дефиниция, понеже ще ми трябва надолу …

Прост пример за компромис е да имаме някакви пари N и двама човека, A и B. Нека да имаме функция U(P, X), която за P ∈ {A, B} и 0 < X < N може да ни даде някаква “полезност” на свършеното от човека, като целта ни е да максимизираме U(A, X) + U(B, N-X). Безкомпромисните решения са X=N или X=0 (т.е. да дадем всичко само на единия), всичко останало е някакъв компромис м/у тях, за да се получи по-добър резултат.
(моля също така да се консултирате с вица за сферичния кон във вакуум, преди да продължите)

Повечето технически проблеми включват някакъв вид trade-off, за да се решат, дори има стандартен такъв термин, time-memory trade-off за всякакви алгоритми и решения, т.е. принципът, че с повече памет (поне до едно време) може да се спести време. Един сравнително прост пример, който ми хрумва е lookup дали даден IP адрес е блокиран или не – това може да се реализира с:
– прост масив – яде малко памет, търси се линейно и като цяло е бавен;
– хеш – яде повече памет, търси се константно (worst-case – линейно) и е по-бърз;
– дърво – яде още повече памет, търси се логаритмично, и
– bitmap – един масив от 2^26 байта, в който всеки бит отговаря на отделен адрес, който яде много памет и в който lookup-а е константен.

Когато за някой проблем може да се максимизира всичко и да се постигне ситуация “и вълкът сит, и агнето цяло”, техническият термин за решението е “hack” и е любим на всички ни.

Проблемът е, че няма hack за всичко, и реално всички организации, действия и решения, които включват други хора изискват някакъв тип компромис. Живеейки в свят, в който сферичните коне (особено във вакуум) са рядкост, се налага да правим доста такива, за да постигнем каквото и да е. Може да се каже, че цялото ни общество се крепи на компромисите.

А хората не харесват компромиси. Явно някъде ни е заложено, че трябва да стане нашето и хората по принцип дърпат в собствената си посока, като отпускането в чуждата рядко се приема като нещо хубаво, като загуба и отстъпление от собствените принципи. Поради това много компромиси не издържат с времето и се налага или да се преразглеждат, или да се разпаднат.
Никак не помага и това, че няма как да се оцени един компромис, като с функцията по-горе. Тия дни във връзка с openfest ми беше зададен (съвсем хипотетичния) въпрос – дали не е по-добре да се направи една лекция, която е много полезна и информативна, за 50 човека, отколкото една по-малко информативна (с базови неща и т.н.) за 1000 човека. На такъв въпрос смислен отговор няма, начинът да се разбере е да се проведат, да се направи изследване след това м/у хората по някакъв начин (например колко пари биха дали за една такава лекция), да се сумират нещата, да се сравнят, и после да осъзнаем, че принципът на икономистите не води до особено смислени неща и да зарежем упражнението.

Също така има хора, които много трудно приемат компромисите с каквото и да било. Така много често се изпада в ситуация, в която нищо не може да се свърши заради един блокиращ индивид (какъвто случай ми разказваха наскоро), и където липсата на желание/способност за компромис и нежеланието да се търси hack водят до всякакви проблеми (или неслучващи се неща).
(от друга страна, полезността на тези хора за някои неща не може да се отрече, та се налага да се прави компромис с безкомпромисните понякога :) )

Та, накратко, life sucks, and then you die. Единственото смислено нещо, което виждам да може да се направи е да се мисли метод, който без да обижда хората да може да оценява компромисите и да може да се смята как точно да се направи един компромис. От друга страна, не мисля, че е особено възможно и се надявам някой да покаже, че не съм прав :)

2015-10-18

Sunday, October 18th, 2015

Опрях до там да имам един текстов файл с какво имам да върша всеки ден, че да мога да си следя всичките задачи. Явно ще трябва в него да слагам и “блогни” от време на време.
(знам, че някакви хора ползват модерни работи като календари, обаче за мен един файл в git, комбиниран с vim, който commit-ва на всеки save се оказва перфектното решение)

Занимавам се с всякакви скучни работи:
– Оправям хартии по фондацията, например писмо до ДАНС, че няма да перем пари и финансираме тероризма (вече не се учудвам какви глупости изисква държавата;
– Разни хора правят мрежата на OpenFest, а аз рисувам картинките;
– Случва ми се да спя;
– Пиша правила за очаквания co-location на initLab (който ще се случва, има само дребни подробности за дооправяне).

… и всякакви неща, дето вече не помня. Случи се RuseConf, в което нямах участие (освен малко акъл отдалечено и да събера малко техника в кашони), но за което ще режа записите, като ми ги донесат.

От по-интересните неща:
– направих банички (за Снежи), след като не ми се беше случвало едно 12-13 години. Станаха прилично :)
– подредихме и направихме по-прилично мрежата на лаба, с Пешо и Марио, та сме на малко от заветната цел да навържем и лампите отвън да се контролират автоматично и да не трябва да се притесняват хората от тъмната уличка;

И за да пропусна групата “ужасни неща”, няма да говоря по работа :)

2015-07-12

Sunday, July 12th, 2015

Честото блогване се оказва сложна задача… Няма много неща, които да са интересни и да стават за писане, и дори да има, все се оказвам достатъчно уморен, че да не ми се занимава и да оставям тая работа за неделята (докогато съм забравил вече доста от това, за което бих писал).

В новините (които са почти официални вече) – на 15.08 ще се случи VarnaConf (където мислим вече да има два потока), а на 7ми и 8ми ноември – OpenFest 2015.

init Lab започва да изглежда все по-приятно, и тия дни наснимах едно обикаляне около и в него (с gopro-то на Пешо, което се оказа супер удобно за подобни цели). Не е особено подредено (Петко чак му стана гузно и леко подреди рубинената стая, преди да я снимам), но е доста удобно за всякаква работа.

Тунелния проект се движи прилично. Малко статистики:
14 потребителя;
14 заделени мрежи (1 /49 (за isp.initlab.org), 2 /62 и 11 /64);
23 дефинирани тунела;
9 вътрешни BGP peer-а на marla, 8 на tyler.
Нямам прилични статистики за трафика (и имам колебание дали да ги показвам). Така като гледам, се движи съвсем прилично, ползва се и си работи съвсем добре (въпреки че още е с quagga).

2015-06-28

Sunday, June 28th, 2015

СПИМИСЕ.

Anyway, седмицата беше пълна с всякакви весели неща:

– Имам си MNT-KROKODIL в RIPE (за което имам да черпя Драго).

– 7-8-9 човека, вързани по тунели, няколко и с BGP (които могат да се видят в моя nagios). Все още хората се добавят на ръка, Мариян е почнал да пише интерфейс (явно му е скучно).

– Пуснахме IPv6 в ISP-то, дооправихме някакви неща, повече – в status report-а. Две бързи интересни неща – IPv6 на alpha-та и nagios-а на ISP-то (user/pass guest/guest).
– По горната тема, трябва да пусна looking glass-ове. Приемам идеи за неща, които поддържат bird, cisco и quagga и не искат да им се прави черна магия, че да тръгнат (тоя от сайта на bird е тотална трагедия).

– Преди година и нещо, след една лекция на Боян Кроснов за инфраструктура, доста хора се заинтересуваха да видят истински datacenter. Два месеца след това бях направил една уговорка с Telepoint, и миналата седмица (никак не се забавих) в четвъртък и петък с групи от по 5-6 човека обиколихме и видяхме как изглежда и какви забавни неща има (например овлажнители на въздуха). По принцип е ориентирано към студенти, та ако има още интересуващи се, пишете ми, за да събера пак една-две групи.
(целим се в сряда като ден за посещение, щото тогава тествали генераторите…)

– Тъкмо привършва HackTUES, на което не можах да отида, заради курса и всичките останали забавления, жалко.

– И идва BurgasConf, следващата седмица. Мразя да пътувам, но съм обещал… Тази година няма да говоря там, имах идея за една лекция, но там ще се иска още много research.

2015-06-14 жив съм

Sunday, June 14th, 2015

Качих един progress report за ISP курса, в който вероятно съм пропуснал някакви неща, но участниците ще си кажат и ще се допълва.

Тия дни около курса се чудех с какви IPv6 адреси да го правя, и накрая се реших, навих един LIR (благодарности на Драго от delta) да ми request-нат адреси и ASN. По случая вече си имам AS200533 и 2001:67c:21bc::/48, които ще използвам и за курса, и да направя един малък тунелен брокер за IPv6 тунели за желаещи (с дублиране на тунелните, BGP и такива забавни неща), очаквайте подробности по някое време, като успея да се заема сериозно.

Иначе, жив съм – имам си кило занимания около разни проекти, openfest (очаквайте новини), ходих да консултирам студенти във ФМИ по мрежи (трагедия), изпитахме си хората за мрежова сигурност 2 (по-малка трагедия), ходих днес на театър на “Контрабасът” (беше страхотно). Определено трябва да пиша повече, почва да ми се губи какво съм вършил…

2015-04-15 end-to-end криптография за домашна/фирмена употреба

Wednesday, April 15th, 2015

Питаха ме тия дни “как да си говорим без да ни подслушват”, и понеже е просто, ето какво препоръчвам аз (и съм ползвал). Това не включва operational security неща (не говорете близо до други хора, не си качвайте записите някъде, не си давайте компютъра на непознати и т.н.), а само как да си направим setup, който може да се използва правилно. Базиран е на неща, които аз съм правил, т.е. конкретните препоръки са от моята практика.

Идеята е да имате end-to-end криптография (т.е. само крайните точки да могат да декриптират информацията) и forward secrecy (т.е. ако случайно някой ключ изтече, това да не дава възможност да се подслушва бъдещата комуникация). Това се постига с два протокола – OTR и ZRTP.

И двата са близки по идея, като първия се занимава с обмяна на текстови съобщения, втория с предаване на глас.

Като за начало – някакво собствено желязо, с криптиран диск, с debian stable и автоматични security update-и.
Ползвам debian, понеже си е стабилно и security update-ите работят както трябва и не чупят системата.
Криптирания диск е допълнителна мярка за сигурност. Реално на сървъра няма да пазите кой-знае каква важна информация, но си остава добра идея. Това влачи със себе си проблема, че на рестарт някой трябва да въвежда passphrase, но за това има начини да се прави по сравнително сигурен начин.
Виртуалните машини са твърде лесни за атака, че да се разчита на тях. Вариант са, защото при тоя setup данните не са чак толкова важни, но не ги препоръчвам.

Понеже всичката комуникация ще върви по TLS, е добре да си имате правилно подписан сертификат. Всички сме наясно, че сигурността на сертификатите е малко трагична, но помага понякога да се хванат разни MITM атаки. Има сравнително евтини CA-та, като скоро и ще работи това на EFF, което ще е съвсем безплатно.
Ако искате да избегнете всичките възможни атаки, може да си направите собствено CA и да го инсталирате по клиентите, но е по-сложно и доста често не се спазва както трябва и просто се казва на клиента да приема всякакви сертификати, което е лоша идея.

Следващата стъпка е XMPP (Jabber) сървър. Аз лично използвам ejabberd, понеже е сравнително прост за конфигурация, бърз и ако не трябва да дебъгвате S2S, направо идеален.
В него трябва да спрете некриптираните връзки като цяло, и да не включвате S2S (server-to-server) модула, така че да е ясно с кой говорите. Можете да си включите и конференциите, но за тях още няма end-to-end криптография.

Финално, трябват ви open-source клиенти, които да поддържат двата протокола (OTR и ZRTP). По принцип jitsi поддържа и двете и е доста добър избор (въпреки че е доста тежко и писано на java), като работи под всички desktop операционни системи и има alpha за android. За телефони (ios и android) за съобщения има chatsecure (само OTR). Също така аз самия ползвам pidgin с OTR plugin, който обаче няма ZRTP (и като цяло много кофти аудио поддръжка).
(някой може да допълни с още клиенти)

Този setup ви дава възможност да си говорите с end-to-end криптография и да сте много трудни/невъзможни за подслушване (по последните документи от NSA, OTR е нещо, за което не са намерили никакъв вариант да го счупят).

2015-04-01 presentation build system

Wednesday, April 1st, 2015

(мразя днешния ден, та да взема поне аз да свърша нещо полезно)

Тия дни около курса по мрежова сигурност си update-нах системата за build-ване на презентации и съответно съм я качил в github. Бая улеснява живота:

– Може да си добавяте картинки както си искате, системата ги resize-ва и следи коя презентация от кои зависи и я rebuild-ва;
– Както и преди, може да си пишете текста на презентацията заедно със слайдовете и се extract-ва автоматично;
– Може да си правите страници със заглавия ( ‘###’ и на следващия ред ‘#### някакво заглавие’ и ще запълни цялата страница с него);
– Вече няма нужда да пишете каквото и да е в Makefile-а, той автоматично захапва всички .pandoc файлове в текущата директория.

Сложил съм и един по-приятен пример, от който може да се гледа. При желание и с малко пипване в Makefile може да не ползвате моята зелена схема (която някои хора не харесват).

2015-03-26 drop database

Thursday, March 26th, 2015

Днес получих поредното потвърждение за любимия си израз “Системният администратор се учи на гърба на потребителите”.

Правехме някаква миграция на obshtestvo, и около нея се налагаше няколко пъти да се drop-ват и преналиват едни бази. Хванах се на няколко пъти как съм пуснал DROP DATABASE и чак след това съм погледнал къде съм го пуснал, и не го бях сбъркал нито един път.
(нещото беше малко под пара, иначе гледам да правя нещата по-бавно)

Това не-сбъркване е продукт на МНОГО омазвания преди това, изгубени данни, възстановяване от backup-и и псуване. Трябва да има такива практически, реалистични упражнения и занимания за хората, които се занимават с админстване, просто защото “добрите практики” не стигат, особено като човек бърза, а аз още твърдя, че добър админ се познава по това как се справя като го вдигнат в 4 сутринта с махмурлук…

И по темата, тия дни се каня да си обявя новия не-курс, подробности за това – скоро.

2015-03-08 RailsGirls – март 2015

Sunday, March 8th, 2015

Този петък и събота се поведе поредното издание на Rails Girls Sofia. Аз бях там да помагам инфраструктурно, и около някакви разговори стигнах до странни изводи…

(Като за изясняване на термините, искам да кажа, че “социалната програма” в смисъла в който аз я ползвам е нещо като героизма – нещо важно, полезно и от което реално не би трябвало да има нужда, ако нещата си бяха наред. Това е начинът да се внесе малко повече нужно равенство в една система и да се загладят по-острите ѝ ръбове, и реално малко системи с достатъчно хора в тях могат да си струват да се живее в тях без нещо такова.)

RailsGirls е социална програма на IT обществото. Тя цели да помогне на едно малцинство (жени, които нямат никакъв опит и твърде малко опции) да видят какво представлява програмирането, какво могат да правят те и дали би било подходяща област за тях. Като цяло целият формат е ориентиран така, че в ден и половина да може да покаже достатъчно основни неща, за да си изяснят хората какво е това програмирането, какво иска като мислене и дали да продължат опитите да се занимават.
На теория от това не трябва да има никаква нужда – това трябва да се случва с всички хора в училище (заедно с много други варианти за професионално развитие), където хората да са придобили някаква основна представа, след което да могат и след 10-20 години да решат, че това им е интересно и да седнат да го учат (я с online курсове, я в разните софтуерни академии, или във ФМИ на СУ или ПУ). Реално обаче в момента нивото на преподаване на информатика не се подобрява, а върви в посоката “да обясним на децата как да са юзъри” (против което ние едно време правехме опити да се борим, и май пак трябва).

Та по всякакви такива причини ние реално правим социални програми – турнето, OpenFest, курсовете из ФМИ (дето са твърде много, че да ги изброявам) – реално опитвайки се да запушваме дупки в съществуващата система. Не знам дали не е загубена кауза, но мисля, че успяваме да направим някаква разлика и браво на всички хора (особено на Митьо), че бутат подобни проекти.

(и който не е щастлив от това, което се прави, може да се заеме да направи нещо по-добро. Ще помагаме даже…)

2015-03-01 мина крокодиловден

Sunday, March 1st, 2015

Отпразнувах пак крокодиловден. Направих го на 27ми, понеже 23ти се падаше в понеделник, а от МТСП ме помолиха да не се пада преди работен ден, че от колективния махмурлук БВП-то на страната видимо падало.

На хората им хареса, няколко казаха, че трябвало да празнувам рождени дни всеки месец (щото така се виждали всякакви хора). Миналата година протестите вършеха тая работа, като се стопли, може да помислим за още някакви…
(или де да знам, конференция само с една лекция и двудневно afterparty …)

Следва стандартния списък подаръци, доколкото успявам да се сетя:
Бутилка Laphroaig (Мартин);
Бутилка Glenfiddich (Щеряна);
Котка (звучи ето така), или по-точно Digitech bass synth wah ефект (bofh);
Билети за Apocalyptica в Пловдив (там съм ги слушал за пръв път преди бая годин) (iffi и Калоян);
Ваучер за Декстрофобия и един за 3keyrooms (едното от Ива/Калоян, другото от Явор/Таня и още някой, не помня кое как се падаше);
смарткарта за pgp ключове и четец за нея от Merlijn и Моника (ще си сменям явно ключа тия дни);
Един zero-day от RealEnder (тестван, работи, да видим дали иска да го публикува);
Бинокъл (не помня от кого);
Мегафон, ще свърши добра работа по конференциите (Пешо);
Лампа и крушка за нея (Пенчев, Велин, Боян), че нямало у нас достатъчно приглушено осветление (замислих се да си взема още 2-3);
Lego, някакъв багер (Боян), разни хора изявиха вече желание да идват у нас да го сглобяват;
Метроном (Кънев) (без коментар);
Книгата “Плетене на една кука for dummies” (Никсън);
Книгата “Никой не обича крокодила” (Бобсън), някаква древна руска от 1974та;
Мангата “Fullmetal alchemst”, 1ви том (Антоанета);
Книгата “Алекс” на Пиет Льометр (Бойчо);
Книгата “Уискито на Шакълтън” на Невил Пийт (Миши), заедно с една картичка, която вероятно Снежи няма да ми разреши да сканирам и кача, но е много забавна;
“Книжка за зайчетата-самоубийци” (Владо младшия) – питайте google за bunny suicides;
Торбичка желирани крокодили (fredson);
Една рисунка на глухарчета (Нели);
Плато за сервиране на мезета (Мариела и Румен);
Чаша с крокодил в нея (нещо такова) (Румен);
и финално, майсторски клас за уиски тестване (от голяма група хора – Митьо, Стефан, Боян, Яна, Марио, Владо Василев, Стеф, Витков, Недко, Точо, Петко, Мариян, dzver, Кунев и Гери, Благовест, Печкин, Пламен и pCloud-ския екип), както и торба родопски био-картофи.

(извън тия неща, Снежи ми подари странна възглавница/шапка за спане навсякъде. Невероятно плашещо изглеждам с нея…)

Ако се сетя/открия още нещо, ще дописвам.

Update: Също така едно bonsai дърво (от Наков), което май не става за ядене.

2015-01-26 “The Imitation Game” и Алан Тюринг

Monday, January 26th, 2015

Тия дни гледах малко филми, които ме докараха до желанието да попиша.
(човек би си помислил, че като безработен ще имам повече време за такива неща, ама на…)

Гледах “The imitation game”, след което прочетох “Alan Turing: The Enigma”(по която уж е правен филма) и крайното ми мнение е, че не струва:
– Ненужно драматичен е, през цялото време основната ми мисъл беше “тука прекаляват”;
– Избрали са за ролята на Тюринг актьор, който играе аутисти и психопати (и докарва още повече драматичност);
– Сериозно се различава от реалността (има доста неща в wikipedia по въпроса) – например Enigma-та е счупена от поляците, след което англичаните доразвиват идеята, като ролята на Тюринг е сериозна, но не е като на единствен човек, който е бутал цялото нещо;
– Споменали са само малка част от работата му, криптоаналитичните му занимания не са по-важни от машината на Тюринг и приносът му в създаването на информатиката (“Computer science” звучи по-подходящо, ама “компютърни науки” не изглежда добре). Силно препоръчвам на всички програмисти и изобщо компютърджии “The Annotated Turing: A Guided Tour Through Alan Turing’s Historic Paper on Computability and the Turing Machine”, обяснение на paper-а му по темата изчислимост, в който могат да се видят в общи линии за пръв път различни основни програмистки похвати.

(самата му биография, която съм споменал по-горе не препоръчвам толкова, написана е доста зле)

А днес гледах “Citizenfour”, на чиито принцип е трябвало да направят филма за Тюринг.
(и това е филм, който трябва да гледате, и за който силно се надявам (и изобщо не вярвам) да го дават по кината в България)