Skip to content
Snippets Groups Projects
Commit d0ffd2d5 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Praktikumsunterlagen Versuch 1

parent 98273c08
Branches
No related tags found
No related merge requests found
File added
% hp-2017ws-p1.pdf - Labor Notes on Low-Level Programming
% Copyright (C) 2014, 2015, 2016, 2017 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
\documentclass[a4paper]{article}
\usepackage{pgscript}
\usepackage{multicol}
\usepackage{sfmath}
\sloppy
\pagestyle{empty}
\newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)}
\begin{document}
\makebox(0,0)[tl]{\includegraphics[scale=0.57]{logo-hochschule-bochum-cvh-text.pdf}}\hfill
\makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}}
\par\bigskip\bigskip
\begin{center}
\Large\textbf{Praktikumsversuch 1: RSA-Verschlüsselung}
\par\medskip
\normalsize Hardwarenahe Programmierung / Angewandte Informatik\\
Wintersemester 2017/18\sep
Prof.~Dr.~Peter Gerwinski
\end{center}
Aufgabe: Schreiben Sie ein Programm, das
die Verschlüsselung nach Rivest, Shamir und Adleman (RSA)
sowie die Schwierigkeiten beim Brechen ("`Knacken"') der
Verschlüsselung demonstriert.
\begin{multicols}{2}
Schreiben Sie ein C-Programm (oder mehrere),
das folgendes durchführt:
\begin{itemize}
\item
\textbf{Schlüsselerzeugung}
Bestimmen Sie 3 Primzahlen $p$, $q$ und $e$, wobei $e$
kleiner als $(p-1)\cdot(q-1)$ und teilerfremd zu $(p-1)\cdot(q-1)$ sei.
(Dies ist z.\,B.\ der Fall, wenn $e$ größer als $p$ und $q$ ist.)
Berechnen Sie $N = p \cdot q$
sowie eine natürliche Zahl $d$ mit der Eigenschaft:
\begin{displaymath}
(e \cdot d) \,\%\, \bigl((p-1)\cdot(q-1)\bigr) = 1
\end{displaymath}
("`$x \,\%\, y\/$"' wird "`x modulo y"' gesprochen und steht
für den Rest, der bei Division von $x$ durch $y$ verbleibt.
$N$ und $e$ sind der \newterm{öffentliche Schlüssel}. \\
$p$, $q$ und $d$ sind der \newterm{geheime Schlüssel}.
\item
\textbf{Verschlüsselung}
Wählen Sie eine geheime Botschaft $m$ (eine Zahl),
die Sie verschlüsseln wollen.
$m$ muß teilerfremd zu $N$ sein.
(Dies ist z.\,B.\ der Fall, wenn $m$ kleiner ist als $N$
und es nicht gleich $p$ oder gleich $q$ ist.)
Schreiben Sie ein Programm, das aus $m$ die verschlüsselte
Nachricht $c$ berechnet:
\begin{displaymath}
c = m^e ~\%\, N
\end{displaymath}
\strut\vfill\goodbreak
Hinweis:
\begin{displaymath}
m^e ~\%\, N
= \underbrace{(m \cdot m \cdot \dots \cdot m)}_{\mbox{$e$ Faktoren}} \,\%\, N
\hspace*{2cm}
\end{displaymath}
\vspace*{-\medskipamount}
\begin{displaymath}
= \underbrace{\Bigl(\dots\bigl((m \cdot m) \,\%\, N \cdot m\bigr) \,\%\, N \cdot \dots \cdot m\Bigr) \,\%\, N}_{\mbox{$e$ Faktoren}}
\end{displaymath}
Dies bedeutet: Multiplizieren Sie die Zahl $m$ $e$-mal mit sich selbst,
wobei Sie \emph{nach jeder Multiplikation\/} modulo $N$ rechnen.
% \vfill\goodbreak
\item
\textbf{Entschlüsselung}
Rekonstruieren Sie aus der verschlüsselten Botschaft $c$
wieder die geheime Botschaft $m$:
\begin{displaymath}
m = c^d ~\%\, N
\end{displaymath}
\item
\textbf{Verschlüsselung brechen}
Rekonstruieren Sie aus der verschlüsselten Botschaft $c$
wieder die geheime Botschaft $m$,
\emph{ohne\/} den geheimen Schlüssel zu kennen,
d.\,h.\ Sie kennen nur $N$ und $e$, nicht jedoch $p$, $q$ und $d$.
Hinweis:\\
Sie können z.\,B.\ versuchen $N$ in seine Primfaktoren zu zerlegen.
Auf diese Weise können Sie zunächst $p$ und $q$ berechnen und danach $d$.
Wenn Sie die Primzahlen groß genug wählen, sollte man
unmittelbar erkennen, daß das Brechen der Verschlüsselung
\emph{wesentlich\/} länger dauert als das reguläre Ver- und
Entschlüsseln. Auf diesem Schwierigkeitsunterschied beruht
die Sicherheit der RSA-Verschlüsselung.
% \vfill
\end{itemize}
\bigskip
\strut\hfill\emph{Viel Erfolg!}
% \vspace*{4cm}
\end{multicols}
\vfill
\begingroup
\small
\setlength{\leftskip}{3cm}
Stand: 19.\ Oktober 2016
% Soweit nicht anders angegeben:\\
Copyright \copyright\ 2014, 2015, 2016, 2017\quad Peter Gerwinski\\
Lizenz: \mylicense
Sie können diese Praktikumsunterlagen einschließlich Quelltext
%% und Beispielprogramme\\
herunterladen unter:\\
\url{https://gitlab.cvh-server.de/pgerwinski/hp}
\endgroup
\end{document}
../common/logo-hochschule-bochum-cvh-text.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/pgscript.sty
\ No newline at end of file
......@@ -27,3 +27,9 @@ Ausserhalb des INSERT-Modus:
- x = Buchstaben loeschen
- dd = Zeile loeschen
- Textbloecke verschieben:
V (grosses V) druecken
Text markieren (mit j und k)
d (kleines d) druecken. Der markierte Text wird geloescht ("Cut").
dorthin gehen, wo der Text eingefuegt werden soll
p (kleines p) druecken. Der geloeschte Text wird eingefuegt ("Paste").
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment