kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/dokumentacija/... ·...
TRANSCRIPT
ZAVOD SV. STANISLAVA
ŠKOFIJSKA KLASIČNA GIMNAZIJA
Avtor: Peter Berkopec
Mentorica: Helena Starc Grlj
Šolsko leto: 2017 / 2018
Kodiranje sporočil - kriptografija Maturitetna seminarska naloga
Kodiranje sporočil - kriptografija
2
Vsebina Povzetek ..................................................................................................................................... 3
Abstract ...................................................................................................................................... 3
1 Uvod .................................................................................................................................... 6
1.1 Predstavitev problema ................................................................................................ 6
1.2 Programska in strojna oprema .................................................................................... 7
2 Teoretični del seminarske naloge ........................................................................................ 8
2.1 Šifriranje ...................................................................................................................... 8
2.2 Potrebno znanje ........................................................................................................ 10
2.2.1 Android Studio ...................................................................................................... 10
2.2.2 Android aplikacija ................................................................................................. 11
3 Praktičen del maturitetne seminarske naloge .................................................................. 12
3.1 Opis rešitve ................................................................................................................ 12
3.2 Navodila za uporabo .................................................................................................. 13
3.3 Končni program ......................................................................................................... 16
4 Zaključek ............................................................................................................................ 28
4.1 Ocena dela ................................................................................................................. 28
4.2 Možne izboljšave ....................................................................................................... 28
5 Viri ..................................................................................................................................... 29
Kodiranje sporočil - kriptografija
3
Povzetek
Cilj te maturitetne seminarske naloge je bil ustvariti funkcionalno android aplikacijo, ki
lahko šifrira in dešifrira dan tekst. Tu je opisan postopek, vsa programska oprema in potrebna
znanja. V to spada tudi nekaj osnovnih podatkov o Android Studio, višjem programskem jeziku
Java, strukturi android aplikacij in opis različnih šifrirnih postopkov.
Abstract
My goal with this assigment was to create a functional android application, that is
capable of encrypting a given text. In this paper I have described all necessary software and
required knowledge along with the procedure of my work. This includes some basic information
about Android Sudio, programming language Java, the structure of android applications and a
description of the different encryption algorithms.
Ključne besede Android Studio, aplikacija, android, Java, postavitev, šifriranje
Stvarno Kazalo
activity ...................................................................... 9, 10, 11, 13, 15, 16, 18, 20, 22, 24, 25, 26
android .................................................................................................................... 3, 5, 9, 26, 28
Android Studio ..................................................................................................... 3, 4, 5, 8, 9, 28
aplikacija .......................................................................................................................... 3, 9, 26
besedilo ............................................................................................................................. 6, 8, 10
gumb ................................................................................................................................... 11, 13
Java ............................................................................................................................... 3, 4, 8, 10
ključ ...................................................................................................................................... 6, 10
postavitev ......................................................................................................................... 3, 9, 15
program .......................................................................................................................... 6, 11, 14
šifriranje ........................................................................................................................... 3, 6, 26
zaslon .................................................................................................................................. 11, 13
Kodiranje sporočil - kriptografija
4
Kazalo slik Slika 1: Vigenerov kvadrat angleške abecede .............................................................. 10
Slika 2: Primer uporabe aplikacije ............................................................................... 12
Slika 3: Izbirna gumba .................................................................................................. 13
Slika 4: Gumba za izbiro šifre ...................................................................................... 13
Slika 5: Cezarjeva-zašifriraj ........................................................................................ 13
Slika 6:Cezarjeva-dešifriraj .......................................................................................... 14
Slika 7:Vigenere-zašifriraj ............................................................................................ 14
Slika 8: Vigenere-dešifriraj .......................................................................................... 15
Slika 9: Rezultati šifriranja "abeceda123" .................................................................... 15
Slika 10: Android manifest ........................................................................................... 16
Slika 11: MainActiviry.java: Uvozi in koda prvega gumba ......................................... 16
Slika 12: MainActivity.java - koda drugega gumba ..................................................... 17
Slika 13: activity_main.xml - začetna postavitev ......................................................... 17
Slika 14: activity_main.xml - Gumba s šiframa ........................................................... 17
Slika 15:activity_main.xml - izbirna gumba (radio buttons) ........................................ 18
Slika 16: Cezarjeva.java - Uvozi in potek funkcije onCreate() .................................... 18
Slika 17: Cezarjeva.java - potek funkcije cela() ........................................................... 19
Slika 18: Cezarjeva.java - Potek funkcij zasifriraj(...) in onOptionsItemSelected(...) . 19
Slika 19: activity_cezarjeva.xml .................................................................................. 20
Slika 20: CezarjevaOdsifrirana,java - uvozi in funkcija onCreate() ............................ 20
Slika 21: CezarjevaOdsifrirana.java - funkcija cela ..................................................... 21
Slika 22: CezarjevaOdsifrirana.java-funkciji odsifriraj(...) in onOptionsItemSelected(...)
.................................................................................................................................................. 21
Slika 23: activity_cezarjeva_odsifrirana.xml ............................................................... 22
Slika 24: Vigenere.java - uvozi in funkcija onCreate() ................................................ 22
Slika 25: Vigenere.java - funkcija cela() ...................................................................... 23
Slika 26: Vigenere.java - funkcije vigenere(...), rotate(...) in onOptionsItemSelected(...)
.................................................................................................................................................. 23
Slika 27: activity_vigenere.xml .................................................................................... 24
Slika 28: VigenereOdsifrirana.java - uvozi in onCreate() ............................................ 24
Slika 29: VIgenereOdsifrirana.java - funkcija cela() ................................................... 25
Slika 30:VigenereOdsifrirana.java - funkcije vigenereOd(...), rotate(...) in
onOptionsItemSelected(...) ....................................................................................................... 25
Kodiranje sporočil - kriptografija
5
Slika 31: activity_vigenere_odsifrirana.xml ................................................................ 26
Slika 32: Results.java ................................................................................................... 26
Slika 33: activity_results.xml ....................................................................................... 27
Kodiranje sporočil - kriptografija
6
1 Uvod
1.1 Predstavitev problema
Alice in Bob bi si rada po pošti privatno zmenila za svoj zmenek (kraj, čas in vsebino).
Žal pa jima prisluškuje Eva, ki bi rada izvedela vse to izvedela in jima uničila zmenek. Za varno
komunikacijo lahko dandanes Alice in Bob uporabita z mnoge kriptografskimi postopki (bolj
ali manj učinkovite). Toda temu čez zgodovino ni bilo tako, zato sem se odločil preučiti
zgodovino kriptografije in v aplikacijo vključiti dve bolj osnovni šifri.
Kriptografija me zanima že nekaj časa, zato se mi je ta seminarska naloga zdela popolna
priložnost, da naredim nekaj kriptografskega tudi v praksi. Aplikacijo bom delal v Android
studio, programu za razvijanje telefonskih aplikacij, s katerim sem se prvič srečal ob začetku
šolskega leta na krožku. Android Studio uporablja višji programski jezik Java, v katerem bom
prvič programiral tak projekt.
Kodiranje sporočil - kriptografija
7
1.2 Programska in strojna oprema
Tabela 1: Strojna oprema
Strojna oprema
Procesor Intel Core i5-6300HQ 2.30 GHz
RAM 8GB DDR4
Grafična kartica Nvidia GeForce
Zaslon 1920 x 1080
Tabela 2: Programska oprema
Programska oprema
Windows 10 Operacijski sistem
Google Chrome Spletni brskalnik
Android Studio Program za razvijanje android aplikacij
Microsoft Office Word Urejevalnik besedil
FileZilla Program za prenašanje datotek
Kodiranje sporočil - kriptografija
8
2 Teoretični del seminarske naloge
2.1 Šifriranje
Šifriranje je zelo stara ideja, saj so že v antičnih časih uporabljali šifre, čeprav so bili
kodi(znaki za dogovorjene pojme) in stenografija (skrivanje sporočila) bolj pogosti. Najbolj
znana je substitucijska Cezarjeva šifra, ki je ena od šifer ki sem se jih odločil vključiti v svoj
program. Pri substitucijski šifri zamenjamo ali črke v sporočilu ali pa črke v abecedi
zamaknemo, da dobimo neberljivo sporočilo. Problem le tega je da če nekdo ki hoče prebrati
sporočilo ve po kakšnem sistemu(algoritmu) je zašifriran ga z lahkoto dešifrira. Zato so razvili
monoalfabetsko šifro ki pa se ne zanaša na algoritem temveč na samo število možnosti. Ta šifra
uporablja povsem naključno sestavljeno abecedo- črke so pomešane brez sistema. Tako dobimo
ogromno število vseh možnosti. To šifro so razbili s frekvenco črk v besedilu. Ker ima vsak
jezik neke črke bolj pogoste kot druge, jih lahko tako najdemo v besedilu.
Cezarjeva šifra je bila, kot ime že namiguje, uporabljena že v starem veku in jo je
uporabljal Cezar. To je preprost postopek, ki šifrira z enako abecedo, toda zamaknjeno za n-
mest, ko je n ključ. Postopek ni kriptografsko varen, saj ga lahko dešifriraš že s preprostim
»brute force« napadom, ki preveri vse možnosti rešitev.
Naj bo ključ n=2. Tako se beseda KODIRANJE zašifrira v besedo MRFKŠCPLG, ki
izgleda kot skupek popolnoma nepovezanih črk. Po sistemu Cezarjeve šifre se K spremeni v
črko, ki se nahaja za n mest za njo, kar je v našem primeru M. O se spremeni v R, D se spremeni
v F in tako naprej. Dešifriranje je preprosto obraten postopek, pri katerem črko v kodiranjem
besedilu prestavimo za n mest po abecedi nazaj. M gre tako v K in tako dalje.
Tako so razvili Vigenerovo šifro, ki pa uporablja 25 različnih abeced (oziroma toliko
kot jih ima abeceda v uporabljenem jeziku) ki pa se uporablja s pomočjo ključne besede. To
premeša frekvenco pojavljenih črk, ker se uporablja druga abeceda vsako n-črk, ko je n dolžina
ključa. To pomeša frekvenco pojavljanja določenih znakov v besedilu, kar je rešilo problem
dešifriranja teh sporočil. Toda tudi to šifro so razbili z frekvenco vsakih n-znakov. Taka
šifrirana besedila je zato težko (oz. nemogoče) zlomiti, če besedilo ni dovolj dolgo.
Za primer bom zakodiral besedilo: »zakodiraj to besedilo, ki je daljše od 25 črk«.
Uporabil sem ključ: »ključ« in navadno slovensko abecedo.
Za lažje šifriranje na roko se uporablja Viginerov kvadrat.
Kodiranje sporočil - kriptografija
9
Tabela 3: Vigenerov kvadrat (s slovensko abecedo)
/ A B C Č D E F G H I J K L M N O P R S Š T U V Z Ž
A A B C Č D E F G H I J K L M N O P R S Š T U V Z Ž
B B C Č D E F G H I J K L M N O P R S Š T U V Z Ž A
C C Č D E F G H I J K L M N O P R S Š T U V Z Ž A B
Č Č D E F G H I J K L M N O P R S Š T U V Z Ž A B C
D D E F G H I J K L M N O P R S Š T U V Z Ž A B C Č
E E F G H I J K L M N O P R S Š T U V Z Ž A B C Č D
F F G H I J K L M N O P R S Š T U V Z Ž A B C Č D E
G G H I J K L M N O P R S Š T U V Z Ž A B C Č D E F
H H I J K L M N O P R S Š T U V Z Ž A B C Č D E F G
I I J K L M N O P R S Š T U V Z Ž A B C Č D E F G H
J J K L M N O P R S Š T U V Z Ž A B C Č D E F G H I
K K L M N O P R S Š T U V Z Ž A B C Č D E F G H I J
L L M N O P R S Š T U V Z Ž A B C Č D E F G H I J K
M M N O P R S Š T U V Z Ž A B C Č D E F G H I J K L
N N O P R S Š T U V Z Ž A B C Č D E F G H I J K L M
O O P R S Š T U V Z Ž A B C Č D E F G H I J K L M N
P P R S Š T U V Z Ž A B C Č D E F G H I J K L M N O
R R S Š T U V Z Ž A B C Č D E F G H I J K L M N O P
S S Š T U V Z Ž A B C Č D E F G H I J K L M N O P R
Š Š T U V Z Ž A B C Č D E F G H I J K L M N O P R S
T T U V Z Ž A B C Č D E F G H I J K L M N O P R S Š
U U V Z Ž A B C Č D E F G H I J K L M N O P R S Š T
V V Z Ž A B C Č D E F G H I J K L M N O P R S Š T U
Z Z Ž A B C Č D E F G H I J K L M N O P R S Š T U V
Ž Ž A B C Č D E F G H I J K L M N O P R S Š T U V Z
Kodiranje sporočil - kriptografija
10
Slika 1: Vigenerov kvadrat angleške abecede
Zašifrirano besedilo se tako glasi: »jlukgtdjf zb moohouvk, nt vo aczvdb so 25 čoc«.
Vsaka črka je ohranila svoje mesto in znaki se prepišejo naprej. Toda črke se zakodirajo po
sedaj petih različnih cezarjevih šifrah, toda besedilo bi lahko zakodirano s poljubno dolgim
ključem, kar izredno poveča število vseh možnih ključev. Prva črka Z se je spremenila v J, saj
se Z stolpec križa z K vrstico v polju J, ki postane prva črka. Naslednjo črko dobimo, če
pogledamo presečišče stolpca A in vrstice L. Zašifrirana vrednost je tako L. S to logiko
nadaljujemo do konca besedila.
Tako besedilo pa dešifriramo z obratnim postopkom. Tako npr. vzamemo prvo črko
šifriranega besedila, jo najdemo v tabeli in pogledamo, kjer se ta stolpec seka z vrstico, ki se
začne na s prvo črko ključa. Tam kjer se sekata je dešifrirana črka.
2.2 Potrebno znanje
2.2.1 Android Studio
Za uspešno izdelavo te projektne naloge moram bolj podrobno tudi spoznati v prvi vrsti
programski jezik Java, ki ga uporablja Android Studio. Osvajanje sintaktičnega dela tega
programskega jezika mi najverjetneje ne bo vzelo preveč težav saj sem se že dodobra spoznal
s C++.
Naslednji del, ki bo najverjetneje najzahtevnejši bo uporabljati sam Android Studio.
Nekaj sem sem z njim že spoznal na krožku, toda ker za samostojno aplikacijo potrebuješ veliko
znanja, bo potrebno izredno veliko časa za osvojitev vseh funkcij in postopkov.
Kodiranje sporočil - kriptografija
11
To je možno razširiti s spletnim mestom GitHub, na katerem se lahko ljudje delijo svojo
kodo z ostalimi. To bi bilo mojemu projektu v pomoč, saj bom moral za kakšne nejasnosti moral
imeti lahko dostopno kodo moje aplikacije.
2.2.2 Android aplikacija
Android aplikacija ima zelo značilno strukturo. Android Studio ima različne poglede v
katerih se datoteke razvrstijo na različne načine. Najbolj celotno strukturo pokaže android
pogled, možni pa so tudi projektni (kjer so datoteke tam kot na disku) itd. Opisoval bom kako
so datoteke razvrščene v Android pogledu.
Glavna delitev je na začetku na »app« mapo in mapo »Gradle Scripts«. »App« mapa pa
nadalje vključuje tri manjše podmape: »manifests«, »java« in »res«. V mapi podmapi
»manifests« je samo ena .xml datoteka, ki se imenuje »AndroidManifest«. Tam je je tj. activity-
ji in kateri activity se zažene, ko kliknemo na ikono na telefonu. Naslednje pomembne datoteke
so .java v mapi src. Tam se običajno v android aplikacijah nahajajo kakšne pomembne funkcije
in (kar je pomembno za mojo seminarsko maturitetno nalogo) različni activity-ji. Activity-ji v
aplikaciji služijo kot različne zaslonske interaktivne slike. Moja aplikacija ima npr. 6 takih .java
datotek. V »res« podmapi pa se nahajajo podmape »drawable«, »layout«, »menu«, »mipmap«
in »values«. Od teh v moji aplikaciji neposredno uporabljam »layout« in »mipmap« podmapi.
V podmapi »layout« se nahajajo .xml datoteke, ki se uporabljajo za postavitev activity-jev. V
podmapi »mipmap« pa se nahajajo različne velikosti slike, ki jo vidimo na meniju v telefonu.
V ostalih podmapah pa se nahajajo ostale »res« datoteke (npr. v »values« se nahajajo besedilne
datoteke, v »drawable« se nahajajo slike, ki jih izrišeš s kodo itd.).
V glavni mapi »Gradle Scripts« pa se nahajajo različne že zgrajene datoteke. Ta del
zaseda tudi največ prostora na disku. Android Studio gradi te datoteke že med samim
spreminjanjem kode v urejevalniku.
Kodiranje sporočil - kriptografija
12
3 Praktičen del maturitetne seminarske naloge
3.1 Opis rešitve
Program sem napisal v programskem jeziku Java, ki ga uporablja Android studio.
Uporabnik mora najprej izbrati po kakšnem postopku bi rad zašifriral ali dešifriral. Program
nato odpre potreben activity (uporabljal bom angleški izraz, ker ni slovenske ustreznice) in
zbere od uporabnika potrebne podatke (besedilo in ključ). Pri tem lovi vse možne izjeme, ki so
pogoste pri uporabnikih (napačni znaki, prazna polja, nepravilen ključ itd.) in ga temu primerno
opozori. Če se je vse izteklo brez napak, potem mu izpiše zašifrirano oz. dešifrirano besedilo.
Slika 2: Primer uporabe aplikacije
Kodiranje sporočil - kriptografija
13
3.2 Navodila za uporabo
Poleg dokumentacije sta priložena .zip in .apk datoteki. Za pregled .zip datoteke
(samoumevno je potrebno imeti Android Studio) je potrebno ekstrahirati to datoteko v mapo,
ki se nahaja na naslovu C:\Users\»Uporabnik«\AndroidStudioProjects. Ko to storimo lahko
odpremo projekt »seminarska«. Priloženo .apk datoteko pa lahko samo naložimo na telefon in
inštaliramo seminarska.apk datoteko.
Ko zaženemo program, se nam prikaže zaslon na katerem imamo dve odločitvi: ali
želimo zašifrirati ali dešifrirati sporočilo in katero šifro bi radi uporabili. Ko označimo izbirni
gumb, potem pa pritisnemo gumb, s katerim izberemo vrsto šifriranja tj. Vigenerovo ali
Cezarjevo šifro. Če uporabnik slučajno pritisne gumb za izbiranje šifriranja, potem ga program
opozori, da mora najprej izbrati, kaj želi storiti s šifrirnim postopkom.
Slika 3: Izbirna gumba
Glede na naše odločitve lahko dobimo enega izmed štirih možnih activity-jev. V sami postavitvi
strani so si zelo podobni, toda vsak je odgovoren za drugačen postopek pri obeh šifrah.
Slika 5: Cezarjeva-zašifriraj
Slika 4: Gumba za izbiro šifre
Kodiranje sporočil - kriptografija
14
Slika 6: Cezarjeva-dešifriraj
Slika 7: Vigenere-zašifriraj
Kodiranje sporočil - kriptografija
15
Slika 8: Vigenere-dešifriraj
Ko vpišemo vse podatke, nas vrne na zaslon z rezultati. Na njem se nahaja gumb za vrnitev na
prvi zaslon.
Slika 9: Rezultati šifriranja "abeceda123"
Na vsaki točki programa, razen na glavnem zaslonu obstaja gumb za vrnitev na prejšnji activity.
Kodiranje sporočil - kriptografija
16
3.3 Končni program
Slika 10: Android manifest
Slika 11: MainActiviry.java: Uvozi in koda prvega gumba
Kodiranje sporočil - kriptografija
17
Slika 12: MainActivity.java - koda drugega gumba
Slika 13: activity_main.xml - začetna postavitev
Slika 14: activity_main.xml - Gumba s šiframa
Kodiranje sporočil - kriptografija
18
Slika 15:activity_main.xml - izbirna gumba (radio buttons)
Slika 16: Cezarjeva.java - Uvozi in potek funkcije onCreate()
Kodiranje sporočil - kriptografija
19
Slika 17: Cezarjeva.java - potek funkcije cela()
Slika 18: Cezarjeva.java - Potek funkcij zasifriraj(...) in onOptionsItemSelected(...)
Kodiranje sporočil - kriptografija
20
Slika 19: activity_cezarjeva.xml
Slika 20: CezarjevaOdsifrirana,java - uvozi in funkcija onCreate()
Kodiranje sporočil - kriptografija
21
Slika 21: CezarjevaOdsifrirana.java - funkcija cela
Slika 22: CezarjevaOdsifrirana.java-funkciji odsifriraj(...) in onOptionsItemSelected(...)
Kodiranje sporočil - kriptografija
22
Slika 23: activity_cezarjeva_odsifrirana.xml
Slika 24: Vigenere.java - uvozi in funkcija onCreate()
Kodiranje sporočil - kriptografija
23
Slika 25: Vigenere.java - funkcija cela()
Slika 26: Vigenere.java - funkcije vigenere(...), rotate(...) in onOptionsItemSelected(...)
Kodiranje sporočil - kriptografija
24
Slika 27: activity_vigenere.xml
Slika 28: VigenereOdsifrirana.java - uvozi in onCreate()
Kodiranje sporočil - kriptografija
25
Slika 29: VIgenereOdsifrirana.java - funkcija cela()
Slika 30:VigenereOdsifrirana.java - funkcije vigenereOd(...), rotate(...) in onOptionsItemSelected(...)
Kodiranje sporočil - kriptografija
26
Slika 31: activity_vigenere_odsifrirana.xml
Slika 32: Results.java
Kodiranje sporočil - kriptografija
27
Slika 33: activity_results.xml
Kodiranje sporočil - kriptografija
28
4 Zaključek
4.1 Ocena dela
S svojim delom sem približno zadovoljen, saj sem samostojno napravil aplikacijo za
android, čeprav tega še nikoli pred to nalogo nisem naredil. Mogoče sem prav zato naletel na
mnoge težave predvsem povezane s slabim načrtovanjem, ki pa sem jih kasneje popravljal. Na
koncu pa je nastala kar solidna aplikacija za mojo raven prejšnjega znanja.
Na spodnjem grafu je razvidno koliko ur je bilo vloženih v delo.
Graf 1: Ocena ur opravljenega dela
4.2 Možne izboljšave
Pri projektu s temo kriptografije so vedno možnosti za izboljšavo. Prva možna
izboljšava bi bila narediti približen potek razvoja aplikacije, ker bi mi to v kasnejših korakih
precej olajšalo delo. Najbolj je bila moja neizkušenost očitna, ko sem se odločil, da bom za
navigacijo po aplikaciji uporabil spinner, ki pa ni optimalen za tako uporabo. Poleg tega je
njegova sintaksa precej neobičajna (vsaj za bolj začetnike), zato sem se na tem problemu mučil
kar precej časa. Nadalje je tudi v končni aplikaciji precej odvečnih delov kode, ki bi se jih
znebil. Moja neizkušenost se opazi že v postavitvi aplikacije, v kateri sem težave z
uporabnikovimi odločitvami reševal predvsem z acitvity-ji, pa čeprav to ni najlepše in najbolj
učinkovito. Tako bi zmanjšal število activity-jev na tri: glavni meni, ki bi hkrati opravljal
funkcijo izpisa podatkov in za vsako šifriranje enega. Tako bi bila tudi koda veliko čistejša in
jasnejša.
Druga sfera možnih izboljšav pa je v sami vsebini. V tako aplikacijo bi se dalo vključiti
od kakšnih eksotičnih starih šifer pa vse do današnjih nezlomljivih šifer, ki jih uporabljamo
vsakodnevno dandanes. V tako aplikacijo pa bi lahko vključil tudi kakšno anekdoto vključenih
šifer, saj bi to povečalo zanimanje za nekatere šifre, ki imajo res bogate in zanimive zgodbe.
0
5
10
15
20
25
30
35
Proučevanje gradiva Programiranje samefunkcionalnosti programa
Programiranje izgleda Pisanje dokumentacije
Ure
Ure
Kodiranje sporočil - kriptografija
29
5 Viri
• GitHub (online) [uporabljeno:31.3.2018]. Dostopno na: https://github.com/
• Singh, S..: Knjiga šifer, Umetnost šifriranja od starega Egipta do kvantne
kriptografije, Tržič, Učila International, 2006
• Smart.,N.: Cryptography: An Introduction (3rd Edition) (online) [uporabljeno:
17.2.2018]. Dostopno na: https://www.cs.umd.edu/~waa/414-F11/IntroToCrypto.pdf
• Android Studio [uporabljeno:17.3.2018]. Dostopno na:
https://developer.android.com/studio/index.html
• Štamcar, Marko [po pripovedi], Ljubljana, 2018