From 0622ba43ce1b47f085a1adadc1c8f16030a3afcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radim=20Lipov=C4=8Dan?= Date: Sun, 14 Oct 2018 21:53:59 +0200 Subject: [PATCH] Monero wallet generation --- Thesis.bib | 16 ++++++ Thesis.tex | 111 +++++++++++++++++++++++++++++++++++++++- images/Screenshot_4.png | Bin 0 -> 27766 bytes 3 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 images/Screenshot_4.png diff --git a/Thesis.bib b/Thesis.bib index 25977b8..e18b2f4 100644 --- a/Thesis.bib +++ b/Thesis.bib @@ -470,4 +470,20 @@ Protocol pages={287--310}, year={2017}, organization={Springer} +} + + +@online{monerolang2018, + author = {ErCiccione}, + title = {All languages need to be updated for 0.13 - Call for translators}, + year = 2018, + url = {https://github.com/monero-project/monero-gui/issues/1582}, + urldate = {2018-10-14} +} + +@mastersthesis{pialphapialphagammaiotaacutealphanunualpharhoovarsigma2016study, + title={A study of penetration testing procedures using Windows PowerShell: introduction to offensive PowerShell \& assesment of PowerShell security tools}, + author={$\Pi$$\alpha$$\pi$$\alpha$$\gamma$$\iota$$\acute{\alpha}$$\nu$$\nu$$\alpha$$\rho$o$\varsigma$, $\Gamma$$\varepsilon$$\acute{\omega}$$\rho$$\gamma$$\iota$o$\varsigma$ and Papagiannaros, Georgios}, + year={2016}, + school={$\Pi$$\alpha$$\nu$$\varepsilon$$\pi$$\iota$$\sigma$$\tau$$\acute{\eta}$$\mu$$\iota$o $\Pi$$\varepsilon$$\iota$$\rho$$\alpha$$\iota$$\acute{\omega}$$\varsigma$} } \ No newline at end of file diff --git a/Thesis.tex b/Thesis.tex index 185361e..f65c229 100644 --- a/Thesis.tex +++ b/Thesis.tex @@ -140,6 +140,31 @@ %multicol \usepackage{multicol} + +%code +\usepackage{listings} +\usepackage{color} + +\definecolor{dkgreen}{rgb}{0,0.6,0} +\definecolor{gray}{rgb}{0.5,0.5,0.5} +\definecolor{mauve}{rgb}{0.58,0,0.82} + +\lstset{frame=tb, + language=Java, + aboveskip=3mm, + belowskip=3mm, + showstringspaces=false, + columns=flexible, + basicstyle={\small\ttfamily}, + numbers=none, + numberstyle=\tiny\color{black}, + keywordstyle=\color{black}, + commentstyle=\color{black}, + stringstyle=\color{black}, + breaklines=true, + breakatwhitespace=true, + tabsize=3 +} \begin{document} \chapter{Introduction} @@ -376,7 +401,7 @@ Monero wallet contains information that is necessary to send and receive Monero \item \textbf{example-wallet.keys file} \begin{itemize}\itemsep0em \item Is an encrypted file containing private \textbf{spend key} and \textbf{view key} together with \textbf{wallet address}. -\item Keys file also contains user preferences related to transactions and wallet creation height, so wallet software will only read blockchain from the point the wallet was created. +\item Keys file also contains user preferences related to transactions and wallet creation height, so wallet software will only read blockchain from the wallet creation point. \item Using this file, the user can restore wallet by using the monero-wallet-cli command: monero-wallet-cli --generate-from-keys \end{itemize} \item \textbf{example-wallet file} @@ -755,8 +780,90 @@ The complete survey is attached in the chapter \ref{monero-user-study-pdf}. \section{Results international, CZ} \chapter{Monero usage and storage best practices} +Ease of use is one of the critical aspects of every cryptocurrency and although Monero can offer a wide range of anonymity features it has to be usable and user-friendly in order to be used by a substantial margin of people. Usability in Monero is a long-term topic that brings out active discussion \cite{monerolang2018}. + +Following scenarios represent secure and easy to use instructions for a new Monero user. + +\section{Generating the keys} +The software way means using the official client CLI and GUI wallet available at \url{https://getmonero.org/downloads/} by which user generates the wallet keys. Created keys are after generation saved directly into the memory of the device unless specified otherwise. + +Note that the security of this task depends on the origin of the software, delivery chain trust, and the users' operating system. Monero CLI and GUI binaries can be edited, and the app itself does not call any hash checking to alert the user of the unauthorized change. + +Although SHA256 has is provided on the website, the user is not instructed to check the hashes beforehand with tools like PowerShell and \texttt{Get-FileHash ./monero-wallet-gui-original.exe | Format-List} command \cite{pialphapialphagammaiotaacutealphanunualpharhoovarsigma2016study}.\\ +\begin{figure}[H] +\begin{center} +\begin{lstlisting} +Algorithm : SHA256 +Hash : AF9324151909AC7B9BC6D622210EADFBAE5E66... +Path : ./monero-wallet-gui-original.exe + +Algorithm : SHA256 +Hash : DF4EC49E088284ECC78DBBD8B9CEFF00A78085... +Path : ./monero-wallet-gui-injected.exe +\end{lstlisting} +\caption{Checksum change after code injeciton} + \label{pic:withoutresdrawable} +\end{center} + \end{figure} +\newpage + + + +\begin{figure}[H] +\begin{center} +\begin{lstlisting} +.\monero-wallet-cli.exe +This is the command line monero wallet. It needs to connect +to a monero daemon to work correctly. +WARNING: Do not reuse your Monero keys on an another fork, +UNLESS this fork has key reuse mitigations built in. Doing +so will harm your privacy. + +Monero 'Lithium Luna' (v0.12.3.0-release) +Logging to C:\...\monero-wallet-cli.log +Specify wallet file name (e.g., MyWallet). If the wallet +doesn't exist, it will be created. +Wallet file name (or Ctrl-C to quit): ssme-thesis +No wallet found with that name. Confirm creation of new +wallet named: ssme-thesis +(Y/Yes/N/No): Y +Generating new wallet... +\end{lstlisting} +\caption{CLI wallet generation} + \label{pic:withoutresdrawable} +\end{center} + \end{figure} + + + +\begin{figure}[H] +\begin{center} + +% \vspace{-0.8em} + \includegraphics[trim={0 0 0 0},clip,width=0.85\textwidth]{Screenshot_4.png} + \caption{GUI wallet generation} + % \vspace{-1.5em} + \label{pic:withoutresdrawable} +\end{center} + \end{figure} + +There are also alternative approaches to key generation like an offline javascript based monero-wallet-generator that is available at \url{https://github.com/moneromooo-monero/monero-wallet-generator}.\\ +\newpage +Hardware way is considered to be in the development, but Monero compatibile devices like Ledger Nano S are already on the market. The way how keys are generated in hardware wallets varies on firmware included in each device. + +In general, the wallet is required to have Monero app installed from vendors app catalog. Keys are generated on the hardware device within the app itself and user can only export private view key from the device to view the balance in full CLI/GUI client. +\section{Accessing the wallet} +\subsection{Using the Windows platform} + +\subsection{Using the Android platform} + +\subsection{Using the iOS platform} + +\subsection{Using the Linux platform} + +\section{Secure storage system} +\subsection{Backups} -\section{Designing a secure storage system} \section{Secure usage pattern} \section{Secure crypto portal} diff --git a/images/Screenshot_4.png b/images/Screenshot_4.png new file mode 100644 index 0000000000000000000000000000000000000000..34f607548a462b132d57d451da83e3830d4601e9 GIT binary patch literal 27766 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 YS(C5U{k%l{R@gZW6>VjNqIt;w0S(1{g8%>k literal 0 HcmV?d00001