mirror of
https://github.com/Ownercz/ssme-thesis.git
synced 2024-10-01 21:47:26 +02:00
359 lines
18 KiB
TeX
359 lines
18 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% 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
|
|
%% <http://mirrors.ctan.org/macros/latex/contrib/fithesis/guide/mu/fi.pdf>.
|
|
]{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:
|
|
%% <http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf>.
|
|
\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}
|