Harmadjára kellene valakinek „közönséges szavakkal” elmagyaráznom,
hát inkább akkor leírnám, ide.
A történet Magyarország internet cenzúrjának születéséről és
mibenlétéről szól, igyekszem hivatkozni az érintett információkat.
Ha valamit jól írok az a véletlen műve, minden hiba a sajátom, és
ezen írás személyes véleményem tükrözi, valamint – Bokononnal
szólván – mindazon igaz dolgok melyekről most beszélni fogok neked
szemenszedett hazugságok.
A jogi környezet
A dolog 2012. június 25-én fogant, amikoris Pártunk és
Kormányunk megalkotta a méltán rosszhírű új
Büntető
Törvénykönyvet (Btk.),melynek 77. §-a a jól hangzó „Az
elektronikus adat végleges hozzáférhetetlenné tétele” címet viseli.
A szakasz mindössze annyit mond, hogy az elektronikus hírközlő
hálózaton (ilyen az internet mellett amúgy a tévé, a telefon is)
elérhetetlenné kell tenni azt az adatot, aminek bűncselekményhez
van köze. Bűncselekmény minden, amit a BTK büntetni rendel, ugye,
és erről egyszer már írtam egy szép hosszú listát, amit persze most
nem találok; a lényeg, hogy számtalan olyan tétel van ami masszív
visszaélésre ad okot.
Hogyan? Vegyünk egy fiktív példát. A Háromszög Párt uralkodik, és a
nemhomalyos.hu oknyomozó portál megírja, hogy a Háromszög vezetője
hatvanmilliárd forintot játszott át haverjának hamis
közúttendereken, és hogy hazudott akkor amikor ezt tagadta. A
Háromszög Vezére feljelenti a nemhomalyost rágalmazásért, illetve
becsületsértésért. (Hogy miért van ilyen a
büntetőtörvénykönyvben a Ptk. helyett? Jó a kérdés!) A
független bíróság pillanatnyi elmezavarában megelőző intézkedésként
elrendeli az érintett vélt bűncselekménnyel kapcsolatos adatok
hozzáférhetetlenné tételét, vagyis a nemhomalyos.hu domaint.
Minimum a fellebbezési periódusban, de Háromszögközeli esetben
évekig, míg az eljárás folyik a portál elérhetetlen lesz, így
reklám- vagy egyéb bevételek híján üzemeltetői tönkre mennek.
Onnantól mindegy, hogy a vád hamis volt, pláne, hogy addig is
sikerült elhalgattatni valakit aki a disznóságokat publikálja.
Természetesen nagyon sok egyéb fiktív példát lehetne hozni a
politika témaköréből, de inkább egy másik fiktív példát említek: a
Btk XXXVII. fejezete szól a képzeletbeli tulajdonokról, mint
amilyen a szerzői és kapcsolódó jogok megsértése illetve a
„védelmet biztosító műszaki intézkedés kijátszása”; gondoljunk az
ebben rejlő hatalmas potenciálra, amikor egy nagy jogdíjcég
feljelent 50000 embert mert hátha van aki megsértett valamit (ez a
fiktív példa 3 éves) vagy feljelent valakit olyan műszaki
kijátszásért ami nem is szerzői jogokhoz kapcsolódik. Majd egyszer
az eljárás végén lehet bizonyítani hogy hamis volt a vád, addig
viszlát weblap, mail cím, akármi.
De kicsit előre szaladtam, a Btk-ról lendüljünk át a
Büntetőeljárásokról szóló törvény (Be.) VIII. címéhez, ami a
hangzatos és nagybetűs „SZÁMÍTÁSTECHNIKAI RENDSZER ÚTJÁN RÖGZÍTETT
ADATOK MEGŐRZÉSÉRE KÖTELEZÉS ÉS ELEKTRONIKUS HÍRKÖZLŐ HÁLÓZAT ÚTJÁN
KÖZZÉTETT ADATOK IDEIGLENES HOZZÁFÉRHETETLENNÉ TÉTELE” címet
viseli. A 158/B.-D. § fejtegeti azt, hogy ideiglenesen akkor
tüntethető el valami ha olyan bűncselekménnyel kapcsolatos ahol
lehetséges kimenetel az adatok végleges hozzáférhetetlenné tétele
(szinte bármi ami internettel kapcsolatba hozható, a nemzeti jelkép
megsértésétől a becsületsértésig); ezt a bíróság rendeli el, és az
ideiglenes tiltás megszűnik a nyomozás megszüntetésével (kivéve a
kivételeket).
Ezen a ponton emelném ki azt a tréfás kitételt miszerint a
szolgáltató, aki nem távolítja el megfelelően (ez különösképp a
potenciálisan analfabéta bírói ítéletek esetében izgalmas, amikor a
bíró nem informatikus és az ítélet megfogalmazásához nem vesz
igénybe szarértői segítséget) (mind slip) az százezertől egymillió
forintig büntethető. Ismételhetően. Naponta?
Fontos látni az elérhetetlenné tétel és a hozzáférhetetlenné tétel
közötti különbséget: az előbbi azt jelenti hogy beszólnak az
anyagot tároló szolgáltatónak hogy büdösgyorsan szedje le a cuccot
mert kimennek a ballonkabátosok reggel hat és 24 óra között, míg az
utóbbi azt jelenti hogy az egész világ internetes infrastruktúra
üzemeltetőit utasítják arra, hogy az adott tartalomhoz akadályozzák
meg a hozzáférést. Mivel Magyarország a világ közepe így
értelemszerűen ez csak belföldre vonatkozik (mert ki nem szarja le
egy félbalkáni kis ország kiabálását).
De a Be. még rendelkezik természetesen a végleges elérhetetlenné
tételről, és ezzel értünk el az igazán izgalmas részhez. Előtte egy
kis történelmi áttekintés, röviden. A Magyar Kormány folyamatosan
hülyét csinálván magából (ezt folyamatos igeidővel kellene
fogalmaznom, ha tudna ilyent szép anyanyelvünk) szélmalomharcol a
kuruc.info nevű szélsőjobboldali
(talán neonáci, nem értek én ehhez) portállal, mely portál vegyesen
ötvözi a ultrajobbos zsidózást-cigányozást, a gátlástalan személyes
adatokkal való visszaélést és a fennálló államhatalomra vonatkozó
kínos anyagok publikálását. A témában már többször csináltak segget
a szájukból amikor nagy hanggal „letiltották” majd az 13 perc múlva
újra megjelent. Az oka persze az, hogy az üzemeltetők nem hülyék
vagy politikusok (de most látom, ismétlem önmagam), hiszen egyrészt
a site külföldön van, több serveren, proxyzva, meg a jó ég tudja
hol, és még akkor nem is ment a felhőbe, ahol aztán tényleg izgi
lesz kergetni. Bár szélsőjobbos portálból van mintegy hatcsillió,
és a többi sem kevésbé
NER konform, de mindenkori Vezéreink mégis ezt a szerencsétlent
szúrták ki, és ezen fixa ideájuk olyan szintre ette be magát
agyukba hogy megalkották a „Lex-kurucinfot”, sőt, ennek egész
rendszerét, mely alkalmas lenne arra, hogy ezt a portált
betiltásával mintegy másfél órára megbénítsák. Az igazi folyamat
persze vélhetően nem ez lesz, hanem hogy az egész szervezet (és
annak több száz fizetett dolgozója) onnantól naponta azzal
foglalkozik hogy az újabb és újabb trükkökre újab és újabb
letiltásokat eszeljen ki, amivel múlhatatlan örömöt okoznak az
egész magyar internetes infrastruktúrának. Tehát lex-kurucinfó,
vissza a
Be. 596/A szakaszhoz mely a végleges megakadályozásról szól.
Értelemszerűen a bíróság az ítéletben határoz így, ha úgy ítéli meg
hogy az anyagok eltávolítása nem elégséges, és fenntartja az
ideiglenes korlátozást. Vagy ha a szolgáltató dafke kifizeti a napi
egymilió forintot. Vagy ha gyerekpornó (Btk. 204.§) érintett (na,
így, egy pont alpontjában azért csak szerepel az, amivel ezt az
egészet indokolni szokták, meglátjuk majd hogy milyen arányban
fogják ezt a fajta tiltást alkalmazni). Vagy, és persze ez itt a
bölcs jogalkotónk számára a lényeg:
„az elektronikus adat
végleges hozzáférhetetlenné tételére vonatkozóan a külföldi hatóság
jogsegély iránti megkeresése a megkeresés kibocsátásától számított
harminc napon belül nem vezetett eredményre.”. Teccik érteni,
ugye.
Szintén eltekintenék most a kurucoktól és egy másik fiktív példát
hoznék: egy fiktív szervezet összeállít egy listát arról, hogy mely
egészségügyi intézmény mely orvosa milyen hálapénzt (mely, emeljük
ki, a korrupció egy formája) követel meg betegeitől, ezt a listát
letiltatják magyarországon mert becsületsért, vagy rágalmaz, vagy
nincs rajta sapka (persze, próbáld bizonyítani hogy Viktor barátod
elmeamputációjért 250.000-et kellett leperkálnod, különben a heréit
is eltávolítják), és a listát kiviszi Áááámerikába, ahol más
struktúrájú a szólászabadság, és ott nem ütközik törvénybe. A
Magyarok írnak az amcsiknak hogy szedessék le, az amcsik közlik
hogy nincs bűncselekmény; a megkeresés így nem vezetett eredményre,
mehet a tűzoltófejsze. (Szar fiktív példáim vannak, picit úgy
érzem.)
Csak a teljesség kedvéért említem a
Szerencsejátéktörvényt, ahol szintén elérhetetlenné teszik a
tartalmat tiltott szerencsejáték esetén, de itt csavarként nem a
bíróság hanem az adóhivatal. Itt érdekes mozzanat az hogy az
apehnav publikálja ezen oldalakat (36/J.§). Fiktív példákkal most
nem fárasztok senkit, mint amilyen a „melyik politikus fog lopni
holnap” szavazások, satöbbi.
Az ügymenetről az elektronikus hírközlésről szóló törvény (Eht.)
szól, konkrétan a
92/A. § mondja hogy ha a szolgáltató 1 napon belül nem
cenzúrázza a kérdéses adatot akkor a bíróság bírsággal, a hatóság
büntetéssel megcsillagja. Amúgy a szolgáltató köteles az arra
téblábolókat a határozat számával megköldeni, indoklásképp. A
159/B. § írja le hogy az
NMHH
milyen módon asszisztál a cenzúrázás végrehajtásában; itt adja meg
a KEHTA (központi elektronikus hozzáférhetetlenné tételi
határozatok adatbázisa) lérehozását és azt, hogy az NMHH igyekszik
szűrőt képezni az értelmetlen bírósági határozatok tekintetében
(kívánjunk nekik ehhez jó egészséget). A
159/C. § kötelezi a szolgáltatókat arra, hogy a KEHTA számukra
kitúrt adatait lekezeljék, illetve hogy az NMHH ajánlástokat adhat
a szolgálatóknak hogy hogyan legyenek ők is NER konformak.
Természetesen az, hogy a törvény ajánlást tesz lehetővé nem
akadályozhat meg egy igazán Nemzeti hivatalt abban, hogy ajánlás
helyett mellett rendeletet is alkosson
(elvégre az NMHH azért kapott rendeletalkotási jogot, hogy éljen
vele, a rézangyalát!), így szülték meg a
19/2013.
NMHH rendeletet, melyet parasztos egyszerűséggel csak
„az
egyszerű adatátvitelt és hozzáférést biztosító elektronikus
hírközlési szolgáltatók és a kereső- és gyorsítótár-szolgáltatók
központi elektronikus hozzáférhetetlenné tételi határozatok
adatbázisához való kapcsolódásának és a Nemzeti Média- és
Hírközlési Hatósággal való elektronikus kapcsolattartásának
szabályairól”-nak neveztek el. Ebben olyanok vannak mint „a
továbbiakban: KEHTA) a Hatóság által üzemeltetett nem hatósági
nyilvántartás” (érted, egy adatbázis amiben a hatóság nyilvántartja
a tiltott dolgokat az nem hatósági nyilvántartás; jahogy akkor nem
kell nyilvánosságra hozni, jahogy). Amúgy meg semmi azon túl, hogy
a szolgáltatót egy adatkapun értesítgetik.
Mit jelent ez?
A cenzúra infrastrukúrájának kiépítését. A Kínai Nagy Tűzfal
után a Magyar Nagy Tűzfalat. A Szabad Internet helyett a Nemzeti
Konform Internetet. Az emigrált
Havassy Eduárdot
aki Timbuktuba menekülve meri csak elmesélni hogy hol és mit
hallgatózik a Vezérkar.
A probléma ott kezdődik, hogy megbízunk-e abban, hogy az
ideiglenes elérhetetlenné tételt jogszerűen fogják-e
alkalmazni, vagy egy módszer lesz a kellemetlen hangok
elnémítására? Ez eddig is így volt, erre eddig is megvolt a
lehetőség, még ha nem is ilyen mértékben. Itt sok változás nincs: a
hatalom szól a szolgáltatónak, hogy az törölje a tartalmat, és
lemeccselik.
A következő és igen jelentős probléma azonban a hozzáférhetetlenné
tétel intézménye, ami szerint amennyiben nem sikerül a tartalmat
leszedetni akkor kötelezik az
összes magyar internet
kapcsolati szolgáltatót (vagyis azokat, akik internet kapcsolatot
biztosítanak ügyfeleknek vagy más szolgáltatóknak) hogy ne tegyék
lehetővé az adott tartalom elérését: ennek eredménye az, hogy bár
az eredeti tartalom eltávolítása nem történt meg (akármilyen okból,
például mert a magyar hatóságok kérését egy külföldi hatóság
törvénytelennek tartja) az a világon mindenütt elérhető
kivéve
Magyarországot. A másik probléma természetesen a tiltás műszaki
oldala: az internet alapvetően szabadságra épül, ezért nagyon nehéz
rajta ilyen cenzúrát létre hozni: az IP címek változhatnak, a
domainek változhatnak, a szolgáltatók változhatnak. Emiatt a
cenzoroknak egyre durvább módon kell beleavatkozniuk a hálózati
struktúrába. Fontos azt tudni, hogy az internet szolgáltatók
normális esetben alapvetően az adatokat nem vizsgálják, csak
továbbítják azt a forrástól a célig; ez részben a magánélet védelme
miatt is így van de fő oka a hálózati eszközök által igényelt
erőforrásokkal való gazdálkodás, végső soron az internet hozzáférés
költsége, ami az árát meghatározza. A beavatkozás pedig például az,
hogy a szolgáltatót vagy arra kötelezik, hogy minden egyes internet
forgalmat ne csak továbbítson, de analizálja a tartalmát, hogy az
megfelel-e a tiltásnak és ha igen, akkor az adott tartalmat tiltsa,
sőt, meghatározott tájékoztatásra cserélje ki azt.
Alternatívaként a hatósg felajánlja a szolgáltatóknak, akiknek
nincs esetleg több tíz- vagy százmilliójuk a beruházásra hogy
„gratis” átveszik a szolgáltató forgalmát, és majd ők analizálják a
tartalmát, és majd ami szűrendő azt szűrik meg kicserélik. Tehát az
ügyfelek forgalma egy-az-egyben átkerülne a hatósághoz, aki majd
visszaküldi a szolgáltatónak, miután átnézte azt.
Az élet egyik nagy igazsága: alkalom szüli a tolvajt. Egy másik: a
gazság magakadályozásánál mindig jobb annak megelőzése. Ha bízunk a
hivatalban és a kormányban sem szerencsés nekik átadni a privát
forgalmat teljes analízisre.
Még szűrésre sem nagyon.
Guys will have been debating about whether there are gek girls or
the causes behind the lack of them, and one of the point raised was
the lack of will to pursue boring algorithmic questions. Funny
that.
Oh, what I wanted to talk about was one of the most boring and
simple and everyday things in programming: trimming the leading and
trailing spaces from strings (remove them from the beginning and
the end, that's it), and the Perl language. At that point all
non-programmers and people who cannot speak perl or regular
expressions are relieved from duty, go and get some food.
For those that remained, you may well know that there is no "trim"
in perl, you usualy either use a module (Text::Trim comes to mind)
or actually regexp it yourself. Most people have their favourite.
But they may not be the best ones!
Perlmonks (who are the pros in everything in perl, most of the
time) had their run at it several times, but I wasn't quite
satisfied about the depth of the analysis. I need the perfect trim!
So - following the Monk mindset - I gathered a few ideas, among
my usual one, and threw them in two testing modules, namely
Benchmark and Test::More; first to see the speed and second to
check corectness. Actually, it's been the other way around: first I
have thrown out those which were buggy and benchmarked the rest.
So here are those who did not fail the tests:
grin1 => '$str =~
s/^\s*(.*?)\s*$/$1/;',
mre => '$str =~
s/^\s*((?:.*\S)?)\s*$/$1/;',
silly => '$str =~ s/^\s+//;
$str=reverse $str; $str =~ s/^\s+//; $str=reverse $str;',
hellish => '$str =~ s/^\s*//; $str =~
s/\s*$//;',
hellish2=> '$str =~ s/^\s+//; $str =~
s/\s+$//;',
split => '$str =~ s/^\s+|\s+$//g;',
te_tri => '$str =~ s/\A\s+//; $str =~
s/\s+\z//;',
First one was what I usually used, and the rest was advised in
various places. The benchmark said:
mre: 13.8181 wallclock
secs (13.67 usr + 0.01 sys = 13.68 CPU) @ 730994.15/s
(n=10000000)
grin1: 11.2415 wallclock secs (10.81 usr
+ 0.04 sys = 10.85 CPU) @ 921658.99/s (n=10000000)
hellish: 6.81456 wallclock secs ( 6.50 usr +
0.01 sys = 6.51 CPU) @ 1536098.31/s (n=10000000)
silly: 4.13783 wallclock secs ( 4.14 usr
+ 0.00 sys = 4.14 CPU) @ 2415458.94/s (n=10000000)
hellish2: 1.69636 wallclock secs ( 1.70 usr + 0.00 sys
= 1.70 CPU) @ 5882352.94/s (n=10000000)
te_tri: 1.70796 wallclock secs ( 1.70 usr
+ 0.00 sys = 1.70 CPU) @ 5882352.94/s (n=10000000)
split: 1.03471 wallclock secs ( 1.04 usr
+ 0.00 sys = 1.04 CPU) @ 9615384.62/s
(n=10000000)
which is quite an interesting result. My version was quite a good
one until I have removed those which were slower AND buggy. Now not
quite that fast anymore.
One important point: this is perl v5.18.1, and it seems that
optimalisations in perl code matter.
Due to that may have happened the biggest surprise that
hellish code was magnitudes slower than anything else due to
many matching failures in matching the ending and now it ran quite
good. The
silly method gave fast results either which shows
how slow the end matching still is.
But to my greatest surprise the winner was the split method using
repeated matches, which was faster than the method used in
Text::Trim module (which is using the fancy way of the fixed up
hellish2 regexp pair), and not by a small margin but almost
twice as fast. And, oh, ten times faster than my original. :-)
So now I know what to use. :-)
Not really the cannibalism thing, but close. :-) Thanks goes to
Mark, the best chef I've ever had as a neighbour. (Technically he's
the only contender, but anyway.)
Ribs
- 2 tablesoons white wine vinegar (original 4 tbsp but I hate all
kinds of vinegar and other rotten goo of living things)
- 2 tbsp light soy sauce
- 2 tbsp dry sherry (if you have it, unlike us)
- 2 tbsp oil
- 4 tbsp honey
- 1 small tin tomato puree
for the sauce and
Hunt and kill the pig, acquire the ribs, kill the soy beans and
acquire the... etc.
Chop the ribs between the bones (every part with a bone in the
middle as a handle), put in a dish (with small oil) and in the oven
for 45 minutes at 180 °C (no air circulation or
whatsamacallit).
Make the sauce by carefully mixing the ingredients. (Careful
means you must not use sponges, knives, pencils and other
mismatching items to mix. And don't drink it, apart from the
sherry, at your option.)
After the 45 minutes you get the ribs, turn them and put the
sauce on them. Put them back for more 45 minutes (start to watch
around 30 and pull it if it's getting black and emitting smoke,
depends on the meat, the size of the slices and the phase of the
moon).
Eat. (I like it cold, too.)
(Original recipe contained "marinate the ribs in the sauce for a
day" but experience showed no measurable difference. YMMV)