summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2021-10-28 23:42:12 +0200
committerAnton Luka Šijanec <anton@sijanec.eu>2021-10-28 23:42:12 +0200
commitd3a289e2c987f0ce002faee70d605cd85e79c13f (patch)
tree7633d993ed7676c49e88242a90ab8187f3dc8406
parentsaloma (diff)
downloadsola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar.gz
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar.bz2
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar.lz
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar.xz
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.tar.zst
sola-gimb-3-d3a289e2c987f0ce002faee70d605cd85e79c13f.zip
-rw-r--r--mat/predstavitev/.gitignore13
-rw-r--r--mat/predstavitev/Makefile21
-rw-r--r--mat/predstavitev/dokument.tex164
-rw-r--r--mat/predstavitev/osnutek.md99
4 files changed, 297 insertions, 0 deletions
diff --git a/mat/predstavitev/.gitignore b/mat/predstavitev/.gitignore
new file mode 100644
index 0000000..60b084d
--- /dev/null
+++ b/mat/predstavitev/.gitignore
@@ -0,0 +1,13 @@
+dokument.aux
+dokument.auxlock
+dokument.bcf
+dokument.log
+dokument.nav
+dokument.out
+dokument.pdf
+dokument.run.xml
+dokument.snm
+dokument.synctex.gz
+dokument.toc
+stderr.log
+stdout.log
diff --git a/mat/predstavitev/Makefile b/mat/predstavitev/Makefile
new file mode 100644
index 0000000..641a275
--- /dev/null
+++ b/mat/predstavitev/Makefile
@@ -0,0 +1,21 @@
+default:
+ @echo "Makefile za predstavitev o kriptografiji."
+ @echo "recepti:"
+ @echo "- d: prenese+prevede zunanje datoteke z Interneta (potreben wget)"
+ @echo "- update: git pull origin master (potreben git)"
+ @echo "- g: generira PDF (download moraš narediti ti) (p. f5ff, biber, latex)"
+ @echo "- clean: izbriše avtomatsko generirane stvari in slike (razen PDF)"
+
+d:
+ echo nič
+
+update:
+ git pull origin master
+
+g:
+ ~/projects/doc/f5ff.sh dokument
+ biber dokument
+ ~/projects/doc/f5ff.sh dokument
+
+clean:
+ rm -f *.aux *.auxlock *.bbl *.bcf *.blg *.dvi *.log *.nav *.out *.run.xml *.snm *.toc *.synctex.gz stdout.log stderr.log
diff --git a/mat/predstavitev/dokument.tex b/mat/predstavitev/dokument.tex
new file mode 100644
index 0000000..0f7b78f
--- /dev/null
+++ b/mat/predstavitev/dokument.tex
@@ -0,0 +1,164 @@
+% do-vimlatex-onwrite
+\documentclass[aspectratio=1610]{beamer}
+\usepackage[utf8]{inputenc}
+\usepackage{etoolbox}
+% \usepackage[hidelinks]{hyperref}
+% \usepackage[a4paper, total={7in, 10in}]{geometry}
+\usepackage{graphicx}
+\usepackage{hologo}
+\usepackage{amssymb}
+\usepackage{pgfplots}
+% \usepackage[inline]{enumitem}
+\usepackage{amsmath}
+\usepackage{siunitx}
+\usepackage{multicol}
+\usepackage{tabularcalc}
+\usepackage{mathtools}
+\usepackage{float}
+\usepackage{tasks}
+\usepackage{environ}
+\usepackage[normalem]{ulem}
+\usepackage{pgfplotstable}
+\usepackage[slovene]{babel}
+\usepackage[backend=biber,style=iso-authoryear,sortlocale=cs_CZ]{biblatex}
+\usepackage[ddMMyyyy]{datetime}
+\usepackage{ccicons}
+\usepackage{textcomp}
+\usepackage{animate}
+\addbibresource{dokument.bib}
+\usetheme{Madrid}
+\setbeamertemplate{itemize items}[ball]
+\setbeamertemplate{caption}[numbered]
+\usetikzlibrary{calc} %% not really needed............. idk.
+\usetikzlibrary{external}
+\tikzexternalize
+% \usepackage{xcolor}
+\sisetup{output-decimal-marker = {,}, quotient-mode=fraction,per-mode=fraction} % per-mode=symbol
+\newcommand\ddfrac[2]{\frac{\displaystyle #1}{\displaystyle #2}}
+\newcommand{\functionSamples}{100} % fix to fancier value upon release, keep low during development
+\newcommand\shortlink[1]{\href{https://xn--jha/#1}{\texttt{https://ž.ga/#1}}}
+\newcommand{\razhroscevanje}{1}
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \let \footnote \thanks
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}% <------
+ \@author% <------ Authors
+ \end{tabular}\par}% <------
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+%opening
+
+\makeatletter
+\newcommand{\xslalph}[1]{\expandafter\@xslalph\csname c@#1\endcsname}
+\newcommand{\@xslalph}[1]{%
+ \ifcase#1\or a\or b\or c\or \v{c}\or d\or e\or %f\or g\or h\or i%
+ \or j\or k\or l\or m\or n\or o\or p\or r\or s\or %\v{s}%
+ \or t\or u\or v\or z\or \v{z}%%
+ \else\@ctrerr\fi%
+}
+%\AddEnumerateCounter{\xslalph}{\@xslalph}{m}\\
+\providecommand\@enhook{}
+\g@addto@macro\@enhook{%
+ \ifx *\@entemp\def\@tempa{\@enLabel\xslalph}%
+ \fi}
+\makeatother
+
+\newcommand*\textfrac[2]{
+ \frac{\text{#1}}{\text{#2}}
+}
+\renewcommand\abstractname{Povzetek}
+\renewcommand\contentsname{Kazalo vsebine}
+\renewcommand\figurename{Slika}
+\renewcommand\abstractname{Povzetek}
+\newcommand{\iic}{I\textsuperscript{2}C }
+\title{Uvod v kriptografijo}
+\subtitle{Matematika}
+\author{Anton Luka Šijanec, 2. a}
+\institute{Gimnazija Bežigrad}
+\date{V šestek, 31. februarja 2038}
+\newcommand\vektor{\overrightarrow}
+% \titlegraphic{\includegraphics[width=\textwidth,height=.5\textheight]{img/jangce.jpg}}
+
+% \everymath{\displaystyle} % https://tex.stackexchange.com/a/32847/212260
+\begin{document}
+
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}
+ \frametitle{Vsebina predstavitve}
+ \begin{multicols}{2}
+ \tableofcontents
+ \end{multicols}
+\end{frame}
+
+\begin{frame}
+ \frametitle{\secname}
+ \begin{multicols}{2}
+ \begin{itemize}
+ \item Nepravilno doziran $P_0$ --- po odklopu kompresorja je ventilček še nekaj časa odprt
+ \item Nepravilno doziran $V_0$
+ \item Nepravilno kalibrirana vaga - kalibriral sem jo s silo teže enega litra vode
+ \item Raketa ni bila izstreljena navpično
+ \item Podporni \say{L} nosilec se je ukrivil pod veliko težo
+ \item Tri meritve ne morejo biti časovno usklajene, saj merilnik ni izmeril vsakič ob isti milisekundi, temveč vsakič z zamikom --- merilnik sile ne pozna časa odprtja rakete
+ \item Turbulentnost toka se s hitrostjo pretoka veča
+ \end{itemize}
+ \begin{figure}[H]
+ \centering
+ \includegraphics[width=0.5\textwidth, align=270]{dozirka.jpg}
+ \caption{Nepravilna merilna oprema}
+ \end{figure}
+ \end{multicols}
+\end{frame}
+
+\section{Viri}
+\begin{frame}{\secname}
+ \nocite{*}
+ \printbibliography[title={Viri}]
+\end{frame}
+\subsection*{Licence slik}
+\begin{frame}{\secname}{\subsecname}
+ \begin{itemize}
+ % \setcounter{enumi}{-1}
+ % \item \href{https://xn--jha.ga/raydevlin}{Ray Devlin} \href{https://w.wiki/nbq}{\textit{Wanzhou City Slums}} \ccLogo\ccAttribution\ CC-BY 2.0 Generic (\shortlink{ccby20g})
+ \item Vse slike so \copyright Anton Luka Šijanec 2021
+ \end{itemize}
+\end{frame}
+\section{Zaključek}
+\begin{frame}{\secname}
+\begin{itemize}
+\item Hvala za pozornost!
+
+\item Vprašanja?
+
+\item \small %Ta dokument je informativne narave in se lahko še spreminja.
+Najnovejša različica, to je \hologo{LaTeX} izvorna koda in PDF dokumenti, je na voljo v mojem šolskem Git repozitoriju na naslovu \url{https://git.sijanec.eu/sijanec/sola-gimb-3/}.
+Povezava za prenos zadnje različice tega dokumenta v PDF obliki je \url{https://git.sijanec.eu/sijanec/sola-gimb-3/raw/branch/master/mat/predstavitev/dokument.pdf}.
+\end{itemize}
+\end{frame}
+\if\razhroscevanje1
+ \subsection*{Razhroščevalne informacije}
+ \begin{frame}{\secname}{\subsecname}
+ \begin{itemize}
+ \item Konec generiranja dokumenta: \today\ ob \currenttime.
+ \item Grafi imajo natančnost \functionSamples\space točk na graf.
+ %\item Dokument se je generiral R0qK1KR2 \SI{}{\second}.
+ \item Doument se je generiral aaasecgeninsaaa \SI{}{\second}.
+ \item Pred objavo izklopite razhroščevanje. To storite tako, da v glavi dokumenta nastavite ukaz \texttt{razhroscevanje} na 0.
+ \end{itemize}
+ \end{frame}
+\fi
+\end{document}
diff --git a/mat/predstavitev/osnutek.md b/mat/predstavitev/osnutek.md
new file mode 100644
index 0000000..d8c9200
--- /dev/null
+++ b/mat/predstavitev/osnutek.md
@@ -0,0 +1,99 @@
+Drobljanci o kriptografiji in RSA
+=================================
+
+Moderna kriptografija
+---------------------
+
+Kriptografija je veda o matematičnih tehnikah za dosego informacijske varnosti, torej zaupnosti, celovitosti podatkov, overjanja identitete in podatkov in konec koncev tudi ekonomičnosti prenosa (da podpisi in sporočila niso predolga -- med drugim v tem ECDSA premaga RSA. stiskanje podatkov je pa že nekaj drugega, vendar vseeno pazimo na BREACH napade (glej diplomsko delo spodaj)). Ker močno temelji na matematičnih algoritmih, jo štejemo kot vejo matematike. Pri moderni kriptografiji govorimo o poznanih in razumljivih algoritmih, ki na podlagi nekih skrivnosti, torej skrivnih ključev, delujejo in dosegajo prej opisano (Kerckhoffovo načelo). Glavna težnja po razvoju moderne kriptografije je bila v času tekmovanja velesil.
+
+Izpostavimo lahko šifrirni stroj Enigma, ki so ga v drugi svetovni vojni uporabljale nemške oborožene sile. Predstavljal je skupno skrivnost med oddajnikom in prejemnikom informacij, saj je overil vsak posredovan čistopis -- izdelanega tajnopisa namreč med posredovanjem ni moč spreminjati ali brati.
+
+V osnovi algoritme grobo delimo na simetrično šifriranje in kriptografijo z uporabo javnega ključa. Simetrična kriptografija je bila do leta 1976 edina javno poznana metoda šifriranja, tedaj so na MIT iznašli in patentirali prvi nesimetrični algoritem -- RSA.
+
+Če se vrnemo nazaj k Enigmi: delovala je simetrično. Vsako sporočilo (oziroma čistopis) je bilo pred pošiljanjem pretvorjeno v šifrirano sporočilo (oziroma tajnopis) tako, da je bil vsak znak čistopisa nadomeščen z nekim drugim znakom. Ker pa bi bilo zgolj šifriranje na podlagi menjave znakov lahko razlomiti, je Enigma pri zamenjavi upoštevala tudi trenutno pozicijo znaka v besedilu. S tem je brez poznanega zaporedja znakov zelo težko dobiti izvirno besedilo, prav tako pa bi vsak poseg v tajnopis vidno pokvaril rezultate pri osebi, ki besedilo dešifrira. Čeprav je tak sistem daleč od perfektnosti, je predstavljal nek znan algoritem, ki ga je lahko vojni nasprotnik poznal, pa brez pripadajočih kolutov za dešifracijo, kot jih je imel tisti, ki je sporočilo šifriral, ni mogel preprosto dešifrirati ali kako drugače posegati v sporočilo.
+
+V matematično utemeljenih šifrirnih algoritmih so šifrirni ključi ponavadi neka dolga števila, tukaj pa se pri simetričnem šifriranju pojavi problem. Isti ključ se namreč uporablja tako za šifriranje čistopisa, kot tudi za dešifriranje tajnopisa, zategadelj se mora ta ključ prenesti po komunikacijskem kanalu, ki ni berljiv nikomur, razen članom komunikacije. Temu rečemo vnaprej deljen ključ. Enigma je bila poleg tega še celo samopovratna, kajti z dvojnim šifriranjem spet pridemo do izvornega čistopisa, prav tako pa črke čistopisa nikoli ni zamenjala ista črka. Te sprva uporabne funkcije so kriptologi takoj spoznali za kritične napake, ki so zgolj olajšale kriptoanalizo oziroma lomljenje -- pridobivanje izvornega čistopisa brez dostopa do šifrirnega ključa. Poljaki so na tem področju dosegli velik napredek, z uporabo prvih programabilnih računalnikov Colossus Tommyja Flowersa, ki jih je programiral Alan Turing, so ob porabi dragocene elektrike za gretje triod proti koncu vojne z uporabo lingvističnih karakteristik nemščine, napak v algoritmu Enigme in izredno računalniško močjo poskušanja razlomili šifriranje vseh znanih tajnopisov, poslanih po radijskih zvezah med vojno.
+
+Pri praktični uporabi Enigme v drugi svetovni vojni so nemci uporabljali mesečne tajne kodne knjige z vnaprej določenimi povezavami med koluti in zaporedji kolutov za vsak dan posebej. Tako so bila razkrita zgolj sporočila nekega dne, v kolikor so bile povezave med koluti za nek dan razkrite -- vsaj takšen je bil načrt. Pri Enigmi so torej kot ključ štele povezave med znaki in razporeditve kolutov, le-tega pa je moč zapisati tudi v obliki števila.
+
+V vsakdanjem svetu se s kriptografijo pogosto srečamo na medmrežju. Le-ta nam omogoča izdelavo tajnih komunikacijskih kanalov po komunikacijskih kanalih, ki drugače sami po sebi niso tajni, kot na primer radijsko sevanje ali medmrežne povezave med tisočimi mrežnimi operaterji, ki lahko prestrezajo podatke po njih. Vendar pa bi bila vsakodnevna šifrirana komunikacija nepraktična, če bi uporabljali zgolj simetrične algoritme, saj bi morali za komunikacijo z vsakomer najprej tajno izmenjati deljen ključ, recimo osebno.
+
+Kriptografija javnega ključa pa leta 1977 reši problem izmenjave ključev. Tu z matematično operacijo, ki jo bom kasneje opisal, vsak udeleženec v komunikaciji izdela par ključev (števil), zasebnega in javnega. Šifriranje je enosmerna funkcija, ki ob podanem javnem ključu naslovnika in čistopisu izdela tajnopis, ki ga lahko preprosto nazaj pretvorimo v čistopis samo z dešifrirno funkcijo, za uporabo katere potrebujemo zasebni ključ naslovnika. Izmenjuje se seveda samo javni ključ, prednost izmenjave tukaj pa je, da za izmenjavo potrebujemo le zaupan in preverljiv komunikacijski kanal, ne pa nujno tajnega. Z drugimi besedami, poskrbeti moramo le, da zaupamo, da zasebni del ključa pozna le oseba, s katero komuniciramo, in ključ med prenosom ni bil zamenjan, vseeno pa nam je, če je še kdo na poti prebral ta ključ.
+
+Kriptografija javnega ključa ima ponavadi tudi sistem overjanja sporočil, kjer oseba overi oziroma podpiše neko sporočilo in s tem dokaže njegovo veljavnost. Vsak, ki ima dostop do javnega ključa in podpisanega sporočila, lahko matematično preveri, da je lahko sporočilo podpisal le imetnik pripadajočega zasebnega ključa. Pri RSA, kot bom razložil, to deluje tako, da oseba neko sporočilo šifrira, vendar v šifrirno funkcijo namesto javnega ključa poda svoj zasebni ključ. To ne velja pri vseh asimetričnih šifrirnih algoritmih, ampak vsakdo lahko z dešifrirno funkcijo, v katero poda tajnopis in pošiljateljev javni ključ, odšifrira veljaven čistopis in s tem potrdi lastništvo zasebnega ključa, kajti le lastnik pripadajočega zasebnega ključa lahko zašifrira sporočilo, ki se ga odšifrirati z javnim ključem (če izključimo poskušanje vseh možnih kombinacij zasebnega ključa).
+
+Varnost modernih kriptosistemov:
+* razpršitev: tajnopis mora izgledati kot naključni podatki
+* zmeda: zveza med ključem in tajnopisom mora biti zapletena, iz tajnopisa ne moremo preprosto izvedeti ključa, če tudi imamo veliko tajnopisov
+* velikost ključev: ključi naj bodo čim manjši, a ne toliko, da bi jih lahko z grobo silo zdaj ali v bližnji prihodnosti odkrili.
+
+Napadi na kriptosisteme:
+* groba sila, kriptoanaliza, algebraični napadi (reševanje sistemov enačb).
+* na implementacijo: stranski kanali (merjenje porabljenega časa in energije stroja), povzročanje napak pri računanju (s sevanjem, s kratkim padcem napetosti)
+
+Po kratkem uvodu pa še groba predstavitev koncepta delovanja RSA.
+
+Kaj pa je bilo prej -- zgodovina
+--------------------------------
+* Antika: Histius sužnju na golo glavo vtetovira sporočilo za Aristagorasa, ki ni vidno, ko glava ni obrita. Primer nekreckoffovskega sistema.
+* 475 pr. n. š.: Skital, uporabljen v šparti, je koncept pisanja sporočila na okoli valja z enakim polmerom kot valj prejemnika ovit trak po geometrijski višini. Primer paddinga, kajti valj mora biti popisan v celoti (tudi v novo vrsto gremo) (semkaj prilepi slikico).
+* 100 pr. n. š.: Cezarjeva šifra, ROTn, recimo ROT13 je pri ameriški abecedi samopovraten
+* Gaj Julij Cezar prelomi palico in del da vojščaku. Sklenitev palice kasneje dokaže, da je to res vojščak, ki ga je Cezar prej srečal.
+* Srednji vek: Papež Clerment VII naroči Gabrielu di Lavinda, da ustvari nomenclator, šifro, ki je zamenjevala besede in črke sporočil.
+* 1518: Johannes Trithemius spiše prvo knjigo o kriptografiji
+* 1790: Thomas Jefferson z matematikom Robertom Pattersonom izdela pripravo za šifriranje besedila na podlagi 26 vrtečih koles s pomešanimi črkami. Nastavimo kolesa na izbran čistopis, tajnopis pa je besedilo eno vrstico pod čistopisom. (semkaj prilepi slikico)
+* Frekvenčna analiza: razbijanje šifriranja, ko se nek del ponovi v čistopisu in tajnopisu večkrat.
+* 2003: Microsoft uporablja povsem neumno metodo XORanja Word dokumenta z geslom.
+
+Oseba A generira
+
+za narediti
+-----------
+* RSA algoritem
+* napadi na RSA algoritem
+* RSA padding kot rešitev
+* forward secrecy
+* (diffie-hellman) key exchange (tista slikica mešanja barv mi je zelo všeč)
+* teorija grup (ne znamo tega, vse spodaj je zato dokaj brez zveze)
+ - diskretni logaritem
+ + težko izračunljiv pri praštevilih (RSA) in eliptičnih krivuljah (ECDSA)
+ - Shorov kvantni algoritem za evektivno računanje diskretnega logaritma - iskanje d, če so nam v formuli (m^e)^d%n=m%n znani e, n in m
+ - algoritmi za faktorizacijo zmnožka dveh praštevil
+* zgoščevalne funkcije
+ https://ucilnica1213.fmf.uni-lj.si/course/view.php?id=32
+
+izrazi
+------
+* napad z grobo silo - bruteforce - poizkušanje vseh možnosti, recimo vseh ključev
+* čistopis - izvorno razumljivo besedilo
+* tajnopis - kriptogram - šifrirano nerazumljivo besedilo
+* šifriranje - funkcija (čistopis, šifrirni ključ)=>tajnopis
+* dešifriranje - funkcija (tajnopis, dešifrirni ključ)=>čistopis
+* podpisovanje - funkcija (čistopis, zasebni ključ)=>podpis
+* kriptoanaliza - iskanje pomanjkljivosti v kriptografskem algoritmu in zmanjševanje števila poskusov, potrebnih za pridobitev čistopisa, to so delali Zavezniki proti algoritmu Enigme v II. SV
+* kriptosistem - končna implementacija osnovnega algoritma, padding sheme in vsega ostalega, ki od uporabnika ne zahteva dodatnega znanja
+* padding - spreminjanje čistopisa v bolj komplicirano obliko pred operaciji s ključi, kar prepreči razkritje ključev
+
+zanimiva literatura
+-------------------
+* https://dk.um.si/IzpisGradiva.php?id=75135
+ - napadi na SSL: POODLE, BREACH, SSL Strip - 2019
+* https://dk.um.si/IzpisGradiva.php?id=14056
+ - diplomska naloga o diskretnem logaritmu - 2010
+ - strani 6 in 7 kot uvod
+* https://ucilnica1213.fmf.uni-lj.si/course/view.php?id=32
+ - FMF predmet kriptografija - 2012/13
+ - in, oh, kako ironično, preusmeri na zastarel TLS
+ - povezave do zanimivih člankov v preseku
+ + http://lkrv.fri.uni-lj.si/popularizacija/presek/klasicne.sifre.in.zdravstvena.kartica.1.pdf
+ + http://lkrv.fri.uni-lj.si/popularizacija/presek/diffie-hellmanov.dogovor.o.kljucu.2.pdf
+ + http://lkrv.fri.uni-lj.si/popularizacija/presek/postni.nabiralnik.in.kriptografski.protokoli.3.pdf
+ + http://lkrv.fri.uni-lj.si/popularizacija/presek/Jurisic_Zaupati_ali_ne_zaupati_Digitalni_podpis_v_kriptografiji_4.pdf
+ + http://lkrv.fri.uni-lj.si/popularizacija/presek/kako.deliti.skrivnosti.pdf
+ - ... v monitorju
+ + http://lkrv.fri.uni-lj.si/popularizacija/monitor_pametne.kartice.2.zasebno.zivljenje.javnih.kljucev.pdf
+ + http://lkrv.fri.uni-lj.si/popularizacija/monitor_pametne.kartice.3.napadi.in.obrambe.-.velike.skrivnosti.malih.kartic.pdf
+* https://ucilnica.fri.uni-lj.si/pluginfile.php/32408/mod_resource/content/0/drugi_del.pdf
+ - zgodovina kriptografije, tokrat FRI, manj matematično
+* http://www.cs.bc.edu/~straubin/crypto2017/Assignment1.pdf
+ - kratek opis neumnosti microsoftovskega XOR "šifriranja" študentom neke ameriške fakultete