%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% I, the copyright holder of this work, release this work into the %% public domain. This applies worldwide. In some countries this may %% not be legally possible; if so: I grant anyone the right to use %% this work for any purpose, without any conditions, unless such %% conditions are required by law. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[ printed, %% This option enables the default options for the %% digital version of a document. Replace with `printed` %% to enable the default options for the printed version %% of a document. table, %% Causes the coloring of tables. Replace with `notable` %% to restore plain tables. nolof, %% Prints the List of Figures. Replace with `nolof` to %% hide the List of Figures. nolot, %% Prints the List of Tables. Replace with `nolot` to %% hide the List of Tables. oneside, color %% More options are listed in the user guide at %% . ]{fithesis3} %% The following section sets up the locales used in the thesis. \usepackage[resetfonts]{cmap} %% We need to load the T2A font encoding \usepackage[T1,T2A]{fontenc} %% to use the Cyrillic fonts with Russian texts. \usepackage[ main=czech, %% By using `czech` or `slovak` as the main locale %% instead of `english`, you can typeset the thesis %% in either Czech or Slovak, respectively. german, russian, czech, slovak, english %% The additional keys allow ]{babel} %% foreign texts to be typeset as follows: %% %% \begin{otherlanguage}{german} ... \end{otherlanguage} %% \begin{otherlanguage}{russian} ... \end{otherlanguage} %% \begin{otherlanguage}{czech} ... \end{otherlanguage} %% \begin{otherlanguage}{slovak} ... \end{otherlanguage} %% %% For non-Latin scripts, it may be necessary to load additional %% fonts: \usepackage{paratype} \def\textrussian#1{{\usefont{T2A}{PTSerif-TLF}{m}{rm}#1}} %% %% The following section sets up the metadata of the thesis. \thesissetup{ date = \the\year/\the\month/\the\day, university = mu, faculty = fi, type = mgr, author = Bc. Radim Lipovčan, gender = m, advisor = RNDr. Vlasta Šťavová, title = {Používání a získávání kryptoměny Monero z pohledu použitelné bezpečnosti}, TeXtitle = {Používání a získávání kryptoměny Monero z pohledu použitelné bezpečnosti}, keywords = {Monero, usable security, cryptocurrency, mining, pool, blockchain}, TeXkeywords = {Monero, usable security, cryptocurrency, mining, pool, blockchain}, } \thesislong{abstract}{ This is the abstract of my thesis, which can span multiple paragraphs. } \thesislong{thanks}{ This is the acknowledgement for my thesis, which can span multiple paragraphs. } %% The following section sets up the bibliography. \usepackage{csquotes} \usepackage[ %% When typesetting the bibliography, the backend=biber, %% `numeric` style will be used for the style=numeric, %% entries and the `numeric-comp` style citestyle=numeric-comp, %% for the references to the entries. The sorting=none, %% entries will be sorted in cite order. sortlocale=auto %% For more unformation about the available ]{biblatex} %% `style`s and `citestyles`, see: %% . \addbibresource{Thesis.bib} %% The bibliograpic database within %% the file `example.bib` will be used. \usepackage{makeidx} %% The `makeidx` package contains \makeindex %% helper commands for index typesetting. %% These additional packages are used within the document: \usepackage{paralist} \usepackage{amsmath} \usepackage{amsthm} \usepackage{amsfonts} \usepackage{url} \usepackage{menukeys} %packages \usepackage{float} \usepackage{hyperref} \usepackage[strings]{underscore} %timeline \usepackage{xcolor} \newcommand\ytl[2]{ \parbox[b]{8em}{\hfill{\color{cyan}\bfseries\sffamily #1}~$\cdots\cdots$~}\makebox[0pt][c]{$\bullet$}\vrule\quad \parbox[c]{.7\linewidth}{\vspace{7pt}\color{red!40!black!80}\raggedright\sffamily #2.\\[7pt]}\\[-3pt]} %caption \usepackage{caption} \begin{document} \chapter{Úvod} %% Komentář Vlasta 10.7.: tady někde (možná samostatná kapitola) bude nutné nadefinovat pojmy. Nazvat to "Kryptoměny" a popsat tam myšlenku, z čeho se skládají, co je blockchain, co to znamená fork... a tak. %% Komentář Vlasta 10.7.: Nechceš to psát anglicky? Myslím, že by sis tím ušetřil hromadu práce s překlady. Dotazník bude v jakém jazyce? \chapter{Kryptoměna Monero} Monero je opensource kryptoměnou, která je vyvíjená v rámci Monero projektu za účelem vytvoření decentralizované a anonymní měny. Hlavním cílem je dát uživateli plnou kontrolu nad předstředky, kterými disponuje. Znamná to tedy, že jednotlivé digitální transakce a počet peněz v pěněžence nelze dohledat bez vygenerování pohledu uživatelem \cite{moneroprojectgithub}. Hlavními body, kterými se Monero oproti jiným kryptoměnám liší, jsou: \begin{itemize}\itemsep0em \item Blockchain je veřejný, většina jeho částí je ovšem šifrována \ref{sec:blockchain}. \item Odesílatel transakce je skrytý díky Ring Signatures \ref{sec:ringsignatures}. \item Množství odesílané měny je šifrováno \ref{sec:ringct}. \item Transakční historie a příjemce je neveřejný použitím skrytých adres (stealth addresses) \ref{sec:stealthaddresses}. \end{itemize} \section{Původ a zaměření kryptoměny} Cesta vzniku samotného Monera je složená z několika forků a předcházejících projektů. Prvním z nich byl Bytecoin jakožto proof-of-concept kryptoměna používající jako první protokol CryptoNote, který byl publikován na začátku roku 2014 \cite{githubbytecoin}. % CryptoNote implementace ByteCoin -> https://github.com/monero-project/monero/commit/296ae46ed8f8f6e5f986f978febad302e3df231a Bytecoin měl ovšem problém s tzv. preminem, tedy stavem, kdy kryptoměna publikovaná na veřejnost má již velkou část peněz předem vytěženou. Zde se jednalo o vytěžení 82\% mincí před zveřejněním této měny \cite{fluffyponyonbytecoin}. % Duvod forku https://coinmetrics.io/papers/dissertation.pdf premine xx procent Toto byl důvod pro komunitu okolo anonymních kryptoměn, aby udělali hardfork a tím vytvořili kryptoměnu novou, BitMonero \cite{bitmonero}. % Fork Bytecoin -> BitMonero https://github.com/monero-project/monero/commit/1a8f5ce89a990e54ec757affff01f27d449640bc Důležitou změnou bylo oddělení hlavní části vývojářů a vytvoření samostatného forku s názvem Monero dne 23.06.2014 . Tím vznikla kryptoměna, která měla od počátku veřejně známý blockchain, jasně definovaný cíl a motivovaný tým vývojářů \cite{monerofork}. % Fork BitMonero -> Monero https://github.com/monero-project/monero/commit/003b1f909d416ab2c869b76176380c5f133bdad4#diff-c47c7c7383225ab55ff591cb59c41e6b % \begin{table} %\centering %\begin{minipage}[t]{\linewidth} %% Komentář Vlasta 10.7.: Návrh: v téhle kapitole by bylo moc hezká nějaká přehledová tabulka cca 5 největších kryptoměn, kde bys je porovnal podle vybraných kriterii. Třeba kriterium "Množství odesílané měny je šifrováno" by bylo v sloupečku a v pro každou kryptoměnu na řádek vyznačil, zda to splňuje nebo ne. Bylo by pak přehledně vidět čím je Monero tak vyjimečné a jak jsou na tom v těhle kriteriích ostatní kryptoměny. \subsection{Současný vývoj} Vývoj Monera je postaven na vydáních, která jsou plánovány na každých 6 měsíců. Přitom na rozdíl od jiných kryptoměn jde o pravidelné aktualizace, které vývojáři nechtějí spojovat s termínem hardfork. %% Komentář Vlasta 10.7.: Trochu popiš jak moc je Monero rozšířené. Pro představu v porovnání s dalšími kryptoměnami. Aby bylo jasné, že to není nějaká obskurní kryptoměna. % Monero attack https://lab.getmonero.org/pubs/MRL-0002.pdf Hlavními důvody pro tento způsob vývojového cyklu jsou: \begin{itemize}\itemsep0em \item Komunita očekává pravidelné aktualizace. \item Možnost upravovat mining algoritmus pro ASIC-resistance. \item Prostor pro pravidelná vylepšení. \end{itemize} \begin{figure}[H] \center \color{gray} \rule{\linewidth}{1pt} \ytl{03.03.2014}{ByteCoin - publikování na GitHub} \ytl{17.04.2014}{Fork ByteCoinu - vznik BitMonero kryptoměny} \ytl{23.07.2014}{Fork BitMonera - vznik Monero kryptoměny} \ytl{22.03.2016}{Monero v2 - úprava ringsize, čas bloku 120 sekund} \ytl{21.09.2016}{Monero v3 - rozdělení transakce na více částek} \ytl{05.01.2017}{Monero v4 - souběh normálních a RingCT transakcí} \ytl{15.04.2017}{Monero v5 - aktualizace velikosti bloku a algoritmu pro poplatky} \ytl{16.09.2017}{Monero v6 - vynucení RingCT transakcí s ringsize =>5} \ytl{06.04.2018}{Monero v7 - změna CryptoNight algoritmu kvůli ASIC, ringsize =>7} \ytl{--.10.2018}{Příští aktualizace sítě} \bigskip \rule{\linewidth}{1pt}% %\end{minipage}% %\color{black}\caption{Vývoj Monera} %\end{table} \color{black}\caption{Časová osa vývoje Monera} \label{monero-timeline} \end{figure} Zároveň je s těmito vydáními spojena řada chyb, které jsou průběžně opravovány. Mezi známé problémy Monera v minulosti patřily: \begin{itemize} \item Spam attack \begin{itemize} \item Šlo o zahlcení sítě při posílání transakcí kvůli poplatku za transakci 0.005 XMR. Rychlou opravou bylo úprava poplatku na 0.1XMR. Toto vedlo k implementaci dynamického poplatku za transakci, který je založený na zvolené prioritě platby \cite{monerospamattack}. %zdroj https://bitcointalk.org/index.php?topic=583449.msg8519146#msg8519146 \end{itemize} \item Split chain attack \begin{itemize} \item Cílené využití zranitelnosti ve výpočtu základu Merkle tree vedla k vytvoření dvou bloků se stejnou výškou a hashem na síti, lišily se ovšem 2 transakcemi na konci bloků \cite{macheta2014counterfeiting}. Tím vznikly dva různé chainy Monera. Chyba se týkala celého protokolu Cryptonote a všech kryptoměn na něm založených, v případě Monera komunita zastavila pohyb transakcí na burzách do dalšího dne, kdy byla vydána oprava \cite{cryptonotemerkletree}. \end{itemize} \item Analýza transakcí v blockchainu Monera \begin{itemize} \item Výzkum provedený v roce 2017 ukázal z pohledu anonymity problémy se systémem, jakým probíhají transakce. Nejdůležitějším z nich bylo objevení faktu, že při nastavení velikosti ring signature na nule můžeme v blockchainu vysledovat částku na výstupu transakce. \item Tento problém byl vyřešen vývojovým týmem záhy díky nasazení technologie RingCT při kterých zároveň nastavili na síti podmínku, při které velikost ring signature musí být \end{itemize} %zdroj https://eprint.iacr.org/2017/338.pdf \end{itemize} %zdroj https://getmonero.org/2017/05/17/disclosure-of-a-major-bug-in-cryptonote-based-currencies.html \subsection{Alternativy} Mimo Monero se snaží o anonymní vlastnosti měny i řada dalších projektů. Nejblíže Moneru je ByteCoin, ze kterého Monero vychází, má ovšem špatné jméno v krypto komunitě kvůli 82\% premine měny. Alternativu k Moneru se zachováním řady vlastností nabízí jeho fork Aeon, který využívá méně náročnou implementaci za cenu nižšího stupně anonymity. \begin{figure}[H] \centering \begin{tabular}{p{0.1\linewidth}p{0.16\linewidth}p{0.1\linewidth}p{0.15\linewidth}p{0.15\linewidth}p{0.15\linewidth}} \textbf{Název} & \textbf{Protokol} & \textbf{Block Time {[}s{]}} & \textbf{Stealth Address } & \textbf{Anonymní transakce} & \textbf{Podpis transakce} \\ Aeon & CryptoNote-Light & 240 & Ano & Ano & Ring Signature \\ Byte-Coin & CryptoNote & 120 & Ano & Ano & Ring Signature \\ DASH & X11 & 150 & Ne & Ne zcela & Ano \\ Monero (XMR) & CryptoNote & 120 & Ano & Ano & RingCT \\ PIVX & Zerocoin & 60 & Ne přímo & Ano & x \\ Verge (XVG) & Scrypt & 150 & Ano & Ne, TOR\&I2P & RingCT WIP \\ Zcash (ZEC) & Zerocash & 150 & Vlastní shielded address & Ano pomocí SNARKS & x \\ Zcoin (XZC) & Lyra2 =\textgreater MTP & 600 & Ano & Ano, mint \& spend & Ring Signature \end{tabular} \captionof{table}{Přehled kryptoměn se zaměřením na anonymitu} \label{table:monero-alternatives} %dash https://bitcointalk.org/index.php?topic=1562109.0 %ďash https://docs.dash.org/en/latest/introduction/information.html %pivx https://github.com/PIVX-Project/PIVX %pivx https://www.reddit.com/r/pivx/comments/7gjjyw/what_are_the_benefits_of_multisig_addresses/ %zcoin https://github.com/zcoinofficial/zcoin/wiki/Information-for-exchanges %zcoin https://zcoin.io/zcoins-privacy-technology-compares-competition/ \end{figure} %\section{CryptoNote protokol} %\subsection{Verzování a aktualizace} %\subsection{Proof-of-Work} \section{Prvky sítě} Síť zajišťující fungování Monera jako kryptoměny s transakcemi má decentralizovanou podobu zajištěnou \subsection{Nodes} \subsection{Miners} \subsection{Pools} \subsection{Blockchain} \label{sec:blockchain} \subsection{Peněženky} \section{Adresování v síti} \subsection{Typy adres} \subsection{Transakční adresa} \subsection{View klíč} \section{Transakce} \subsection{Struktura} \subsection{PoW} \subsection{Vstupy, výstupy, mixing} \subsection{Průběh transakce} \subsection{Sledování transakcí na síti} \subsection{Kovri} \section{Technologie} \subsection{Stealth Address} \label{sec:stealthaddresses} \subsection{Ring Signatures} \label{sec:ringsignatures} \subsection{RingCT} %zdroje https://eprint.iacr.org/2015/1098.pdf https://getmonero.org/resources/moneropedia/ringCT.html \label{sec:ringct} \chapter{Používání monera} \section{Pěněženky} \subsection{Hot wallet} \subsection{Cold wallet} \subsection{View only wallet} \subsection{Možnosti útoků na peněženku} \subsection{Přehled bezpečnosti úložných způsobů} \section{Software pro práci s kryptopenězi} \subsection{Vytvoření peněženky} \subsection{Fullnode, remote node} \subsection{Multisig} \subsection{Srovnání wallet softwaru} \subsection{Exchanges} \section{Scamy v prostředí kryptoměny} \subsection{Online portály} \subsection{Mining pooly} \subsection{Cílený malware} \subsection{Delivery chain} \section{Monero usecase} \subsection{Darknet Markety} \subsection{Monero Markety} \subsection{Úskalí tradingu anonymní měny} \subsection{Srovnání s ostatními kryptoměnami} \section{Anonymita při užívání} \chapter{Výzkum uživatelů kryptoměny} \section{Definice, výzkumné otázky} \section{Na jakém vzorku} \section{Vyhodnocení international, CZ} \chapter{Best practices pro usage a storage Monera} \section{Návrh bezpečného úložného systému} \section{Návrh pro používání kryptoměny} \section{Portál nabízející služby pro bezpečné používání kryptoměny} \chapter{Získávání Monera a zajištění chodu sítě} \section{PoW Monera} \section{Mining pooly, solo mining} \section{Web mining, botnet mining} % Web mining: https://arxiv.org/pdf/1806.01994.pdf \section{Cloud mining} \section{Systémy pro těžbu - ASIC, dodávané} \section{Software používaný k těžbě} \section{Srovnání způsobů pro získávání kryptoměny} \chapter{Průzkum způsobů těžby} \section{Definice, výzkumné otázky} \section{Na jakém vzorku} \section{Vyhodnocení international, CZ} \chapter{Průzkum operátorů sítě} \section{Definice, výzkumné otázky} \section{Na jakém vzorku} \section{Vyhodnocení international, CZ} \chapter{Mining malware} \section{Prevence, detekce a recovery} \subsection{Server část} %kitty https://www.incapsula.com/blog/crypto-me0wing-attacks-kitty-cashes-in-on-monero.html \subsection{Běžní uživatelé} \chapter{Návrh bezpečného těžebního systému} \section{Linux-based řešení} Ansible, Centos 7 \section{Windows-based řešení} Windows 10 ISO unattended install, Powershell scripty, stažení a instalace Stak XMR \chapter{Plán} \begin{figure}[H] \center \begin{tabular}{ll} Měsíc & Task \\ 1.7.2018 & Kryptoměna Monero; Používání Monera \\ 1.8.2018 & Návrh výzkumu uživatelů;Průzkumu těžby;Operátorů \\ 1.9.2018 & Sběr dat; Získávání Monera a zajištění chodu sítě \\ 1.10.2018 & Vyhodnocení dat \\ 1.11.2018 & Best practices pro usage a storage \\ 1.12.2018 & Mining malware; Vytvoření těžebního systému \\ 1.1.2019 & Cryptocore.cz jako výstup poznatků \\ 1.2.2019 & Rezerva \\ 1.3.2019 & Měsíc na odladění \\ 1.4.2019 & Finální verze + tisk \end{tabular} \caption{Plán práce na diplomce} \label{ssme-thesis-plan} \end{figure} \printbibliography[heading=bibintoc] \appendix %% Start the appendices. \chapter{Zdroje k tabulce 2.2} dash https://bitcointalk.org/index.php?topic=1562109.0 ďash https://docs.dash.org/en/latest/introduction/information.html pivx https://github.com/PIVX-Project/PIVX pivx https://www.reddit.com/r/pivx/comments/7gjjyw/what_are_the_benefits_of_multisig_addresses/ zcoin https://github.com/zcoinofficial/zcoin/wiki/Information-for-exchanges zcoin https://zcoin.io/zcoins-privacy-technology-compares-competition/ \end{document}