Browse Source

Merge branch 'feature/asymmetric-cryptography' into develop

develop
Ezerous 4 years ago
parent
commit
40a9a072e4
  1. 2
      .gitattributes
  2. BIN
      assets/figures/asymmetric-end-to-end-communication.png
  3. BIN
      assets/figures/asymmetric-key-generation.png
  4. 2
      chapters/2.theoretical-background/2.0.theoretical-background.tex
  5. 28
      chapters/2.theoretical-background/2.2.assymetric-cryptography.tex
  6. 36
      chapters/2.theoretical-background/2.2.asymmetric-cryptography.tex
  7. 3
      custom-commands/custom-lists.tex
  8. 62
      greek-enumerate.sty
  9. 2
      packages.tex
  10. 3
      thesis-general.sty
  11. BIN
      thesis.pdf
  12. 2
      thesis.tex

2
.gitattributes

@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto eol=lf

BIN
assets/figures/asymmetric-end-to-end-communication.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
assets/figures/asymmetric-key-generation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

2
chapters/2.theoretical-background/2.0.theoretical-background.tex

@ -1,7 +1,7 @@
\chapter{Θεωρητικό υπόβαθρο} \chapter{Θεωρητικό υπόβαθρο}
\input{chapters/2.theoretical-background/2.1.hash-functions} \input{chapters/2.theoretical-background/2.1.hash-functions}
\input{chapters/2.theoretical-background/2.2.assymetric-cryptography} \input{chapters/2.theoretical-background/2.2.asymmetric-cryptography}
\input{chapters/2.theoretical-background/2.3.blockchain} \input{chapters/2.theoretical-background/2.3.blockchain}
\input{chapters/2.theoretical-background/2.4.smart-contracts} \input{chapters/2.theoretical-background/2.4.smart-contracts}
\input{chapters/2.theoretical-background/2.5.distributed-databases} \input{chapters/2.theoretical-background/2.5.distributed-databases}

28
chapters/2.theoretical-background/2.2.assymetric-cryptography.tex

@ -1,28 +0,0 @@
\section{Κρυπτογραφία ασύμμετρου κλειδιού}
\subsection{Ασύμμετρη κρυπτογραφία}
% TODO
\subsection{OpenPGP}
% Παλιό από Drive
Το Pretty Good Privacy (PGP) αποτελεί λογισμικό κρυπτογράφησης υψηλής ασφαλείας βασισμένο στην τεχνολογία που καλείται κρυπτογράφηση "δημοσίων κλειδιών" (public key). Επιτρέπει την ανταλλαγή αρχείων και μηνυμάτων διασφαλίζοντας το απόρρητο και την ταυτότητα σε συνδυασμό με την ευκολία λειτουργίας.
\begin{itemize}
\item Διασφάλιση του απορρήτου σημαίνει ότι μόνο αυτός για τον οποίο προορίζεται ένα μήνυμα είναι ικανός να το αποκρυπτογραφήσει και να το διαβάσει.
\item Πιστοποίηση της ταυτότητας σημαίνει ότι μηνύματα που φαίνεται πως έχουν προέλθει από κάποιο άτομο μπορούν να έχουν προέλθει μόνο από αυτό το άτομο.
\item Ευκολία σημαίνει ότι η διασφάλιση του απόρρητου και η πιστοποίησης της ταυτότητας παρέχονται χωρίς την πολυπλοκότητα της διαχείρισης κλειδιών η οποία σχετίζεται με τη συμβατική κρυπτογραφία.
\end{itemize}
Στα κρυπτοσυστήματα δημοσίων κλειδιών ο καθένας έχει δυο συμπληρωματικά κλειδιά. Ένα που δίδεται δημόσια (public key) και ένα μυστικό (private key). Βασικά χαρακτηριστικά των δύο κλειδιών είναι ότι: 1) οτιδήποτε κρυπτογραφηθεί με το ένα αποκρυπτογραφείται μόνο από το άλλο και 2) το ένα δεν προκύπτει από το άλλο.
% TODO: insert diagram
Έτσι, ο καθένας μπορεί να χρησιμοποιήσει το δημόσιο κλειδί του παραλήπτη ενός μηνύματος για να κρυπτογραφήσει ένα μήνυμα προς αυτό το άτομο ενώ ο παραλήπτης μπορεί να χρησιμοποιήσει με τη σειρά του το αντίστοιχο μυστικό κλειδί για να αποκρυπτογραφήσει το μήνυμα. Κανένας άλλος εκτός από τον παραλήπτη δεν μπορεί να το αποκρυπτογραφήσει (ούτε καν το άτομο που το κρυπτογράφησε), διότι κανένας άλλος δεν έχει πρόσβαση στο μυστικό κλειδί.
Επίσης παρέχεται υπηρεσία πιστοποίησης του μηνύματος. Το μυστικό κλειδί του αποστολέα μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση του μηνύματος άρα και για την υπογραφή του. Έτσι δημιουργείται μια ψηφιακή υπογραφή του μηνύματος την οποία ο παραλήπτης ή οποιοσδήποτε άλλος μπορεί να ελέγξει χρησιμοποιώντας το δημόσιο κλειδί του αποστολέα για να την αποκρυπτογραφήσει. Αυτό αποδεικνύει ότι ο αποστολέας ήταν ο πραγματικός δημιουργός του μηνύματος και ότι το μήνυμα δεν αλλοιώθηκε από κάποιον άλλον διότι μόνο ο αποστολέας έχει στην κατοχή του το μυστικό κλειδί που έφτιαξε την υπογραφή.
% TODO: insert diagram
Γίνεται προφανές ότι χρησιμοποιώντας κάποιο hash αντί πραγματικών ονομάτων μπορούμε εγγυηθούμε την ανωνυμία του χρήστη αφού μόνο ένα φαινομενικά τυχαίο string είναι δημόσια διαθέσιμο. Αν ταυτόχρονα συνδέσουμε το hash με ένα PGP public key εγγυόμαστε την ταυτοποίηση του χρήστη καθώς μόνο ο κάτοχος του private κλειδιού μπορεί να υπογράψει ορθά ένα μήνυμα.

36
chapters/2.theoretical-background/2.2.asymmetric-cryptography.tex

@ -0,0 +1,36 @@
\section{Ασύμμετρη κρυπτογραφία}
Η \textbf{ασύμμετρη κρυπτογραφία} (asymmetric cryptography) ή κρυπτογραφία δημόσιου κλειδιού (public-key cryptography) αποτελεί κρυπτογραφικό σύστημα που βασίζεται στη χρήση ενός ζεύγους κλειδιών (key pair), του \textit{δημόσιου} (public key) και του \textit{ιδιωτικού} (private key). Αυτά τα κλειδιά είναι μαθηματικά συνδεδεμένα ως εξής:
\begin{itemize}
\item Το ιδιωτικό κλειδί δε μπορεί να προκύψει γνωρίζοντας το δημόσιό του
\item Ό,τι κρυπτογραφηθεί από το ένα μπορεί να αποκρυπτογραφηθεί μόνο από το άλλο
\end{itemize}
Η δημιουργία ενός ζεύγους κλειδιών επιτυγχάνεται μέσω μιας \textit{γεννήτριας κλειδιών} (key generation function), η οποία χρησιμοποιεί ειδικούς αλγορίθμους (π.χ. RSA), δεχόμενη ως είσοδο έναν τυχαίο αριθμό. Από τα παραχθέντα κλειδιά, το δημόσιο γνωστοποιείται σε τρίτους, ενώ το ιδιωτικό παραμένει μυστικό.
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{asymmetric-key-generation.png}
\caption{Παραγωγή ασύμμετρου ζεύγους κλειδιών}
\end{figure}
Ο χρήστης μπορεί να χρησιμοποιήσει τα κλειδιά για δύο βασικούς σκοπούς:
\begin{enumerate}
\item Για να αποκρυπτογραφήσει μηνύματα άλλων χρηστών, οι οποίοι τα κρυπτογράφησαν χρησιμοποιώντας το δημόσιο κλειδί του. Με αυτόν τον τρόπο εξασφαλίζεται η \textit{εμπιστευτικότητα} (confidentiality).
\item Για να υπογράψει ψηφιακά ένα μήνυμα, κρυπτογραφώντας το hash των δεδομένων του με το ιδιωτικό του κλειδί. Έτσι, ο παραλήπτης του μηνύματος μπορεί μέσω της ληφθείσας \textit{ψηφιακής υπογραφής} (digital signature):
\begin{enumerate}
\item Να επαληθεύσει την ταυτότητα του αποστολέα, αποκρυπτογραφώντας επιτυχώς την ψηφιακή υπογραφή με το δημόσιο κλειδί του τελευταίου. Εξασφαλίζεται έτσι η \textit{πιστοποίηση} (authenticity) της προέλευσης των δεδομένων.
\item Να επιβεβαιώσει ότι το μήνυμα έφτασε αναλλοίωτο, εφόσον το hash των δεδομένων συμπίπτει με το hash εντός της ψηφιακής υπογραφής. Με αυτόν τον τρόπο εξασφαλίζεται η \textit{ακεραιότητα} (integrity) των δεδομένων.
\end{enumerate}
\end{enumerate}
Με τον συνδυασμό των παραπάνω, λέμε ότι δύο χρήστες μπορούν να επικοινωνούν μεταξύ τους με \textit{κρυπτογράφηση απ' άκρη σ' άκρη} (end to end encryption).
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{asymmetric-end-to-end-communication.png}
\caption{Κρυπτογράφηση απ' άκρη σ' άκρη}
\end{figure}

3
custom-commands/custom-lists.tex

@ -0,0 +1,3 @@
% Global settings for ordered lists (using enumitem and greek-enumerate packages)
\setenumerate[1]{label={\greek*)}} % First level
\setenumerate[2]{label={\roman*.}} % Second level

62
greek-enumerate.sty

@ -0,0 +1,62 @@
% https://github.com/jcommelin/greek_enumerate
\ProvidesPackage{greek-enumerate}
\RequirePackage{enumitem}
\makeatletter
\def\greek#1{\expandafter\@greek\csname c@#1\endcsname}
\def\Greek#1{\expandafter\@Greek\csname c@#1\endcsname}
\def\@greek#1{\ifcase#1
\or $\alpha$%
\or $\beta$%
\or $\gamma$%
\or $\delta$%
\or $\epsilon$%
\or $\zeta$%
\or $\eta$%
\or $\theta$%
\or $\iota$%
\or $\kappa$%
\or $\lambda$%
\or $\mu$%
\or $\nu$%
\or $\xi$%
\or $o$%
\or $\pi$%
\or $\rho$%
\or $\sigma$%
\or $\tau$%
\or $\upsilon$%
\or $\phi$%
\or $\chi$%
\or $\psi$%
\or $\omega$%
\fi}
\def\@Greek#1{\ifcase#1
\or $\mathrm{A}$%
\or $\mathrm{B}$%
\or $\Gamma$%
\or $\Delta$%
\or $\mathrm{E}$%
\or $\mathrm{Z}$%
\or $\mathrm{H}$%
\or $\Theta$%
\or $\mathrm{I}$%
\or $\mathrm{K}$%
\or $\Lambda$%
\or $\mathrm{M}$%
\or $\mathrm{N}$%
\or $\Xi$%
\or $\mathrm{O}$%
\or $\Pi$%
\or $\mathrm{P}$%
\or $\Sigma$%
\or $\mathrm{T}$%
\or $\mathrm{Y}$%
\or $\Phi$%
\or $\mathrm{X}$%
\or $\Psi$%
\or $\Omega$%
\fi}
\makeatother
\AddEnumerateCounter{\greek}{\@greek}{24}
\AddEnumerateCounter{\Greek}{\@Greek}{12}

2
packages.tex

@ -17,3 +17,5 @@
% Custom commands % Custom commands
\input{custom-commands/custom-title} \input{custom-commands/custom-title}
\input{custom-commands/custom-lists}

3
thesis-general.sty

@ -6,3 +6,6 @@
% --- Styling --- % --- Styling ---
\usepackage{hyperref} % Extensive support for hypertext \usepackage{hyperref} % Extensive support for hypertext
\usepackage{authblk} % Support for footnote style author/affiliation \usepackage{authblk} % Support for footnote style author/affiliation
\usepackage{enumitem} % For item lists
\usepackage{greek-enumerate} % Greek enumeration for ordered item lists
\usepackage{float} % Fpr \begin{figure}[H]

BIN
thesis.pdf

Binary file not shown.

2
thesis.tex

@ -9,6 +9,8 @@
% Paper size and margins % Paper size and margins
\geometry{a4paper, top=2.5cm, bottom=2.5cm, left=2.2cm,right=2.2cm} \geometry{a4paper, top=2.5cm, bottom=2.5cm, left=2.2cm,right=2.2cm}
\graphicspath{{assets/figures}}
\input{thesis-details} \input{thesis-details}
\begin{document} \begin{document}

Loading…
Cancel
Save