Imported the original cryp.to site for re-publishing with ikiwiki.
authorPeter Simons <simons@cryp.to>
Wed, 5 May 2010 17:01:58 +0000 (19:01 +0200)
committerPeter Simons <simons@cryp.to>
Mon, 23 Jul 2012 22:21:48 +0000 (00:21 +0200)
75 files changed:
.gitignore [new file with mode: 0644]
3d-projection.mdwn [new file with mode: 0644]
3d-projection.pdf [new file with mode: 0644]
PGPAmiga-2.6.3is.lha [new file with mode: 0644]
address-of-riddle.mdwn [new file with mode: 0644]
adl-riddle.mdwn [new file with mode: 0644]
bremsen-oder-drumherumfahren.mdwn [new file with mode: 0644]
deBruijn-graph.mdwn [new file with mode: 0644]
default-constructor-riddle.mdwn [new file with mode: 0644]
distance-to-the-horizon.mdwn [new file with mode: 0644]
distance-to-the-horizon.pdf [new file with mode: 0644]
duff-device-riddle.mdwn [new file with mode: 0644]
evaluation-order-riddle.mdwn [new file with mode: 0644]
exception-riddle.mdwn [new file with mode: 0644]
flugbahnen/beispiel-1.png [new file with mode: 0644]
flugbahnen/flugbahn.png [new file with mode: 0755]
flugbahnen/index.mdwn [new file with mode: 0644]
free-software.mdwn [new file with mode: 0644]
index.mdwn [new file with mode: 0644]
katzen-faq.mdwn [new file with mode: 0644]
kombinatorik-von-mann-und-frau.mdwn [new file with mode: 0644]
local.css [new file with mode: 0644]
meta-programming-riddle.mdwn [new file with mode: 0644]
mittelparallele.mdwn [new file with mode: 0644]
organizing-ca/index.html [new file with mode: 0644]
organizing-ca/tex4ht.css [new file with mode: 0644]
organizing-ca/tex4iki0x.png [new file with mode: 0644]
peter-simons.jpg [new file with mode: 0644]
prime-sieve.mdwn [new file with mode: 0644]
properties-of-hierarchies.mdwn [new file with mode: 0644]
properties-of-hierarchies.pdf [new file with mode: 0644]
simple-undirected-graphs.mdwn [new file with mode: 0644]
simple-undirected-graphs.pdf [new file with mode: 0644]
sonnensystem.mdwn [new file with mode: 0644]
sonnensystem.pdf [new file with mode: 0644]
spezielle-relativitaet.mdwn [new file with mode: 0644]
spezielle-relativitaet.pdf [new file with mode: 0644]
spirograph.mdwn [new file with mode: 0644]
spirograph.pdf [new file with mode: 0644]
status.mdwn [new file with mode: 0644]
tag/cxx-riddle/index.mdwn [new file with mode: 0644]
tag/faq/index.mdwn [new file with mode: 0644]
tag/geometrie/index.mdwn [new file with mode: 0644]
tag/graph-theory/index.mdwn [new file with mode: 0644]
tag/index.mdwn [new file with mode: 0644]
tag/physik/index.mdwn [new file with mode: 0644]
tag/security/index.mdwn [new file with mode: 0644]
tag/software/index.mdwn [new file with mode: 0644]
tag/stochastik/index.mdwn [new file with mode: 0644]
the-secure-shell/daemon.gif [new file with mode: 0644]
the-secure-shell/index.html [new file with mode: 0644]
the-secure-shell/tex4ht.css [new file with mode: 0644]
the-secure-shell/tex4iki0x.png [new file with mode: 0644]
the-secure-shell/tex4iki10x.png [new file with mode: 0644]
the-secure-shell/tex4iki11x.png [new file with mode: 0644]
the-secure-shell/tex4iki12x.png [new file with mode: 0644]
the-secure-shell/tex4iki1x.png [new file with mode: 0644]
the-secure-shell/tex4iki2x.png [new file with mode: 0644]
the-secure-shell/tex4iki3x.png [new file with mode: 0644]
the-secure-shell/tex4iki4x.png [new file with mode: 0644]
the-secure-shell/tex4iki5x.png [new file with mode: 0644]
the-secure-shell/tex4iki6x.png [new file with mode: 0644]
the-secure-shell/tex4iki7x.png [new file with mode: 0644]
the-secure-shell/tex4iki8x.png [new file with mode: 0644]
the-secure-shell/tex4iki9x.png [new file with mode: 0644]
tunneling-ordinary-tcp-services/img1.jpg [new file with mode: 0644]
tunneling-ordinary-tcp-services/index.html [new file with mode: 0644]
umkreis-des-dreiecks/angle-phenomenon.png [new file with mode: 0644]
umkreis-des-dreiecks/in-circle.png [new file with mode: 0644]
umkreis-des-dreiecks/index.mdwn [new file with mode: 0644]
umkreis-des-dreiecks/out-circle-radius.png [new file with mode: 0644]
umkreis-des-dreiecks/out-circle.png [new file with mode: 0644]
warten-im-schwimmbad.mdwn [new file with mode: 0644]
zahnrad.mdwn [new file with mode: 0644]
zahnrad.pdf [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..af5a604
--- /dev/null
@@ -0,0 +1,4 @@
+# ignored files and directories
+
+/.ikiwiki
+/recentchanges
diff --git a/3d-projection.mdwn b/3d-projection.mdwn
new file mode 100644 (file)
index 0000000..9e452ee
--- /dev/null
@@ -0,0 +1,9 @@
+[[!meta title="3D Projection"]]
+[[!tag geometrie]]
+
+At one point in my life I wondered how it's possible that computers can
+generate images that look 3-dimensional, i.e. that have "depth".
+Obviously, there is lot of know-how involved in that subject that's way
+beyond a lay-person's grasp. An explanation of the basic idea, however,
+has been written down in the [[3D Projection article
+(PDF)|3d-projection.pdf]].
diff --git a/3d-projection.pdf b/3d-projection.pdf
new file mode 100644 (file)
index 0000000..c461101
Binary files /dev/null and b/3d-projection.pdf differ
diff --git a/PGPAmiga-2.6.3is.lha b/PGPAmiga-2.6.3is.lha
new file mode 100644 (file)
index 0000000..dade732
Binary files /dev/null and b/PGPAmiga-2.6.3is.lha differ
diff --git a/address-of-riddle.mdwn b/address-of-riddle.mdwn
new file mode 100644 (file)
index 0000000..5d4f65b
--- /dev/null
@@ -0,0 +1,36 @@
+[[!meta title="C++ address_of() riddle"]]
+[[!tag cxx-riddle]]
+
+Can you fill in code for the `address_of()` function so that the program
+(1) compiles without warning, and (2) prints the addresses of all four
+objects correctly?
+
+    #include <iostream>
+
+    template <class T>
+    inline T * address_of(T & obj)
+    {
+      // Huh?
+    }
+
+    struct foo
+    {
+      foo()                            { }
+      foo *        operator& ()        { return 0; }
+      foo const *  operator& () const  { return 0; }
+    };
+
+    int main(int, char * [])
+    {
+      double        d1;
+      double const  d2( 0 );
+      std::cout << address_of(d1) << std::endl;
+      std::cout << address_of(d2) << std::endl;
+
+      foo           f1;
+      foo const     f2;
+      std::cout << address_of(f1) << std::endl;
+      std::cout << address_of(f2) << std::endl;
+
+      return 0;
+    }
diff --git a/adl-riddle.mdwn b/adl-riddle.mdwn
new file mode 100644 (file)
index 0000000..71025f9
--- /dev/null
@@ -0,0 +1,60 @@
+[[!meta title="C++ ADL riddle"]]
+[[!tag cxx-riddle]]
+
+What will the following program write to standard output when run?
+
+    #include <iostream>
+
+    namespace one
+    {
+      struct thing { };
+
+      inline bool operator== (thing const &, thing const &)
+      {
+        std::cout << "one::operator==" << std::endl;
+        return true;
+      }
+    }
+
+    namespace two
+    {
+      typedef one::thing thing;
+
+      inline bool operator== (thing const &, thing const &)
+      {
+        std::cout << "two::operator==" << std::endl;
+        return true;
+      }
+    }
+
+    template <class T>
+    inline bool operator== (T const &, T const &)
+    {
+      std::cout << "::operator==" << std::endl;
+      return true;
+    }
+
+    int main(int, char * [])
+    {
+      {
+        one::thing foo, bar;
+        foo == bar;
+      }
+      {
+        two::thing foo, bar;
+        foo == bar;
+      }
+      {
+        using namespace one;
+        two::thing foo, bar;
+        foo == bar;
+      }
+      return 0;
+    }
+
+As an extra question, consider what would be the outcome if the
+following lines of code where added to `main()`?
+
+    using namespace two;
+    one::thing foo, bar;
+    foo == bar;
diff --git a/bremsen-oder-drumherumfahren.mdwn b/bremsen-oder-drumherumfahren.mdwn
new file mode 100644 (file)
index 0000000..61afa36
--- /dev/null
@@ -0,0 +1,90 @@
+[[!meta title="Bremsen oder Drumherumfahren?"]]
+[[!tag physik]]
+
+## Die Frage
+
+Ein Auto fährt mit $v$ Metern pro Sekunde geradeaus, und der Fahrer
+träumt, anstatt auf die Fahrbahn zu achten. Plötzlich fällt ihm auf,
+dass er frontal auf eine Mauer zu fährt. Die Straße gabelt sich vor der
+Mauer rechtwinklig nach links und rechts. Um der Mauer zu entgehen, kann
+der Fahrer entweder bremsen, oder er kann versuchen, eine
+90&deg;-Grad-Kurve zu fahren. Welche Wahl ist besser?
+
+## Die Vollbremsung
+
+Die Masseträgheit bewegt das Auto $v$ Meter pro Sekunde nach vorne --- auf
+die Mauer zu. Eine Vollbremsung beschleunigt das Fahrzeug entgegen der
+Fahrtrichtung mit $a$ Metern pro Quadratsekunde. Zu einem Zeitpunkt $t$
+ist die ursprüngliche Geschwindigkeit deswegen um $at$ Meter pro Sekunde
+reduziert: $$v(t)=v-at.$$
+
+Die Vollbremsung ist in dem Moment $t_0$ abgeschlossen, in dem
+$v(t_0)=0$ gilt, nämlich $t_0=\frac{v}{a}.$ So lange dauert es,
+Stillstand zu erreichen.
+
+Geschwindigkeit bedeutet Veränderung des Orts über Zeit, daher bestimmt
+$$r(t)\;=\;\int{}v(t)\,\text{d}t\;=\;vt-\frac{1}{2}at^2$$ welche Distanz
+der Wagen zu einem Zeitpunkt $t$ zurückgelegt hat. Von besonderem
+Interesse ist die Entfernung, nach der das Auto zum Stillstand kommt ---
+der Bremsweg:
+
+$$r(t_0)=\frac{v^2}{2a}.$$
+
+Bei einer Geschwindigkeit von 100 Stundenkilometern liegen tatsächlich
+gemessenen Bremswege verschiedener Auto-Typen zwischen 33 und 53 Metern.
+Die besten Werte erzielen erwartungsgemäß Sportwagen. Dies entspricht
+einer mittleren Brems-Beschleunigung zwischen 7,28 und 11,69 Metern pro
+Quadratsekunde. Nähme man diese Extremwerte zum Maßstab, dann ergäben
+sich beispielsweise folgende Bremswege für die jeweilige
+Geschwindigkeit:
+
+> <table border="1" cellspacing="5" cellpadding="5">
+>   <tr align="center"> <td>km/h</td> <td>20</td>   <td>80</td>    <td>120</td>   <td>200</td> </tr>
+>   <tr align="center"> <td>m</td>    <td>1,32</td> <td>21,12</td> <td>47,52</td> <td>123,0</td> </tr>
+>   <tr align="center"> <td>m</td>    <td>2,12</td> <td>33,92</td> <td>76,32</td> <td>212,0</td> </tr>
+> </table>
+
+Wie man sieht, ist ein Sportwagen bei hohen Geschwindigkeiten also
+durchaus eine feine Sache.
+
+## Die Kurve
+
+In einer Kurvenfahrt wird die Bewegung der Masseträgheit umgelenkt durch
+eine Beschleunigung, die im rechten Winkel zur Bewegung wirkt. Die
+Geschwindigkeit des Fahrzeugs ändert sich nicht --— $v$ ist konstant —--,
+aber die Richtung der Bewegung ändert sich. Im Idealfall beschreibt das
+Fahrzeug einen Viertelkreis mit Radius $R$, bis sich die Fahrtrichtung
+durch konstantes Umlenken schließlich um 90&deg; gedreht hat. Diese
+Umlenkung wird Querbeschleunigung genannt:
+
+$$a = \frac{v^2}{R}.$$
+
+Laut Wikipedia können übliche PKW Querbeschleunigungen zwischen 7 und 10
+Meter pro Quadratsekunde vertragen, bevor sie die Zentrifugalkraft aus
+der Kurve schmeißt. Nimmt man a=9,81 als Beispiel, so kann das
+gegebene Fahrzeug bestenfalls Kurven mit jeweils folgenden Radien
+fahren:
+
+> <table border="1" cellspacing="5" cellpadding="5">
+>   <tr align="center"> <td>km/h</td> <td>20</td>   <td>80</td>    <td>120</td>   <td>200</td> </tr>
+>   <tr align="center"> <td>m</td>    <td>3,15</td> <td>50,34</td> <td>113,26</td> <td>314,62</td> </tr>
+> </table>
+
+Diese Werte bedeuten, dass das jeweilige Fahrzeug trotz perfekter
+Kurvenfahrt immer noch eine Distanz $R$ nach vorne bewegt wird --- auf die
+Mauer zu.
+
+## Der Vergleich
+
+Um beide Strategien zu bewerten, vergleichen wir, wieviel Beschleunigung
+jeweils aufgewendet werden muss, damit beide dasselbe Ergebnis erzielen.
+Dies ist der Fall, wenn Bremsweg und Wendekreis-Radius gleich groß sind,
+$r(t_0)=R$, also:
+
+$$\frac{v^2}{2a_\text{B}} \,=\, \frac{v^2}{a_\text{Q}}.$$
+
+Offenbar sind beide Strategien genau dann gleich gut, wenn das
+gegebene Fahrzeuge doppelt so stark quer beschleunigen kann, wie es
+bremsen kann. Dass ein realer PKW diese Eigenschaft haben könnte,
+erscheint jedoch wenig plausibel. Es ist also aller Wahrscheinlichkeit
+nach besser, eine Vollbremsung zu probieren.
diff --git a/deBruijn-graph.mdwn b/deBruijn-graph.mdwn
new file mode 100644 (file)
index 0000000..3c5f07a
--- /dev/null
@@ -0,0 +1,216 @@
+[[!meta title="deBruijn Graphs"]]
+[[!tag graph-theory]]
+
+## 1100:
+
+[[!graph prog="dot" src="""
+  rankdir = LR
+  0 [label = "0"]
+  1 [label = "1"]
+  0 -> 1 [label = "1"]
+  0 -> 0 [label = "0"]
+  1 -> 1 [label = "1"]
+  1 -> 0 [label = "0"]
+}
+"""]]
+
+## 11101000:
+
+[[!graph prog="circo" src="""
+  0 [label = "00"]
+  1 [label = "01"]
+  2 [label = "10"]
+  3 [label = "11"]
+  0 -> 1 [label = "1"]
+  0 -> 0 [label = "0"]
+  1 -> 3 [label = "1"]
+  1 -> 2 [label = "0"]
+  2 -> 1 [label = "1"]
+  2 -> 0 [label = "0"]
+  3 -> 3 [label = "1"]
+  3 -> 2 [label = "0"]
+"""]]
+
+## 1111011001010000:
+
+[[!graph prog="circo" src="""
+  0 [label = "000"]
+  1 [label = "001"]
+  2 [label = "010"]
+  3 [label = "011"]
+  4 [label = "100"]
+  5 [label = "101"]
+  6 [label = "110"]
+  7 [label = "111"]
+  0 -> 1 [label = "1"]
+  0 -> 0 [label = "0"]
+  1 -> 3 [label = "1"]
+  1 -> 2 [label = "0"]
+  2 -> 5 [label = "1"]
+  2 -> 4 [label = "0"]
+  3 -> 7 [label = "1"]
+  3 -> 6 [label = "0"]
+  4 -> 1 [label = "1"]
+  4 -> 0 [label = "0"]
+  5 -> 3 [label = "1"]
+  5 -> 2 [label = "0"]
+  6 -> 5 [label = "1"]
+  6 -> 4 [label = "0"]
+  7 -> 7 [label = "1"]
+  7 -> 6 [label = "0"]
+"""]]
+
+## 11111011100110101100010100100000:
+
+[[!graph prog="circo" src="""
+  0 [label = "0000"]
+  1 [label = "0001"]
+  2 [label = "0010"]
+  3 [label = "0011"]
+  4 [label = "0100"]
+  5 [label = "0101"]
+  6 [label = "0110"]
+  7 [label = "0111"]
+  8 [label = "1000"]
+  9 [label = "1001"]
+  10 [label = "1010"]
+  11 [label = "1011"]
+  12 [label = "1100"]
+  13 [label = "1101"]
+  14 [label = "1110"]
+  15 [label = "1111"]
+  0 -> 1 [label = "1"]
+  0 -> 0 [label = "0"]
+  1 -> 3 [label = "1"]
+  1 -> 2 [label = "0"]
+  2 -> 5 [label = "1"]
+  2 -> 4 [label = "0"]
+  3 -> 7 [label = "1"]
+  3 -> 6 [label = "0"]
+  4 -> 9 [label = "1"]
+  4 -> 8 [label = "0"]
+  5 -> 11 [label = "1"]
+  5 -> 10 [label = "0"]
+  6 -> 13 [label = "1"]
+  6 -> 12 [label = "0"]
+  7 -> 15 [label = "1"]
+  7 -> 14 [label = "0"]
+  8 -> 1 [label = "1"]
+  8 -> 0 [label = "0"]
+  9 -> 3 [label = "1"]
+  9 -> 2 [label = "0"]
+  10 -> 5 [label = "1"]
+  10 -> 4 [label = "0"]
+  11 -> 7 [label = "1"]
+  11 -> 6 [label = "0"]
+  12 -> 9 [label = "1"]
+  12 -> 8 [label = "0"]
+  13 -> 11 [label = "1"]
+  13 -> 10 [label = "0"]
+  14 -> 13 [label = "1"]
+  14 -> 12 [label = "0"]
+  15 -> 15 [label = "1"]
+  15 -> 14 [label = "0"]
+"""]]
+
+## 1111110111100111010111000110110100110010110000101010001001000000:
+
+[[!graph prog="circo" src="""
+  size = 12
+  0 [label = "00000"]
+  1 [label = "00001"]
+  2 [label = "00010"]
+  3 [label = "00011"]
+  4 [label = "00100"]
+  5 [label = "00101"]
+  6 [label = "00110"]
+  7 [label = "00111"]
+  8 [label = "01000"]
+  9 [label = "01001"]
+  10 [label = "01010"]
+  11 [label = "01011"]
+  12 [label = "01100"]
+  13 [label = "01101"]
+  14 [label = "01110"]
+  15 [label = "01111"]
+  16 [label = "10000"]
+  17 [label = "10001"]
+  18 [label = "10010"]
+  19 [label = "10011"]
+  20 [label = "10100"]
+  21 [label = "10101"]
+  22 [label = "10110"]
+  23 [label = "10111"]
+  24 [label = "11000"]
+  25 [label = "11001"]
+  26 [label = "11010"]
+  27 [label = "11011"]
+  28 [label = "11100"]
+  29 [label = "11101"]
+  30 [label = "11110"]
+  31 [label = "11111"]
+  0 -> 1 [label = "1"]
+  0 -> 0 [label = "0"]
+  1 -> 3 [label = "1"]
+  1 -> 2 [label = "0"]
+  2 -> 5 [label = "1"]
+  2 -> 4 [label = "0"]
+  3 -> 7 [label = "1"]
+  3 -> 6 [label = "0"]
+  4 -> 9 [label = "1"]
+  4 -> 8 [label = "0"]
+  5 -> 11 [label = "1"]
+  5 -> 10 [label = "0"]
+  6 -> 13 [label = "1"]
+  6 -> 12 [label = "0"]
+  7 -> 15 [label = "1"]
+  7 -> 14 [label = "0"]
+  8 -> 17 [label = "1"]
+  8 -> 16 [label = "0"]
+  9 -> 19 [label = "1"]
+  9 -> 18 [label = "0"]
+  10 -> 21 [label = "1"]
+  10 -> 20 [label = "0"]
+  11 -> 23 [label = "1"]
+  11 -> 22 [label = "0"]
+  12 -> 25 [label = "1"]
+  12 -> 24 [label = "0"]
+  13 -> 27 [label = "1"]
+  13 -> 26 [label = "0"]
+  14 -> 29 [label = "1"]
+  14 -> 28 [label = "0"]
+  15 -> 31 [label = "1"]
+  15 -> 30 [label = "0"]
+  16 -> 1 [label = "1"]
+  16 -> 0 [label = "0"]
+  17 -> 3 [label = "1"]
+  17 -> 2 [label = "0"]
+  18 -> 5 [label = "1"]
+  18 -> 4 [label = "0"]
+  19 -> 7 [label = "1"]
+  19 -> 6 [label = "0"]
+  20 -> 9 [label = "1"]
+  20 -> 8 [label = "0"]
+  21 -> 11 [label = "1"]
+  21 -> 10 [label = "0"]
+  22 -> 13 [label = "1"]
+  22 -> 12 [label = "0"]
+  23 -> 15 [label = "1"]
+  23 -> 14 [label = "0"]
+  24 -> 17 [label = "1"]
+  24 -> 16 [label = "0"]
+  25 -> 19 [label = "1"]
+  25 -> 18 [label = "0"]
+  26 -> 21 [label = "1"]
+  26 -> 20 [label = "0"]
+  27 -> 23 [label = "1"]
+  27 -> 22 [label = "0"]
+  28 -> 25 [label = "1"]
+  28 -> 24 [label = "0"]
+  29 -> 27 [label = "1"]
+  29 -> 26 [label = "0"]
+  30 -> 29 [label = "1"]
+  30 -> 28 [label = "0"]
+  31 -> 31 [label = "1"]
+  31 -> 30 [label = "0"]
+"""]]
diff --git a/default-constructor-riddle.mdwn b/default-constructor-riddle.mdwn
new file mode 100644 (file)
index 0000000..a25af13
--- /dev/null
@@ -0,0 +1,18 @@
+[[!meta title="C++ default constructor riddle"]]
+[[!tag cxx-riddle]]
+
+Can you guess what the following program writes to standard output when
+run?
+
+    #include <string>
+    #include <iostream>
+
+    int main(int, char * [])
+    {
+      std::string prefix("->"), middle(), suffix("<-");
+      std::cout << "This space has been intentionally left blank: "
+                << prefix << middle << suffix
+                << std::endl;
+      return 0;
+    }
+
diff --git a/distance-to-the-horizon.mdwn b/distance-to-the-horizon.mdwn
new file mode 100644 (file)
index 0000000..6c6d246
--- /dev/null
@@ -0,0 +1,9 @@
+[[!meta title="How far is it to the Horizon?"]]
+[[!tag geometrie]]
+
+My girl-friend and I were watching a beautiful sunset, and suddenly she
+asked me: "How far is it to the horizon?" This appears to be a popular
+question, and many people have figured out an answer and published it on
+the Internet and elsewhere. Anyway, my take on the subject is described
+in the [[How far is it to the Horizon? (PDF)|distance-to-the-horizon.pdf]]
+article.
diff --git a/distance-to-the-horizon.pdf b/distance-to-the-horizon.pdf
new file mode 100644 (file)
index 0000000..83264db
Binary files /dev/null and b/distance-to-the-horizon.pdf differ
diff --git a/duff-device-riddle.mdwn b/duff-device-riddle.mdwn
new file mode 100644 (file)
index 0000000..f0517ec
--- /dev/null
@@ -0,0 +1,34 @@
+[[!meta title="C++ duff device riddle"]]
+[[!tag cxx-riddle]]
+
+Can you guess what the following program writes to standard output when
+run with command-line arguments "8" and "9", respectively?
+
+    #include <iostream>
+    #include <iterator>
+    #include <cstdlib>
+
+    int main(int argc, char * argv[])
+    {
+      if (argc != 2)
+      {
+        std::cerr << "Usage: duff-device integer" << std::endl;
+        return 1;
+      }
+      int count( std::atoi(argv[1]) );
+      int n( (count + 3) / 4 );
+      std::ostream_iterator<int> int_out(std::cout, " ");
+      std::ostream_iterator<char const *> str_out(std::cout, " ");
+      switch(count % 4)
+      {
+        case 0:     for (*str_out++ = "init"; --n >= 0; *str_out++ = "loop")
+                    {
+                       *int_out++ = count--;
+        case 3:        *int_out++ = count--;
+        case 2:        *int_out++ = count--;
+        case 1:        *int_out++ = count--;
+                    }
+      }
+      std::cout << std::endl;
+      return 0;
+    }
diff --git a/evaluation-order-riddle.mdwn b/evaluation-order-riddle.mdwn
new file mode 100644 (file)
index 0000000..96e72e0
--- /dev/null
@@ -0,0 +1,34 @@
+[[!meta title="C++ evaluation order riddle"]]
+[[!tag cxx-riddle]]
+
+Can you guess what the following program writes to standard output when
+run?
+
+    #include <iostream>
+    #include <stack>
+
+    typedef std::stack<char> stack;
+
+    inline stack & push(stack & st, char c)
+    {
+      st.push(c);
+      return st;
+    }
+
+    inline char pop(stack & st)
+    {
+      char const c = st.top();
+      st.pop();
+      return c;
+    }
+
+    int main(int, char * [])
+    {
+      stack st;
+      push(push(push(st, 'c'), 'b'), 'a');
+      std::cout << pop(st) << pop(st) << pop(st) << std::endl;
+      return 0;
+    }
+
+Note that you may find it enlightening to try this program with
+different compilers, i.e. with GCC, MSVC, and ICC.
diff --git a/exception-riddle.mdwn b/exception-riddle.mdwn
new file mode 100644 (file)
index 0000000..ff0edd8
--- /dev/null
@@ -0,0 +1,40 @@
+[[!meta title="C++ exception riddle"]]
+[[!tag cxx-riddle]]
+
+Can you guess what the following program writes to standard output when run?
+
+    #include <iostream>
+    #include <stdexcept>
+
+    struct foo : std::exception
+    {
+      char const * what() const throw() { return "foo"; }
+    };
+
+    struct bar : std::exception
+    {
+      char const * what() const throw() { return "bar"; }
+    };
+
+    struct foobar : foo, bar
+    {
+      char const * what() const throw() { return "foobar"; }
+    };
+
+    int main(int, char * [])
+    {
+      try
+      {
+        throw foobar();
+      }
+      catch(std::exception const & e)
+      {
+        std::cout << e.what() << std::endl;
+      }
+      catch(...)
+      {
+        std::cout << "*** program terminated because of unknown error" << std::endl;
+      }
+
+      return 0;
+    }
diff --git a/flugbahnen/beispiel-1.png b/flugbahnen/beispiel-1.png
new file mode 100644 (file)
index 0000000..b4e652b
Binary files /dev/null and b/flugbahnen/beispiel-1.png differ
diff --git a/flugbahnen/flugbahn.png b/flugbahnen/flugbahn.png
new file mode 100755 (executable)
index 0000000..62fe923
Binary files /dev/null and b/flugbahnen/flugbahn.png differ
diff --git a/flugbahnen/index.mdwn b/flugbahnen/index.mdwn
new file mode 100644 (file)
index 0000000..bc6bc36
--- /dev/null
@@ -0,0 +1,72 @@
+[[!meta title="Flugbahnen unter Einfluss der Schwerkraft"]]
+[[!tag physik]]
+
+Ein Ball wird mit der Geschwindigkeit $v\ge0$ geworfen. In dem Moment,
+in dem er die Hand verlässt, befindet er sich auf der Höhe $h\ge0$.
+Würden außer der Beschleunigung durch den Wurf keinerlei andere Kräfte
+auf den Ball wirken, so flöge er endlos geradeaus. Der Winkel zwischen
+dieser Geraden und dem Erdboden sei $0\le\alpha\le\frac{\pi}{2}$.
+
+> [[!img "flugbahn.png" class="floatright"]]
+
+Über Zeit $t\ge0$ betrachtet, ist die Position des Balles in der
+komplexen Ebene $$\mathrm{e}^{i{\alpha}}\,v\,t+ih.$$
+
+In der Nähe der Erdoberfläche beschleunigt die Schwerkraft jeden Körper
+mit $g=9{,}81\,\mathrm{m}/\mathrm{s}^2$ in Richtung des Erdmittelpunktes. Beschleunigung
+ist die zweite Ableitung des Ortsvektors über Zeit, also beschreibt
+$$\iint{}g\,\textrm{dt}\,\textrm{dt}\;=\;\frac{1}{2}\,g\,t^{2}$$ die
+Position eines Objektes im freien Fall. Die Flugbahn eines geworfenen
+Balles ist damit (näherungsweise) die Summe dieser beiden Kräfte:
+
+$$r(t)\;=\;\textrm{e}^{i{\alpha}}\,v\,t+i\left(h-\frac{g}{2}\,{t}^{2}\right).$$
+
+Der reale und der imaginäre Teil dieses Ausdrucks entsprechen den
+(x,y)-Koordinaten des Balles zur Zeit $t$:
+
+> ------- ----- ---------------------------------------------------
+>  $x(t)$  $=$  $\cos\left(\alpha\right)\,t\,v$
+>  $y(t)$  $=$  $\sin\left(\alpha\right)\,t\,v+h-\frac{g}{2}\,t^2.$
+> ------- ----- ---------------------------------------------------
+
+Von besonderem Interesse ist der Moment $y(t)=0$, in dem der Ball auf
+den Boden aufschlägt:
+
+$$t\;=\;\frac{1}{g}\,\left(\sqrt{{\sin\left(\alpha\right)}^{2}\,{v}^{2}+2\,g\,h}+\sin\left(\alpha\right)\,v\right).$$
+
+Dieses $t$ entspricht der Dauer des Fluges, und in $x(t)$ eingesetzt
+folgt daraus die insgesamt zurückgelegte Distanz.
+
+Welcher Abwurfwinkel &alpha; ist nun ideal, um eine möglichst große
+Weite zu erzielen? Das folgende Diagramm veranschaulichen die Situation
+anhand eines Balles, der dreimal mit denselben $v$ und $h$ geworfen
+wird, aber &alpha; variiert:
+
+> [[!img "beispiel-1.png"]]
+
+Über den optimalen Abwurfwinkel gibt die Ableitung
+$\frac{\text{d}}{\text{d}\alpha}\,x(t)$ Auskunft, denn für feste $v$ und
+$h$ nimmt $x(t)$ nimmt seinen Extremwert an, wenn das gewählte &alpha;
+eine Nullstelle dieser Ableitung ist:
+
+$$\alpha=\arcsin\left(\frac{v}{\sqrt{2}\,\sqrt{v^{2}+g\,h}}\right).$$
+
+Die Grenzwerte von &alpha; für $h$ und $v$ lauten jeweils:
+
+> --------------------------- ----- ---------------------------------------------------
+> $\lim_{h\to0} \alpha$        $=$  $\frac{\pi}{4}$
+> $\lim_{v\to0} \alpha$        $=$  $0$
+> $\lim_{h\to\infty} \alpha$   $=$  $0$
+> $\lim_{v\to\infty} \alpha$   $=$  $\frac{\pi}{4}$
+> --------------------------- ----- ---------------------------------------------------
+
+Offenbar ist es nicht optimal, einen Ball in einem Winkel größer als
+45&deg; abzuwerfen, wenn die maximale Weite erzielt werden soll.
+
+Für einen Wurf mit $v=10\,\mathrm{m}/\mathrm{s}$ und
+$h=1{,}65\,\mathrm{m}$ ist der optimale Abwurfwinkel
+$\alpha\approx40{,}99^\circ$. Es wird eine Weite von 11,73&nbsp;m
+erzielt. Wird der Ball stattdessen mit $v=25\,\mathrm{m}/\mathrm{s}$
+geworfen, dann fliegt er 64,93&nbsp;m weit. Wird der Abwurfwinkel dann
+noch auf die optimale Größe $\alpha\approx44{,}27^\circ$ korrigiert, so
+erreicht der Ball die größtmögliche Weite von 65,34&nbsp;m.
diff --git a/free-software.mdwn b/free-software.mdwn
new file mode 100644 (file)
index 0000000..241761e
--- /dev/null
@@ -0,0 +1,165 @@
+[[!meta title="Index of available free software"]]
+[[!tag software]]
+
+Over the years, I have been involved in a number of free software
+projects that are publicly available for everyone take advantage of. A
+comprehensive overview is also available at [Ohloh, the open source
+network](http://www.ohloh.net/accounts/peter_simons).
+
+# Tools
+
+* [[The Nix project|http://nixos.org/]]
+
+    NixOS is my personal favorite of all Linux distributions. It
+    supports atomic upgrades, rollbacks and multi-user package
+    management, and it has a declarative approach to system
+    configuration management that makes it easy to reproduce a
+    configuration on another machine.
+
+* [GNU Autoconf Macro Archive](http://www.gnu.org/software/autoconf-archive/)
+
+    The Autoconf Archive collects Autoconf macros from friendly
+    contributors all over the world. As of today, it it contains over
+    300 of them, all categorized and nicely documented.
+
+* [[hledger-interest|http://hackage.haskell.org/package/hledger-interest]]
+
+    hledger-interest is a small command-line utility based on Simon
+    Michael's hleder library. Its purpose is to compute interest for a
+    given ledger account. Using command line flags, the program can be
+    configured to use various schemes for day-counting, such as act/act,
+    30360, 30E360, and 30/360isda. Furthermore, it supports a (small)
+    number of interest schemes, i.e. annual interest with a fixed rate
+    and the scheme mandated by the German BGB288 (Basiszins für
+    Verbrauchergeschäfte).
+
+* [mini-httpd](http://www.nongnu.org/mini-httpd/)
+
+    mini-httpd is a small web server designed for optimal
+    performance, high security, and as little use of system resources
+    as possible. It uses the `poll(2)` system call to multiplex an
+    arbitrary number of connections internally, rather than using
+    `fork(2)` or OS threading. The daemon is very portable and should
+    work on any POSIX system.
+
+* [mapSoN <–\> NoSpam](http://mapson.sourceforge.net/)
+
+    mapSoN is an efficient albeit somewhat dated challenge/response
+    spam filter. It consists of a single Unix utility that is hooked
+    into your local mail delivery system via procmail, sendmail's
+    `$HOME/.forward` mechanism, or a similar mechanism.
+
+* [The Petidomo Mailing List Manager](http://petidomo.sourceforge.net/)
+
+    Petidomo is a a simple mailing list server for the Unix
+    operating system. It is written in C and comes with many features
+    such as moderated mailing lists, challenge/response-style spam
+    protection, and a powerful access-control language.
+
+* [[PGPAmiga 2.6.3 International Version|PGPAmiga-2.6.3is.lha]] (LHA Archive)
+
+    Cryptography for the masses ... now we only need to educate the
+    masses where to find an Amiga.
+
+* [Postmaster ESMTP Server](http://hackage.haskell.org/package/postmaster)
+
+    The Mail Transport Agent (MTA) of choice for the discriminating
+    Haskell hacker in an unstable alpha release.
+
+# C/C++ Libraries
+
+* [Asynchronous I/O for C++](http://www.nongnu.org/ioxx/)
+
+    The ioxx library provides primitives for asynchronous I/O in
+    C++. That kind of thing is typically useful for people who would
+    like to implement a highly concurrent network service, i.e. an
+    application that performs input/output simultaneously on a great
+    number of sockets. The library's main components are a socket event
+    dispatcher, a time event dispatcher, and an asynchronous DNS
+    resolver. There is also a class interface to socket programming
+    that offers those wonders of modern C++ such as exception-style
+    error reporting, transparent resource management, type-safety, and
+    support for custom memory allocation strategies. Ioxx is
+    thread-safe in the sense that it is fully re-entrant. The code runs
+    on any POSIX-compliant operating system, most notably Linux,
+    NetBSD, Solaris, AIX, HP/UX, and Windows.
+
+* [Variable-Expression Library](http://www.nongnu.org/varexp/)
+
+    This C++ language library provides `sh(1)`-like variable
+    substitution in text buffers. It can do quite a bit more than just
+    »substituting«, though. And for those who don't trust C++, an
+    [ISO-C version](http://www.ossp.org/pkg/lib/var/) is available as
+    well.
+
+* [FastCGI Protocol Library](http://www.nongnu.org/fastcgi/)
+
+    libfastcgi implements a complete system-independent FastCGI
+    protocol driver, which can be used to handle all communications
+    between the web server and the FastCGI application.
+
+* [Extensible Data Serialization Library](http://www.ossp.org/pkg/lib/xds/)
+
+    libxds allows application programmers to serialize data
+    structures in a way that can be exchanged between machines of
+    different architectures without worrying about endian conversion or
+    other traps. The library provides a framework, which let's you
+    plug-in various encoding and decoding backends. mplementations for
+    XDR and XML formats are included. The library is written in C and
+    is expected to be very portable.
+
+* [[RFC2822 Address Parser Library|http://sourceforge.net/projects/rfc-parsers/]]
+
+    A collection of C++ parsers for the grammar defined in [IETF Request
+    for Comment 2822](http://www.faqs.org/rfcs/rfc2822.html). There are
+    two versions of this library: an older, simpler variant,
+    [[librfc822.tar.gz|http://downloads.sourceforge.net/project/rfc-parsers/librfc822-1.2.tar.gz]]
+    that uses a hand-written recursive descent parsers, and a [[newer,
+    more powerful
+    version|http://rfc-parsers.git.sourceforge.net/git/gitweb.cgi?p=rfc-parsers/rfc-parsers]]
+    that is based on the [Boost.Spirit](http://spirit.sourceforge.net/)
+    parser library.
+
+# Haskell Libraries
+
+* [HsDNS](http://hackage.haskell.org/package/hsdns)
+
+    On top of the GNU adns library, these Haskell modules implement
+    an asynchronous DNS resolver. On the Haskell side, the concurrency
+    is hidden from the user through the use of an `MVar`.
+
+* [Internet-Message-Format Parsers](http://hackage.haskell.org/package/hsemail)
+
+    This package contains various parsers for the Internet Message
+    Format defined in RFC2822, plus various additional e-mail related
+    things from 2821.
+
+* [FFI bindings to `syslog(3)`](http://hackage.haskell.org/package/hsyslog)
+
+    An `hsc2hs` module with FFI bindings to `syslog`.
+
+* [Functional MetaPost](http://hackage.haskell.org/package/funcmp)
+
+    Functional MetaPost is a Haskell frontend to the MetaPost
+    language by John Hobby. Users write their graphics as Haskell
+    programs, which then emit MetaPost code that can be compiled into
+    encapsulated PostScript files and smoothly included into e.g.
+    LaTeX.
+
+* [FFI bindings to OpenSSL](http://hackage.haskell.org/package/hopenssl)
+
+    A very incomplete collection of functions implemented on top of
+    the OpenSSL library. Currently provides the message digest
+    algorithms MD2, MD5, SHA, SHA1, DSS, DSS1, MDC2, and RIPEMD160
+    through a unified API.
+
+* [Generic Stream Processor](http://hackage.haskell.org/package/streamproc)
+
+    Based on the `Arrow` class, this module implements a generic
+    data stream processor which may be used in the `IO` monad or in
+    pure code.
+
+* [Halipeto](http://hackage.haskell.org/package/halipeto)
+
+    Halipeto is a Haskell library for generating static HTML pages from
+    XML templates and a file-based value dictionary.
diff --git a/index.mdwn b/index.mdwn
new file mode 100644 (file)
index 0000000..1b2f273
--- /dev/null
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright &copy; 2011 Peter Simons <simons@cryp.to>"]]
+[[!img "peter-simons.jpg" class="floatright" alt="[nice picture of Peter Simons]"]]
+
+Yo Internet,
+
+welcome to my home page. This site is a loose collection of original
+content that I hope to be interesting, funny, or even useful.
+
+## Software Development
+
+[[!map pages="tagged(software)" show=title]]
+
+## Cryptography / Network Security
+
+[[!map pages="tagged(security)" show=title]]
+
+## C++ Programming Language Riddles
+
+[[!map pages="tagged(cxx-riddle)" show=title]]
+
+## Geometrie
+
+[[!map pages="tagged(geometrie)" show=title]]
+
+## Physik
+
+[[!map pages="tagged(physik)" show=title]]
+
+## Stochastik
+
+[[!map pages="tagged(stochastik)" show=title]]
+
+## Graph Theory
+
+[[!map pages="tagged(graph-theory)" show=title]]
+
+## FAQ
+
+[[!map pages="tagged(faq)" show=title]]
diff --git a/katzen-faq.mdwn b/katzen-faq.mdwn
new file mode 100644 (file)
index 0000000..ff0965b
--- /dev/null
@@ -0,0 +1,1915 @@
+[[!meta title="Häufig gestellte Fragen über Katzen"]]
+[[!tag faq]]
+
+[[!toc levels=2]]
+
+# Einleitung
+
+Als Mensch das Reich einer Katze mitzubewohnen ist nicht immer ganz
+einfach. Katzen sind sehr verwirrende Tiere. Ich komme
+beispielsweise in mein Schlafzimmer und finde dort meinen großen
+Reisekoffer halb kaputt auf dem Boden liegend, weil mein Kater Alan
+ihn offensichtlich vom Kleiderschrank heruntergeschoben und zu Fall
+gebracht hat. Das muß ihn ziemliche Mühe gekostet haben, denn der
+Koffer ist nicht gerade leicht. Ich stehe also da, schaue die Katze
+an, die seelenruhig auf dem Schrank sitzt und aus 2 Metern Höhe
+vorwurfsvoll auf mich herunter blickt, und frage mich: Wie zum
+Henker ist er überhaupt auf den Kleiderschrank gekommen?
+
+Das Rätsel konnte nie ganz geklärt werden, aber seitdem habe ich
+erkannt: wenn sie wollen, kommen Katzen *überall* hin. Kein Wunder,
+daß ihnen manchmal übernatürliche Fähigkeiten zugeschrieben werden.
+Jedenfalls wünsche ich mir, ich hätte das vorher gewußt, denn dann
+hätte ich den Koffer einfach mit der Unterseite auf dem Schrank
+festgenagelt, und nichts hätte passieren können.
+
+Ich muß sagen, daß ich als Neu-Katzenhalter damals sehr naiv an die
+Sache herangegangen bin. Ich habe zum Beispiel gedacht: Wenn die
+Katze was macht, was dir nicht paßt, dann kannst du ihr das
+abgewöhnen.
+
+Hehe, ja, ich war noch sehr jung damals -- obwohl, theoretisch
+stimmt es schon. Ich bin deutlich größer als Alan. Wenn ich
+beispielsweise ein frisches weißes Hemd anhabe, und die Katze
+beschließt, daß sie jetzt mit jeder Faser ihres haarigen Körpers
+Zuneigung braucht, und Schmusen, Schubbern, und gestreichelt werden
+muß, und zwar SOFORT, dann könnte ich sie theoretisch einfach von
+meinem Schoß herunter stoßen, und das Hemd bliebe weiß.
+
+Man macht sie ja keine Vorstellung davon, wie *schwer* so eine
+Katze in dem Moment werden kann. Selbst wenn ich den Willen
+aufbrächte, einen schmusewütigen Kater von meinem Schoß zu stoßen,
+dann würde Alan sich einfach festkrallen und stattdessen die Hose
+ruinieren.
+
+Die Katze gewinnt also, egal was man macht. Mein persönlicher Rat
+ist deshalb, einfach immer zu machen, was die Katze will. Dann hat
+man null Stress, wird gut behandelt, und an den ganzen Haaren auf
+der Kleidung können Katzenbesitzer sich weltweit erkennen, und dann
+beieinander ausheulen.
+
+Zu wissen, was Ihre Katze will, ist also erste Bürgerpflicht für
+jeden Katzenhalter. Wenn das Tier plötzlich *neben* das Katzenklo
+pinkelt oder das Futter nicht fressen will oder aggressiv wirkt,
+dann gibt es dafür Gründe.
+
+Da Katzen, wie erwähnt, sehr verwirrende Tiere sind, ist es nicht
+immer leicht, vom Verhalten der Katze auf ihre Gründe zu schließen.
+Deshalb haben Christel Wysocki, Roland Sprave, Sven Christian
+Berger, Kristin Löwe, Roby Leemann, Lars Eilebrecht, Volkmar
+Kostka, Guni Abel und ich uns die Mühe gemacht, das, was wir zu
+wissen glauben, einmal aufzuschreiben. (Wenn ich jemanden vergessen
+haben sollte, bitte ich um Nachricht!)
+
+Dieser Text soll eine Einführung für Neu-Katzenhalter sein. Er gibt
+die Erfahrungen der Autoren wieder, die selber seit langen Jahre
+Katzen halten. Der Text erhebt keinen Anspruch auf
+wissenschaftliche Genauigkeit. Gerade wenn es darum geht, daß das
+Tier krank ist, darf eine Internet-FAQ immer nur als *zusätzliche*
+Informationsquelle verstanden werden, keinesfalls ersetzt ein hier
+genannter Ratschlag einen Besuch beim Tierarzt!
+
+Auch die Ratschläge zum Verhalten und zur Erziehung von Katzen
+dürfen nicht überbewertet werden. Katzen sind Individuen; mancher
+Tip, der bei einem Tier viel Erfolg hatte, schlägt bei einem
+anderen völlig fehl. Bedenken Sie, daß niemand Ihre Katze so gut
+kennt, wie Sie selber. Wenn Sie also *Ihrem* Instinkt mehr trauen,
+als einem Ratschlag aus dem Internet, dann machen Sie
+wahrscheinlich nichts falsch. Neben Futter ist das, was Ihre Katze
+am wichtigsten benötigt, Aufmerksamkeit, Zuneigung, und Respekt vor
+ihrem Willen. Wenn Sie das Tier so behandeln, wird es ihm gut
+gehen, auch wenn sie nicht ganz genau den nach neusten
+Erkenntnissen der Wissenschaft empfohlenen Vitamincocktail
+füttern.
+
+## Wenn Sie Verbesserungsvorschläge haben ...
+
+Die Katzen-FAQ ist im Laufe der Jahre relativ umfangreich geworden.
+Dies ist in erster Linie der Mithilfe vieler freundlicher Leser
+geschuldet, die ihre Erfahrungen als Katzenhalter mit mir geteilt
+und so zu diesem Text beigetragen haben. Wenn Sie, lieber Leser,
+bei der Lektüre also eine Idee haben, oder einen Fehler gefunden
+haben, dann freue ich mich über eine
+[Nachricht per E-Mail](mailto:simons@cryp.to).
+
+# Wissenwertes rund um die Katze
+
+## Wie Katzen die Welt erfahren
+
+### Die Augen
+
+Das Leuchten der Augen bei Nacht kommt zustande, weil der
+Augenhintergrund mit einer reflektierenden Schicht (tapetum
+lucidum) ausgekleidet ist, die wie ein Spiegel hinter der Netzhaut
+Licht auf die Nervenzellen zurückwirft. Deshalb können Katzen auch
+bei ganz geringem Lichteinfall noch sehen, nicht aber bei völliger
+Dunkelheit. Zusätzlich kann die Katze den Lichteinfall mit Hilfe
+der elliptoiden Schlitzpupillen regulieren. Konzentriert sie den
+Blick auf ein Objekt, zieht sie gleichzeitig die Augenlieder
+zusammen. Die Lichtempfindlichkeit des Katzenauges ist so groß, daß
+sie ohne diese Möglichkeiten ein kleines Tier nur noch als
+blendendes Lichtbündel sehen würde. Nachts dagegen öffnen sich die
+Pupillen so weit, daß von der Iris nur noch ein ganz schmaler
+Randstreifen übrigbleibt.
+
+Lange umstritten war, ob Katzen Farben sehen und unterscheiden
+können. Die Netzhaut enthält, wie übrigens auch beim Menschen,
+signifikant mehr Stäbchen, die nur auf S/W ansprechen, als
+Zäpfchen, mit denen Farben wahrgenommen werden können. Heute weiß
+man, daß Katzen die meisten Farben voneinander unterscheiden
+können, nicht aber die feineren Nuancen innerhalb einer Farbe. Das
+gilt allerdings nicht für die verschiedenen Grautöne, unter denen
+sie noch die subtilsten Schattierungen herausfinden können. Als
+dämmerungsaktives Tier ist es lebenswichtig, sich in einer Grau in
+Grau getönten Umgebung einwandfrei zurechtzufinden. Aber auch Rot
+und Grün, Rot und Blau, Rot und Grau, Grün und Blau, Grün und Grau,
+Blau und Grau, Gelb und Blau sowie Gelb und Grau kann die Katze mit
+Sicherheit voneinander unterscheiden, Gelb und Rot wahrscheinlich
+nicht.
+
+### Gehör
+
+Die Katze kann Töne mit 60.000 bis 65.000 Tonschwingungen/sek und
+darüber wahrnehmen. Einige Experten sprechen sogar von 100.000
+Schwingungen/sek. Zum Vergleich: Menschen hören in jungen Jahren
+lediglich 20.000 Schwingungen/sek.
+
+Je mehr Schwingungen ein Ton hat, desto höher liegt er. Während
+qdie Katze also mindestens dreimal soviel hohe Töne aufnehmen kann
+wie wir, ist der Unterschied bei der Wahrnehmung tiefer Töne
+gering. Nach dem 5. Lebensjahr läßt das Gehör allmählich nach.
+Domestizierte Katzen werden im Alter häufig taub.
+
+### Geschmack
+
+Wie hoch der Geschmackssinn der Katzen entwickelt ist merkt man
+spätestens, wenn man versucht, ihr übers Futter Medikamente zu
+verabreichen. Sie bemerkt den Betrug sofort und läßt die »gesalzene
+Torte« empört stehen. Süßes können Katze dagegen gar nicht
+schmecken:
+<[http://www.sueddeutsche.de/wissen/artikel/427/57370/](http://www.sueddeutsche.de/wissen/artikel/427/57370/)\>.
+Auf sauere, bittere und salzige Geschmackskomponenten reagieren
+Katzen dagegen stärker. Ihr Geschmackssinn ist insgesamt aber nicht
+so gut ausgebildet, wie der des Menschen.
+
+### Geruch
+
+Der Geruchssinn der Katze ist unserem weit überlegen. Eine Katze
+beschnuppert ihr Futter erst einmal ausgiebig. Geht sie dann
+wieder, entspricht das Futter nicht ihrem Geschmack, obwohl sie
+noch gar nicht probiert hat.
+
+Auf weitere Entfernungen können Katzen den sexuellen Lockduft ihrer
+Artgenossen wahrnehmen. Durch Analkontrolle, das Schnuppern am
+Hinterteil einer anderen Katze, erfahren sie alles Wissenswerte
+über deren Stimmung, Absichten und Gesundheitszustand.
+
+## Ältere Katzen
+
+Wie alt Katzen werden können, darüber streiten sich die Götter.
+Allgemein kann man von rund 15-18 Jahren ausgehen. Jedenfalls
+ziehen sich auch Katzen, wenn sie älter werden, so langsam auf ihr
+Altenteil zurück. Das bedeutet Veränderungen im täglichen
+Verhalten: die Katze geht seltener raus, und wenn dann nur noch für
+kurze Zeit. Sie hält sich aus Kämpfen mit anderen Katzen raus,
+schläft ausgiebiger, ist beim Spielen und Kämpfen mit Menschen
+nicht mehr so ausdauernd. Außerdem wird die Katze empfindlicher und
+ändert ihre Eßgewohnheiten, weil sie manches Futter, das sie früher
+gerne aß, nicht mehr verträgt. Diese Veränderungen sind völlig
+normal, und geben keinen Grund zur Sorge, solange die Katze
+ansonsten gesund ist (also keine *chronischen* Verdauungsstörungen
+aufweist, etc.).
+
+Man sollte einer älteren Katze noch mehr Aufmerksamkeit und
+Zuwendung schenken als einer jungen. Das äußert sich auch in
+Toleranz dafür, daß ein älteres Tier vielleicht öfter mal den Magen
+plötzlich entleeren muß, und dabei keinen Rücksicht auf den schönen
+Teppich nimmt. Vor der Anschaffung einer Katze sollte man das nicht
+vergessen! Im Zweifelsfalls begleitet einen das Tier für die
+nächsten 15 Jahre -- oder hoffentlich länger --, und das vom Tier
+benötigte Maß an Aufmerksamkeit wird mit der Zeit *größer*.
+
+## Katzen und Gewalt
+
+Man hört immer wieder von schrecklicher Tierquälerei. Anscheinend
+kommen Menschen auf die Idee, Ihre Katze in die Waschmaschine zu
+stecken, das zu filmen, und das Video dann ans Fernsehen zu senden.
+Wie zu so etwas fähig sein kann, wird mir immer unbegreiflich
+bleiben. Die Gewalt von Menschen an Tieren ist ein beängstigendes
+gesellschaftliches Problem. Man muß sich immer wieder vor Augen
+führen, daß Tiere lebende Wesen sind, die wie wir Freude, Zuneigung
+und Vertrauen, wie auch Trauer, Schmerz und Abneigung verspüren.
+
+Besonders gräßlich ist die legale Tierquälerei der
+Pharma-Industrie. Es gibt schon lange Alternativen, zum Beispiel
+Versuche an Zellkulturen, deren Ergebnisse sich auf Menschen und
+Tiere übertragen lassen. Diese Versuche sind aber teuer und
+aufwendig. Der Gesetzgeber könnte die Forschung auf diesem Gebiet
+durch entsprechende Gesetze forcieren, die Pharma-Lobby setzt sich
+hier aber immer noch durch. Aus Kostengründen werden daher immer
+noch Tiere, auch Katzen, als Versuchstiere mißbraucht. Dieses Thema
+wird auch in dem Roman »Felidae« von A. Pirinçci behandelt.
+
+Sollten Sie Ihre Katze abgeben müssen, so ist eine gute Idee, einen
+Tierschutzvertrag mit dem neuen Besitzer abzuschließen: ein Muster
+ist beispielsweise unter
+<[http://www.katzeninfo.com/tierschutzvertrag.rtf](http://www.katzeninfo.com/tierschutzvertrag.rtf)\>
+zu finden.
+
+## Katzen und Zärtlichkeit
+
+Die Fähigkeit von Katzen, Zärtlichkeit zu genießen, ist
+beneidenswert. Zuneigung können meine Katzen zumindest in
+beliebigen Mengen vertragen. Eine Theorie sagt, die Katze würde
+unsere Hand beim Streicheln als eine Art »verlängerte Zunge« der
+Mutterkatze erfahren. Tatsächlich trampeln viele Katzen beim
+Schmusen genüßlich mit ausgefahrenen Krallen auf dem Sofa, dem
+Teppich oder dem Menschen herum; ein Reflex mit dem junge Katzen
+beim Säugen die Milchdrüsen des Muttertiers stimulieren.
+
+Der so genannte Milchtritt kombiniert mit lautem Schnurren ist ein
+sicheres Zeichen dafür, daß die Katze für einen Moment vergessen
+hat, daß sie eigentlich ein Raubtier ist. Sie verhält sich nun wie
+ein Kätzchen. Beispielsweise suchen Katzen beim Schmusen direkten
+Blickkontakt -- was Tiere normalerweise als aggressiv empfinden.
+Häufig erwidern Katzen die Zuneigung regelrecht, indem sie mit dem
+Kopf an einem entlangstreichen, oder sie versuchen mit ihrer Nase
+die des Menschen zu berühren, wie sie es beim Beschnuppern eines
+Artgenossen tun.
+
+Insgesamt sind Katzen sehr sinnliche Tiere, und gelten deswegen in
+vielen Kulturen als Symbol für Weiblichkeit.
+
+Sprichwörtlich ist die Eigenwilligkeit der Katze. Ein verdächtiges
+Geräusch genügt, ein Vogelzwitschern zum Beispiel, und das sich
+eben noch räkelnde, süße Kätzchen ist wieder ein Raubtier. Entgegen
+dem, was manche Leute behaupten, beißen oder schlagen Katzen aber
+*nicht* plötzlich auf den eben noch geliebten Menschen ein, wenn
+sie die Lust am Schmusen verlieren. Vielmehr scheinen manche
+Menschen nicht zu bemerken, daß ein Tier, das sich stocksteif
+aufsetzt, die Ohren anlegt, und anfängt mit dem Schwanz zu
+peitschen, nicht mehr gestreichelt werden möchte.
+
+## Katzen und Kulturen
+
+Jede Gesellschaft geht unterschiedlich mit Katzen um. Während im
+mitteleuropäischem Mittelalter Katzen verfolgt und malträtiert
+wurden, vergötterte die ägyptische Gesellschaft die Katzen.
+Ironischerweise waren Pest und andere Krankheiten im alten Ägypten
+wesentlich seltener als im europäischen Mittelalter. Anzahl und
+Pflege von Katzen standen und stehen wohl im direkten Zusammenhang
+zur Ratten- und Mäusepopulation.
+
+Wer schon mal im Mittelmeerraum seinen Urlaub verbracht hat, konnte
+den Umgang der dortigen Bevölkerung mit Katzen beobachten. Nicht
+sehr schön in unseren Augen war und ist der Umgang mit Tieren. Auf
+Kreta beispielsweise liefen recht viele, ziemlich verwahrloste
+Tiere (Hunde, aber auch Katzen) herum. Touristen waren meist gnädig
+und fütterten die Tiere. Leider gibt's auch Zeiten, in denen
+Touristen nicht so zahlreich sind, wie in den Sommermonaten. Häufig
+hört man von Deutschen, die auf den Balearen oder anderen Inseln
+überwintern und sich der Tiere annehmen. Einige sinnvolle Projekte
+zum Tierschutz laufen auch dort schon.
+
+Noch mehr als in Mitteleuropa gelten in südlichen Ländern Tiere
+mehr als Gebrauchs- und Nutzgegenstand. Man sollte sich aber davor
+hüten, von oben herab »die Südländer« zu diffamieren. Schließlich
+gehen viele deutsche Agrarunternehmer auch nicht gerade zimperlich
+mit Tieren um.
+
+## Kastration
+
+Stubentiger, egal ob reine Hauskatze oder Katze mit Auslauf,
+sollten kastriert werden, außer zur *vernünftigen* Katzenzucht.
+Genau wie bei uns Menschen, leidet die Katzenwelt heutzutage an
+Überbevölkerung, und man sollte nicht »Papst spielen« und alles der
+Natur überlassen. Ein ausgiebiger Besuch im Tierheim wird einen
+solche Dinge in der Regel etwas pragmatischer sehen lassen.
+
+Zudem sind unkastrierte Kater oder Katzen (gerade bei reiner
+Wohnungshaltung) ausgesprochen unerträglich -- für Mensch und Tier.
+Eine rollige Katze, die nicht raus kann, leidet Höllenqualen; und
+ein Kater, der die ganze Wohnung mit seinem Duft versorgt, kann im
+Zweifelsfall zu schwerem Krach mit Mitbewohnern und Vermieter
+führen.
+
+Die Kosten für eine Kastration belaufen sich auf circa 50 Euro.
+Manche Tierärzte geben aber einen Preisnachlass, wenn Sie eine
+Katze aufnehmen, die Ihnen zugelaufen ist. Fragen Sie einfach mal.
+
+## Rassen und Zucht
+
+Im Gegensatz zu Katzen aus dem Tierheimen, weiß man bei Rassekatzen
+woher diese stammen und kann davon ausgehen, daß die Tiere in ihrem
+bisherigen Leben keine schlechten Erfahrungen gemacht haben.
+Außerdem kennen Züchter ihre Katzen in der Regel sehr gut und
+können einem Auskunft über den Charakter des Tieres geben, was ein
+Pfleger im Tierheim nicht unbedingt kann, einfach weil er mehr
+Tiere in wenige Zeit zu betreuen hat. Letztlich muß aber jeder
+selbst entscheiden, ob er lieber eine Rassekatze oder eine
+»normale« Katze zu sich holt.
+
+Rassekatzen kosten derzeit von 250 bis zu mehreren 1000 Euro.
+Möchte man zwei Katzen vom Züchter haben, muß selten der doppelte
+Preis gezahlt werden. Beispielsweise für zwei Burmesen, die ein
+Bekannter von mir bekam, mußte er statt 2 mal 400 Euro nur 500 Euro
+bezahlen. Man muß wissen: der Züchter verdient normalerweise nichts
+am Verkauf der Tiere. Katzenzucht kann man nicht mit finanziellem,
+sonder nur mit ideellem Gewinn betreiben! Dies ist der Grund dafür,
+daß man normalerweise Katzen nicht beim Zoohändler kaufen kann.
+Katzenzucht ist immer ein Minusgeschäft -- zum Glück!
+
+# Ernährung
+
+Über die richtige Ernährung einer Katze gibt es viele verschiedene
+Meinungen. Die Werbung verspricht uns, daß eine bestimmte
+Futtersorte auf jeden Fall völlig ausreichend wäre. Tierärzte
+verschreiben dagegen oftmals einen Speiseplan, bei man selber gerne
+mitäße, und wieder andere Leute glauben an eine vegetarische
+Ernährung. Das Thema ist teilweise heftig umstritten, deshalb sei
+hier klargestellt, daß meine Kommentare keinen wissenschaftlichen
+Erkenntnissen entspringen, sondern nur aus der Erfahrung, wie ich
+gesunde und schlanke Katzen hinbekommen habe.
+
+## Vegetarisch?
+
+Einige wenige Katzenhalter, die sich selber vegetarisch ernähren,
+haben versucht, Ihre Katze an diesen Lebenstil zu gewöhnen, und sie
+mit Gemüse und eventuell noch Milchprodukten durchzubringen. Um es
+kurz zu machen: Katzen sind Fleischfresser. Ich halte diese Idee
+für Tierquälerei. Studierte Ernährungswissenschaftler mögen
+vielleicht genau die richtigen Ergänzungsstoffe bestimmen können,
+die sie füttern müssen, um die der Katze fehlenden Proteine,
+Eiweiße und Vitamine auszugleichen, aber selbst in dem Fall gefällt
+mir die Idee nicht, dem Tier etwas, was es gerne frißt,
+vorzuenthalten.
+
+Es spricht jedoch nichts dagegen, das Futter der Katze mit Gemüsen
+und anderen Lebensmitteln zu ergänzen. (Ein Gemüse, das Katze nicht
+fressen sollten, ist Kohl, da dieser zu Koliken führen kann.)
+
+## Dosenfutter
+
+Dosenfutter enthält einen Großteil der Stoffe, die eine Katze
+braucht. Eine gute Ernährung kann absolut auf dem handelsüblichen
+Dosenfutter basieren, sollte jedoch ergänzt werden -- mehr dazu
+später. Generell gilt, daß es sich vor dem Kauf eines Futters
+lohnt, einen Blick auf das Etikett zu werfen. Eine Anleitung, wie
+die Inhaltsstoffe zu interpretieren sind, ist unter
+<[http://www.cats-country.de/TierfutteretikettenKatze.pdf](http://www.cats-country.de/TierfutteretikettenKatze.pdf)\>
+zu finden.
+
+Meiner Erfahrung nach ist es eine gute Idee, die Dosenfuttermarke
+regelmäßig zu wechseln -- kaufen Sie die erhältlichen Marken
+einfach durcheinander (»Sondermüll in Soße« kann man dabei aber
+auslassen), und füttern Sie verschiedene Sorten durcheinander. Sie
+werden leicht feststellen können, welche Sorten ihre Katzen mögen
+und welche nicht. Meine Katzen haben einen häufigen Wechsel der
+Futtermarke bisher immer vertragen, aber Berichten zufolge
+reagieren manche Katzen empfindlich darauf, und erbrechen das
+Futter. In dem Fall lohnt es sich, einen Tierarzt zu konsultieren,
+um festzustellen, ob das Tier irgendwelche Allergien oder
+Krankheiten hat.
+
+Die Akzeptanz des Futters hängt entscheidend vom Fettgehalt und von
+der Art des Fettes ab. Kommerziell erhältliche Katzenfutter haben
+meistens einen Fettgehalt von 25 bis 30% in der Trockensubstanz,
+und werden darum lieber gefressen als Futter mit niedrigerem
+Fettgehalt -- siehe auch:
+<[http://www.tierer.unizh.ch/te\_pdf/script\_katze.pdf](http://www.tierer.unizh.ch/te_pdf/script_katze.pdf)\>.
+Die Verwendung von guten Fetten macht Katzenfutter teurer, als wenn
+schlechte Fette oder Salz benutzt werden. Marken wie Hill's Science
+Diet, Iams oder TechniCal sind bekannt dafür, daß sie gute Fette
+verwenden -- daher kostet deren Futter auch mehr.
+
+Es empfiehlt sich, eher kleine Portionen auf einmal zu füttern,
+weil sich das Futter nach kurzer Zeit verfärbt und hart wird. Liegt
+es dagegen noch in der Dose (und in der Flüssigkeit), bleibt es
+länger appetitlich. Manche Katzenhalter heben angebrochene Dosen im
+Kühlschrank auf, damit das Futter länger frisch bleibt. Ich selber
+kaufe die Dosen lieber direkt eine Nummer kleiner, damit es
+garnicht erst stehen muß. Falls Sie Futter im Kühlschrank
+aufbewahren, stellen Sie es den Katzen bitte nicht kalt hin,
+sondern lassen Sie es etwas stehen oder erwärmen es in der
+Mikrowelle, bis es knapp über Raumtemperatur liegt.
+
+Futter, das aus der Mikrowelle kommt, sollte nochmal kurz stehen
+bleiben, bevor man es der Katze gibt, damit sich die Wärme
+gleichmäßig verteilen kann. Oft sind einige Stücke besonders heiß,
+während andere noch fast kalt erscheinen. Das kann leicht dazu
+führen, daß man sich mit der Temperatur des Futter gründlich
+verschätzt und die hungrige Katze dann ein sehr heißes Stück Futter
+runterschlingt, was ihrem Magen nicht besonders gut tut.
+
+Zum Abschluß sei noch ein Artikel zitiert, der unter dem Titel
+»Macht die Tiernahrung unsere Vierbeiner krank?« im Vereinsmagazin
+Nr. 5/96 der Arche 2000 Welt-Tierhilfe e.V. abgedruckt wurde. Der
+Autor ist Michael Kruse. Vielen Dank an dieser Stelle an Lars
+Eilebrecht für das Abtippen des (gekürzten!) Textes:
+
+> Immer mehr Leute glauben, daß ihre Tiere vom Dosenfutter krank
+> werden. Kaum zu glauben, verspricht uns doch die Werbung, daß
+> Katzen ohne Frage Whiskas kaufen würden und Hunde sich erst dank
+> Chappi zu einem ganzen Kerl entwickeln. Und das Ganze wird dann
+> auch noch von erfolgreichen Züchtern empfohlen. Da kann eigentlich
+> nichts schiefgehen, oder? Zumal, man weiß doch, was drinsteckt im
+> Hunde- und Katzenfutter. Das steht ja schließlich alles auf dem
+> Dosenetikett drauf. Zwar ist diese Fertignahrung nicht gerade
+> billig, aber was teuer ist, das muß gut sein für meinen Vierbeiner.
+> So und so ähnlich denken viele Tierhalter.
+>
+> Arche 2000 hat recherchiert und wollte für Sie herausfinden, ob da
+> wirklich drin ist, was draufsteht. Eines steht fest: Herrchen und
+> Frauchen kaufen stets die Katze im Sack, dann was wirklich im
+> Tierfutter enthalten ist, das wissen nur die Hersteller und der
+> liebe Gott.
+>
+> Waldi hat zu fressen und Herrchen keine Fragen zu stellen. Wenn man
+> der Werbung Glauben schenkt, dann steckt in den Dosen nur das
+> allerbeste von Putenfleisch bis Lachs. Die Realität sieht anders
+> aus. Der Lachsanteil beträgt beispielsweise in Wirklichkeit nur
+> lächerliche vier Prozent, der Rest sind Rohstoffe wie Innereien,
+> Herz, Leber, Speiseröhren. Außerdem hat manches davon das
+> Haltbarkeitsdatum oft schon längst überschritten. Kühlhausware oder
+> frische Innereien, die direkt von Schlachthöfen kommen, werden zu
+> einem Brei zermahlen, teilweise gleich in Dosen abgefüllt
+> beziehungsweise an das Tierfutter-Unternehmen geliefert.
+>
+> Von all dem weiß der Kunde nichts. Auch das Etikett auf der Dose
+> oder Packung hilft oft nicht weiter. Es ist die Kunst der
+> Hersteller und der Werbung eine breiige Masse, die obendrein bis zu
+> 80% Wasser enthält, wie saftige leckere Fleischstücke aussehen zu
+> lassen.
+>
+> Möglich wird das ganze durch ein besonderes Gefrierverfahren. Den
+> Trick mit den angeblichen Fleischstücken hat man sich sogar
+> patentieren lassen. Patentinhaber ist der amerikanische Konzern
+> Mars. Das Schokoriegel-Imperium iist wiederum die
+> Muttergesellschaft der Firma Effem aus Verden. Effem ist mit
+> Abstand Deutschlands größter Hersteller von Heimtiernahrung. Dazu
+> später mehr - hier ein Auszug aus der Patenschrift der zeigt, wie
+> sehr die Branche ihren Erfindungsreichtum anwendet, um Abfälle in
+> edle Produkte zu verwandeln.
+>
+> »Die Erfindung betrifft ein Verfahren zur Herstellung eines
+> Nahrungsmittel, daß einen faseriges oder gestreiftes Aussehen
+> besitzt und beispielsweise faserförmigem Fleisch ähnelt.«
+>
+> Weiter unten im Patent wird auch gleich empfohlen, was man ins
+> angeblich so hochwertige Tierfutter reinmischt. Hier ein kleiner
+> Auszug:
+>
+> »Sojamehl, Fleischmehl, getrocknetes Blut, Fischmehl, Knochen.
+> Weitere Zusätze können auch sein: synthetische oder natürliche
+> Aminosäuren, Harnstoff und Geflügelkot. Ferner kommt
+> proteinhaltiger Klärschlamm aus mechanischen, biologischen oder
+> chemischen Kläranlagen als Zusatz in Frage.«
+>
+> Zu ihrer Beruhigung: Das alles muß nicht zwangsläufig im Tierfutter
+> enthalten sein. Geflügelkot zum Beispiel ist inzwischen verboten.
+>
+> Nun werden viele Tierhalter einwenden: Aber meinem Vierbeiner
+> schmeckt das Dosenfutter doch, ja in manchen Fällen stürzen sich
+> die Tiere geradezu mit Heißhunger auf den Freßnapf. Auch für dieses
+> Phänomen gibt es eine Erklärung, die manchen Tierfreund erschrecken
+> dürfte. Experten wissen schon lange, daß in die Tiernahrung Duft-,
+> Lock- und Aromastoffe gemischt werden. Das gibt jedem Produkt einen
+> ganz bestimmten Geschmack, irgendwie werden Hund oder Katze
+> geradezu süchtig nach ihrer Lieblingsmarke.
+>
+> Das weite Feld der Heimtiernahrung ist ein Milliardenmarkt, und die
+> Branche boomt. Wenn's um den geliebten Vierbeiner geht, denkt kaum
+> einer ans Sparen. 4,7 Millionen Hunde, 5,2 Millionen Katzen und 8
+> Millionen Vögel leben in deutschen Haushalten.
+>
+> Rund 2,6 Milliarden Mark geben die Deutschen im Jahr für
+> Heimtiernahrung aus. Beim Griff ins Regal wissen die wenigsten, daß
+> fast alle bekannten Marken, egal ob sie Whiskas, Kitekat, Frolic
+> oder Chappi heissen, von ein und derselben Firma hergestellt
+> werden, nämlich von Effem aus dem niedersächsischen Städtchen
+> Verden. Das Unternehmen hat mit über 75 Prozent Marktanteil fast
+> schon ein Monopol. Die Nummer zwei der Branche, »Latz«, kommt
+> gerade auf zehn Prozent.
+>
+> Wettbewerber haben gegen den Giganten Effem keine Chance. Zumal das
+> Unternehmen allein für Werbung im letzten Jahr über 100 Millionen
+> Mark ausgegeben hat, mehr als der Gesamtumsatz der meisten
+> Kleinanbieter.
+>
+> Kaufen soll die Effem-Tiernahrung jeder, doch keiner soll
+> anscheinend erfahren, was wirklich dahinter steckt. Eine Anfrage,
+> ob Arche 2000 mal einen Blick hinter die Kulissen machen dürfte,
+> wurde abgewiesen. Interviews mit der Geschäftsführung oder
+> Mitarbeitern wurden Arche 2000 untersagt. Eine seltsame
+> Öffentlichkeitsscheu für ein Unternehmen, das jährlich über 1,8
+> Milliarden Mark Umsatz macht. Tägliche Produktion: vier Millionen
+> Dosen Tierfutter. Mitarbeiterzahl 2.000. Und Effem expandiert
+> weiter - man profitiert von der Bequemlichkeit vieler Tierhalter,
+> die immer öfter zum Dosenfutter greifen.
+
+## Trockenfutter
+
+Trockenfutter dient allgemein als Zusatz zu der normalen Ernährung.
+Von der Ernährung ausschließlich mit Trockenfutter ist abzuraten,
+weil Trockenfutter schlecht sättigt und die Katze dann sehr viel
+frißt und dick wird. Manche Katzenhalter empfehlen, die Katze
+soviel Trockenfutter fressen zu lassen, wie sie möchte, solange sie
+immer anderes Futter als Alternative hat.
+
+Wenn Ihre Katze besonders viel Trockenfutter frißt, dann ist darauf
+zu achten, daß sie dazu ausreichend Flüssigkeit zu sich nimmt.
+Dosenfutter enthält viel Flüssigkeit, Trockenfutter aber
+offensichtlich nicht. Sollte Ihre Katze kein Wasser trinken, kann
+dies daran liegen, daß das Wasser aus dem Kran einen Nebengeschmack
+hat. Dagegen hilft es, das Wasser etwas stehen zu lassen. Auch
+eventuell vorhandene Spülmittelreste können der Katze den Appetit
+verderben -- deshalb besser den Napf nur mit klarem Wasser
+ausspülen.
+
+Einige Hersteller bieten ein spezielles Trockenfutter für kleine
+Kätzchen an, das besonders vitaminreich ist. Seien Sie mit so was
+besser sparsam, denn die Katze geht davon auseinander wie ein
+Hefekloß.
+
+Roby Leemann wies mich darauf hin, daß Trockenfutter zu bevorzugen
+ist, welches hauptsächlich aus Fleisch besteht, und möglichst
+wenige pflanzliche Elemente beinhaltet. Fleischfresser erzeugen in
+der Regel sauren Urin, Pflanzenfresser alkalischen oder neutralen.
+Katzen sind von der Natur als Fleischfresser vorgesehen;
+Fehlernähung kann hier also zu Nierenproblemen führen. Besonders
+Kater sind gefährdet, wenn sie wegen pflanzlicher Ernährung über
+längere Zeit keinen sauren Urin haben.
+
+Handelsübliche, billige Trockenfutter -- wie zum Beispiel Brekkies
+-- fördern die Bildung von alkalischem oder neutralem Urin, und
+sind nicht zu empfehlen. Eine Alternative ist das beispielsweise
+das Trockenfutter von Hill's Science Diet.
+
+## Normale Lebensmittel
+
+Was Ihnen schmeckt, schmeckt Ihrer Katze sehr oft auch! Lassen Sie
+Ihre Katze von Ihrem normalen Essen probieren, und geben Sie ihr
+davon ab, falls sie es mag. Sie werden feststellen, daß viele
+Katzen für ein Stück Hähnchen jedes Dosenfutter stehen lassen.
+
+Vor dem Füttern »vom Tisch« sollte man sich jedoch frühzeitig
+überlegen, ob das ein Dauerzustand werden darf. Mancher hat
+vielleicht keine Probleme damit, aber zu bedenken ist: Hat sich
+eine Katze daran gewöhnt, Essen vom Tisch abzubekommen, ist das
+schlecht wieder rückgängig zu machen. Das Tier wird nicht es
+verstehen, wenn es plötzlich eine ärgerliche Reaktion erntet, nur
+weil jemand zu Besuch ist, vor dessen Augen man das »nicht machen
+will«.
+
+Entschließt man sich dafür, die Katze am eigenen Essen teilhaben zu
+lassen, auch auf die Gefahr hin, daß sie danach das Dosenfutter
+nicht mehr möchte, bietet es sich an, ihr eine Portion direkt auf
+einem Teller an der üblichen Futterstelle zu servieren. Das
+»Abgeben« direkt vom Tisch führt, wie oben beschrieben, meist eher
+zu Problemen.
+
+Bei dem, was ich meinen Katzen abgebe, halte ich es so: Wenn sie es
+frißt, dann wird es schon passen. (Meine Katze Marvin leckte
+beispielsweise mit großer Leidenschaft Kirschbonbons ab.) Vorsicht
+ist lediglich mit scharfen oder stark gewürzten/gesalzenen Speisen
+geboten. Ebenso sollte man --entgegen des Klischees -- keine Milch
+geben, da diese der Katze Probleme mit der Verdauung bescheren
+kann. Besser ist es, ihr stattdessen Sahne zu geben, welche keine
+Probleme macht. Abgesehen von den Kalorien, natürlich.
+
+Einige Katzen lecken liebend gern Dosen ab, fast egal was drin war.
+Eventuelle Bedenken, die Katze würde sich dabei an den scharfen
+Kanten Schnittverletzungen zuziehen, sind normalerweise
+unbegründet: Katzen lernen schnell.
+
+In jedem Fall sollte man dafür sorgen, daß die Katze ausreichend
+Eiweiß bekommt. Geben Sie Ihr ruhig etwas von Ihrem Omelette ab.
+Auch ein Stück Käse, Streichkäse oder Quark werden gerne genommen.
+
+Wenn Sie Ihrer Katze einen Knochen zum abknabbern (und spielen)
+geben, sollten Sie darauf achten, daß der Knochen nicht splittert,
+wie es bei Geflügel der Fall ist.
+
+Ausgesprochen gefährlich ist jede Art von Alkohol! Passen Sie also
+während der Party darauf auf, daß sich niemand der Gäste einen
+kleinen Scherz mit einer Schale Bier macht, das würde dem der Magen
+der Katze sehr schlecht bekommen.
+
+Sollten Sie Ihre Katze ausschließlich mit »menschlicher« Nahrung
+ernähren wollen, und vollständig auf Dosenfutter verzichten, ist es
+wichtig darauf zu achten, daß die Katze auch wirklich mit allem
+versorgt wird, was sie braucht. Lassen Sie Sich von Ihrem Tierarzt
+beraten, welche Lebensmittel für die Katze geeignet sind, denn oft
+ist menschliche Nahrung für die Katze zu fett, zu salzig, und kann
+zu Krankheiten durch den Vitaminmangel führen.
+
+Eine kleine Sammlung von katzen-sicheren Rezepten ist auf den
+folgenden Seiten zu finden:
+
+-   [http://www.christelw.de/katzen/futter/rezepte.html](http://www.christelw.de/katzen/futter/rezepte.html)
+-   [http://www.thaizucht.de/thaikatzen-frm-rezepte-kochen-fuer-katzen.php](http://www.thaizucht.de/thaikatzen-frm-rezepte-kochen-fuer-katzen.php)
+-   [http://reinsburgstrasse.dyndns.org/katzen/KatzenFutter.html](http://reinsburgstrasse.dyndns.org/katzen/KatzenFutter.html)
+
+## Wenn die Katze zu dick/dünn ist
+
+Meiner Erfahrung nach, sorgen Katzen selber dafür, daß sie nicht zu
+dick oder zu dünn werden. Trotzdem sieht man immer wieder Katzen
+und Kater, die Ihr Idealgewicht deutlich verfehlen. Das kann sehr
+viele Gründe haben und man sollte sich nicht direkt verrückt
+machen. Genau wie wir Menschen, unterscheiden sich Katzen in Ihrer
+Statur. Eine sichtbare Rippe, oder ein kleiner Bauch, müssen nicht
+das Ende der Welt bedeuten.
+
+Falls Ihre Katze aber deutlich zu dünn ist, achten Sie darauf,
+wieviel sie frißt. Frißt die Katze normal oder sogar viel, ist sie
+höchstwahrscheinlich krank, und man sollte einen Tierarzt
+konsultieren und eine Wurmkur ins Auge fassen. Frißt die Katze zu
+wenig, wechseln Sie mal die Futtersorte und Geschmacksrichtungen.
+Geben sie dem Tier einmal etwas völlig anderes zu fressen,
+vielleicht löst sich das Problem damit schon. Außerdem ist es kein
+Fehler, Ihrer Katze Bewegung zu verschaffen, damit sie Appetit
+bekommt.
+
+Wenn auch das alles nicht hilft, ist ebenfalls ein Besuch beim
+Tierarzt angemessen. Vielleicht hat das Tier Beschwerden, die den
+Appetit beeinträchtigen?
+
+Sollte Ihre Katze Übergewicht haben, ist es erstmal eine gute Idee,
+Ihr Bewegung zu verschaffen. Besorgen Sie sich ein geeignetes
+Spielzeug und scheuchen Sie das Tier durch die ganze Wohnung. Oft
+ist ein Spielgefährte -- eine zweite Katze -- das Beste, was einer
+trägen Katze passieren kann. Außerdem sollten sie hinterfragen,
+welche Mengen Futter Ihre Katze täglich verputzt. In der freien
+Wildbahn lebt eine Katze ausschließlich von dem, was sie fangen
+kann. Das ist in der Regel deutlich weniger, als es ein
+wohlmeinendes Herrchen oder Frauchen verfüttert.
+
+Wenn Sie mehrere Katzen haben, kann übermäßiges Fressen auch daran
+liegen, daß die Tiere untereinander Futterneid haben, und keine der
+anderen etwas übrig lassen will. Dagegen hilft, getrennte
+Futternäpfe in verschiedenen Ecken des Zimmers aufzustellen, so daß
+die Katzen getrennt fressen können.
+
+Wie gesagt, Ruhe zu bewahren ist in jedem Fall eine gute Idee.
+Viele Katzen kommen beispielsweise in einer Winter- und einer
+Sommerversion. Es ist völlig normal, daß ein Tier zunimmt, wenn es
+kälter wird.
+
+# Krankheit
+
+Nichts ist schlimmer, als die eigene Katze leiden zu sehen.
+Insbesondere, wenn man nicht genau weiß, was sie hat. Auf keinen
+Fall sollte man zögern, zum Tierarzt zu gehen. Ehe sich eine
+Selbstdiagnose als Desaster herausstellt, bezahlt man lieber die
+paar Euro, die ein ausgebildeter Mediziner verlangt.
+
+Da die Autoren durch die Bank keine Mediziner sind, sollte dieses
+Kapitel nur als eine Sammlung allgemeiner Erfahrungen verstanden
+werden, nicht als Ersatz für den Arztbesuch.
+
+## Woran erkennt man eine kranke Katze
+
+Wenn Ihre Katze krank ist, dann erkennen Sie das sehr leicht. Das
+Fell wird stumpf, das Tier erscheint leblos und zieht sich zurück.
+Oft tränen die Augen der Katze, oder sind unklar. Die Nase läuft,
+und fühlt sich ungewöhnlich kalt oder warm an. Meist fressen kranke
+Katzen wenig oder garnicht. (Muß aber nicht sein: Mein Marvin hat
+während seines Katzenschnupfens normal gefressen, sah aber trotzdem
+zum Fürchten aus.) Ein weiteres Symptom ist, wenn sich das zweite
+Augenlid (sieht aus wie ein weißes Stück Haut) vor das Auge der
+Katze schiebt.
+
+Eine kranke Katze benimmt sich anders als sonst, und ihr Geruch
+verändert sich. Gesunde Katzen putzen sich gründlich; haben saubere
+Augen, saubere Zehenzwischenräume und einen sauberen After. Ist das
+nicht der Fall, sollte Mensch alarmiert sein.
+
+Häufigeres oder selteneres Urinieren ist auch ein Alarmzeichen. Vor
+allem beim Urinieren unter Schmerzen, oder wenn eine Katze häufig
+»umsonst« das Katzenklo aufsucht, sollte man sofort zum Tierarzt
+gehen.
+
+## Tierärzte
+
+Es ist wenig überraschend, daß es gute und schlechte Tierärzte
+gibt. Nur, wie will man das als Nicht-Mediziner beurteilen? Meist
+findet man erst nach einer Weile heraus, ob der Tierarzt wirklich
+aufmerksam und gewissenhaft ist. Immerhin, ein Kriterium für einen
+guten Arzt gibt es: Wie behandelt er das Tier? Nimmt der Arzt sich
+Zeit -- oder spult er die »Behandlung« nur ab, ohne je zu fragen,
+wie die Katze heißt? Erkundigt er sich nach der Historie des
+Tieres, nach überstandenen Krankheiten oder schlimmen Erfahrungen
+beispielsweise?
+
+Vielleicht gibt es gute Ärzte, die gleichgültig mit Tieren umgehen,
+aber ich persönlich glaube nicht dran.
+
+Was einen jedoch nicht erschrecken sollte, ist, wenn Tierärzte bei
+der Untersuchung des Tieres sehr entschlossen zufassen. Die Idee
+ist einfach: Je weniger man sich ziert, desto schneller ist es
+vorbei. Schön mitanzusehen ist es aber nicht.
+
+Vorsicht ist dagegen angebracht, wenn man das Gefühl hat, der Arzt
+würde versuchen, Geld zu schinden, denn das kommt definitiv vor.
+Ein ausgebildeter Mediziner sollte *erklären* können, was all die
+vielen Spritzen und Tabletten, die er verschreibt, enthalten, und
+was sie leisten sollen. Die viel zitierten »Vitamine« bekomme ich
+bei meinem Tierarzt häufig als Probe der Herstellerfirma geschenkt,
+die müssen nicht zwangsläufig an die 50 Euro kosten. Man möchte
+niemandem etwas unterstellen, aber keine klare Aussage machen zu
+können, was die Katze hat, paßt nicht dazu, zu wissen, daß noch 8
+weitere Termine notwendig sein werden, die man auch sofort
+vereinbaren möchte, nämlich »40 Euro pro Termin, bringen Sie das
+Geld bitte bar mit.«
+
+Im Zweifel, gehen Sie zu einem anderen Tierarzt und finden heraus,
+was der sagt. Das kann sich nicht nur als weniger teuer
+herausstellen, es ist auch schön, wenn man gelegentlich »die Katze
+ist gesund« zu hören bekommt.
+
+Wenn Sie mehrere Katzen haben, dann lassen Sie diese immer
+gemeinsam impfen und mit Vorsorgekuren behandeln, denn die
+Medikamente sind in größeren Packungen billiger. Das sollte der
+Tierarzt an Sie weitergeben.
+
+## Verabreichung der Medizin
+
+Mit dem Verabreichen von Medizin ist es so ein Kreuz. Auf
+mysteriöse Weise finden Katzen die Tabletten immer aus dem Futter
+heraus und lassen sie liegen. Geben Sie Ihrer Katze deswegen immer
+erst eine kleine Portion Futter und gucken Sie zu, ob sie das
+Futter samt Tablette frißt. Ebenso erhöht man die Chancen, daß die
+Katze die Tabletten nicht findet, wenn man Ihr etwas cremiges
+füttert, zum Beispiel Leberwurst oder Schmelzkäse. Bestreichen Sie
+die Tabletten jeweils von allen Seiten dick damit. Die Katze wird
+es dann (hoffentlich) direkt vom Finger lecken, ohne zu Kauen.
+
+Pasten kann man Katzen oft dadurch verabreichen, daß man Ihr die
+Paste ums Mäulchen schmiert, so daß sie diese ablecken, wenn sie
+sich putzen. Außerdem sollten Sie den »das ist wichtige
+Medizin«-Eindruck vermeiden. Versuchen Sie, der Katze die Medizin
+als Belohnung unter viel Lob und Streicheln zu verkaufen, so daß
+sie nicht merkt, daß ihr das eigentlich nicht schmecken sollte.
+
+Manchmal ist das Verabreichen wesentlich unangenehmer, zum Beispiel
+Augentropfen, welche der Katze mehr oder weniger mit Gewalt gegeben
+müssen. Als ich das das erste Mal gemacht habe, habe ich gedacht,
+die Katze spricht nie wieder ein Wort mit mir, so hat sie gefaucht
+und sich gewehrt. Aber alles in allem, hatte ich den Eindruck, daß
+die Tiere ausgesprochen gut unterscheiden können, wenn ihnen jemand
+weh tun will, oder wenn er helfen möchte -- auch wenn es unangenehm
+ist.
+
+Zwar behaupten viele Mediziner, daß Katzen so etwas wie Dankbarkeit
+nicht kennen, das kann ich aber nicht bestätigen. Meine Katze hat
+zwar gefaucht wie der Teufel, aber nach einer Minute war alles
+vergessen, wahrscheinlich, weil sie selber gemerkt hat, daß es Ihr
+danach besser geht.
+
+Wenn man einer Katze die Medizin gegen ihren ausdrücklichen Willen
+geben muß, sollte man unbedingt entschlossen zur Sache gehen, so
+blöd das klingt. Bringen Sie es hinter sich. Je schneller es geht,
+desto besser. Wer die Katze nur halbherzig packt, riskiert, daß er
+sie nach einer Flucht mit viel Getöse durch die ganze Wohnung jagen
+muß und das nimmt sie einem ganz sicher übel.
+
+Generell sollten Sie so etwas zu zweit machen. Fangen Sie die Katze
+und setzen Sie sie auf einen Tisch. Am besten, einer hält die Katze
+fest und der andere verabreicht die Tropfen oder Salbe. Am besten
+geht das, wenn man das Tier in ein Handtuch gewickelt hat, damit es
+die Pfoten nicht benutzen kann. Ihr Tierarzt kann Ihnen zeigen, wie
+man das am besten macht. Generell gilt es, die Medizin zügig und
+entschlossen zu verabreichen, damit das ganze Spektakel schnell
+vorbei ist. Es ist außerdem einen Versuch wert, die Katze fest am
+Genickfell zu packen, da dies oft einen Stillhaltereflex auslöst,
+der einige Sekunden vorhält. Das kann reichen.
+
+Wenn alles vorbei ist, belohnen Sie die Katze ruhig, und schenken
+Sie ihr Aufmerksamkeit (ohne sie zu bedrängen).
+
+Sollten Sie in der unglücklichen Lage sein, daß Ihre Katze wirklich
+Angst vor Ihnen hat -- weil sie schlechte Erfahrungen gemacht hat,
+zum Beispiel -- und sie wirklich in Todesangst kämpft, dann seien
+Sie auf keinen Fall so naiv sich ihr ohne dicke Handschuhe und
+lange Ärmel zu nähern. Eine richtige Bißwunde kann sehr tief sein,
+selbst wenn die Katze gerademal eine handvoll groß ist.
+
+Und falls das alles nicht klappen sollte ... hier ein kleiner Text
+von Peggy Althoff, der sie hoffentlich aufmuntert:
+
+> How to Give Your Cat a Pill
+
+> 1.  Grasp cat firmly in your arms. Cradle its head on your elbow,
+>     just as if you were giving baby a bottle. Coo confidently, »Thats a
+>     nice kitty.« Drop pill into its mouth.
+>
+> 2.  Retrieve cat from top of lamp and pill from under sofa.
+>
+> 3.  Follow same procedure as in (1), but hold cat's front paws down
+>     with left hand and back paws down with elbow of right arm. Poke
+>     pill into its mouth with right forefinger.
+>
+> 4.  Retrieve cat from under bed. Get new pill from bottle. (Resist
+>     impulse to get new cat.)
+>
+> 5.  Again proceed as in (1), except when you have cat firmly
+>     cradled in bottle-feeding position, sit down on edge of chair, fold
+>     your torso over cat, bring your right hand over your left elbow,
+>     open cat's mouth by lifting the upper jaw and pop the pill in -
+>     quickly. Since your head is down by your knees, you won't be able
+>     to see what you're doing. That's just as well.
+>
+> 6.  Leave cat hanging on drapes. Leave pill in your hair.
+>
+> 7.  If you're a woman, have a good cry. If you're a man, have a
+>     good cry.
+>
+> 8.  Now pull yourself together. Who's the boss here anyway?
+>     Retrieve cat and pill. Assuming position 1, say sternly, »Who's the
+>     boss here, anyway?« Open cat's mouth, take pill and ... Oooops!
+>
+> 9.  This isn't working, is it? Collapse and think. Aha! Those
+>     flashing claws are causing the chaos.
+>
+> 10. Crawl to linen closet. Drag back large beach towel. Spread
+>     towel on floor.
+>
+> 11. Retrieve cat from kitchen counter and pill from potted plant.
+>
+> 12. Spread cat on towel near one end with its head over long edge.
+>
+> 13. Flatten cat's front and back legs over its stomach. (Resist
+>     impulse to flatten cat.)
+>
+> 14. Roll cat in towel. Work fast; time and tabbies wait for no
+>     man-or woman.
+>
+> 15. Resume position (1). Rotate your left hand to cat's head.
+>     Pressits mouth at the jaw hinges like opening the petals of a
+>     snapdragon.
+>
+> 16. Drop pill into cat's mouth and poke gently. Voila! It's done.
+>
+> 17. Vacuum up loose fur (cat's). Apply bandages to wounds (yours).
+>
+> 18. Take two aspirins and lie down.
+>
+
+## Tollwut
+
+Zu den Impfungen, die eine freilaufende Katze unbedingt braucht,
+gehört die gegen Tollwut. Zum einen kann die Katze dann keine
+Tollwut mehr bekommen, zum anderen verschafft man sich noch eine
+andere Sicherheit: Sollte die Katze, beispielsweise, auf dem
+Spielplatz ein Kind beißen, so kann man nachweisen, daß sie keine
+Tollwut haben kann. Ist dies nicht der Fall, kann ein Amtsarzt die
+Tötung der Katze anordnen, um sie im Labor sezieren zu lassen.
+
+## Katzenschnupfen
+
+Der Katzenschnupfen ist die verbreiteteste und bekannteste
+Krankheit, die sich eine Katze zuziehen kann. Er äußert sich genau
+wie ein Schnupfen beim Menschen: Tränende Augen, erhöhte Temperatur
+und Appetitlosigkeit. Katzenschnupfen ist kein normaler
+Menschen-Schnupfen, welcher für Katzen ziemlich ungefährlich ist.
+Ein Katzenschnupfen dagegen kann, wenn er nicht behandelt wird, für
+die Katze tödlich enden.
+
+Eine Impfung gegen Katzenschnupfen existiert und sollte
+durchgeführt werden. Vorsicht allerdings, falls Ihre Katze schwach
+oder bereits krank ist, denn die Impfung wird durch Immunisierung
+mit lebenden Viren durchgeführt. Eine Impfung an einer bereits
+erkrankten Katze ist also a) wirkungslos und b) gefährlich.
+
+Erst der direkte Kontakt zwischen Katzen und ein gegenseitiges
+An-niesen führt zur Infektion. Hierbei kommt es darauf an, wieviele
+Viren ausgeniest werden. Eine hohe Dosis steckt eine Katze oft
+schon in 2 oder 3 Tagen an. Bei einer niedrigeren Dosierung kommt
+es nur dann zur Ansteckung, wenn die Katzen ca. 2 Wochen zusammen
+sind. Die Krankheit ist sehr gut behandelbar.
+
+## Katzenseuche
+
+Die Katzenseuche ist das Übelste, was Ihnen und Ihrem Vierbeiner
+zustoßen kann. Eine Heilung ist soweit ich weiß nicht möglich und
+die Seuche endet in der Regel ebenfalls mit dem Tod.
+
+Hinzu kommt, daß das Virus extrem aktiv ist. Ist eine Ihrer Katzen
+mit Katzenseuche infiziert, ist Ihre gesamte Kleidung und Wohnung
+kurzer Zeit danach ebenfalls verseucht und Sie werden für
+mindestens das nächste halbe Jahr keine andere Katze streicheln
+oder in Ihren vier Wänden beherbergen können.
+
+Auch hier existiert eine Impfung, die aus naheliegenden Gründen
+sehr zu empfehlen ist.
+
+## Flöhe
+
+Flöhe sind, insbesondere bei Katzen, die das Haus verlassen dürfen,
+keine Seltenheit und man sollte seine Katze regelmäßig auf Flöhe
+hin untersuchen oder dies den Tierarzt machen lassen. Wenn sich
+diese Parasiten dann auffinden, gibt es zahlreiche Mittel, die man
+zur Bekämpfung verwenden kann und die einem vom Tierarzt empfohlen
+werden können.
+
+Bevor man zur Chemie greift, sollte man es aber erstmal mit den
+»Hausmitteln« versuchen, wie Christel Wysocki in einer E-Mail
+beschrieb:
+
+> Das mit dem Flohpulver ist auch so eine Sache. Mensch sollte besser
+> erst mal versuchen, ohne Chemie gegen die Flöhe anzukommen. Das
+> heißt, die Katze mit einem Flohkamm kämmen, die Flöhe vernichten
+> (ins Wasser werfen oder mit dem Nagel zerdrücken) und die Wohnung
+> und alle Schlafplätze oft und gründlich saugen. Die Flöhe, die sich
+> auf einer Katze befinden, sind nicht das Schlimmste. Es gibt
+> wesentlich mehr Flöhe, die sich irgendwo im Teppich oder auf
+> Sesseln vergnügen und ihre Eier legen.
+>
+> Wenn alles nichts hilft, weiß der Tierarzt weiter: Flohpulver, ein
+> Wässerchen, das am Nacken eingerieben wird, Flohhalsband (ich mag
+> sie nicht, weil sie auch die Haare der Katze am Hals auf Dauer
+> schädigen) und das Produkt »Program«, eine Paste, die die
+> Fortpflanzungsfähigkeit der Flöhe einschränkt. Program muß die
+> Katze einmal im Monat einnehmen.
+
+Dem fügte Volkmar Kostka hinzu:
+
+> Da wir es unterlassen haben, uns intensiv um die Flohbekämpfung zu
+> kümmern -- wir haben die Flöhe nur augekämmt und Puder angewandt --
+> wurde der Flohbefall mit der Zeit so intensiv, daß eine Katze daran
+> gestorben ist. Laut Tierarzt wurde sie regelrecht ausgesaugt.
+>
+> Nach Aussage des Tierarztes ist dieser Fall relativ selten. Und er
+> betrifft eigentlich nur schwache/kranke und/oder Jungtiere.
+>
+> Unsere Katze (Perser/Chinchilla Kreuzung) wog in den besten Zeiten
+> nur ca. 3--4 Kilo und hatte eine Schultehöhe von ca. 15--20 cm.
+> Eine sehr kleine Katze also. Dazu kam, daß sich die Katze fast gar
+> nicht der Fellpflege gewidmet hat (wahrscheinlich lag es an den
+> langen Haaren) und dadurch auch die Flöhe nicht regelmäßig
+> verscheucht hat. Unsere Kater (Gewicht ca. 7--8 Kilo, Schulterhöhe
+> ca. 30--40 cm) hat die Sache sehr viel besser überstanden. Auch
+> aufgrund seiner besseren Fellpflege und Flohjagd, obwohl sein Fell
+> zur Zeit sehr mitgenommen aussieht.
+>
+> Aus dem Fell der Katze konnten wir beim Kämmen bis an die 100 Flöhe
+> entfernen, aus dem des Katers nur ca. ein Dutzend, obwohl beide
+> Tiere in der selben Wohnung leb(t)en. Man sollte, vor allem wenn
+> man Rassekatzen hat, Flohbefall nicht auf die leichte Schulter
+> nehmen.
+>
+> Als Umgebungsbehandlung wird im allgemeinen VetKem empfohlen. Den
+> Namen des Zeugs, daß wir dem Kater zur Zeit ins Fell sprühen, weiß
+> ich momentan nicht, allerdings soll man es nur mit einem minimalen
+> Abstand von vier Wochen benutzen. Und es scheint ziemlich gut zu
+> wirken. Bislang hat noch kein Floh einen Ausflug auf den Kater
+> lebend überstanden.
+
+## Leukose
+
+Diese Krankheit ist weltweit inzwischen sehr verbreitet. Sie wird
+fast ausschließlich direkt von einer Katze auf die andere
+übertragen, zum Beispiel durch Speichel oder Urin. Eine Übertragung
+durch den Menschen, wie zum Beispiel über Kleidungsstücke, ist sehr
+unwahrscheinlich, da das Virus an der Luft nur einige Minuten
+überlebt.
+
+Die Krankheit selbst ist nur symptomatisch behandelbar, sie
+erstreckt sich oft über Jahre und führt schließlich unweigerlich
+zum Tod. Wenn die Katze behandelt wird, kann sie mit der Krankheit
+noch einige Jahre ganz gut leben. Eine Impfung existiert und ist
+hauptsächlich für freilaufende Katzen sehr zu empfehlen.
+
+Die Katzenleukose ist eine äußerst gefährliche Viruserkrankung und
+Weltweit verbreitet. Fast jede sechste Katze stirbt daran. Die
+Krankheit ist mit dem Blutkrebs beim Menschen vergleichbar. Die
+Inkubationszeit beträgt mehrere Jahre. Katzen die zur
+Leukoseimunisierung kommen müssen vor der Impfung einen Test
+machen, denn bereits infizierte Tiere dürfen nicht geimpft werden.
+Für den Test muß der Tierarzt dazu etwas Blut abnehmen, eine
+unangenehme aber notwendige Prozedur. Viele Katzen tragen den Virus
+im Körper, jedoch bedeutet das noch lange nicht daß die Krankheit
+ausbrechen muß. Das erschwert häufig eine genaue Diagnose. Die
+Leukose verursacht teilweise sehr unterschiedliche
+Krankheitsbilder. Fast alle Organe können davon betroffen werden,
+auch das Gehirn. Ist die Krankheit erst einmal ausgebrochen, so ist
+eine Heilung fast unmöglich. Besonders infektiös ist bei Leukose
+der Speichel. Bei der gegenseitigen Fellpflege wird die Krankheit
+genauso übertragen wie auch beim fressen aus dem gemeinsamen Napf.
+Aber nicht nur über den Speichel stecken sich die Tiere an. Eine
+Hauptinfektionsquelle ist das gemeinsame Katzenklo. Auch im Kot und
+Urin sind die Viren enthalten. Sind mehrere Katzen in einem
+Haushalt, so läßt sich eine gegenseitige Infektion kaum vermeiden.
+Nimmt man eine zusätzlich Katze auf, so ist eine Untersuchung
+Pflicht, denn nur so läßt sich das Risiko einer Verbreitung
+verringern. Eine äußerlich gesunde Katze kann schon längst an
+Leukose erkrankt sein.
+
+## Verstopfung
+
+Hier handelt es sich um einen harmloseren Fall. Hat die Katze
+gelegentlich Probleme beim Stuhlgang (der Kot sollte weich, geformt
+und dunkel sein), kann man ihr Ölsardinen oder nur Öl aus der
+Sardinendose verabreichen. Viel Flüssigkeit ist auch ganz wichtig.
+Kommt die Verstopfung häufiger vor, sollte man doch einmal den
+Tierarzt konsultieren.
+
+## FIP (Bauchfellentzündung)
+
+Eine ausführliche Beschreibung dieser Krankheit ist auf der von
+Michael Grimm gepflegten Webseite
+[http://www.odo.in-berlin.de/mini-FIP-FAQ.html](http://www.odo.in-berlin.de/mini-FIP-FAQ.html)
+zu finden.
+
+## Feline Immundefizienz-Virus (FIV)
+
+Erst seit kurzer Zeit (1987) ist dieser Virus bekannt, der dem
+menschlichen Aidsvirus sehr ähnlich ist. Diese Krankheit muß aber
+nicht zum Tode führen. Die Symptome sind so unklar und unspezifisch
+daß die Krankheit nur schwer zu diagnostizieren ist. Seit 1989 gibt
+es aber einen einfachen Test zum Virusnachweis.
+
+## Niereninsufizienz
+
+Wenn die Nieren nicht mehr so richtig mitspielen, muß die Katze
+wohl oder übel Diät leben. Der Eiweißgehalt der Nahrung muß
+drastisch reduziert werden. Auch Phosphor darf nicht viel enthalten
+sein. Es gibt spezielles vorgefertigtes Futter, man kann aber auch
+selber kochen. Der Tierarzt wird einen gern beraten.
+
+## Durchfall
+
+Wenn Katzen immer wieder Durchfall haben, sollte man über mehrere
+Wochen eine Diät versuchen, die zu 3 Teilen aus Reis und zu 1 Teil
+aus Hüttenkäse oder Magerquark besteht. Um es der Mieze schmackhaft
+zu machen, kann auch ein wenig vom üblichen Futter untergemischt
+werden.
+
+## Harngrieß
+
+Harngrieß ist eine Ablagerung in der Harnröhre, und entsteht
+hauptsächlich durch alkalischen oder neutralen Urin. Besonders
+gefährdet sind Kater. Von Natur aus so ausgestattet, verjüngt sich
+der Ausscheidungskanal Richtung Zipfel. Dadurch verstopft die
+Ablagerung von Harngrieß den Ausgang.
+
+Sollte der Kater öfters aufs Kistchen gehen, ohne einen Tropfen
+rauszubringen, ist es »Fünf vor Zwölf«. Wasser wegnehmen, und
+sofort zum Tierarzt gehen. Wenn der letzte gelungene Versuch noch
+nicht all zu lange her ist, kann es noch reichen, erst am nächsten
+Morgen zu gehen, aber es ist qualvoll. Länger als einen Tag zu
+warten ist ziemlich sicher tödlich.
+
+## Pseudowut
+
+Es gibt einige Bezeichnungen für diese Erkrankung: Aujeszkysche
+Krankheit, Morbus Aujeszkyi, Infektiöse Bulbärparalyse, Juckpest,
+Pseudorabies. Sie wird durch ein Herpesvirus hervorgerufen, das
+sehr ähnlich dem Herpes-Virus des Menschen ist und verläuft sehr
+akut bis akut, mit Fieber und Störungen des gesamten Nervensystems.
+Unter normalen Bedingungen behält das Virus wochenlang seine
+Fähigkeit zur Infektion, wird aber bei Temperaturen über 55 Grad
+zerstört. Es kann alle Haussäugetiere befallen, nur der Mensch ist
+resistent. Der Virusüberträger ist das Schwein oder die Ratte.
+
+Die Übertragung erfolgt meist durch Futteraufnahme, es kann aber
+auch durch andere Wege übertragen werden wie z.B. durch Bisse. Über
+die in der Mundschleimhaut endenden Nerven steigt das Virus direkt
+ins Gehirn auf und vermehrt sich dort im Nervengewebe. Es kommt zur
+Entzündung des Nervengewebes des Gehirns und dann zum Untergang der
+Nervenzellen.
+
+Die Inkubationszeit beträgt 2 bis 9 Tage. Danach treten
+uncharakteristische Erscheinugsbilder auf: Wesensänderung,
+Müdigkeit, Neigung zum Verstecken, Freßunlust. Bei jungen Katzen
+tritt oft nur Erbrechen als einziges Symptom auf. Ständiges Lecken,
+beißen und Kratzen des Fells weisen auf Juckreiz hin. Diese
+Symptome können aber auch fehlen. Danach kommt es zu
+Schluckbeschwerden, bedingt durch eine Lähmung des Rachenraumes. Es
+kann auch zu einer Lähmung der Kaumuskulatur kommen oder zu
+Zuckungen von Kopf und Gesichtsmuskeln. Die Höhe des Fiebers ist
+untypisch. In der Regel tritt der Tod schon am ersten oder zweiten
+Tag nach Einsetzen der Symptome ein.
+
+Die Diagnose läßt sich nur am toten Tier abklären. Das klinische
+Bild ähnelt der Tollwut, verläuft aber schneller und macht keine
+Lähmungserscheinungen der Gliedmaßen.
+
+Eine Behandlung der Erkrankung gibt es nicht, sie verläuft immer
+tödlich. Da sie ähnliche Symptome wie die Tollwut macht, ist von
+einer Verdachtstherapie wegen der Tollwutgefahr für den Menschen,
+abzuraten. Impfstoff steht nicht zur Verfügung. Man verhindert die
+Erkrankung, indem man an die Tiere kein Schweinefleisch verfüttert
+und einen Kontakt von Katze und Schwein vermeidet. Bei Freigängern
+besteht eine Infektionsgefahr, wenn die Katze Ratten als Beutetiere
+jagt, sie frißt oder Bißverletzungen davonträgt.
+
+Diese Seuche ist anzeigepflichtig und wird veterinärpolizeilich
+bekämpft, indem man die befallenen Bestände ausmerzt. Die Impfung
+ist damit generell untersagt. Die einfachste Lösung des Problems
+für Verbraucher und deren Haustiere: kein rohes Schweinefleisch
+essen oder verfüttern.
+
+# Wie Katzen sich verhalten
+
+## Stubenreinheit
+
+In den meisten Fällen, ist eine Katze oder ein Kater bereits
+stubenrein, wenn man ihn oder sie bekommt. Katzen haben ohnehin ein
+Grundbedürfnis nach Sauberkeit und sind sehr gewillt, ein
+geregeltes Klo anzunehmen. Nichtsdestotrotz, passiert es manchmal,
+daß eine Katze irgendwo hinmacht, wo man es dann doch lieber nicht
+möchte.
+
+Sollte dies passieren, obwohl die Katze vorher monatelang
+stubenrein war, dann ist dies fast immer ein Zeichen, daß
+irgendetwas nicht stimmt und daß die Katze damit Aufmerksamkeit
+erregen möchte. Zuerst sollte man sich selber mal ehrlich fragen,
+ob das Katzenklo sauber genug ist, oder ob man mit dem Reinigen
+vielleicht etwas zu schluderig war.
+
+Außerdem könnte es auch sein, daß der Katze etwas fehlt. Das können
+entweder Schmerzen oder Krankheit sein, aber durchaus auch, daß sie
+sich vernachlässigt fühlt. Meine Katze Lucy zum Beispiel, hat
+mehrfach ins Zimmer gepinkelt, als wir die Katzen von Freunden zu
+Besuch hatten, weil diese verreist waren. Natürlich war das »Hallo«
+groß, als die beiden (noch sehr jungen) Kater hier ankamen und alle
+haben sich darum gerissen, mit denen schmusen und spielen zu
+dürfen. Dabei sind Lucy und Marvin halt ein bißchen untergegangen.
+
+Genauso reagierte Lucy auch, als mein Mitbewohner Sönke, an dem sie
+sehr hängt, für einige Tage weg war. Sie fühlte sich wahrscheinlich
+einsam und wollte so Aufmerksamkeit erregen. Und tatsächlich war,
+nachdem das gelungen ist, auch alles wieder gut.
+
+Sollte so was also passieren, würde ich zuersteinmal mit der Katze
+schmusen, mich um sie kümmern und Ihr Aufmerksamkeit geben. Macht
+sie trotzdem weiterhin in die Wohnung, gilt es mal einen Tierarzt
+zu befragen, ob er irgendeine Krankheit feststellen kann.
+
+Ansonsten sollte man die Stelle, an die die Katze gemacht hat,
+unbedingt *sehr* gründlich reinigen. Nachdem die Katze einmal an
+diese Stelle gemacht hat, betrachtet sie diese sozusagen als
+»Zweitklo« und wird dies eventuell wieder tun. Deshalb muß man den
+Geruch so gut wie irgend möglich entfernen, um die Hemmschwelle
+wieder heraufzusetzen. Ich benutze dazu ein Mittel namens »Oranex«,
+welches man inzwischen in vielen Läden kaufen kann. Oranex ist ein
+rein natürliches Reinigungsmittel, welches zudem einen recht
+starken Orangengeruch hat, der den Geruch des Urins überdeckt.
+
+Wenn man die Katze dabei beobachtet, wie sie in die Wohnung
+pinkelt, sollte man ruhig schimpfen und sie merken lassen, daß man
+böse auf sie ist. Immerhin muß die Katze ja wissen, daß sie das
+nicht darf! Ich habe unsere Katze Ra, die so was öfter tat, dann
+geschnappt und in Ihr Katzenklo gesetzt, damit sie den Zusammenhang
+sehen kann.
+
+Pinkelt die Katze wiederholt an dieselbe Stelle, ist es auch in
+Betracht zu ziehen, ob man das Katzenklo nicht einfach auch an
+diese Stelle stellt. Das hat bei Ra auch geholfen.
+
+Eine andere Erklärung, die zutreffen kann, wenn man mehrere Katzen
+hat, ist, daß die Katze sich ihr Klo nicht mit einer anderen teilen
+möchte. Wir haben versucht, Marvin und Lucy an ein Klo zu gewöhnen,
+aber es dann schlußendlich gelassen. Jetzt haben wir wieder zwei
+Klos. Ich kann zwar nicht genau sagen, welche Katze welches Klo als
+das ihrige betrachtet, aber es hat geholfen. Naja, Katzen sind halt
+so.
+
+Weitere Informationen zu diesem beliebten Thema gibt es unter:
+
+-   [http://www.ciara.de/unsauberkeit\_bei\_katzen.html](http://www.ciara.de/unsauberkeit_bei_katzen.html)
+-   [http://www.christelw.de/katzen/sonstiges/unsauber.html](http://www.christelw.de/katzen/sonstiges/unsauber.html)
+-   [http://katzennothilfe.de/felidae/pinboard/gesundheitstipps/unsauberkeit.htm](http://katzennothilfe.de/felidae/pinboard/gesundheitstipps/unsauberkeit.htm)
+
+## Kratzen
+
+Leider kenne ich nichts, das einer Katze das Kratzen an Tapeten,
+Möbeln und anderem Inventar abgewöhnen könnte. Ehrlich gesagt, muß
+man sich einfach damit abfinden, Katzen wollen ihre Krallen nunmal
+schärfen. Da führt kein Weg dran vorbei.
+
+Kratzbäume, die man für um die 50,-- Euro bekommen kann, reduzieren
+dieses Verhalten zwar beträchtlich, aber ganz abgewöhnen wird man
+es der Katze nur in den seltensten Fällen können. Ein Kratzbaum hat
+die größte Chance, akzeptiert zu werden, wenn die Katze noch klein
+ist. Hat sie ihre bevorzugte Kratzstelle erstmal gefunden, wird sie
+dort sehr wahrscheinlich weiterkratzen, egal welche »Features« der
+extra dafür gekaufte Baum hat.
+
+Viele Katzenbesitzer machen es deshalb so, daß sie beobachten, wo
+ihre Katze gerne kratzt und über diese Stelle dann eine Bastmatte
+hängen, wie man sie fürs Schwimmbad zum Drauflegen kaufen kann.
+Sieht zwar nicht besonders dekorativ aus, aber die Matte kann man
+wenigstens noch abnehmen, wenn der Chef zum Essen kommt. Immer noch
+besser als ein ruiniertes Sofa.
+
+## Körpersprache
+
+Katzen haben eine ausgesprochen ausdrucksstarke Körpersprache. Ein
+Halter, der seine Katze gut kennt, kann meist mit einem Blick
+erkennen, in welcher Stimmung sie ist und was sie möchte. Schon
+alleine ein »Miau« kann ein Dutzend verschiedene Bedeutungen haben,
+von »streichle mich« bis zu »ich will Futter«.
+
+Das bekannteste Mittel des Körpersprache ist der Schweif der Katze.
+Eine Katze, die auf jemanden zugelaufen kommt und den Schwanz dabei
+hoch erhoben hat, ist meistens neugierig oder möchte denjenigen
+begrüßen und schmusen. Generell ist ein hoch erhobener Schwanz ein
+Zeichen dafür, daß die Katze sich wohl und sicher fühlt.
+
+Peitscht der Schwanz dagegen seitlich, ist dies ein Indiz für
+Aggressivität. Dies kann man oft beobachten, wenn sich die Katze,
+zum Beispiel, an ein potentielles Opfer anschleicht, sei es ein
+Vogel oder ein Gummiball. Insbesondere Laien-Katzenfreunde erkennen
+dies nicht rechtzeitig. Es ist hier schon oft passiert, daß Marvin
+irgendwo lag und döste. Unser Besuch kreischt los, »wie niedlich«
+die wäre und stürzt sich streichelnderweise auf die Katze. Meistens
+sieht man dann, wie der Schweif der Katze zu peitschen anfängt und
+sie etwas unruhig wird. Nach einigen Augenblicken macht es *zack*
+und der ahnungslose Störenfried bekommt die Krallen zu spüren.
+
+Ein Schwanzwedeln dagegen ist ein Zeichen von Unsicherheit oder
+Unentschlossenheit. In einem Buch wurde mal folgendes sehr schönes
+Beispiel für eine solche Situation beschrieben: Die Katze quengelt
+und nervt weil sie raus möchte und ihr Mensch ihr die Tür öffnen
+soll. Entnervt steht man auf und öffnet der Katze die Haustür.
+Erfreut stürmt sie auf die Türschwelle zu und stellt dann fest, daß
+es draußen in Strömen regnet.
+
+»Mist,« denkt sich die Katze jetzt, »was mache ich nun? Nach all
+dem Geschrei kann ich ja nun schlecht *nicht* rausgehen. Aber ...
+es regnet!«
+
+Und während sie das denkt, wird sie mit dem Schwanz wedeln, damit
+es nicht so aussieht, wisse sie nicht, was zu tun ist. Ähnlich, wie
+sich ein Mensch beim Nachdenken die Schläfen massiert oder mit den
+Haaren spielt.
+
+Allgemein bekannt ist auch der »Wutschwanz«, den eine Katze
+bekommt, wenn sie tobt oder kämpft. Die Haare am Schwanz der Katze
+stellen sich dann auf, so daß dieser größer und imposanter
+erscheint, um den Gegner einzuschüchtern. Was übrigens sehr gut
+wirkt. Die oben bereits erwähnten Besuchskatzen, die wir hatten,
+wurden von unseren etablierten Bewohnern natürlich ganz schön
+getriezt. An eine von beiden, trauen sich aber weder Marvin noch
+Lucy heran, obwohl beide älter und größer als diese waren. Besagter
+Kater, Avalon, ist nämlich eine Maine Coon, welche einen sehr
+langen und sehr buschigen Schwanz haben.
+
+Avalons Schweif sieht in normalen Zustand bereits deutlich größer
+aus, als der Wutschwanz von Marvin oder Lucy, weshalb beide einen
+deutlichen Sicherheitsabstand zu diesem »Monster« hielten, obwohl
+Avalon kein bißchen aggressiv war und eher neugierig auf die beiden
+zuging.
+
+Ein weniger bekanntes Indiz für die Stimmung des Tieres sind die
+Ohren. Wenn man mal darauf achtet, stellt man fest, daß Katzen mit
+ihren Ohren die erstaunlichsten Bewegungen vollführen können. Dreht
+die Katze die Ohren, beispielsweise, immer von vorne zu den Seiten
+und zurück, ähnlich einer Radarschüssel, hat irgendetwas ihre
+Aufmerksamkeit erregt und sie versucht nun, das Geräusch zu
+lokalisieren. Meist verharrt sie dabei still, um selber kein
+Geräusch zu machen, das eine potentielle Beute vertreiben könnte.
+
+Sind die Ohren dagegen still und gerade erhoben, genau wie der
+Schweif, fühlt sich die Katze sicher und wohl. Eine Katze, die sich
+unmittelbar vor einem Kampf befindet, legt die Ohren dagegen nach
+hinten, dicht am Kopf, an, damit diese vom Gegner nicht verletzt
+werden können.
+
+Auch dies ist ein gutes Zeichen dafür, daß ein Streicheln im Moment
+unerwünscht ist. Legt die Katze die Ohren und an verspannt sich,
+oder schließt sie die Augen und »spreizt« die Ohren, damit man sie
+am Kopf kraulen kann?
+
+Zuguterletzt, ist wohl jedem Katzenbesitzer schonmal aufgefallen,
+daß sein kleiner Mitbewohner am Fenster steht, ein paar Vögel
+beobachtet und dabei merkwürdig knarrt und mit den Zähnen knackt.
+Ich habe mich ganz schön gewundert, als ich das das erste Mal
+bemerkt habe. Dabei handelt es sich um den Tötungsbiß, den die
+Katze imaginär ausführt.
+
+Es ist eine schöne Vorstellung, daß die Katze dort am Fenster steht
+und tagträumt, wie sie heldenhaft ein Dutzend fieser Vögel erledigt
+...
+
+## Lautsprache
+
+Wer denkt, Katze machten nur »miau«, der irrt sich gewaltig. Jede
+Katze beherrscht eine ganze Palette an Lauten, die sie benutzt um
+ihren Willen (oder Unwillen) auszudrücken -- hauptsächlich
+Gurrlaute in allen erdenklichen Variationen. Wer sein Tier gut
+kennt, der lernt schnell zu unterscheiden, was die Katze
+kommunizieren möchte. Wie beim Menschen auch, reflektieren diese
+den Gemütszustand des Tieres. Manche Katzen motzen regelrecht --vor
+allem, wenn sie Hunger haben! Auch Langeweile kann sich in
+regelrechten Tiraden äußern. Wenn das passiert, machen Sie sich
+einmal den Spaß und antworten darauf. In solchen Situationen können
+richtige Dialoge entstehen.
+
+## Schlafen
+
+Katzen schlafen viel und ausgiebig, das ist allgemein bekannt. Böse
+Zungen behaupten sogar, daß Katzen überhaupt nur aufstehen um zu
+Fressen oder um mal woanders schlafen zu können. Nun, ich kann das
+durchaus bestätigen.
+
+Tatsächlich schlafen Katzen garnicht so lange wie es manchmal den
+Anschein hat. Die meiste Zeit dösen sie nur mit ganz oder halb
+geschlossenen Augen. Man erkennt dies sehr gut daran, daß die Ohren
+sich recht häufig bewegen, wenn irgendwoher ein Geräusch kommt.
+Ebenso ist die Katze ruck zuck wieder auf den Beinen, wenn
+irgendetwas ihr Interesse erweckt.
+
+Die Tiefschlafephase einer Katze ist meistens ziemlich kurz und oft
+sieht man die Katze zittern oder sich leicht bewegen. Ich stelle
+mir immer vor, daß mein Marvin im Traum wehrlose kleine Kätzchen
+vor allen möglichen Gefahren rettet und sich als ziemlicher Held
+feiern läßt. Ob »träumen« wirklich der Grund für das Zittern ist,
+weiß ich jedoch nicht sicher.
+
+Auf jeden Fall sollte man eine schlafende Katze in Ruhe lassen und
+nicht wecken. Auch wenn die Katze nur döst, störe ich sie
+eigentlich nicht. Die meisten Katzen reagieren auch recht unwirsch
+darauf, wenn man sie stört und mit ihnen schmusen oder spielen
+will. Mancher Gast, der die Ruhephase meiner Katze nicht
+respektiert hat, hat es auf die harte Methode schließlich lernen
+müssen.
+
+## Aggressive Katzen
+
+In der Wunschvorstellung jedes Katzenbesitzer, ist seine Katze
+furchtbar verschmust und verspielt, sie liebt einen abgöttisch, und
+sie läßt sich auf dem Arm herumtragen und alles mit sich machen.
+Die Realität ist oft anders.
+
+Aggressivität kann viele verschiedene Ursachen haben. Gerade
+Katzen, die aus dem Tierheim stammen, haben häufig schlechte
+Erfahrungen gemacht und treten dem neuen Besitzer mit einer
+gehörigen Portion Mißtrauen gegenüber. Reagiert eine Katze also
+aggressiv, sollte man sich immer zu erst fragen, ob sie das
+vielleicht tut, weil sie sich bedrängt oder unsicher fühlt. Im
+Zweifel gilt, dem Tier seinen Freiraum zu lassen, damit es im
+eigenen Tempo Vertrauen aufbauen kann. Unabhängig davon, ist ein
+gewisses Maß an Jagdtrieb und Streitlust aber auch völlig normal.
+Katzen sind Raubtiere, keine Stofftiere.
+
+Ein Problem ist es jedoch, wenn Katzen beim *Spielen* die Krallen
+ausfahren, denn damit können sie einem ziemlich weh tun. Wenn Ihre
+Katze das macht, unterbrechen sie das Spiel. Die Katze wird
+wahrscheinlich verwundert angucken und dann selber innehalten, bis
+die Krallen irgendwann wieder eingezogen sind. Dann wird
+weitergespielt. Es mag etwas dauern, bis sie den Zusammenhang
+versteht, aber nachdem sie es verstanden hat, kann man sich
+regelrecht mit der Katze prügeln, ohne einen Kratzer abzubekommen.
+Wer nach dem Spielen permanent kaputte Hände hat, der macht etwas
+falsch.
+
+Tritt die Aggressivität nicht nur beim Spielen auf, sondern auch in
+völlig anderen Situationen, dann darf man sich das noch weniger
+gefallen lassen. Die Katze muß schon erfahren, daß das nicht geht,
+sonst wird sie es auch nicht lernen. Für mich hat sich bewährt,
+meinen Unwillen durch Fauchen kundzutun. Das kann ich deutlich
+lauter als meine Katze. Zugegeben, es wirkt albern, wenn ein
+erwachsener Mensch im Flur steht und seine Katze anfaucht, aber
+*das* Geräusch versteht sie.
+
+Der Sinn des ganzen soll aber sein, die Katze merken zu lassen, daß
+mit Beißen oder Kratzen eine Grenze überschreitet. Es geht *nicht*
+um Strafe. Generell finde ich, daß es keine Rechtfertigung gibt,
+ein Tier zu bestrafen -- ganz gleich ob man es mit Gewalt oder
+Entzug von Aufmerksamkeit tut. Das ist nicht nur ethisch
+fragwürdig, es ist schlicht dumm. *Belohnung* ist das Mittel der
+Wahl.
+
+## Verbote
+
+Es gibt einige Dinge, die man seiner Katze nicht erlauben möchte:
+Betteln am Tisch, Kratzen an bestimmten Möbeln oder das Randalieren
+in und mit Papierkörben. Wer sich in der Situation wiederfindet,
+ein solches Verbot durchsetzen zu müssen, der sollte sich immer
+zuallererst fragen: Wie wichtig ist es mir? Hänge ich wirklich an
+der Couch? Sollte ein teurer Teppich nicht auch was aushalten
+können? Viele Leute behaupten ja, Katzen könne man nicht erziehen
+... und es stimmt. Ehrlich, am besten ist, sie versuchen es
+nichtmal.
+
+Auf einigen wenigen Grundregeln muß man leider doch bestehen --zum
+Beispiel möchte man nicht, daß die Katze auf stromführenden Kabeln
+kaut --, und in dem Fall hilft nur Wasser.
+
+Empfehlenswert sind die Wasserspritzen, wie sie zum Einsprengen von
+Wäsche vor dem Bügeln verwendet werden. »Punischer« nennt der Profi
+das. Die weit streuende Einstellung eignet sich gut für
+flächendeckendes Erziehen der Katze, beispielsweise während sie auf
+der Flucht ist. Auf bewegliche Ziele schießt man nunmal am besten
+mit eine abgesägten Schrotflinte, mit dem Punischer geht das
+genauso. Die andere Einstellung, der mit ordentlich Druck versehene
+Wasserstrahl, hat den Vorteil, daß man die Katze aus einiger
+Distanz erziehen kann -- man muß dafür also nicht unbedingt aus dem
+Sessel aufstehen! Leider trifft man die Katze damit nur, wenn sie
+sich unbeobachtet wähnt, und die Biester wissen leider ziemlich
+genau, wann man sie beobachtet.
+
+In jedem Fall sollte man darauf vorbereitet sein, daß alle
+Bemühungen sozusagen für die Katz' sind, egal wieviel Wasser man
+verschießt. Wenn sie nicht wollen, dann lassen Katzen sich einfach
+nicht erziehen.
+
+## Wenn eine andere Katze einzieht
+
+Viele Katzenbesitzer stellen nach einiger Zeit des Zusammenlebens
+mit dem neuen Haustier fest, daß sie eigentlich noch gerne eine
+zweite Katze zum Gernhaben hätten. Meistens wird dieser Wunsch
+durch offenkundig irrationale Argumente unterstützt, wie: »Bei zwei
+Katzen kann ich größere Futterdosen kaufen und spare Geld« oder
+»Wenn zwei Katzen ein Klo benutzen, dann kann ich öfter das Streu
+komplett wechseln, ohne das Gefühl zu haben, ich verschwende
+etwas«.
+
+Wenn Ihr Ehepartner also an sie herantritt und mit solchen
+Argumenten eine zweite Katze zu etablieren versucht ... dann geben
+sie seinem/ihrem Wunsch bitte unbedingt nach. :-)
+
+Leider ist das nachträgliche Einziehen einer zweiten Katze aber
+nicht immer unproblematisch. Werden zwei Kätzchen bereits als
+Kinder zusammen gehalten und wachsen zusammen auf, so werden Sie
+fast nie Probleme haben. Hat sich aber eine Katze bereits als
+»Herrscher der Wohnung« etabliert und bekommt dann plötzlich einen
+Konkurrenten ins Revier gesetzt, ist ein bißchen Neid und Mißtrauen
+durchaus üblich.
+
+Letztlich gibt es keine Garantie dafür, daß die beiden Tiere sich
+verstehen werden. Man kann dem Ganzen etwas nachhelfen, wenn man
+die folgenden Tips beachtet:
+
+1.  Lassen Sie die neue Katze in einem separaten Raum aus dem
+    Kennel, und halten sie die beiden Tiere erst einmal getrennt. Der
+    »Neuling« soll sich an seinen neuen Menschen und an seine neue
+    Umgebung gewöhnen können, und nicht direkt mit einem fauchenden
+    Konkurrenten konfrontiert werden, der ihn aus dem Revier vertreiben
+    will. Getrennte Freßnäpfe und Katzenklos zu haben, ist ebenfalls
+    eine gute Idee.
+
+2.  Tauschen sie gelegentlich die Decken (Kissen, Pullover, ...),
+    auf denen die Katzen schlafen oder spielen, damit sie den Geruch
+    der anderen kennenlernen.
+
+3.  Lassen Sie die Tiere unter Aufsicht zueinander. Wahrscheinlich
+    wird ein bißchen gefaucht und gedroht werden, das sollte sie nicht
+    beängstigen. Die etablierte Katze wird einfach zu neugierig sein,
+    um sich die Gelegenheit zu einem ausgiebigen Schnuppern und
+    Begutachten entgehen zu lassen.
+
+    Sollte es doch ernst werden, wird sich die neue Katze
+    wahrscheinlich recht schnell wieder in das inzwischen vertraue
+    Zimmer zurückziehen und irgendwann einen neuen Vorstoß wagen.
+
+    Wenn die beiden Katzen sich beschnuppern und sich kennenlernen,
+    stören Sie sie bitte nicht dabei. Ein ermutigend gemeintes
+    Streicheln oder auf den Arm nehmen würde jetzt mehr stören als es
+    nützen würde.
+
+
+Bis die beiden Tiere sich aneinander gewöhnt haben, können einige
+Minuten, aber auch einige Wochen vergehen -- das läßt sich nicht
+vorhersagen. Es kann auch vorkommen, daß die beiden Tiere sich
+niemals richtig verstehen werden; zumindest eine friedliche
+Koexistenz erreicht aber man fast immer. Die Möglichkeit, einen
+Artgenossen zum Spielen zu haben, ist einfach zu gut, als daß die
+Katzen sie auslassen würden.
+
+Zuguterletzt muß man drauf achten, daß man die »alte« Katze wegen
+des Neuankömmlings nicht vernachlässigt. Geben sie dem Tier
+mindestens genausoviel Aufmerksamkeit wie vorher, besser noch ein
+bißchen mehr. Neid beschränkt sich bei Katzen, wie Menschen auch,
+nicht immer nur auf das Futter.
+
+Roland Sprave berichtete zu diesem Thema folgendes:
+
+> Gut, daß Katzen nicht lesen können - und schon gar nicht
+> Katzenfachliteratur! ;-)
+>
+> Wir haben bisher bei sechs Tieren die nachfolgende Erfahrung
+> gemacht. Wir lassen die Tiere unter Aufsicht sich gegenseitig
+> beschnuppern. Geht das gut, so lassen wir sie meistens zusammen.
+> Geht es nicht gut, so halten wir die neue Katze wirklich ein paar
+> Tage in einem separaten Raum damit sie den typischen »Stallgeruch«
+> annimmt. Riecht sie ersteinmal so wie alle anderen Tiere, wird sie
+> recht schnell akzeptiert. Damit der Neuankömmling nicht allzu
+> alleine ist setzen wir eines unserer sanftesten Tiere mit hinzu.
+> Bisher war es jedoch erst einmal nötig die Tiere zu trennen.
+>
+> Mit der Aufmerksamkeit ist das auch so ein Ding. Gemäß
+> Fachliteratur haben wir unserem ersten Neuankömmling, einem
+> rabenschwarzen Perserkater, kaum Aufmerksamkeit geschenkt um die
+> anderen Katzen nicht zu vergraulen. Das Resultat war ein brauner
+> stinkender Haufen in einer Ecke des Wohnzimmers weil der Kleine
+> sich vernachlässigt fühlte. Ältere Tiere aneinander zu gewöhnen ist
+> etwas schwieriger. Es dauert länger und der Tierhalter benötigt
+> viel Geduld, da älter Tiere sich schwerer umgewöhnen können.
+
+# Katzenspielzeuge
+
+Keine Sorge, wenn Katzen sich langweilen, dann finden immer
+irgendwas zum Spielen. Das muß aber nicht unbedingt in Ihrem
+Interesse sein! Der weise Katzenhalter sorgt vor, und freut sich
+über seine intakte Schuhe.
+
+## Ein Spielgefährte
+
+Die offensichtlichste (und beste) Idee, ihre Katze zu beschäftigen,
+ist ein Artgenosse. Wer sein Tier ausschließlich in der Wohnung
+hält, und dann noch oft lange arbeiten muß, der sollte darüber
+nachdenken, der Katze Gesellschaft zu verschaffen.
+
+## Der Katzenfernseher
+
+So bezeichnen Katzenfreunde ein Aquarium, weil Katzen stundenlang
+vor diesem sitzen und es betrachten können. Auch liegen sie gerne
+auf dem Aquarium, da es oben wegen der Beleuchtung und der
+Elektronik recht warm ist. Und wenn es sogar noch eine offene
+Stelle gibt, durch die die Katze versuchen kann, einen Fisch zu
+ergattern -- um so besser.
+
+## Die Katzenangel
+
+Eine Katzenangel ist eine Stock, bei dem an einem Ende eine Schnur
+mit einen Streifen Stoff oder einem Ball befestigt ist. Zieht man
+diesen mit der »Angel« langsam über den Boden, dauert es
+normalerweise nicht lange, bis die Katze hinterherjagt. Schön ist,
+daß man die Katze ziemlich scheuchen kann, ohne sich selber dabei
+völlig verausgaben zu müssen, denn Katzen sind ziemlich *schnell*.
+
+## Bälle
+
+Katzen lieben alles, was sie jagen können, und dafür eignen sich
+Wollknäuel oder ein weiche Bälle sehr gut. Am besten sind solche
+geeignet, die so groß sind, daß die Katze sie im Maul tragen kann.
+Entweder spielt die Katze alleine mit dem Ball -- was meistens dazu
+führt, daß man ihn nie wiederfinden wird -- oder sie jagt einem
+geworfenen oder gerollten Ball hinterher. Manche Katzen apportieren
+sogar, damit man ihn nochmal werfen kann.
+
+Beliebt ist es auch, einen Ball an einem Gummiband etwas über dem
+Boden aufzuhängen, so daß er auf und ab schnellt, wenn die Katze
+danach schlägt oder versucht, ihn mit den Pfoten zu greifen. Je
+nach Temperament des Tiers, kann man dabei Zeuge von ziemlich
+akrobatischen Sprünge werden.
+
+## Laserpointer
+
+Erstaunliche Erfolge hatten ich mit so genannten »Laserpointern«,
+einem kleinen Laser in Stiftform, der bei Vorträgen zum Deuten auf
+Karten oder Diagrammen benutzt wird. So einen Mini-Laser kann man
+im Schreibwarenhandel kaufen. Bisher hat noch jede Katze, die damit
+konfrontiert wurde, den roten Punkt bis zur totalen Erschöpfung
+verfolgt. Wenn Ihre Katze Bewegung braucht, ist ein Laserpointer
+jedenfalls eine gute Wahl, denn er produziert ein Jagdziel, daß die
+Katze nie einholen oder erwischen wird.
+
+Allerdings *muß* man darauf achten, den Laserstrahl nie in die
+Augen der Katze zu richten, da dies zu Verletzungen der Netzhaut
+führt. Ein Spiegel und Sonnenlicht erzielen unter Umständen genau
+denselben Effekt, sind aber billiger und weniger gefährlich.
+
+# Ich will auch
+
+Dieses Kapitel stammt aus der Feder von Roland Sprave, bei dem ich
+mich an dieser Stelle herzlich bedanken möchte!
+
+## Ein paar Gedanken, bevor man sich entscheidet
+
+»Darum prüfe wer sich ewig bindet ...« -- so beginnt ein
+wohlbekanntes Sprichwort. An eine Katze bindet man sich zwar nicht
+ewig, aber mit dem Kauf einer Katze holt man sich doch für die
+nächsten 15--20 Jahre einen Lebensgefährten ins Haus. Deshalb sind
+Spontanentscheidungen beim Tierkauf grundlegend falsch. Bevor man
+eine Samtpfote zu sich nimmt, sollte man sich erst Gedanken über
+das weitere Leben mit einer Katze machen. Allzu spontane
+Entscheidungen könnte man später bereuen, indem die bedauernswerte
+Katze schließlich im Tierheim landet.
+
+Zunächst gilt es, nachdem man sich für eine Rasse- oder Hauskatze
+entschieden hat, die Wohnbedingungen zu prüfen. Ist die Wohnung
+groß genug, um einer oder zwei Katzen genügend Raum zum Spielen zu
+bieten? Wird der Vermieter einverstanden sein? Kann die Katze
+eventuell ins Freie gelangen? Welche Sicherungsmaßnahmen müssen
+getroffen werden?
+
+Sehr ordentliche Menschen sollten sich fragen, wie sie zu Schäden
+an ihren heißgeliebten, gepflegten Möbeln stehen. Es kann immer mal
+vorkommen, daß auch eine gut erzogene Katze beim Toben an der
+teuren Polstergarnitur Fäden zieht oder eine Vase aus der
+Ming-Dynastie umreißt. Ebenso muß man damit klarkommen können, daß
+gerade bei Langhaarkatzen in der ganzen Wohnung Katzenhaare
+herumliegen, und daß die Katze ab und zu ihre Haarballen auf den
+kostbaren Perserteppich erbricht.
+
+Wichtig ist auch sich Gedanken zu machen, wer die Katze pflegt,
+wenn man in den Urlaub fahren möchte, oder wenn man mal krank wird.
+Übernehmen Freunde und Verwandte das? Wenn nicht, dann sollte man
+sich für den Fall der Fälle nach einen Catsitter-Club in der Nähe
+umsehen.
+
+Eine Katze braucht ihr Leben lang die Pflege und Zuwendung ihres
+Menschen. Wenn man beruflich viel unterwegs ist, wird sich eine
+Katze alleine zu Tode langweilen und verkümmern. In diesem Fall
+sollte man sich mit der Frage auseinandersetzen, ob nicht
+vielleicht auch Platz für eine zweite Katze vorhanden ist?
+
+Sind diese grundlegenden Fragen geklärt, steht dem Vergnügen eine
+Katze in seinem Heim zu haben eigentlich nichts mehr im Wege. Sie
+werden schon zurechtkommen, und Ihre Entscheidung ganz sicher nicht
+bereuen.
+
+## Wo bekommt man eine Katze?
+
+### Im örtlichen Tierheim
+
+Tierheimkatzen warten überall in Deutschland auf einen
+Katzenfreund, der ihnen das Leben verschönert. Die meisten
+Tierheime und Tierasyle stehen unter dauernder tierärztlicher
+Aufsicht, so daß man nicht befürchten muß, eine kranke Katze mit
+nach Hause zu nehmen. Welpen, die meist nur kurze Zeit im Heim
+verbracht haben, sind meist noch nicht heimgeschädigt oder
+fehlgeprägt, so daß ihre Eingewöhnung problemlos verläuft. Ältere
+Tiere, noch dazu mit einer unklaren Vorgeschichte, sind
+problematischer. Sie können Verhaltensstörungen aufweisen, die eine
+Folge von Fehlerziehung oder gar Mißhandlung durch den Vorbesitzer
+sind. Diese Katzen gehören in die Hände von erfahrenen
+Katzenhalter.
+
+### Vom örtlichen Tierschutzverein
+
+Sollte es in Ihrer Nähe kein Tierheim geben, oder sollten Sie dort
+keine Katze finden, die Ihnen gefällt, dann können Sie Sich noch
+nach dem örtlichen Tierschutzverein erkundigen. Häufig kann der
+Tierschutzverein Katzen vermitteln, oder er weiß zumindest ein paar
+Adressen, bei denen man mal vorsprechen kann.
+
+### Beim Tierarzt
+
+Tierärzte sind ebenfalls immer eine gute Anlaufstelle, wenn man
+nach kätzischer Gesellschaft sucht. Häufig haben Tierärzte ein
+schwarzes Brett, auf dem Privatleute Tiere anbieten können, oder
+sie haben aufgrund Ihrer Kundschaft die entsprechenden Kontakte.
+
+### Durch Zeitungsinserate
+
+Viele Privatleute und auch Züchter bieten Ihre Tiere in den
+Tageszeitungen unter der Rubrik »Tiermarkt« an.
+
+### Beim Züchter
+
+Rassekatzen sollten Sie nur bei seriösen Züchtern die in einem
+Zuchtverband organisiert sind kaufen, da Sie nur hier davon
+ausgehen können, daß die jeweiligen Zuchtrichtlinien eingehalten
+werden. Zuchtrichtlinien werden von den Zuchtverbänden zum Schutz
+der Katzen erlassen (z.B. darf eine Katze in zwei Jahren maximal
+drei Würfe zur Welt bringen).
+
+Adressen von Züchtern finden Sie in Katzenzeitschriften (z.B.
+»Katzen Extra«, »Geliebte Katze«) oder im Branchenfernsprechbuch.
+
+## Mit welchen Kosten muß man rechnen?
+
+### Anschaffungskosten der Katze
+
+Eine Hauskatze bekommen meistens umsonst von einem Bauern oder
+Privatleuten angeboten. Ebenso unsere Tierheime über vor Katzen,
+die auf neue Besitzer warten. Manche Tierheime verlangen von neuen
+Katzenbesitzern auch eine kleine Schutzgebühr (zwischen 20 und 50
+Euro), dafür ist die Katze dann aber auch bereits kastriert,
+stubenrein, gegen Katzenschnupfen und Katzenseuche geimpft, und
+wurde zuvor fachmännisch betreut.
+
+Sollten Sie sich in eine Edelkatze verguckt haben, so müssen Sie
+hier mit höheren Preisen rechnen. Sie bekommen so genannte
+Liebhabertiere bei seriösen Züchtern -- je nach Rasse -- für 200
+bis 300 Euro. Der Begriff »Liebhabertier« ist nicht negativ zu
+verstehen: So werden Rassekatzen bezeichnet, die nicht zur Zucht
+verwenden werden, beispielsweise aufgrund von Farbfehlern im Fell.
+Der Züchter muß die Katze, bevor er sie verkaufen darf, ebenfalls
+mindestens gegen Katzenschnupfen und Katzenseuche impfen lassen,
+sie entwurmen und eine Ahnentafel (Stammbaum) anfertigen lassen.
+Auch wenn sie der Stammbaum nicht besonders interessiert, sollten
+sie das Dokument trotzdem aufheben, denn der Stammbaum ist der
+einzige Nachweis für den Käufer, daß es sich bei seiner Katze
+wirklich um eine reinrassige Katze handelt.
+
+### Grundausstattung für eine Katze
+
+Damit die Katze sich in ihrem neuen Zuhause wohl fühlen kann,
+sollten Sie ihr ein Minimum an Ausstattung zur Verfügung stellen.
+Sie benötigen Futternäpfe, Wasserschalen, einen Kratzbaum oder
+Kratzstamm, Katzentoilette, Kämme, Bürsten, einen Tragekorb für den
+Gang zum Tierarzt und eventuell ein Körbchen als Schlafplatz für
+die Katze (obwohl diese eher Ihr Bett bevorzugen wird). An Kosten
+für diese Grundausstattung können Sie mit circa DM 250,--rechnen.
+
+### Folgekosten
+
+Haben Sie Ihre Katze nicht im Tierheim oder beim Züchter erworben,
+so kann es sein, daß Sie Ihre Katze noch entwurmen (Banminth Paste,
+circa 10 Euro) und impfen lassen müssen (Katzenschnupfen und
+-seuche, circa 40 Euro). Ab einem gewissen Alter sollten Sie Ihre
+Katze (Ihren Kater) kastrieren lassen. Tierärzte berechnen für die
+Kastration eines männlichen Tieres circa 40 Euro, und für ein
+weibliches Tier circa 80 Euro.
+
+Ansonsten müssen Sie davon ausgehen, daß monatlich zwischen 30 und
+50 Euro für Katzenfutter und Katzenstreu anfallen. Dazu kommen die
+Kosten für die jährlichen Schutzimpfungen und die vierteljährlichen
+Entwurmungen, sowie eventuell weitere Tierarztkosten falls Ihre
+Katze krank wird.
+
+### Was brauche ich alles?
+
+Bevor Sie eine Katze bei sich aufnehmen sollten Sie einige wichtige
+Dinge kaufen. Um die Katze beim Tierheim oder beim Züchter abholen
+zu können, oder für den manchmal unvermeidbaren Gang zum Tierarzt
+benötigen Sie einen Tragekorb aus Weidenmaterial oder Kunststoff
+(auch »Kennel« genannt). Ein Kennel ist weit vorteilhafter, als ein
+Weidenkorb, da er sich leichter reinigen läßt und in der Regel
+stabiler ist als ein Weidenkorb. Einen brauchbaren Kennel bekommen
+Sie in Zoofachgeschäften bereits ab 15 Euro.
+
+Da die Katze auch ab und zu mal ein kleines oder ein großes
+Bedürfnis hat, braucht Sie eine Katzentoilette. Es gibt Katzenklos
+in den verschiedensten Ausführungen: ohne Haube, mit Haube, mit
+Klapptür, mit Ionenfilter etc. Bei unseren Katzen hat sich eine
+Toilette mit Haube bestens bewährt. Da Katzen sehr gerne in der
+Streu scharren kann bei einem Modell mit Haube die Streu nicht mehr
+ohne weiteres herausgescharrt werden.
+
+Katzenstreu benötigen Sie ebenfalls für Ihren neuen Liebling.
+Empfehlen würde ich ein klumpendes Katzenstreu (20 Kilogramm, circa
+8 Euro), da Sie hier nur die Kot- oder Urinklumpen mit einer
+Streuschaufel entfernen müssen. Sie ersparen es sich hierbei fast
+alle zwei Tage die komplette Streu wechseln zu müssen. Welche Sorte
+die richtige ist, wird Ihnen Ihre Katze schon zeigen.
+
+Um Ihre Tapeten und Möbel zu schonen, sollten Sie Ihrer Katze einen
+Kratzbaum oder -stamm zur Verfügung stellen. Im Fachhandel bezahlt
+man für einen Kratzstamm circa 25 Euro, und für einen Kratzbaum --
+je nach Größe und Ausstattung -- zwischen 30 und 400 Euro. Ja, es
+gibt da ziemliche Luxusmodelle.
+
+Weil die Liebe zu Ihrem Dosenöffner bei der Katze bekanntlich durch
+den Magen geht sollten Sie ihr Naßfutter (Dosenfutter: z.B. IAMS,
+Hills oder Whiskas) und Trockenfutter kaufen. Sie sollten Ihr eine
+Futter- und Wasserschale hinstellen die recht schwer ist, damit die
+Katze damit nicht auf Wanderschaft gehen kann. Bewährt haben sich
+hierfür z.B. Futternäpfe für Meerschweinchen und Kaninchen aus
+Keramik (circa 5 Euro pro Napf).
+
+Ob Sie sich nun eine Langhaar- oder Kurzhaarkatze gekauft haben --
+an der regelmäßigen Pflege geht kein Weg vorbei. Um das Fell Ihrer
+Katze in Form zu halten sollten Sie sich einen Kamm und eine Bürste
+zulegen. Es gibt im Zoofachhandel für noch nicht einmal 5 Euro die
+geeigneten Kämme und Bürsten in den verschiedensten Ausführungen.
+Kommen Sie einmal in die Situation, daß Sie Ihre Katze baden müssen
+(z.B. Durchfall bei Langhaarkatzen) benutzen Sie bitte nicht Ihr
+Haarshampoo, da Katzen eine sehr empfindliche Haut haben. Es gibt
+je nach Felltyp auch hier die verschiedensten Shampoovarianten --
+extra für Katzen.
+
+### Die Wohnung
+
+Mit einer Katze holen Sie Sich ein lebendiges Wesen in Ihre Wohnung
+-- einen Mitbewohner. Dementsprechend muß man sich fragen, ob die
+Wohnung geeignet für die Katze ist. Ein Kriterium, wenn auch nicht
+das Einzige, ist dabei die Größe des Wohnung. Die Mehrzahl der
+Menschen lebt nunmal in Städten oder zumindest in Gebieten mit
+ausgebautem Straßennetz. Deswegen können die meisten Ihrer Katze
+leider keinen freien Ausgang bieten. Würde man es doch tun, würde
+dies die Lebenserwartung der Katze drastisch senken.
+
+Tiere die es gewöhnt waren draußen zu sein, können sich fast nie
+damit abfinden, nur noch in einer Wohnung zu leben, aber junge
+Katzen, die noch nicht den Duft der großen Freiheit geschnuppert
+haben, kann man meist problemlos in den eigenen vier Wänden halten.
+Allerdings sollte dann auch gewährleistet sein, daß das arme Tier
+sich nicht zu Tode langweilt.
+
+Die 20 Quadratmeter große Studentenbude ist offensichtlich für
+diesen Zweck ungeeignet. Welche Größe ist also angemessen? Darauf
+kann man nur mit einem lauten und deutlichem »kommt drauf an«
+antworten. Eine Wohnung kann durchaus klein sein, wenn sie gut
+geschnitten ist. Das bedeutet, viele Ecken und Winkel, mehrere
+Zimmer, optimalerweise mehrere Durchgänge von Zimmer zu Zimmer,
+damit die Katze toben kann, ohne dauernd denselben Weg laufen zu
+müssen. je nachdem, wie die Möbel stehen, kann auch eine kleinere
+Wohnung jede Menge Möglichkeiten zum Klettern, Verstecken, und
+Spielen bieten. Dagegen kann auch ein 120 qm Apartment total
+langweilig sein, wenn der Eigentümer ein minimalistischer Yuppie
+mit einem Glastisch, einem Kleiderschrank und einem Bett ist.
+
+Unabhängig von Größe und Einrichtung der Wohnung, wird die Katze
+diese aber jedenfalls in Schutt und Asche legen. Viele Neulinge im
+Katzenbusiness sind am Anfang doch etwas erschrocken darüber,
+wieviel Energie so ein kleines Tier hat. Vor allem ist es der Katze
+egal, wie teuer der Kratzbaum war, wenn das Sofa interessanter
+aussieht. Tapeten eignen sich gut dazu, mit ausgefahrenen Krallen
+daran hochzuspringen, Gardinen sind bei der Jagd nach einer Fliege
+ein tolles Hilfsmittel. Ein leerer Karton, und die Katze ist im
+Himmel! Da kann man dran kratzen, rumbeissen, den Inhalt durch den
+Flur verstreuen und so weiter und so fort.
+
+Ich will keine Schwarzmalerei betreiben -- Katzen unterscheiden
+sich im Temperament, und es gibt auch sehr brave und friedliche
+Exemplare. Aber man sollte sich nicht unbedingt drauf verlassen,
+daß man so eine findet.
+
+Ein anderer Punkt, der oft unterschätzt wird, ist die
+Stubenreinheit. Ohne Zweifel sind Katzen sehr reinliche Tiere und
+ein Katzenklo, so es sauber gehalten wird, wird von der Katze
+benutzt. Meistens.
+
+Alle guten Tips, die bestmögliche Pflege und jede Menge Zuwendung
+können manchmal nicht verhindern, daß man einen Urinfleck vom
+Teppich entfernen muß. Nur die wenigsten Katzenbesitzer haben das
+noch nie erlebt. Eine Katze kann absolut stubenrein sein und
+trotzdem kann es vorkommen, daß sie an einen eher unerwarteten Ort
+pinkelt. Sei es aus Krankheit, weil sie auf sich aufmerksam machen
+will, weil sie denkt ihr Revier markieren zu müssen -- es gibt
+viele Gründe.
+
+Gerade wenn man ein älteres Tier aus dem Tierheim aufnimmt, muß man
+damit rechnen, daß sie neunundneunzigmal in das Katzenklo pinkelt,
+und beim hundertsten Mal eben nicht. Das ist nicht zu ändern.
+
+Wie gesagt, es muß nicht oft passieren -- vielleicht auch nie. Aber
+wenn, dann sollte man nicht überrascht sein, und schon gar nicht
+sollte man die Fassung verlieren und sauer auf die Katze sein. Ist
+nur ein Teppich! Teppiche sind schön und wichtig, aber es sind halt
+nur tote Gegenstände. Ich wette, kein Teppich macht ihnen soviel
+Freude wie die Katze. Also gilt es, den Fleck wegzumachen, und die
+Sache zu vergessen.
+
+# Weiterführende Informationsquellen
+
+## Ressourcen im Internet
+
+-   »Häufig gestellte Fragen und Antworten darauf aus der Newsgroup
+    [de.rec.tiere.katzen](news:de.rec.tiere.katzen)«,
+    [http://www.drtk-faq.de/](http://www.drtk-faq.de/)
+
+    Diese deutschsprachige FAQ enthält neben vielen Hinweisen zu der
+    News-Gruppe selber auch eine umfangreiche Sammlung von Tips,
+    Empfehlungen und Erfahrungen rund um das Halten von Katzen.
+
+-   »Frequently Asked Questions in
+    [rec.pets.cats](news:rec.pets.cats)«,
+    [http://www.fanciers.com/cat-faqs/](http://www.fanciers.com/cat-faqs/)
+
+    Wer kein Problem mit der Fremdsprache hat, findet in der FAQ der
+    englischsprachigen USENET-Hierarchie ebenfalls eine *Menge*
+    Informationen. Insbesondere das Material zur medizinischen
+    Versorgung der Tiere ist sehr umfangreich.
+
+
+## Bücher über Katzen
+
+-   »Das neue Katzenbuch«, Brigitte Eilert-Overbeck, ISBN
+    3-635-60081-4, Falken-Taschenbuch
+
+    Des Buch ist vor allem für Einsteiger empfehlenswert. Es vermittelt
+    einen ersten Überblick über Kauf, Erziehung, Fütterung, Krankheiten
+    und Umgang mit dem Tier. Außerdem ist am Ende des Buches noch ein
+    kurzer Querschnitt über die verschiedenen Katzenrassen zu finden.
+
+-   »Katzen kennen und verstehen -- Körpersprache und Verhalten«,
+    Dr. Bruce Fogle, ISBN 3-405-16249-1, BLV Verlagsgesellschaft mbH
+
+    Das Buch enthält über 350 hervorragende Fotos, anhand derer das
+    Verhalten von Katzen erklärt wird. Diese sind nicht nur lehrreich,
+    sondern vor allem schön anzusehen.
+
+-   »Catwatching -- Die Körpersprache der Katzen«, Desmond Morris,
+    ISBN 3-453-17259-0, Heyne
+
+    Dieses Buch beantwortet eine Vielzahl der Fragen, die sich jeder
+    Katzenfreund irgendwann schon einmal gestellt hat. Warum schnurren
+    Katzen? Warum leuchten ihre Augen im Dunkeln? Warum trinken Katzen
+    gern schmutziges Wasser? Weiterhin enthält das Buch eine Vielzahl
+    ausgesprochener schöner Fotos.
+
+
+# Urheberrechtshinweis
+
+Ausgenommen Fremdmaterial: Copyright © 2011 Peter Simons. All
+rights reserved -- alle Rechte vorbehalten.
+
+Vervielfältigung und Verbreitung bedürfen der Zustimmung des
+Urhebers; dies schließt insbesondere das Einspeisen ins Usenet und
+andere Foren, die Speicherung in öffentlich zugänglichen Archiven
+(etwa auf FTP-Servern oder als Web-Seiten) und jegliche Form der
+Bearbeitung mit ein.
+
+Kurz gesagt: Sie dürfen gerne auf die Katzen-FAQ verweisen; Sie
+dürfen im Rahmen des Urheberrechts gerne mit Quellenangabe aus der
+Katzen-FAQ zitieren; aber sie dürfen den Text ohne explizites
+Einverständnis weder verändert noch unverändert weiterverbreiten.
diff --git a/kombinatorik-von-mann-und-frau.mdwn b/kombinatorik-von-mann-und-frau.mdwn
new file mode 100644 (file)
index 0000000..d6e5360
--- /dev/null
@@ -0,0 +1,121 @@
+[[!meta title="Kombinatorik von Männern und Frauen"]]
+[[!tag stochastik]]
+
+## Die Frage
+
+8 Männer und 7 Frauen kaufen unabhängig voneinander Karten in derselben
+Reihe im Theater. Wie viele nebeneinandersitzende Mann-Frau- oder
+Frau-Mann-Paare erwartet man am Abend der Vorstellung in dieser Reihe?
+
+## Die Antwort ...
+
+... auf diese Frage hat mehrere Ebenen. Die einfachste davon ist die
+nach dem Mittelwert --- also nach der Anzahl von Paaren, die bei
+häufiger Wiederholung dieses Experiments im Durchschnitt auftritt. Auf
+den ersten beiden Plätzen der Reihe sitzen Mann-Frau oder Frau-Mann mit
+der Wahrscheinlichkeit
+$$\frac{8}{15}\cdot\frac{7}{14}+\frac{7}{15}\cdot\frac{8}{14}\;=\;\frac{8}{15}$$
+nebeneinander. Man erwartet also $\frac{8}{15}$ Paare auf den ersten
+beiden Plätzen. Dieselbe Anzahl Paare erwartet man natürlich auch auf
+allen anderen benachbarten Plätzen, und davon gibt es bei 15 Leuten
+insgesamt 14 verschiedene. Daher erwartet man im Mittel
+$$14\cdot\frac{8}{15}\;\approx\;7,46$$ Mann-Frau oder Frau-Mann Paare in
+der besagten Theaterreihe.
+
+Außerdem läßt sich feststellen, dass nur zwei Anordnungen existieren,
+MMMMMMMMFFFFFFF und FFFFFFFMMMMMMMM, in denen lediglich ein Paar
+nebeneinandersitzt. In allen anderen Reihenfolgen gibt es mehrere Paare.
+
+Das Maximum von 14 Paaren erreicht die Anordnung MFMFMFMFMFMFMFM. Da es
+sich dabei aber nur um eine unter $$\frac{15!}{8!\cdot{}7!}\;=\;6\,435$$
+möglichen Reihenfolgen der 8 Männer und 7 Frauen handelt, tritt dieser
+Fall selten auf.
+
+Allgemeinen kann jede Anordnung dadurch vereinfacht werden, dass alle
+belanglosen Mann-Mann und Frau-Frau Paare zu jeweils einer Person
+zusammengefasst werden. Dadurch zeigt sich, dass scheinbar verschiedene
+Anordnungen in Wahrheit nur eine Variation desselben Musters sind. Zur
+Illustration sind im folgenden alle 2-Paar-Kombinationen von 5 Männer
+und 4 Frauen angegeben:
+
+> <table border="0" cellspacing="2" cellpadding="2">
+>   <tr align="center"> <td>MMMMFFFFM</td> <td>&rArr;</td> <td>MFM</td> </tr>
+>   <tr align="center"> <td>MMMFFFFMM</td> <td>&rArr;</td> <td>MFM</td> </tr>
+>   <tr align="center"> <td>MMFFFFMMM</td> <td>&rArr;</td> <td>MFM</td> </tr>
+>   <tr align="center"> <td>MFFFFMMMM</td> <td>&rArr;</td> <td>MFM</td> </tr>
+>   <tr align="center"> <td>FMMMMMFFF</td> <td>&rArr;</td> <td>FMF</td> </tr>
+>   <tr align="center"> <td>FFMMMMMFF</td> <td>&rArr;</td> <td>FMF</td> </tr>
+>   <tr align="center"> <td>FFFMMMMMF</td> <td>&rArr;</td> <td>FMF</td> </tr>
+> </table>
+
+Alle möglichen Anordnungen mit 2-Paaren lassen sich also auf zwei Muster
+reduzieren: MFM und FMF. Genauso lassen sich die Lösungen für andere
+Anzahlen von Paaren stark vereinfachen:
+
+> <table border="0" cellspacing="2" cellpadding="2">
+>   <tr align="center"> <td>Paare</td> <td>vereinfachte Lösungen</td> </tr>
+>   <tr align="center"> <td>1</td> <td>MF, FM</td> </tr>
+>   <tr align="center"> <td>2</td> <td>MFM, FMF</td> </tr>
+>   <tr align="center"> <td>3</td> <td>MFMF, FMFM</td> </tr>
+>   <tr align="center"> <td>4</td> <td>MFMFM, FMFMF</td> </tr>
+>   <tr align="center"> <td>5</td> <td>MFMFMF, FMFMFM</td> </tr>
+>   <tr align="center"> <td>6</td> <td>MFMFMFM, FMFMFMF</td> </tr>
+>   <tr align="center"> <td>7</td> <td>MFMFMFMF, FMFMFMFM</td> </tr>
+>   <tr align="center"> <td>8</td> <td>MFMFMFMFM</td> </tr>
+> </table>
+
+In einer Anordnung entstehen jedesmal 2 Paare, wenn eine Frau zwischen
+zwei Männern sitzt (oder ein Mann zwischen zwei Frauen). Ein einzelnes
+Paar kann hingegen nur am Rand entstehen. Sitzen an den Außenpositionen
+jeweils zwei Männer oder zwei Frauen, dann ist die Anzahl der
+entstehenden Paare gerade. Sitzen an den Außenpositionen aber jeweils
+ein Mann und eine Frau, dann entsteht eine ungerade Anzahl von Paaren.
+
+Eine beliebige Anordnung von $m$ Männern und $n$ Frauen mit $k$ Paaren
+läßt sich wie folgt erzeugen. Wenn $k=2i+1$ ungerade ist, dann sitzen
+auf den beiden Außenplätzen Personen mit verschiedenem Geschlecht. Für
+diese Sitze gibt es also nur 2 Möglichkeiten. Darüber hinaus werden die
+Plätze besetzt, indem man aus den $m-1$ möglichen Sitzen zwischen den
+Männern genau $i$ auswählt, auf denen Frauen sitzen müssen (um
+$2i+1=k$ Paare zu erzeugen). Aus Perspektive der Frauen findet
+gleichzeitig derselbe Vorgang statt. Wir wählen aus den $n-1$ möglichen
+Plätzen zwischen den Frauen genau $i$ aus, auf denen Männer sitzen
+müssen (um $2i+1=k$ Paare zu erzeugen). Die Anzahl aller Anordnungen mit
+$k$ Paaren ist die Vereinigung (das Produkt) beider Möglichkeiten:
+
+$$2\,\binom{m-1}{i}\,\binom{n-1}{i}.$$
+
+Für gerade $k=2i$ sind zwei Fälle zu unterscheiden. Einmal sitzen auf
+den beiden Außenpositionen zwei Männer. Es sind also aus $m-1$ möglichen
+Sitzen zwischen den Männern genau $i$ mit Frauen zu besetzen. Aus den
+$n-1$ möglichen Plätzen zwischen den Frauen sind aber nur $i-1$ für
+Männer zu vergeben, denn 2 Männer sind fest für die Außenpositionen
+eingeplant. Im anderen Fall sitzen Frauen auf den Außenpositionen: dann
+sind aus $n-1$ möglichen Plätzen zwischen den Frauen $i$ mit Männer
+besetzt, von den $m-1$ Plätzen zwischen den Männern aber nur $i-1$ mit
+Frauen. Es gibt somit insgesamt
+$$\binom{m-1}{i}\,\binom{n-1}{i-1}+\binom{m-1}{i-1}\,\binom{n-1}{i}$$
+mögliche Anordnungen.
+
+Als Schmankerl erhält man aus diesen Überlegungen sogar noch eine
+überraschende Gleichung. Die Wahrscheinlichkeit dafür, dass eine
+bestimmte Anzahl von Paaren entsteht, gleicht dem Verhältnis von
+günstigen Anordnungen zu möglichen Anordnungen, und diese Informationen
+sind uns inzwischen bekannt. Weiterhin ist der Erwartungswert definiert
+als Summe aller möglichen Anzahlen von Paaren jeweils gewichtet mit der
+Wahrscheinlichkeit, dass diese konkrete Anzahl von Paaren auftritt:
+
+$$\sum\limits_{k=0}^\infty \,k\,p(X=k).$$
+
+Auf unseren konkreten Fall angewendet ist diese Summe sehr beeindruckend
+(siehe weiter unten). Das Ergebnis dieser Summe --- der Erwartungswert
+--- ist uns jedoch bereits bekannt, nämlich
+$$(m+n-1)\,\left(\frac{m}{n+m}\,\frac{n}{n+m-1}+\frac{n}{n+m}\,\frac{m}{n+m-1}\right).$$
+
+Daher wissen wir, dass diese komplizierte Summe am Ende nichts anderes
+bedeutet als $\frac{2mn}{n+m}$. Sollte es einem der geneigten Leser
+gelingen, diese Gleichung algebraisch herzuleiten, dann würde ich mich
+freuen, wenn er oder sie sich die Zeit nähme, mir den Beweis
+mitzuteilen.
+
+$$\sum\limits_{i=0}^{\left\lfloor{\frac{m+n-1}{2}}\right\rfloor}\frac{(2i+1)\left(2\,\binom{m-1}{i}\,\binom{n-1}{i}\right)+2i\left(\binom{m-1}{i}\,\binom{n-1}{i-1}+\binom{m-1}{i-1}\,\binom{n-1}{i}\right)}{\frac{(m+n)!}{m!\,n!}}\;=\;{\frac{2\,m\,n}{n+m}}$$
diff --git a/local.css b/local.css
new file mode 100644 (file)
index 0000000..31f8fb1
--- /dev/null
+++ b/local.css
@@ -0,0 +1,183 @@
+/*
+ * local.css: override default CSS settings from ikiwiki
+ *
+ * Many features used in this file have been inspired by the configuration
+ * of the Monotone wiki at <http://monotone.ca/wiki/>.
+ *
+ */
+
+*.floatright
+{
+  float: right;
+  margin-left: 15px;
+  margin-right: 5px;
+  margin-bottom: 15px;
+}
+
+*.asymptote
+{
+  display: block;
+  margin: auto;
+}
+
+body { 
+  font-family: Helvetica, Arial, sans-serif;
+} 
+
+.clearfloat {
+    clear: both;
+}
+
+.pageheader {
+    width: 100%;
+    top: 0;
+    font-size: 2.5em;
+    line-height: 1.2em;
+    font-weight: bold;
+    color: white;
+}
+
+.pageheader .header {
+    font-size: 0.625em;
+    height: 30px;
+    padding: 20px;
+    padding-right: 0;
+    border-bottom: 1px solid #474747;
+    background: grey;
+}
+
+.pageheader .header span a {
+    color: white;
+    text-decoration: none;
+    border-bottom: 1px dotted white;
+    margin-right: 0.3em;
+}
+
+.pageheader .actions {
+    text-align: left;
+    font-size: 0;
+}
+
+.actions ul,
+.pageheader .actions ul {
+    border: 0;
+    padding: 0;
+    margin-left: 20px;
+}
+
+.actions ul li {
+    display: inline-block;
+    vertical-align: top;
+    margin-right: 1em;
+    padding-top: 0.4em;
+    padding-left: 0.8em;
+    padding-right: 0.8em;
+    padding-bottom: 0.4em;
+    font-size: 10px;
+    line-height: 15px;
+    background: white;
+    -moz-border-radius: 0 0 0.8em 0.8em;
+    -webkit-border-radius: 0 0 0.8em 0.8em;
+    border-radius: 0 0 0.8em 0.8em;
+    -moz-box-shadow: 0 1px 5px #333;
+    -webkit-box-shadow: 0 1px 5px #333;
+    box-shadow: 0 1px 5px #333;
+}
+
+.actions ul li:hover {
+    background: #AAAAAA;
+}
+
+.actions ul li a {
+    color: #474747;
+    text-decoration: none;
+}
+
+.actions ul li:hover a {
+    color: white;
+}
+
+/* global margin */
+#content p,
+#content ul,
+#content ol,
+#content hr,
+#content div.toc,
+#content pre,
+#content blockquote,
+#content table,
+#content div.inlinepage {
+    margin-top: 1em;
+    margin-bottom: 0;
+}
+
+/* less top margin for certain consecutive elements */
+#content p + ul,
+#content p + ol,
+#content p + blockquote,
+#content h1 + h2,
+#content h3 + * {
+    margin-top: 0.5em;
+}
+
+#content > *:first-child,
+#preview > *:first-child,
+#content blockquote > *:first-child {
+    margin-top: 0;
+}
+
+#content .inlinepage .header {
+    display: block;
+    background: none;
+    padding: 0;
+    height: auto;
+    font-size: 2em;
+    margin-bottom: 1em;
+}
+
+#content .inlinepage .pagedate,
+#content .inlinepage .tags {
+    display: none;
+}
+
+#content {
+    margin-top: 20px;
+    padding: 2em;
+}
+
+#searchform {
+    -moz-border-radius: 10px 0 0 10px;
+    -webkit-border-radius: 10px 0 0 10px;
+    border-radius: 10px 0 0 10px;
+    background: none repeat scroll 0 0 white;
+    color: black;
+    display: inline-block;
+    float: right;
+    font-weight: normal;
+    padding: 0 20px 0 10px;
+}
+
+#searchform div {
+    font-size: 13px;
+    line-height: 27px;
+}
+
+#searchform div:before {
+    content: "Search this Wiki";
+}
+
+#searchform div input#searchbox {
+    margin-left: 5px;
+}
+
+#searchform #searchbox,
+#searchform input {
+    border: 1px dotted #474747;
+    width: 15em;
+    background: #FFFFFF url(wikiicons/search-bg.gif) no-repeat scroll right -1px;
+    color:#000000;
+}
+
+#searchform input {
+    font-size: 12px;
+}
diff --git a/meta-programming-riddle.mdwn b/meta-programming-riddle.mdwn
new file mode 100644 (file)
index 0000000..aa02bea
--- /dev/null
@@ -0,0 +1,76 @@
+[[!meta title="C++ meta-programming riddle"]]
+[[!tag cxx-riddle]]
+
+The following program writes a list of integers to standard output; first in
+normal order, and then in reversed order. The expected output is:
+
+    1 2 3 4
+    4 3 2 1
+
+Unfortunately, it appears that the implementation of `reverse<List>` has been
+lost. Can you fill it in?
+
+    #include <iostream>
+    #include <iterator>
+
+    // ----- Unsigned Integer Constants -----
+
+    template <size_t I>
+    struct nat
+    {
+      enum { value = I };
+    };
+
+    // ----- Arbitrary Length Lists -----
+
+    template <class Head, class Tail>
+    struct list
+    {
+    };
+
+    struct nil
+    {
+    };
+
+    // ----- Copy a list to an output iterator -----
+
+    template <class List>
+    struct copy;
+
+    template <class Head, class Tail>
+    struct copy< list<Head,Tail> >
+    {
+      template <class OutputIterator>
+      static OutputIterator eval(OutputIterator i)
+      {
+        *i = Head::value;
+        return copy<Tail>::eval(++i);
+      }
+    };
+
+    template <>
+    struct copy<nil>
+    {
+      template <class OutputIterator>
+      static OutputIterator eval(OutputIterator i)
+      {
+        return i;
+      }
+    };
+
+    // ----- Reverse a list -----
+
+    template <class List>
+    struct reverse;
+
+    // ----- Example program -----
+
+    int main(int, char * [])
+    {
+      typedef list<nat<1>, list<nat<2>, list<nat<3>, list<nat<4>, nil> > > > list;
+      std::ostream_iterator<size_t> oi(std::cout, " ");
+      copy<list>::eval(oi);
+      std::cout << std::endl;
+      copy<reverse<list>::value>::eval(oi);
+      return 0;
+    }
diff --git a/mittelparallele.mdwn b/mittelparallele.mdwn
new file mode 100644 (file)
index 0000000..d298fb5
--- /dev/null
@@ -0,0 +1,48 @@
+[[!meta title="Mittelparallele im Dreieck"]]
+[[!tag geometrie]]
+
+**Behauptung**: Verbindet man die Mittelpunkte zweier Dreiecksseiten
+miteinander, so ist diese Strecke parallel zur dritten Dreiecksseite und
+genau halb so lang wie diese.
+
+[[!asymptote src="""
+import geometry;
+unitsize(1cm);
+triangle t = triangle((0,0), (4,0), (0.5,2));
+show(La="$D$", Lb="$E$", Lc="", t);
+dot(t.A^^t.B^^t.C);
+point pD = midpoint(t.BC); dot(pD);
+point pE = midpoint(t.AC); dot(pE);
+draw(pD--pE);
+"""]]
+
+**Beweis**: Sei $\triangle{ABC}$ ein beliebiges Dreieck, und seinen $D$
+und $E$ die jeweiligen Mittelpunkte der Dreiecksseiten $BC$ und $AC$
+(ohne Beschränkung der Allgemeinheit). Durch Punktspiegelung an D erhält
+man die Punkte $A\xrightarrow{P_D}A'$ und $E\xrightarrow{P_D}E'$. Dann
+gilt $AC\parallel{}A'B$ und $|AC|=|A'B|$, und $D$ ist Mittelpunkt der
+Strecke $EE'$.
+
+[[!asymptote src="""
+import geometry;
+unitsize(1cm);
+triangle t = triangle((0,0), (4,0), (0.5,2));
+show(La="$D$", Lb="$E$", Lc="", t);
+dot(t.A^^t.B^^t.C);
+point pD = midpoint(t.BC); dot(pD);
+point pE = midpoint(t.AC); dot(pE);
+draw(pD--pE);
+
+point A_ = (pD-t.A)*2+t.A; dot("$A'$", A_, NE);
+draw(t.B--A_--t.C, dashed);
+draw(t.A--A_, dashed);
+
+point E_ = midpoint(line(t.B,A_)); dot(Label("$E'$", E_, E));
+draw(E_--pD, dashed);
+"""]]
+
+$E$ ist Mittelpunkt der Strecke $AC$, also ist $E'$ Mittelpunkt der
+Bildstrecke $A'B$. Es existiert eine Verschiebung
+$V_\overrightarrow{AE}$, die $A$ auf $E$ abbildet. Diese Verschiebung
+muss dann auch $B$ auf $E'$ abbilden. Daraus folgt $AB\parallel{}EE'$
+und $|AB|=|EE'|=2\cdot|ED|$, was zu zeigen war.
diff --git a/organizing-ca/index.html b/organizing-ca/index.html
new file mode 100644 (file)
index 0000000..392843d
--- /dev/null
@@ -0,0 +1,1196 @@
+[[!meta title="CA Policy Guidelines"]]
+[[!meta stylesheet=tex4ht rel="stylesheet"]]
+[[!tag security]]
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>
+   CA Policy Guidelines
+  </title>
+ </head>
+ <body>
+  <div class="maketitle">
+   <h2 class="titleHead">
+    How to Organize Company-wide Authentication and E-Mail Encryption
+   </h2>
+   <div class="author">
+    <span class="cmr-12">Manfred Bogen</span><br />
+    <span class="cmr-12">Michael Lenz</span><br />
+    <span class="cmr-12">Andreas Reichpietsch</span><br />
+    <span class="cmr-12">Peter Simons</span>
+   </div><br />
+   <div class="date">
+    <span class="cmr-12">1998-05-05</span>
+   </div>
+  </div>
+  <div class="abstract">
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <span class="cmbx-9">Abstract</span>
+    </p>
+   </div>
+   <p class="indent">
+    <span class="cmr-9">In the last three years, encryption utilities like
+    Pretty Good Privacy</span> <span class="cmr-9">(PGP) and Privacy Enhanced
+    Mail (PEM) have matured to a point where</span> <span class="cmr-9">they
+    begin to receive widespread acceptance among users of electronic</span>
+    <span class="cmr-9">mail in the Internet/Intranet. Many employees of
+    research institutes,</span> <span class="cmr-9">universities, and companies
+    have started to use encryption and digital</span> <span class=
+    "cmr-9">signatures to protect and to authenticate their e-mail.</span>
+   </p>
+   <p class="indent">
+    <span class="cmr-9">To achieve a maximum benefit from these security
+    measures, though,</span> <span class="cmr-9">the organization has to
+    provide an infrastructure for its employees which</span> <span class=
+    "cmr-9">includes trusted or untrusted key servers, a key certification
+    authority and</span> <span class="cmr-9">a definite policy about the
+    utilization of the new technology.</span>
+   </p>
+   <p class="indent">
+    <span class="cmr-9">In this paper, the authors present a skeleton security
+    policy on</span> <span class="cmr-9">which others can base their custom
+    made solutions to the authentication</span> <span class="cmr-9">problem.
+    Experiences are also described from establishing a certification</span>
+    <span class="cmr-9">authority within the German National Research Center
+    for Information</span> <span class="cmr-9">Technology (GMD) and from
+    maintaining a certification authority for the</span> <span class=
+    "cmr-9">Individual Network (IN) domain</span> <span class=
+    "cmsl-9">Rhein.De.</span>
+   </p>
+   <p class="indent">
+    <span class="cmr-9">The foundation of the work is the policy for
+    certification authorities as</span> <span class="cmr-9">issued by the
+    German Research Network (DFN), which will be discussed</span> <span class=
+    "cmr-9">and extended so that it suits the requirements of middle-size to
+    large</span> <span class="cmr-9">companies or organizations.</span>
+   </p>
+   <p class="indent">
+    <span class="cmr-9">The paper also addresses the problem of handling
+    different authentic</span> <span class="cmr-9">keys for different
+    applications — like encryption of electronic mail, Secure</span>
+    <span class="cmr-9">Shell (SSH) host keys, and Secure Socket Layer (SSL)
+    certificates for Web</span> <span class="cmr-9">browsers — as well as
+    giving various practical hints which will help to</span> <span class=
+    "cmr-9">avoid the pitfalls that lurk on the way.</span>
+   </p>
+   <p class="indent">
+    <span class="cmr-9">The intention of this paper is to serve as a base for a
+    security handbook</span> <span class="cmr-9">for other organizations,
+    wishing to establish such an authentication</span> <span class=
+    "cmr-9">infrastructure.</span>
+   </p>
+   <div class="centerline">
+    <span class="cmbx-9">Keywords</span>
+   </div>
+   <p class="indent">
+    <span class="cmr-9">Security, E-Mail, Cryptography, Authentication, PGP,
+    PEM, SSH,</span> <span class="cmr-9">SSL</span>
+   </p>
+  </div>
+  <h3 class="sectionHead">
+   <span class="titlemark">1</span> <a id="x1-10001" name=
+   "x1-10001"></a>Introduction
+  </h3>
+  <p class="noindent">
+   There are millions of people using the Internet nowadays. Formally invented
+   for communication and co-operation among more or less closed groups of
+   scientists or military personnel, it now reaches business, the mass market,
+   and the private homes. This world-wide coverage and penetration however
+   imposes some security requirements for all kind of applications and their
+   users. As in the paper-based normal life, transactions of any importance
+   through the Internet have to be authenticated, people want to have a proof
+   of their origin.
+  </p>
+  <p class="indent">
+   This is difficult in a world-wide communication environment and in a global
+   market. Public key (asymmetric) cryptography is mostly used for
+   authentication purposes using a private key accessible only to a user/entity
+   and a public key known to the rest of the world. A user who wants to trust
+   the origin of some application data, has to obtain the other user’s public
+   key from a source that it trusts. And here is the problem: How to obtain a
+   public key over an insecure network?
+  </p>
+  <p class="indent">
+   This paper is structured as follows: In section&nbsp;2 it describes the key
+   exchange problem in more detail together with two possible setups, the web
+   of trust and a certification authority. Section&nbsp;3 introduces a skeleton
+   policy for a certification authority. Practical hints to organize a
+   certification authority with trusted key servers and different key types are
+   given in section&nbsp;4. Software tools to be used in a secure environment
+   are listed and assessed in section&nbsp;5. Final advices how to use a
+   certification authority or how to run it depending on a company’s size
+   conclude the paper in the last section.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">2</span> <a id="x1-20002" name=
+   "x1-20002"></a>Exchanging Keys through Insecure Channels
+  </h3>
+  <p class="noindent">
+   The crucial factor of all cryptography is the key exchange. Unfortunately,
+   the Internet is the worst possible scenario for a secure key exchange. Due
+   to the nature of the IP packet routing, it is possible to intercept
+   connections, no matter whether they are electronic mails or file transfers,
+   and to act as a man in the middle. (Please see <span class="cite">[<a href=
+   "#Xour%20paper">WEBNET</a>]</span> for more indefensible attacks…)
+  </p>
+  <p class="indent">
+   The so-called “man-in-the-middle attack” is one of the most efficient, and
+   hence most dangerous attacks, that may be used to compromise the security of
+   systems. It works as follows: Say that two persons, Alice and Bob, want to
+   have an encrypted conversation. So they send each other their public keys
+   via electronic mail.
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-20011" name="x1-20011"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki0x.png" alt="PIC" class="graphics" width="324.21124pt"
+     height="41.15375pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;1:</span> <span class="content">The
+     Man-in-the-Middle Attack</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   Mallory, the malicious attacker, is a third person who wants to eavesdrop
+   the conversation. She happens to have administrator privileges on a system,
+   that lies on the path between Alice’s and Bob’s machine. Then she can do the
+   following:
+  </p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-2003x1">Intercept Alice’s public key, replace
+   it with a self-generated public key and send it to Bob in the name of Alice.
+   </li>
+   <li class="enumerate" id="x1-2005x2">Intercept Bob’s public key, replace it
+   with a self-generated public key and send it to Alice in the name of Bob.
+   </li>
+   <li class="enumerate" id="x1-2007x3">When an encrypted message from Alice
+   passes her system for Bob, Mallory will decrypt it, read and/or modify the
+   text, encrypt it with Bob’s real public key and send it to him.
+   </li>
+   <li class="enumerate" id="x1-2009x4">When an encrypted message from Bob
+   passes her system for Alice, Mallory will decrypt it, read and/or modify the
+   text, encrypt it with Alice’s real public key and send it to her.
+   </li>
+  </ol>
+  <p class="indent">
+   All conversation between Alice and Bob may now be eavesdropped by Mallory
+   due to the fact that Alice and Bob trust their respective public keys in
+   good faith. And even worse: Mallory can also <span class=
+   "cmsl-10">modify</span> the messages. Neither Alice nor Bob are able to
+   recognize that their conversation is being eavesdropped. Not even digital
+   signatures remedy this situation, as Mallory is perfectly able to sign her
+   modified messages with the key Bob believes to be Alice’s and vice versa.
+   Since all traffic in the Internet can potentially be re-routed, modified or
+   discarded, this threat is not a theoretical one — it is very real.
+  </p>
+  <p class="indent">
+   Because the very purpose of public key cryptography is to enable parties,
+   that did not know each other before, to communicate securely, it is not
+   feasible to assume that everybody is able to exchange public keys over a
+   secure channel. But for the man-in-the-middle attack described above, an
+   insecure channel is not appropriate for the key exchange either.
+  </p>
+  <p class="indent">
+   Fortunately there is a way out of the dilemma and that is to exchange
+   digitally signed public keys. The idea is simple: People sign a public key,
+   so the receiver can verify that the key has not been tampered with. It is
+   not very helpful, though, to sign a key with itself. What one needs is a
+   third, known and trusted key, that is used to authenticate the “new
+   arrival”. Just consider the following procedure:
+  </p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-2011x1">Alice and Bob wish to have a secure
+   conversation over the Internet. For this purpose they need to exchange
+   public keys. As it turns out, both of them know a trustworthy person called
+   “Trent”.
+   </li>
+   <li class="enumerate" id="x1-2013x2">Alice sends Trent her public key.
+   Trent, being sure that the key belongs to Alice, signs the key with his own
+   key and sends it to Bob.
+   </li>
+   <li class="enumerate" id="x1-2015x3">Bob sends Trent his public key. Trent
+   signs it with his own key and sends it to Alice.
+   </li>
+   <li class="enumerate" id="x1-2017x4">Alice verifies Trent’s signature on
+   Bob’s key.
+   </li>
+   <li class="enumerate" id="x1-2019x5">Bob verifies Trent’s signature on
+   Alice’s key.
+   </li>
+  </ol>
+  <p class="indent">
+   This protocol is secure. An attacker has no way of replacing the public
+   keys. But the protocol can only work if both Alice and Bob know Trent’s
+   public key, if Trent also knows Alice’s and Bob’s public keys, and if all
+   participants trust each other not to cheat.
+  </p>
+  <p class="indent">
+   Unfortunately the setup described above is rare at best. In a world-wide
+   network, hardly any two persons, wishing to communicate with each other,
+   will have a mutual friend they both trust.
+  </p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">2.1</span> <a id="x1-30002.1" name=
+   "x1-30002.1"></a>The Web of Trust
+  </h4>
+  <p class="noindent">
+   Because the idea of using digital signatures to implement a secure key
+   exchange through an insecure channel is way too appealing to simply drop it,
+   a more complex scheme has been developed: The Web of Trust.
+  </p>
+  <p class="indent">
+   In the key exchange protocol explained before, Alice and Bob need a
+   trustworthy person, that both of them know, for the protocol to succeed. In
+   the Web of Trust model, several levels of trust are introduced: “complete”,
+   “marginal” or “unknown”. These trust levels specify, to what extend a person
+   is willing to trust a signature, issued by another person. If a person
+   trusts someone’s signature completely, it will accept every key this person
+   has signed as authentic — just as in the previous setup with Alice, Bob and
+   Trent.
+  </p>
+  <p class="indent">
+   If a person trusts someone’s signature “marginally”, it means that it will
+   not accept a key as authentic, if the only certifying signature comes from
+   the marginally trusted person. It might accept the key, though, if it has
+   been signed by <span class="cmmi-10">n</span> people, it trusts marginally,
+   with <span class="cmmi-10">n</span> being usually equal to or greater than
+   2.
+  </p>
+  <p class="indent">
+   The Web of Trust has been described in <span class="cite">[<a href=
+   "#XPGPdoc1">PGPDOC1</a>]</span>, and implemented in early PGP versions, even
+   though back then this model was not called “Web of Trust” but merely a
+   “unique grass-roots approach”.
+  </p>
+  <p class="indent">
+   The advantage of the Web of Trust model is that every user can follow its
+   own policy about whether a key is accepted as authentic or not. Curiously
+   enough, the same point is one of the biggest disadvantages of the Web of
+   Trust: Every user <span class="cmsl-10">has</span> to create a security
+   policy of its own.
+  </p>
+  <p class="indent">
+   Another disadvantage of the Web of Trust model is that it is hard to
+   authenticate all keys with this approach: It does not scale very well.
+   Sooner or later, a user will have to communicate with someone living on the
+   other side of the earth and then chances are low that both of them will be
+   able to relate to each other through a chain of trusted signatures.
+  </p>
+  <p class="indent">
+   In fact, most PGP keys used today are hardly signed by two or three
+   different people, if at all. Obviously, most encrypted conversations take
+   place without proper authentication of the keys.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">2.2</span> <a id="x1-40002.2" name=
+   "x1-40002.2"></a>Hierarchical Certification Authorities
+  </h4>
+  <p class="noindent">
+   A different approach for certifying encryption keys with digital signatures
+   is the concept of a certification authority (CA). A certification authority
+   is a central, trustworthy entity, whose certification key is commonly known
+   and trusted. Every user in the domain of the certification authority can
+   exchange its key with the certification authority in a secure manner, in
+   order to have it digitally certified by the authority. Other users can then
+   verify the authenticity of the key by checking the signature of the
+   authority. This concept is similar to the well-known approach of having the
+   government issue tamper-proof, personal picture ids for its citizens.
+  </p>
+  <p class="indent">
+   The difference is, though, that the certification authority needs not
+   necessarily be run by the government. Companies, organizations or
+   individuals can also run it, as long as people trust the certification
+   authority to act faithfully after their policy.
+  </p>
+  <p class="indent">
+   Having keys certified by a central authority solves the scalation problem
+   the Web of Trust suffers from. A user, wishing to have a secure
+   communication with someone else, needs only a small number of trusted
+   certification keys to be able to verify the identity of its peer. While this
+   approach is certainly not perfect, it is way more realistic to be
+   implemented in a worldwide forum like the Internet.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">2.3</span> <a id="x1-50002.3" name=
+   "x1-50002.3"></a>X.509 and Certification Authorities
+  </h4>
+  <p class="noindent">
+   <span class="cite">[<a href="#XX.509">X.509</a>]</span>, the authentication
+   framework of CCITT/ISO, deals with the creation and management of key pairs
+   and certificates in general. Following X.509, a certificate contains the
+   public key of a user, together with some other information, rendered
+   unforgeable by encipherment with the secret key of the certification
+   authority (CA) which issued it. It identifies three methods to produce a
+   user’s key pair:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-5002x1">The user generates its own key pair and
+   its secret key is never released to another entity.
+   </li>
+   <li class="enumerate" id="x1-5004x2">The key pair is generated by a third
+   party, which makes it necessary that the user receives its secret key in a
+   secure way.
+   </li>
+   <li class="enumerate" id="x1-5006x3">The key pair is generated by a
+   certification authority, a special third party, which fulfills appropriate
+   security requirements.
+   </li>
+  </ol>
+  <p class="indent">
+   According to X.509, “a certificate associates the public key and unique
+   distinguished name of the user it describes”. Therefore, the CA must know
+   the identity of a user before creating an certificate for it and it “must
+   not issue certificates for two users with the same name”. The production of
+   a certificate is done off-line. However, all information for the CA must be
+   transported in a secure manner.
+  </p>
+  <p class="indent">
+   As certificates have a limited lifetime. it is within the tasks of a CA to
+   provide replacements in time.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">3</span> <a id="x1-60003" name="x1-60003"></a>A
+   Skeleton Policy for a Certification Authority
+  </h3>
+  <p class="noindent">
+   Organizing a certification authority is mostly a problem of working out an
+   appropriate policy. Once a set of rules has been defined, the operation of
+   the certification authority itself is rather clear. A good policy should
+   clarify the procedures for certification of a key as much as how to handle
+   other events that may occur, for example if an employee leaves the
+   organization or major changes in the organization’s management occur.
+  </p>
+  <p class="indent">
+   This chapter will serve as a skeleton policy, which can be used as a
+   template to create a custom policy for the reader’s organization. The
+   following text has loosely been based on the <span class="cite">[<a href=
+   "#Xdfn-pca">DFN-PCA</a>]</span> policy, as used by the “Deutsche
+   Forschungsnetz (DFN)” in Germany.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.1</span> <a id="x1-70003.1" name=
+   "x1-70003.1"></a>Must Haves
+  </h4>
+  <p class="noindent">
+   <span class="cmti-10">Any</span> policy should contain at least the
+   following items:
+  </p>
+  <ul class="itemize1">
+   <li class="itemize">The names of the policy’s authors, including means of
+   contacting them. This is important so that readers of the policy know whom
+   to contact in case of questions, or an enhancement/change request.
+   </li>
+   <li class="itemize">The address of the person or persons who are responsible
+   for running the certification authority. This should also contain electronic
+   mail addresses, phone and fax numbers, if available. Depending on the size
+   of an organization, it is desirable to have a dedicated mail address for the
+   certification authority.
+   </li>
+   <li class="itemize">The policy should clearly define the domain of the
+   certification authority. Who may apply for a certification? Only members or
+   employees of the organization, or may other persons have their keys
+   certificated, too? Does the certification authority certify only keys of
+   local area inhabitants, or does it certify keys world-wide, as long as
+   proper authentication is provided?
+   </li>
+  </ul>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.2</span> <a id="x1-80003.2" name=
+   "x1-80003.2"></a>What does a Certificate mean?
+  </h4>
+  <p class="noindent">
+   This is a very important question, which should be answered thoroughly in
+   the policy. If a person receives a certified key, what can it conclude by
+   verifying the signature? What does it mean in practice?
+  </p>
+  <p class="indent">
+   There are two different models:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-8002x1">If a key is certified by the
+   certification authority, it means that the persons running the certification
+   authority have properly verified that the key belongs to the person stated
+   in the user id and that it has not been tampered with. So while sending an
+   encrypted message to this person, it is safe to use this key.
+   </li>
+   <li class="enumerate" id="x1-8004x2">The certificate guarantees all of the
+   above <span class="cmti-10">plus</span> the fact that the person is a member
+   or employee of the organization running the certification authority. This
+   may also include further information about the key owner’s position within
+   the organization and more.
+   </li>
+  </ol>
+  <p class="indent">
+   The difference may seem minor at the first glance, but it is in fact
+   substantial. In the second scenario, the certification authority must not
+   only verify the key, but also check the employment status of the person the
+   key belongs to.
+  </p>
+  <p class="indent">
+   Furthermore, there must be some mechanism that expires certificates after a
+   certain period of time, so that an employee who has left the organization is
+   not able to abuse the old key. This may be infeasible, as many encryption
+   programs lack the ability to expire or revoke signatures.
+  </p>
+  <p class="indent">
+   The authors strongly recommend to avoid the second approach, for the
+   following reasons:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-8006x1">Technically, there is no reason why a
+   certificate should become invalid after a fixed period of time.
+   </li>
+   <li class="enumerate" id="x1-8008x2">For the lack of software support for
+   signature expiration, it might be necessary to force the employee to revoke
+   the whole key, when it leaves the organization. This is very annoying for
+   the employee, who might have used this key for years already and now has to
+   undergo the effort of notifying all its friends of the key change.
+   </li>
+   <li class="enumerate" id="x1-8010x3">Technically, it is very easy for the
+   former employee to keep copies of the un-revoked key after leaving the
+   organization, which enables it to abuse the key.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.3</span> <a id="x1-90003.3" name=
+   "x1-90003.3"></a>Security Requirements for the CA Keys
+  </h4>
+  <p class="noindent">
+   There are quite a few issues of key handling that need to be addressed in
+   the policy of the certification authority. From the authors’ experience, the
+   following guidelines should be followed:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-9002x1">The key of the certification authority
+   should be used for certification purposes <span class="cmti-10">only</span>.
+   The generated key pair should not be used to sign daily e-mail sent from the
+   “certification authority” entity. Neither should the key be used to receive
+   encrypted e-mail, directed to the certification authority. The more often,
+   the key needs to be accessed, the more likely it is that desire for
+   convenient usage compromises the security of the key.
+   </li>
+   <li class="enumerate" id="x1-9004x2">Generate a key pair that is “longer
+   than necessary”. The size of the certification key should be chosen
+   carefully. PGP keys, for example, are considered secure with a size of 1024
+   bit or more. So use a 2048 bit key.
+    <p class="noindent">
+     The certification key is crucial. If the security of the certification key
+     is compromised, then all certificates issued by the authority will be
+     rendered worthless and remedying this situation will always be a major
+     effort.
+    </p>
+    <p class="noindent">
+     Even if creating or verifying the certificate is a bit slow on older
+     machines, this has to be done only once. So being careful about the size
+     does not cost much, but the extra security might prove very valuable some
+     day.
+    </p>
+   </li>
+   <li class="enumerate" id="x1-9006x3">Use a dedicated machine for the
+   certification process.
+    <p class="noindent">
+     Even the most sophisticated operating systems have security holes. To
+     reduce the danger of the certification keys being stolen or tampered with,
+     the keys should be stored on a dedicated machine, that is accessible for
+     authorized personnel only. Network access to this machine is discouraged.
+    </p>
+   </li>
+   <li class="enumerate" id="x1-9008x4">Make arrangements for key recovery. In
+   no case should a disastrous disk crash wipe out the only copy of the
+   certification keys. Nor should there be just one single person that has
+   access to them. (The person running the certification authority might have a
+   serious disease or an accident!)
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.4</span> <a id="x1-100003.4" name=
+   "x1-100003.4"></a>Security Requirements for the User Keys
+  </h4>
+  <p class="noindent">
+   This topic includes two points:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-10002x1">The certification authority must only
+   accept keys for certification that are longer than <span class=
+   "cmmi-10">n</span> byte. For the RSA algorithm, as used by PGP,
+    <span class="cmmi-10">n</span> = 1024 is definitely a good choice. But this
+    number depends very much on the algorithms and software deployed and, of
+    course, the security requirements of the organization.
+   </li>
+   <li class="enumerate" id="x1-10004x2">Under no circumstances should the
+   certification authority be allowed to generate the keys for the user, before
+   signing them. The user must generate the keys itself and take them to the
+   appropriate persons for certification. Anything else opens up all doors for
+   abuse.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.5</span> <a id="x1-110003.5" name=
+   "x1-110003.5"></a>The Certification Process
+  </h4>
+  <p class="noindent">
+   The following set of rules should be included in the certification
+   authority’s policy.
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-11002x1">The certification authority may only
+   certify keys, which’s authenticity has been verified reliably. “Reliably”
+   means, that the key has been exchanged <span class=
+   "cmti-10">personally</span> with the key owner. Furthermore, the
+   certification authority must verify the identity of the key owner via an
+   official picture id.
+   </li>
+   <li class="enumerate" id="x1-11004x2">Only keys, which satisfy a certain
+   format of the id string, may be certified. An appropriate format of the id
+   string depends very much on the deployed software, so it will not be
+   specified here. Just as a guideline, the name of the key owner and its
+   e-mail address at the organization should be included, like in
+    “<span class="cmtt-10">John Doe &lt;doe@organization.org&gt;</span>”.
+   </li>
+   <li class="enumerate" id="x1-11006x3">A copy of every key, which has been
+   certified by the authority, must be archived. It may also be appropriate, to
+   have the key owner confirm the certificate by signing a form. These records
+   may prove very valuable when verifying whether a certain key <span class=
+   "cmti-10">has</span> been certified by the authority or not — thus enabling
+   the authority to detect faked keys and conclude, that the certification key
+   has been compromised.
+   </li>
+   <li class="enumerate" id="x1-11008x4">A large organization may have several
+   departments that are located throughout the world. In this case, a personal
+   key exchange is unsuitable. To remedy this situation, so called
+   “registration authorities” <a id="x1-110074" name="x1-110074"></a>can be
+   deployed. A registration authority is a trustworthy person, whose encryption
+   key has been authenticated reliably with the certification authority.
+    <p class="noindent">
+     The registration authority may then verify the identity and authenticity
+     of an encryption key. After that, the key will be sent to the
+     certification authority for certification. The message must contain a
+     statement, that the key has been reliably verified by the registration
+     authority. Furthermore, the message must be digitally signed with the key
+     of the registration authority, which is known to the certification
+     authority, so that the authenticity of the registration message can be
+     verified.
+    </p>
+    <p class="noindent">
+     Special care should be applied to the key used to authenticate the
+     registration authority. It might be suitable, to use a dedicated
+     certification key for this purpose, where the same security measures apply
+     as for the master certification key.
+    </p>
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.6</span> <a id="x1-120003.6" name=
+   "x1-120003.6"></a>How this Policy differs from Others
+  </h4>
+  <p class="noindent">
+   Even though this skeleton policy has been created with the <span class=
+   "cite">[<a href="#Xdfn-pca">DFN-PCA</a>]</span> policy serving as a
+   real-world example, it differs substantially from policies as deployed by
+   other certification authorities.
+  </p>
+  <p class="indent">
+   The most significant difference is the fact that the authors do not
+   recommend to imply any meaning of a certificate other than that the key
+   belongs to the person, as stated in the id string. Certificates should
+   certify the credibility of the <span class="cmsl-10">key</span> and not the
+   credibility of a person or entity.
+  </p>
+  <p class="indent">
+   Not only does this strike the authors as being more “natural” than other
+   models, it also greatly simplifies the whole process of key certification
+   and running a certification authority. From every-day experience, the
+   authors learned quickly that ease of use and ease of understanding is vital
+   for any certification authority project and any security measure in general.
+
+  </p>
+  <p class="indent">
+   In a large organization or company, many employees will use electronic mail
+   without knowing or even caring about the underlying principles, as they have
+   been hired to worry about other, maybe non-technical things. As a
+   consequence, they will use encryption only, if it is easy for them to do so.
+   Keeping the certification authority policy simple helps a great deal to keep
+   the whole process simple too.
+  </p>
+  <p class="indent">
+   Other changes include the removal of rules that regulate the handling of the
+   user keys. Without a doubt, proper key handling by the users is important,
+   but this needs to be addressed elsewhere, and not in the certification
+   authority’s policy.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">4</span> <a id="x1-130004" name="x1-130004"></a>How
+   to organize a Certification Authority
+  </h3>
+  <p class="noindent">
+   A certification Authority consists out of two parts. One part, the public CA
+   side, can be build on an open, well connected computer using a Web
+   interface, the other part, the closed CA side, has to be kept in a closed
+   environment, only accessible for the CA operators.
+  </p>
+  <p class="indent">
+   The public CA side is a Web server using the <span class=
+   "cmtt-10">https</span> protocol which is supported by almost all common
+   browsers with a (self) signed certificate. The following steps are
+   recommended:
+  </p>
+  <ul class="itemize1">
+   <li class="itemize">Propagate the public keys and certificates used by the
+   CA. This can be done via HTML pages and CGI scripts and should happen in a
+   manner that a user can easily import the needed certificates or keys to its
+   application.
+   </li>
+   <li class="itemize">Very important are Web pages with information for the
+   users. Some low-level papers about cryptography, privacy, and the law
+   situation together with manual pages about using encryption for common used
+   browsers are very useful. Links pointing to other interesting sites dealing
+   with cryptography and privacy can be placed here, too.
+   </li>
+   <li class="itemize">Some informational pages have to be published about the
+   CA itself, its organization, its use, its working hours, and the procedures
+   how to get the public keys signed (certified) and what has to be done by the
+   user after requesting its key signed.
+   </li>
+   <li class="itemize">A link should point to a public key server (PGP) or a
+   directory service (X.509) where the user can get foreign keys.
+   </li>
+   <li class="itemize">For PGP, a trusted key server has to be installed. It
+   should contain all the valid public PGP keys this CA has ever signed. One
+   can take the sources of a public key server and restrict the possibility for
+   uploading new keys only to the CA. Updating an existing key can be allowed,
+   if the signatures match. Access to a list of revoked or invalid keys this CA
+   signed is necessary, too.
+   </li>
+   <li class="itemize">For X.509 the certificate revocation list (CRL) and a
+   directory service, where all the certificates of the CA are held, should be
+   set up. This can be done by an LDAP server <span class="cite">[<a href=
+   "#XLDAP">RFC 1487</a>]</span> also installed on this machine.
+   </li>
+   <li class="itemize">CGI scripts should be installed to receive and store
+   incoming keys or certificates for signing. The user should get a
+   return-receipt, which contains the further procedure of the certification.
+   According to the CA policy the user has to make a personal contact with the
+   CA personal and it is helpful if it can present an unique fingerprint to
+   recognize its key.
+   </li>
+   <li class="itemize">After processing the requests, the signed keys or
+   certificates should be held in the Web server to be downloaded by the
+   requester. For PGP this can be done by adding the key into the public key
+   ring of the trusted key server. Some CGI scripts for downloading X.509
+   certificates do also exist. The user should get a message after the CA
+   processed the request.
+   </li>
+  </ul>
+  <p class="indent">
+   For the closed side of the CA, a standalone computer is needed. It must be
+   installed as secure as possible. Its only job is to be the CA. Access is
+   granted to the CA operators, daily backup onto tape is necessary. Private
+   keys and certificates of the CA are installed here and nowhere else. Only
+   backup copies should be kept in a safe place. After verifying the user’s
+   identity, the keys must be copied from the public CA side into the closed CA
+   side and later back to the public CA side. This can be done with floppies or
+   a private line between the two machines (ISDN, V.24, or direct host-to-host
+   connection). The exchange between the public CA side and the closed CA side
+   happens manually, not via cronjobs or automatic programs. The closed CA side
+   should not be accessible form the company’s network.
+  </p>
+  <p class="indent">
+   Depending on the size of the company the incoming requests can be collected
+   for some hours, a day or a week. At least two people should run the CA. The
+   closed CA side is used for bookkeeping of the CA’s work. The information
+   source for all the information on the public CA side, such as CRLs and
+   trusted key rings is built here.
+  </p>
+  <p class="indent">
+   Registration authorities (RA), as mentioned before, are easy to insert
+   between the open CA side and the closed CA side, using signed and encrypted
+   e-mail to transfer the requests and processed certificates.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">4.1</span> <a id="x1-140004.1" name=
+   "x1-140004.1"></a>Trusted Key Server
+  </h4>
+  <p class="noindent">
+   A trusted key server is a key server that does not only distribute the keys,
+   but which also guarantees the authenticity of all keys available on it.
+  </p>
+  <p class="indent">
+   In a X.509-like certification environment a trusted key server is not
+   necessary. Each application gets the public part of the CA’s certification
+   key and is able to verify all incoming certificates. Expiring is handled in
+   the CA policy and is inserted in the certificate. The only measure is to
+   check whether the key is revoked or not. This can be done via the CA’s Web
+   server and needs no action from the user.
+  </p>
+  <p class="indent">
+   Users can build their own key ring to encrypt outgoing mail, but almost all
+   modern mailtools with S/MIME extension will use LDAP Directory Service to
+   search for (trusted) certificates and can verify them on the fly.
+  </p>
+  <p class="indent">
+   For PGP keys though, a trusted key server might be beneficial. A simple way
+   to implement one is to take the source of one of the normal PGP key servers
+   and to disable the upload feature. Then the system administrator can
+   control, which keys are available from the server, following an appropriate
+   policy.
+  </p>
+  <p class="indent">
+   Using such a key server in accordance to a local CA is a simple way to
+   implement a good public key ring for the whole company. The key server can,
+   for example, be defined as being the definite source for keys of employees.
+   If an emplyoee leaves the company, his key can be removed from the trusted
+   server, without having to revoke the signature or the whole key itself.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">4.2</span> <a id="x1-150004.2" name=
+   "x1-150004.2"></a>Managing Keys of Different Types
+  </h4>
+  <p class="noindent">
+   In a secure and private environment encryption keys and certificates are
+   needed. A certificate contains a public key and some additional information,
+   much more information than a PGP or SSH key, but the base is always a public
+   RSA key (some protocols use other encryption methods too). There are keys
+   and certificates for personal use and for machines or services as Web
+   servers and programs.
+  </p>
+  <p class="indent">
+   Although the basic encryption method (RSA) can be used for PGP, X.509, SSL,
+   and SSH, for each of the protocols a different key or certificate is used.
+   It would be possible to generate one single key pair and take this as input
+   for all the above mentioned methods, but this is not supported by the
+   individual applications. Each application generates the RSA keys itself. So
+   there exist different non-personal keys, mainly SSH host keys and SSL Web
+   server certificates, which can not be shared among different programs.
+   Personal key environment consists of SSH keys (authorized keys), PGP Keys,
+   X.509 certificates for Web clients, S/MIME and software distribution. X.509
+   certificates can be generated in a way, that one X.509 certificate can be
+   used for S/MIME, software distribution, and personal identification and
+   authentication via Web clients.
+  </p>
+  <p class="indent">
+   So a person will need at least one PGP key, one SSH key and one X.509
+   certificate to fit most of the secure protocols in the Internet.
+   Additionally there is a SSH host key for every host and a Web server
+   certificate for each Web server (virtual host) needed. A suitable way to
+   deal with these different things is to setup one CA which handles the
+   management of all kinds of important keys and certificates for a company.
+   Experience shows that a number of users are using PGP for e-mail and they
+   will not replace PGP completely with S/MIME or the other way round. The
+   company’s CA should try to avoid the use of different root CAs in the
+   company, or, if this is impossible, care for establishing all needed root
+   CAs company-wide.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">5</span> <a id="x1-160005" name=
+   "x1-160005"></a>Related Software Tools
+  </h3>
+  <p class="noindent">
+   No authentication, confidentiality, or data integrity properties are
+   provided in the most common Internet e-mail protocols like SMTP, RFC822, or
+   MIME. People desiring any or all of those security properties in their
+   e-mail should look into the use of related software tools.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.1</span> <a id="x1-170005.1" name=
+   "x1-170005.1"></a>Secure MIME (S/MIME)
+  </h4>
+  <p class="noindent">
+   S/MIME was developed by RSADSI and has been specified in <span class=
+   "cite">[<a href="#Xrfc2311">RFC 2311</a>]</span> and <span class=
+   "cite">[<a href="#Xrfc2312">RFC 2312</a>]</span>. It uses X.509
+   certificates, RSA for digital signatures and, in the export version, RC2
+   with 40-bit key for encryption. As all X.509 based procedures, S/MIME needs
+   certification authorities (CAs) and a directory service to hold the user
+   certificates. S/MIME becomes more popular since the mail reader included in
+   Netscape and Microsoft’s Internet Explorer have built-in support for it.
+  </p>
+  <p class="indent">
+   Each user needs its own RSA key. The key can be generated within the user’s
+   application. There is no need to hand out the private key to the CA. The
+   public keys are embedded in a certificate, which contains some information
+   about the user and its key, and it is signed by a CA. Commercial CAs sign
+   user keys, but it is possible to setup an own CA in a company. All user
+   certificates can be placed in a company-wide accessible LDAP server, where
+   unknown keys will be searched. It is also possible to store the certificates
+   from other users local in the application’s certificate store, but then the
+   issuing CA’s certificate is needed for verifying.
+  </p>
+  <p class="indent">
+   Certificates (and CAs) have a fixed period of validity, renewal of which is
+   needed. This can be overhead, especially if a user stores the certificates
+   locally in the applications because they have to remove invalid certificates
+   themselves. Planned expiring does not fit real life. Employees will change
+   and suddenly their keys will become invalid for further use.
+  </p>
+  <p class="indent">
+   Some different (incompatible) implementations (versions) of S/MIME seem to
+   exist whereby acceptance of certificates may not work between all of them. A
+   central (company-wide) certificate handling infrastructure is needed, not
+   necessarily an own CA, but a maintained directory service. The parallel
+   existance of many so called Root CAs can lead to the necessity of
+   maintaining more than one certificate for each user.
+  </p>
+  <p class="indent">
+   Because S/MIME is completely integrated in Netscape Navigator and
+   Microsoft’s Internet Explorer, there is no need to install local extensions:
+   Standard software can be used. Another advantage is the hierarchical
+   certification structure. Well known trusted CAs exist, everyone can proove
+   their keys and use them to check the presented e-mail for validity. All
+   certificates have an expiry date, the CAs have to publish a key revocation
+   list, which can be consulted to check a certificate. All this makes a
+   simple, well defined level of trust for all users.
+  </p>
+  <p class="indent">
+   S/MIME will work well in an Intranet, best with an own CA. After installing
+   an S/MIME environment, only simple key management is needed. Small companies
+   and single persons will have big overhead to join a trusted area.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.2</span> <a id="x1-180005.2" name=
+   "x1-180005.2"></a>Privacy Enhanced Mail (PEM)
+  </h4>
+  <p class="noindent">
+   PEM is an extension of RFC822. It provides end to end confidentiality,
+   authentication, and message integrity assurance by encryption of RFC822
+   messages. It is a subset of the X.400 security services, UA-level only. It
+   can use any encryption algorithm (private and public). RSA is the default
+   public key algorithm.
+  </p>
+  <p class="indent">
+   A PEM header consists out of five components:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-18002x1">Pre-Encapsulation Boundary
+    <p class="noindent">
+     “<span class="cmtt-10">-----BEGIN PRIVACY-ENHANCED MESSAGE-----</span>”
+    </p>
+   </li>
+   <li class="enumerate" id="x1-18004x2">Encapsulated Header Portion
+   </li>
+   <li class="enumerate" id="x1-18006x3">Blank Line
+   </li>
+   <li class="enumerate" id="x1-18008x4">Encapsulated Text Portion
+   </li>
+   <li class="enumerate" id="x1-18010x5">Post-Encapsulation Boundary
+    <p class="noindent">
+     “<span class="cmtt-10">-----END PRIVACY-ENHANCED MESSAGE-----</span>”
+    </p>
+   </li>
+  </ol>
+  <p class="indent">
+   From a security viewpoint, the “Encapsulated Header Portion” is the most
+   interesting part. It contains encryption control fields inserted in
+   plaintext. A PEM user can choose three different types of PEM messages
+   depending on the security services to be applied. Additionally, PEM supports
+   the expiration and revocation of signatures and certificates.
+  </p>
+  <p class="indent">
+   PEM supports asymmetric and symmetric key management and a two-level keying
+   hierarchy: Data Encrypting Keys (DEKs) are used for encryption of message
+   text and for computation of message integrity check (MIC) quantities. In the
+   asymmetric key management environment, DEKs are also used to encrypt the
+   signed representations of MICs in PEM messages to which confidentiality has
+   been applied. DEKs are generated individually for each transmitted message;
+   no redistribution of DEKs is needed to support PEM transmission.
+  </p>
+  <p class="indent">
+   Interchange Keys (IKs) are used to encrypt DEKs for transmission within
+   messages. Ordinarily, the same IK will be used for all messages sent from a
+   given originator to a given recipient over a period of time. Each
+   transmitted message includes a representation of the DEK(s) used for message
+   encryption and/or MIC computation, encrypted under an individual IK per
+   named recipient.
+  </p>
+  <p class="indent">
+   The PEM standard calls for key management by certificates. The key
+   management architecture is compatible with the X.509 and goes beyond it by
+   establishing procedures and conventions for use with PEM and with other
+   protocols in the future.
+  </p>
+  <p class="indent">
+   PEM additionally describes a Certification Authority hierarchy with an
+   Internet Policy Registration Authority (IPRA) as the root and several Policy
+   Certification Authorities (PCAs) and Certification Authorities (CAs) with
+   different rights and tasks.
+  </p>
+  <p class="indent">
+   Several implementations work with PEM like TIS/PEM by Trusted Information
+   Systems, RIPEM (Riordan’s Internet Privacy Enhanced Mail) or SecuDE-PEM by
+   GMD. Additionally, there are some implementations for military purposes only
+   like MSP (Message Security Protocol) and PMPS (Preliminary MSP).
+  </p>
+  <p class="indent">
+   The future of PEM is depending on the number of implementations and the
+   establishment of a certifications authority hierarchy.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.3</span> <a id="x1-190005.3" name=
+   "x1-190005.3"></a>Pretty Good Privacy (PGP)
+  </h4>
+  <p class="noindent">
+   The most popular encryption program today is “Pretty Good Privacy”, or
+   simply: PGP. PGP was originally written by Philip Zimmermann and has since
+   then been enhanced by volunteers all over the world. PGP is freely available
+   from <span class="cite">[<a href="#XPGP">PGP</a>]</span> and <span class=
+   "cite">[<a href="#XPGPi">PGPi</a>]</span>.
+  </p>
+  <p class="indent">
+   PGP is a hybrid system, using a mixture of public key and conventional
+   cryptography, even though this is hidden in the internals. PGP can encrypt
+   any kind of data for one or several recipients. It can also issue and verify
+   digital signatures.
+  </p>
+  <p class="indent">
+   Public keys can be revoked, if their security has been compromised, but
+   unfortunately, this feature is not available for signatures. Nor does PGP
+   have a feature that lets signatures expire at a certain date. Modified PGP
+   versions have been distributed, that remedy these shortcomings (see
+   <span class="cite">[<a href="#XPGPin-CH">PGPin-CH</a>]</span>), but these
+   modified versions were not adopted by the general public.
+  </p>
+  <p class="indent">
+   Authentication of public keys is done using the Web of Trust approach
+   described earlier, but PGP can easily be used in a certification authority
+   scenario, too. In fact, PGP can combine the central authentication approach
+   with the Web of Trust by setting the trust levels for the keys
+   appropriately, what gives all the power to the user.
+  </p>
+  <p class="indent">
+   The most important advantage of PGP is its popularity. On the Internet, a
+   broad variety of supporting products are available and many of them free.
+   This include mail readers with built-in support for PGP encrypted mails,
+   graphical user interface front-ends or a public key server infrastructure
+   (see <span class="cite">[<a href="#XPGP-net">PGP-NET</a>]</span>).
+  </p>
+  <p class="indent">
+   Furthermore, several organizations (DFN, USENIX…) have already organized
+   certification authorities for PGP keys, which can be used instead of
+   undergoing all the effort oneselves.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">6</span> <a id="x1-200006" name=
+   "x1-200006"></a>Conclusion
+  </h3>
+  <p class="noindent">
+   The task of establishing an authentication infrastructure for a middle-sized
+   to large organization is challenging. Currently, the available software has
+   not matured to the point where building up a certification authority is
+   straightforward. No matter which software will be used and which kind of
+   policy will be deployed, running the certification authority smoothly does
+   require some time and effort.
+  </p>
+  <p class="indent">
+   Consequently, organizing a certification authority should be avoided unless
+   the organization has, say, 100 employees or more. Otherwise the effort is
+   not justified.
+  </p>
+  <p class="indent">
+   People, planning to organize a certification authority, should also consider
+   using one of the available certification authorities instead, rather than
+   doing everything themselves. Most certification authorities are willing to
+   register other organizations as independent registrations authorities, as
+   described in section 3.5.4. Maintaining a registration authority is way less
+   trouble and should be suitable for small organizations also.
+  </p>
+  <p class="indent">
+   Finally, the question may arise, which solutions should be supported by a
+   certification authority. Should one go for PGP, PEM or S/MIME?
+  </p>
+  <p class="indent">
+   S/MIME is not as wide-spread as PGP, which is important for e-mail contacts
+   out of the company. Because S/MIME uses 40-bit encryption keys (512 bit RSA
+   keys for signing), it is weaker than PGP. As commercial use of e-mail grows,
+   S/MIME however has a chance to become acknowledged for juridical use in
+   opposition to PGP.
+  </p>
+  <p class="indent">
+   From the authors’ experience, PEM is rarely used at all, mostly due to the
+   lack of software supporting it. S/MIME, on the other hand, is supported by
+   the mail readers incorporated into the Netscape browser and the Internet
+   Explorer — two programs that are available on virtually all machines
+   connected to the Internet. Unfortunately most other mail readers do not
+   support S/MIME at the moment, so the usage of S/MIME is limited to small,
+   homogenous networks, where all people use these two programs.
+  </p>
+  <p class="indent">
+   Larger organizations, which depend on electronic mail communication with the
+   outside world a lot, should definitely go for PGP, for the sheer popularity
+   of the program. The chances of communicating with someone, who uses PGP, is
+   by an order of magnitude higher than that of finding peers that support
+   S/MIME or PEM.
+  </p>
+  <p class="indent">
+   Ultimately, certification authorities for large organizations will have to
+   support at least S/MIME and PGP in parallel, because both implementations
+   have their own domains, in which it is hard to go without them.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="likesectionHead">
+   <a id="x1-210006" name="x1-210006"></a>References
+  </h3>
+  <p class="noindent"></p>
+  <div class="thebibliography">
+   <p class="bibitem">
+    <span class="biblabel">[BHAT97] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XBHAT97" name=
+    "XBHAT97"></a>L.&nbsp;Bhat, C.&nbsp;Qui: <span class="cmsl-10">Implementing
+    A Digital Signature</span> <span class="cmsl-10">Infrastructure for Web
+    Applications</span>, Proceedings of WebNet 97 — World Conference of the
+    WWW, Internet and Intranet, pp.&nbsp;52-58, ISBN 1-880094-27-4, Article
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[DFN-PCA] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="Xdfn-pca" name=
+    "Xdfn-pca"></a>Deutsches Forschungsnetz (DFN): <span class="cmsl-10">Policy
+    Certification</span> <span class="cmsl-10">Authority</span>,
+    http://www.pca.dfn.de/eng/dfnpca/
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[IN-CH] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XIN-CH" name=
+    "XIN-CH"></a>Individual Network e.V.: <span class="cmsl-10">Certification
+    Policy</span>, March 1997
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[PGP] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XPGP" name=
+    "XPGP"></a><span class="cmsl-10">Pretty Good Privacy inc.</span>,
+    http://www.PGP.com/
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[PGPi] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XPGPi" name=
+    "XPGPi"></a><span class="cmsl-10">The International PGP Home Page</span>,
+    http://www.PGPi.com/
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[PGP-NET] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XPGP-net" name=
+    "XPGP-net"></a>Sandelman Software Works: <span class="cmsl-10">Top level
+    home page for</span> <span class="cmsl-10">www.PGP.net at
+    ca.PGP.net</span>, http://www.PGP.net/PGPnet/
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[PGPDOC1]<span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XPGPdoc1" name=
+    "XPGPdoc1"></a>Philip Zimmermann: <span class="cmsl-10">PGP User’s Guide,
+    Volume I: Essential</span> <span class="cmsl-10">Topics</span>, June 1993,
+    included in the software distribution
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[PGPin-CH] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XPGPin-CH" name=
+    "XPGPin-CH"></a>ftp://ftp.iks-jena.de/pub/mitarb/lutz/crypt/software/PGP/
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1421] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XRFC 1421" name=
+    "XRFC 1421"></a>J.&nbsp;Linn, RFC 1421: <span class="cmsl-10">Privacy
+    Enhancement for Internet</span> <span class="cmsl-10">Electronic Mail: Part
+    I: Message Encryption and Authentication</span> <span class=
+    "cmsl-10">Procedure</span>, February 1993
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1422] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XRFC 1422" name=
+    "XRFC 1422"></a>S.&nbsp;Kent, RFC 1422: <span class="cmsl-10">Privacy
+    Enhancement for Internet</span> <span class="cmsl-10">Electronic Mail, Part
+    II: Certificate-Based Key Management</span>, February 1993
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1423] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XRFC 1423" name=
+    "XRFC 1423"></a>D.&nbsp;Balenson, RFC 1423: <span class="cmsl-10">Privacy
+    Enhancement for Internet</span> <span class="cmsl-10">Electronic Mail: Part
+    III: Algorithms, Modes, and Identifiers</span>, February 1993
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1424] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XRFC 1424" name=
+    "XRFC 1424"></a>B.&nbsp;Kaliski, RFC 1424: <span class="cmsl-10">Privacy
+    Enhancement for Internet</span> <span class="cmsl-10">Electronic Mail: Part
+    IV: Key Certification and Related Services</span>, February 1993
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1487] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XLDAP" name=
+    "XLDAP"></a>W.&nbsp;Yeong, T.&nbsp;Howes, S.&nbsp;Kille: <span class=
+    "cmsl-10">Lightweight Directory Access</span> <span class=
+    "cmsl-10">Protocol</span>, July 1993
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 1875] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XRFC 1875" name=
+    "XRFC 1875"></a>N.&nbsp;Berge: <span class="cmsl-10">UNINETT PCA Policy
+    Statements</span>, December 1995
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 2311] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="Xrfc2311" name=
+    "Xrfc2311"></a>S.&nbsp;Dusse, P.&nbsp;Hoffman, B.&nbsp;Ramsdell,
+    L.&nbsp;Repka, L.&nbsp;Lundblade: <span class="cmsl-10">S/MIME Version 2
+    Message Specification</span>, March 1998
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[RFC 2312] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="Xrfc2312" name=
+    "Xrfc2312"></a>S.&nbsp;Dusse, P.&nbsp;Hoffman, B.&nbsp;Ramsdell,
+    J.&nbsp;Weinstein, <span class="cmsl-10">S/MIME</span> <span class=
+    "cmsl-10">Version 2 Certificate Handling</span>, March 1998
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[WEBNET] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="Xour paper" name=
+    "Xour paper"></a>M.&nbsp;Bogen, M.&nbsp;Lenz, A.&nbsp;Reichpietsch,
+    P.&nbsp;Simons: <span class="cmsl-10">Is the Web</span> <span class=
+    "cmsl-10">a Secure Environment for Electronic Commerce?</span>, WebNet 97 —
+    World Conference of the WWW, Internet and Intranet
+   </p>
+   <p class="bibitem">
+    <span class="biblabel">[X.509] <span class=
+    "bibsp">&nbsp;&nbsp;&nbsp;</span></span><a id="XX.509" name=
+    "XX.509"></a>ITU-T: <span class="cmsl-10">Recommendation X.509: The
+    Directory —</span> <span class="cmsl-10">Authentication Framework</span>,
+    1988
+   </p>
+  </div>
+ </body>
+</html>
diff --git a/organizing-ca/tex4ht.css b/organizing-ca/tex4ht.css
new file mode 100644 (file)
index 0000000..f2b953d
--- /dev/null
@@ -0,0 +1,123 @@
+/* start css.sty */
+.cmmi-10{font-style: italic;}
+.cmr-17{font-size:170%;}
+.cmr-12{font-size:120%;}
+.cmr-9{font-size:90%;}
+.cmbx-9{font-size:90%; font-weight: bold;}
+.cmsl-9{font-size:90%;font-style: oblique;}
+.cmsl-9{font-style: oblique;}
+.cmtt-10{font-family: monospace;}
+.cmsl-10{font-style: oblique;}
+.cmsl-10{font-style: oblique;}
+.cmti-10{ font-style: italic;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; } 
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
+.index-item, .index-subitem, .index-subsubitem {display:block}
+div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
+div.caption span.id{font-weight: bold; white-space: nowrap; }
+h1.partHead{text-align: center}
+p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
+.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
+.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
+.verse{white-space:nowrap; margin-left:2em}
+div.maketitle {text-align:center;}
+h2.titleHead{text-align:center;}
+div.maketitle{ margin-bottom: 2em; }
+div.author, div.date {text-align:center;}
+div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
+div.author{white-space: nowrap;}
+.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+.figure img.graphics {margin-left:10%;}
+/* end css.sty */
+
diff --git a/organizing-ca/tex4iki0x.png b/organizing-ca/tex4iki0x.png
new file mode 100644 (file)
index 0000000..eddb6e4
Binary files /dev/null and b/organizing-ca/tex4iki0x.png differ
diff --git a/peter-simons.jpg b/peter-simons.jpg
new file mode 100644 (file)
index 0000000..51f7ec5
Binary files /dev/null and b/peter-simons.jpg differ
diff --git a/prime-sieve.mdwn b/prime-sieve.mdwn
new file mode 100644 (file)
index 0000000..b4092cd
--- /dev/null
@@ -0,0 +1,151 @@
+[[!meta title="C++ compile-time prime sieve"]]
+[[!tag cxx-riddle]]
+
+    /*
+     * prime-sieve.cpp
+     *
+     * This code implements the Sieve of Erathostenes in meta templates.
+     * The type prime_sieve<n>::result expands to a list of integers that
+     * represents the primes in [2..n]. This list of primes is computed
+     * entirely at compile-time. The short example main() program at the
+     * end demonstrates how to access that list.
+     */
+
+    //////////////////////////////////////////////////////////////////////
+    // Meta-programming Infrastructure
+    //////////////////////////////////////////////////////////////////////
+
+    struct nulltype { };
+
+    template<typename head, typename tail>
+    struct typelist { };
+
+    template<unsigned int i>
+    struct integer
+    {
+      enum { value = i };
+    };
+
+    template<bool cond, typename true_type, typename false_type>
+    struct ifelse
+    {
+      typedef true_type result;
+    };
+
+    template<typename true_type, typename false_type>
+    struct ifelse<false, true_type, false_type>
+    {
+      typedef false_type result;
+    };
+
+    //////////////////////////////////////////////////////////////////////
+    // Alorithm to create [i..n]
+    //////////////////////////////////////////////////////////////////////
+
+    template<unsigned int i, unsigned int n>
+    struct integer_range
+    {
+      typedef typelist< integer<i>, typename integer_range<i+1, n>::result > result;
+    };
+
+    template<unsigned int n>
+    struct integer_range<n, n>
+    {
+      typedef typelist< integer<n>, nulltype > result;
+    };
+
+    //////////////////////////////////////////////////////////////////////
+    // Sieve of Erathostenes
+    //////////////////////////////////////////////////////////////////////
+
+    template<unsigned int i, typename integers>
+    struct sieve_multiples_of;
+
+    template<unsigned int i, typename x, typename xs>
+    struct sieve_multiples_of< i, typelist<x,xs> >
+    {
+      typedef typename ifelse
+        < x::value % i != 0u
+        , typelist<x, typename sieve_multiples_of<i, xs>::result>
+        , typename sieve_multiples_of<i, xs>::result
+        >::result result;
+    };
+
+    template<unsigned int i>
+    struct sieve_multiples_of<i, nulltype>
+    {
+      typedef nulltype result;
+    };
+
+    template<typename integers>
+    struct sieve_list;
+
+    template<typename x, typename xs>
+    struct sieve_list< typelist<x,xs> >
+    {
+      typedef typelist<x, typename sieve_list<typename sieve_multiples_of<x::value, xs>::result>::result> result;
+    };
+
+    template<>
+    struct sieve_list<nulltype>
+    {
+      typedef nulltype result;
+    };
+
+    template<unsigned int n>
+    struct prime_sieve
+    {
+      typedef typename sieve_list<typename integer_range<2,n>::result>::result result;
+    };
+
+
+    //////////////////////////////////////////////////////////////////////
+    // Copy a type list to an output iterator
+    //////////////////////////////////////////////////////////////////////
+
+    template<typename typelist>
+    struct copy_list;
+
+    template<typename x, typename xs>
+    struct copy_list< typelist<x,xs> >
+    {
+      template<typename output_iterator>
+      static output_iterator to(output_iterator i)
+      {
+        *i = x::value;
+        return copy_list<xs>::to(++i);
+      }
+    };
+
+    template<>
+    struct copy_list<nulltype>
+    {
+      template<typename output_iterator>
+      static output_iterator to(output_iterator i)
+      {
+        return i;
+      }
+    };
+
+    //////////////////////////////////////////////////////////////////////
+    // Compute the primes in [2..100] and write them to standard output
+    //////////////////////////////////////////////////////////////////////
+
+    #include <iostream>
+    #include <iterator>
+
+    int main(int, char**)
+    {
+      using std::ostream_iterator;
+      using std::cout;
+      using std::endl;
+
+      enum { n = 100 };
+      typedef prime_sieve<n>::result primes;
+
+      cout << "Primes found in [2.." << n << "]:" << endl;
+      copy_list<primes>::to(ostream_iterator<unsigned int>(cout, " "));
+      cout << endl;
+
+      return 0;
+    }
diff --git a/properties-of-hierarchies.mdwn b/properties-of-hierarchies.mdwn
new file mode 100644 (file)
index 0000000..d219aa1
--- /dev/null
@@ -0,0 +1,78 @@
+[[!meta title="Properties of Hierarchical Structures"]]
+[[!tag graph-theory]]
+
+## Theory
+
+**Definition.** *A hierarchy is a single-rooted tree.*
+
+Let $T=(V,E)$ be a connected, acyclic directed graph that expresses a
+hierarchical structure. The set of vertices $V$ represents the entities
+that are being organized, and the set of edges $E$ maps from a given
+entity to its respective superior.
+
+[[!graph type="graph" src="""
+  v1 [shape=box];
+  v2 [shape=box];
+  v3 [shape=box];
+  v5 [shape=box];
+  v7 [shape=box];
+  v1 -- v2; v1 -- v3;
+  v2 -- v4; v2 -- v5; v2 -- v6;
+  v3 -- v7; v3 -- v8; v3 -- v9;
+  v5 -- v10; v5 -- v11;
+  v7 -- v12; v7 -- v13;
+"""]]
+
+A vertex is said to have degree $k$ if it has exactly $k$ direct
+subordinates (incoming edges). Vertices with degree 0 are called leaves
+and vertices with degree $>0$ are called nodes.
+
+**Definition.** *The average degree of a hierarchy is the average degree of its nodes.*
+
+If $T$ is not empty, then there exists exactly one distinguished vertex
+$v_1\in{}V$ that has no superior. All other vertices have exactly one
+superior.
+
+For every $v\in{}V$ there exists a unique path that leads from $v$ to
+$v_1$. The length of that path is referred to as depth of $v$. The depth
+of $v_1$ is 0.
+
+**Definition.** *The average depth of a hierarchy is the average depth of its leaves.*
+
+Let $\mu$ be the average degree of $T$, and let $l$ be the average depth
+of $T$. Then there exists a perfectly regular tree $T'$ in which
+*all* nodes have degree $\mu$ and *all* leaves are at
+depth~$l$:
+
+[[!graph type="graph" src="""
+  v1 [shape=box];
+  v2 [shape=box];
+  v3 [shape=box];
+  v4 [shape=box];
+  v1 -- v2; v1 -- v3; v1 -- v4;
+  v2 -- v5; v2 -- v6; v2 -- v7;
+  v3 -- v8; v3 -- v9; v3 -- v10;
+  v4 -- v11; v4 -- v12; v4 -- v13;
+"""]]
+
+Such a tree has $\mu^k$ vertices at any given depth $k$, which means
+that the total number of vertices is $$ n \;=\;
+\sum\limits_{k=0}^{l}\,\mu^k \;=\; \frac{1-\mu^{l+1}}{1-\mu} . $$
+
+**Corollary.** *In every perfectly regular hierarchy, the relationship
+between the average degree $\mu$, the average depth $l$, and the number
+of vertices $n$ is $$n\,\mu^{l+1}-\mu^{l}-n+1\;=\;0 .$$*
+
+**Corollary.** *The proportion of nodes in every perfectly regular
+hierarchy is $$\frac{1-\mu^{l}}{1-\mu^{l+1}} .$$*
+
+## Application
+
+Consider any given company hierarchy of $n=10\,000$ employees. Nodes
+represent managers and leaves represent workers. Workers have an average
+chain of $l=4$ superiors up to (and including) the big boss. If that
+hierarchy is somewhat regular, then approximately 10% of the workforce
+--- $1\,000$ employees --- would be required for purposes of management.
+The average team in that company would have approximately $\mu=9,7$
+members. If the company \emph{doesn't} match these predictions, then its
+hierarchy would have to be somewhat irregular.
diff --git a/properties-of-hierarchies.pdf b/properties-of-hierarchies.pdf
new file mode 100644 (file)
index 0000000..bf2933d
Binary files /dev/null and b/properties-of-hierarchies.pdf differ
diff --git a/simple-undirected-graphs.mdwn b/simple-undirected-graphs.mdwn
new file mode 100644 (file)
index 0000000..6b5271f
--- /dev/null
@@ -0,0 +1,9 @@
+[[!meta title="Compendium of Simple Undirected Graphs"]]
+[[!tag graph-theory]]
+
+In my experience, the best way to understand problems related to graph
+theory is to look at concrete example graphs that have the properties
+one intends to study. Coming up with these examples is often tedious,
+though, which is why I found the following document helpful. It contains
+*all* possible graphs randing from 2 to 6 vertices: [[Compendium of
+Simple Undirected Graphs (PDF)|simple-undirected-graphs.pdf]].
diff --git a/simple-undirected-graphs.pdf b/simple-undirected-graphs.pdf
new file mode 100644 (file)
index 0000000..52c709d
Binary files /dev/null and b/simple-undirected-graphs.pdf differ
diff --git a/sonnensystem.mdwn b/sonnensystem.mdwn
new file mode 100644 (file)
index 0000000..94aa01b
--- /dev/null
@@ -0,0 +1,8 @@
+[[!meta title="Geometrie des Sonnensystems"]]
+[[!tag geometrie]]
+
+Die Frage nach der [[Entfernung zum Horizont|distance-to-the-horizon]]
+hatte mich auf den Geschmack gebracht. Da lag es nahe, als nächsten
+Schritt das Sonnensystem zu erforschen. Die Ergebnisse meiner
+Erkundungen sind in dem Artikel [[Geometrie des Sonnensytems
+(PDF)|sonnensystem.pdf]] festgehalten.
diff --git a/sonnensystem.pdf b/sonnensystem.pdf
new file mode 100644 (file)
index 0000000..870a3d6
Binary files /dev/null and b/sonnensystem.pdf differ
diff --git a/spezielle-relativitaet.mdwn b/spezielle-relativitaet.mdwn
new file mode 100644 (file)
index 0000000..efb1797
--- /dev/null
@@ -0,0 +1,11 @@
+[[!meta title="Spezielle Relativitätstheorie"]]
+[[!tag physik]]
+
+Praktisch jeder weiß um die Existenz der Relativitätstheorie, und nahezu
+jeder kennt auch deren prägnante Kernaussage *E=mc&sup2;*. Gleichzeitig
+heißt es aber auch, die Relativitätstheorie sei unheimlich schwer und
+nahezu niemand würde sie wirklich verstehen. Das hat mich neugierig
+gemacht; ich wollte gerne wissen, was es mit dieser obskuren
+Relativitätstheorie wirklich auch sich hat. Die Ergebnisse meiner
+Nachforschungen dokumentiert der Artikel [[Spezielle Relativitätstheorie
+(PDF)|spezielle-relativitaet.pdf]].
diff --git a/spezielle-relativitaet.pdf b/spezielle-relativitaet.pdf
new file mode 100644 (file)
index 0000000..6c6eccc
Binary files /dev/null and b/spezielle-relativitaet.pdf differ
diff --git a/spirograph.mdwn b/spirograph.mdwn
new file mode 100644 (file)
index 0000000..caede5e
--- /dev/null
@@ -0,0 +1,12 @@
+[[!meta title="Was macht ein Spirograph?"]]
+[[!tag geometrie]]
+
+Eines Tages machte mich ein Freund auf ein wunderbares Spielzeug
+aufmerksam: den Spirographen. So etwas bekommmt man ohne Probleme auf
+E-Bay (oder auch im Laden), und nachdem ich einen hatte, hat mich das
+Thema eine ganze Weil auf Trab gehalten. Einige der Ergebnisse dieser
+Spielerei finden sich nun in dem Artikel [[Was macht ein Spirograph?
+(PDF)|spirograph.pdf]].
+
+Eine natürliche Folge des ganzen war, dass ich mich dann auch [[für
+Zahnräder interessiert|zahnrad]] habe.
diff --git a/spirograph.pdf b/spirograph.pdf
new file mode 100644 (file)
index 0000000..71ea873
Binary files /dev/null and b/spirograph.pdf differ
diff --git a/status.mdwn b/status.mdwn
new file mode 100644 (file)
index 0000000..20a8782
--- /dev/null
@@ -0,0 +1,13 @@
+# Broken links
+
+[[!brokenlinks pages="* and !ikiwiki/*"]]
+
+# Orphaned pages
+
+[[!orphans pages="* and !recentchanges and !wikiicons/* and !templates/*
+    and !*.css and !ikiwiki/* and !favicon.ico and !status
+    and !*/*.jpg and !*/*.gif and !*/*.png"]]
+
+# Supported Ikiwiki Directives
+
+[[!listdirectives]]
diff --git a/tag/cxx-riddle/index.mdwn b/tag/cxx-riddle/index.mdwn
new file mode 100644 (file)
index 0000000..1c8d656
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="C++ Riddles"]]
+
+# Pages related to C++ riddles
+
+[[!map pages="tagged(cxx-riddle)" show=title]]
diff --git a/tag/faq/index.mdwn b/tag/faq/index.mdwn
new file mode 100644 (file)
index 0000000..1552c33
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Frequently Asked Questions"]]
+
+# Pages related to Frequently Asked Questions
+
+[[!map pages="tagged(faq)" show=title]]
diff --git a/tag/geometrie/index.mdwn b/tag/geometrie/index.mdwn
new file mode 100644 (file)
index 0000000..bc8c775
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Geometrie"]]
+
+# Artikel zum Thema Geometrie
+
+[[!map pages="tagged(geometrie)" show=title]]
diff --git a/tag/graph-theory/index.mdwn b/tag/graph-theory/index.mdwn
new file mode 100644 (file)
index 0000000..348c158
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Graph Theory"]]
+
+# Pages related to Graph Theory
+
+[[!map pages="tagged(graph-theory)" show=title]]
diff --git a/tag/index.mdwn b/tag/index.mdwn
new file mode 100644 (file)
index 0000000..460e2b8
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Pages grouped by topics"]]
+
+# Pages grouped by topics
+
+[[!map pages="tag/*" show=title]]
diff --git a/tag/physik/index.mdwn b/tag/physik/index.mdwn
new file mode 100644 (file)
index 0000000..4523574
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Physik"]]
+
+# Seiten zum Thema Physik
+
+[[!map pages="tagged(physik)" show=title]]
diff --git a/tag/security/index.mdwn b/tag/security/index.mdwn
new file mode 100644 (file)
index 0000000..96bab94
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Cryptography / Network Security"]]
+
+# Articles related to Cryptography and Network Security
+
+[[!map pages="tagged(security)" show=title]]
diff --git a/tag/software/index.mdwn b/tag/software/index.mdwn
new file mode 100644 (file)
index 0000000..a6029ac
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Free Software"]]
+
+# Pages related to Free Software
+
+[[!map pages="tagged(software)" show=title]]
diff --git a/tag/stochastik/index.mdwn b/tag/stochastik/index.mdwn
new file mode 100644 (file)
index 0000000..70af64d
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta title="Stochastik"]]
+
+# Artikel zum Thema Stochastik
+
+[[!map pages="tagged(stochastik)" show=title]]
diff --git a/the-secure-shell/daemon.gif b/the-secure-shell/daemon.gif
new file mode 100644 (file)
index 0000000..7834fbd
Binary files /dev/null and b/the-secure-shell/daemon.gif differ
diff --git a/the-secure-shell/index.html b/the-secure-shell/index.html
new file mode 100644 (file)
index 0000000..d27f4ff
--- /dev/null
@@ -0,0 +1,1994 @@
+[[!meta title="The Secure Shell"]]
+[[!meta stylesheet=tex4ht rel="stylesheet"]]
+[[!tag security]]
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>
+   The Secure Shell
+  </title>
+ </head>
+ <body>
+  <div class="maketitle">
+   <h2 class="titleHead">
+    The Secure Shell
+   </h2>
+   <div class="author">
+    <span class="cmr-12">Peter Simons</span><br />
+    <span class="cmr-12">Andreas Reichpietsch</span>
+   </div><br />
+   <div class="date">
+    <span class="cmr-12">1997-02-13</span>
+   </div>
+  </div>
+  <div class="abstract">
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <span class="cmbx-9">Abstract</span>
+    </p>
+   </div>
+   <p class="indent">
+    <span class="cmr-9">With the growing importance of computers and computer
+    networks in</span> <span class="cmr-9">particular, networking security has
+    become a cruicial issue in the Internet</span> <span class="cmr-9">today.
+    This document is meant as an introduction to the various attacks,</span>
+    <span class="cmr-9">Internet users have to face. Furthermore, the authors
+    explain the Secure</span> <span class="cmr-9">Shell (</span><span class=
+    "cmsl-9">ssh</span><span class="cmr-9">) tool in great detail, which is a
+    good way to defend against the</span> <span class="cmr-9">attacks known
+    today.</span>
+   </p>
+  </div>
+  <p class="indent"></p>
+  <h3 class="likesectionHead">
+   <a id="x1-1000" name="x1-1000"></a>Contents
+  </h3>
+  <div class="tableofcontents">
+   <span class="sectionToc">1 <a href="#x1-20001" id="QQ2-1-2" name=
+   "QQ2-1-2">Why do you need a “secure shell”?</a></span><br />
+   &nbsp;<span class="subsectionToc">1.1 <a href="#x1-30001.1" id="QQ2-1-3"
+   name="QQ2-1-3">Principle of the Internet</a></span><br />
+   &nbsp;<span class="subsectionToc">1.2 <a href="#x1-40001.2" id="QQ2-1-5"
+   name="QQ2-1-5">Eavesdropping passing traffic</a></span><br />
+   &nbsp;<span class="subsectionToc">1.3 <a href="#x1-50001.3" id="QQ2-1-6"
+   name="QQ2-1-6">Eavesdropping is even more dangerous than you
+   think</a></span><br />
+   &nbsp;<span class="subsectionToc">1.4 <a href="#x1-60001.4" id="QQ2-1-7"
+   name="QQ2-1-7">Does this apply to our local network, too?</a></span><br />
+   <span class="sectionToc">2 <a href="#x1-70002" id="QQ2-1-8" name=
+   "QQ2-1-8">The “Secure Shell” (<span class=
+   "cmsl-10">ssh</span>)</a></span><br />
+   &nbsp;<span class="subsectionToc">2.1 <a href="#x1-80002.1" id="QQ2-1-9"
+   name="QQ2-1-9">Parts of <span class="cmsl-10">ssh</span></a></span><br />
+   &nbsp;<span class="subsectionToc">2.2 <a href="#x1-90002.2" id="QQ2-1-10"
+   name="QQ2-1-10">Features <span class="cmsl-10">ssh</span></a></span><br />
+   <span class="sectionToc">3 <a href="#x1-100003" id="QQ2-1-11" name=
+   "QQ2-1-11">Cryptophical background</a></span><br />
+   &nbsp;<span class="subsectionToc">3.1 <a href="#x1-110003.1" id="QQ2-1-12"
+   name="QQ2-1-12">Conventional encryption</a></span><br />
+   &nbsp;<span class="subsectionToc">3.2 <a href="#x1-120003.2" id="QQ2-1-13"
+   name="QQ2-1-13">Public key encryption</a></span><br />
+   &nbsp;<span class="subsectionToc">3.3 <a href="#x1-130003.3" id="QQ2-1-17"
+   name="QQ2-1-17">Digital Signatures</a></span><br />
+   <span class="sectionToc">4 <a href="#x1-140004" id="QQ2-1-18" name=
+   "QQ2-1-18">Technical issues of the <span class=
+   "cmsl-10">ssh</span></a></span><br />
+   &nbsp;<span class="subsectionToc">4.1 <a href="#x1-150004.1" id="QQ2-1-19"
+   name="QQ2-1-19">The <span class="cmsl-10">ssh</span>
+   protocol</a></span><br />
+   &nbsp;<span class="subsectionToc">4.2 <a href="#x1-160004.2" id="QQ2-1-20"
+   name="QQ2-1-20">The <span class="cmsl-10">ssh</span> protects in many
+   ways</a></span><br />
+   &nbsp;<span class="subsectionToc">4.3 <a href="#x1-170004.3" id="QQ2-1-21"
+   name="QQ2-1-21">Keymanagement</a></span><br />
+   <span class="sectionToc">5 <a href="#x1-180005" id="QQ2-1-22" name=
+   "QQ2-1-22">Practical issues of the <span class=
+   "cmsl-10">ssh</span></a></span><br />
+   &nbsp;<span class="subsectionToc">5.1 <a href="#x1-190005.1" id="QQ2-1-23"
+   name="QQ2-1-23">Compilation and Installation</a></span><br />
+   &nbsp;<span class="subsectionToc">5.2 <a href="#x1-200005.2" id="QQ2-1-24"
+   name="QQ2-1-24">Transparent <span class="cmsl-10">ssh</span>
+   Usage</a></span><br />
+   &nbsp;<span class="subsectionToc">5.3 <a href="#x1-210005.3" id="QQ2-1-25"
+   name="QQ2-1-25"><span class="cmsl-10">ssh</span>-aware
+   Usage</a></span><br />
+   &nbsp;<span class="subsectionToc">5.4 <a href="#x1-220005.4" id="QQ2-1-26"
+   name="QQ2-1-26">Sophisticated <span class="cmsl-10">ssh</span>
+   Usage</a></span><br />
+   &nbsp;&nbsp;<span class="subsubsectionToc">5.4.1 <a href="#x1-230005.4.1"
+   id="QQ2-1-27" name="QQ2-1-27">The <span class=
+   "cmsl-10">ssh-agent</span></a></span><br />
+   &nbsp;&nbsp;<span class="subsubsectionToc">5.4.2 <a href="#x1-240005.4.2"
+   id="QQ2-1-29" name="QQ2-1-29">Replacing <span class=
+   "cmsl-10">rstart</span></a></span><br />
+   &nbsp;&nbsp;<span class="subsubsectionToc">5.4.3 <a href="#x1-250005.4.3"
+   id="QQ2-1-30" name="QQ2-1-30">Forwarding and Tunneling
+   Connects</a></span><br />
+   <span class="sectionToc">A <a href="#x1-26000A" id="QQ2-1-33" name=
+   "QQ2-1-33">Trouble Shooting</a></span><br />
+   &nbsp;<span class="subsectionToc">A.1 <a href="#x1-27000A.1" id="QQ2-1-34"
+   name="QQ2-1-34">Connection closes down immediately after
+   establishing</a></span><br />
+   &nbsp;<span class="subsectionToc">A.2 <a href="#x1-28000A.2" id="QQ2-1-35"
+   name="QQ2-1-35">The $DISPLAY variable is set incorrectly</a></span><br />
+   &nbsp;<span class="subsectionToc">A.3 <a href="#x1-29000A.3" id="QQ2-1-36"
+   name="QQ2-1-36"><span class="cmsl-10">ssh</span> through a
+   Firewall</a></span><br />
+   <span class="sectionToc">B <a href="#x1-30000B" id="QQ2-1-37" name=
+   "QQ2-1-37">List of files</a></span><br />
+   &nbsp;<span class="subsectionToc">B.1 <a href="#x1-31000B.1" id="QQ2-1-38"
+   name="QQ2-1-38">System-wide files</a></span><br />
+   &nbsp;<span class="subsectionToc">B.2 <a href="#x1-32000B.2" id="QQ2-1-39"
+   name="QQ2-1-39">User customizable files</a></span><br />
+   <span class="sectionToc">C <a href="#x1-33000C" id="QQ2-1-40" name=
+   "QQ2-1-40">Other sources of information</a></span>
+  </div>
+  <h3 class="sectionHead">
+   <span class="titlemark">1</span> <a id="x1-20001" name="x1-20001"></a>Why do
+   you need a “secure shell”?
+  </h3>
+  <p class="noindent">
+   It is amazing how much energy the Internet users dedicate to ignoring
+   potential security threats. After two decades of TCP/IP based networking,
+   one would assume that the dangers of transferring important or private data
+   through the network are commonly known. Unfortunately, this is not true. The
+   ordinary <span class="cmsl-10">telnet</span> or <span class=
+   "cmsl-10">rlogin</span> services are still very popular and commonly used to
+   access Internet sites remotely, even though replacements have been available
+   for years.
+  </p>
+  <p class="indent">
+   This paper describes the risks of using unprotected Internet services
+   briefly and covers the <span class="cmsl-10">Secure Shell</span>
+   (<span class="cmsl-10">ssh</span>) package, which protects your data from
+   the attacks known today.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">1.1</span> <a id="x1-30001.1" name=
+   "x1-30001.1"></a>Principle of the Internet
+  </h4>
+  <p class="noindent">
+   The Internet is a world-wide network, consisting of approximately 300000
+   computers<span class="footnote-mark"><a href=
+   "tex4iki2.html#fn1x0"><sup class="textsuperscript">1</sup></a></span><a id=
+   "x1-3001f1" name="x1-3001f1"></a>. These computers are linked to each other
+   via means of electronic communications such as ISDN lines, fibre optics,
+   ATM, Ethernet — to name a few. Obviously, it is not possible to connect
+   every computer to every other participant of the net directly. Instead, each
+   of this machines is linked to at least one neighbour, usually several
+   neighbours. So how is it possible, that a user of machine&nbsp;A can access
+   machine&nbsp;B, even if there is no direct communication link to
+   machine&nbsp;B?
+  </p>
+  <p class="indent">
+   The answer is simple: All participating Internet sites cooperate with each
+   other. If machine&nbsp;A needs to reach machine&nbsp;B, it uses its link to
+   the neighbour site and says: “Hey, I need this packet of data delivered to
+   this machine, could you please pass it on?” The neighbour in turn, asks one
+   of his neighbours, and so on…. After a while, the packet reaches a neighbour
+   of machine&nbsp;B, who is able to deliver it to the final recipient. This
+   process is called <span class="cmsl-10">routing</span> and is illustrated in
+   figure&nbsp;<a href="#x1-30021">1</a>.
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-30021" name="x1-30021"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki0x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="192.30566pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;1:</span> <span class="content">The routing
+     process in the Internet.</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   The figure shows the following case: A user on the machine “peti.gmd.de”
+   uses “telnet” to connect to his home machine “petium.rhein.de”, which is
+   connected via a dedicated serial line to the University of Bonn. For the
+   user, all hosts between his and the remote machine are invisible. He or she
+   types <span class="cmtt-10">telnet</span> <span class=
+   "cmtt-10">petium.rhein.de</span> and received an answer from the remote
+   host. This is called an <span class="cmsl-10">end-to-end connect</span>. In
+   fact, though, there are several other Internet hosts on the way to “petium”,
+   which route the IP traffic in order to deliver it to the recipient.
+  </p>
+  <p class="indent">
+   With the <span class="cmsl-10">traceroute</span> utility, the exact path of
+   the data can be displayed:
+  </p>
+  <div class="verbatim" id="verbatim-1">
+   &nbsp;1&nbsp;&nbsp;bilangate.gmd.de&nbsp;(129.26.120.1) &nbsp;<br />
+   &nbsp;2&nbsp;&nbsp;GMD-StAugustin.WiN-IP.DFN.DE&nbsp;(188.1.6.149)
+   &nbsp;<br />
+   &nbsp;3&nbsp;&nbsp;ZR-Koeln1.WiN-IP.DFN.DE&nbsp;(188.1.6.145) &nbsp;<br />
+   &nbsp;4&nbsp;&nbsp;Uni-Bonn1.WiN-IP.DFN.DE&nbsp;(188.1.6.42) &nbsp;<br />
+   &nbsp;5&nbsp;&nbsp;kr-uni-bonn.Uni-Bonn.DE&nbsp;(188.1.6.46) &nbsp;<br />
+   &nbsp;6&nbsp;&nbsp;emil-1-f0.rhrz.uni-bonn.de&nbsp;(131.220.1.5)
+   &nbsp;<br />
+   &nbsp;7&nbsp;&nbsp;131.220.241.2&nbsp;(131.220.241.2) &nbsp;<br />
+   &nbsp;8&nbsp;&nbsp;watergate.informatik.uni-bonn.de&nbsp;(131.220.6.7)
+   &nbsp;<br />
+   &nbsp;9&nbsp;&nbsp;gateless-gate.rhein.de&nbsp;(193.175.27.6) &nbsp;<br />
+   10&nbsp;&nbsp;gatekeeper.rhein.de&nbsp;(193.175.27.1) &nbsp;<br />
+   11&nbsp;&nbsp;petium.rhein.de&nbsp;(193.175.27.171)
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   In our example, a data packet travels through nine other computers, before
+   it reaches its destination.
+  </p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">1.2</span> <a id="x1-40001.2" name=
+   "x1-40001.2"></a>Eavesdropping passing traffic
+  </h4>
+  <p class="noindent">
+   What is the conclusion of the example shown in figure&nbsp;<a href=
+   "#x1-30021">1 </a>? The following “real-world” analogy should make it clear:
+
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-4002x1">Alice wants to tell Bob that she would
+   like to see him this evening. She can’t reach him though, so she asks Carri,
+   a colleague of her to try to reach Bob and to tell him her message.
+   </li>
+   <li class="enumerate" id="x1-4004x2">Carri meets her old friend Daniel and
+   asks him, to tell Bob that Alice wants to meet him.
+   </li>
+   <li class="enumerate" id="x1-4006x3">Daniel passes this message to his
+   colleague Egon, who works with Bob occasionally.
+   </li>
+   <li class="enumerate" id="x1-4008x4">Egon tells Bob that Alice would like to
+   meet him.
+   </li>
+  </ol>
+  <p class="indent">
+   Is this the way you’d like to communicate with someone?
+  </p>
+  <p class="indent">
+   Well, in the Internet you’re doing it all the time. Every single Internet
+   site, that lies between the sender of some data packet and the addressee, is
+   able to listen to every byte of data, that the two machines transfer.
+  </p>
+  <p class="indent">
+   Doing so is surprisingly easy. Most operating systems come with a small
+   utility that displays or even logs all traffic that passes the machine,
+   which is meant for debugging purposes — but not limited to debugging
+   purposes. The most popular tool of this kind is <span class=
+   "cmsl-10">tcpdump</span>, but various other tools are available as
+   commercial products or as freeware.
+  </p>
+  <p class="indent">
+   And in case you need more sophisticated network sniffing utilities, you can
+   easily write your own. Just grab a copy of “Internetworking with TCP/IP” by
+   Douglas E. Comer, take a look at the “Berkeley Packet Filter” device in your
+   BSD Unix and there you go. With a bit of an effort, you can easily log all
+   passing traffic that contains telnet data, electronic mail or any other
+   Internet service.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">1.3</span> <a id="x1-50001.3" name=
+   "x1-50001.3"></a>Eavesdropping is even more dangerous than you think
+  </h4>
+  <p class="noindent">
+   The most obvious consequence of eavesdropping is that a hacker can see your
+   e-mail, he can see what commands you are executing on the remote machine and
+   so on.
+  </p>
+  <p class="indent">
+   What he can also see is your login name and your password.
+  </p>
+  <p class="indent">
+   This means, that he will be able to log into the machine using your account
+   and access all your files. If you were unfortunate enough to become super
+   user via <span class="cmsl-10">su</span> during an eavesdropped telnet
+   session, he will also have super-user’-privileges and be able to access all
+   files, even those of the other users.
+  </p>
+  <p class="indent">
+   A hacker with super-user-access to a machine can also install a copy of his
+   sniffing software and eavesdrop the sessions that pass this machine,
+   additionally to the ones that pass his own machine, resulting in even more
+   information about accounts and user data. The damage is becomming worse
+   exponentially. The more Internet sites a hacker controls, the more chances
+   he has to observe passing IP traffic.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">1.4</span> <a id="x1-60001.4" name=
+   "x1-60001.4"></a>Does this apply to our local network, too?
+  </h4>
+  <p class="noindent">
+   Most organizations and companies have secured their internal network with an
+   IP filter or a firewall software, to block incoming data. Thus, one would
+   assume that “telnet” and other “remote access” services can be securely used
+   if the session doesn’t leave the internal network, because no hacker will be
+   able to access the data from the outside.
+  </p>
+  <p class="indent">
+   This is basically true, but there are a number of risks that remain. For
+   one, experience has shown that virtually no firewall blocks all incoming
+   traffic. For the convenience of the employees and customers, certain
+   machines may pass the firewall and reach the inner network. May it be for
+   administrative purposes, or to be able to read one’s electronic mail from
+   the private machine.
+  </p>
+  <p class="indent">
+   If this is true, a hacker has various means of breaking into the inner
+   network. He may eavesdrop a session from an employee, logging into his
+   machine at work to read his e-mail. Now he knows the user’s login and
+   password. Then he fakes the IP address and hostname of his machine and
+   pretends to be the computer of the employee, which may pass the firewall,
+   and logs in. While this attack is not very easy to accomplish, it is
+   perfectly possible<span class="footnote-mark"><a href=
+   "tex4iki3.html#fn2x0"><sup class="textsuperscript">2</sup></a></span><a id=
+   "x1-6001f2" name="x1-6001f2"></a>.
+  </p>
+  <p class="indent">
+   Once the hacker is in the “secure internal network”, all doors are open. He
+   may eavesdrop internal traffic, he can take advantage of the commonly used
+   <span class="cmtt-10">.rhost</span> and <span class=
+   "cmtt-10">/etc/hosts.equiv</span> mechanisms to access even more machines.
+  </p>
+  <p class="indent">
+   Securing the internal network by a firewall and then leaving all internal
+   communication unprotected can be compared to a bank that locks its front
+   door, but leaves its customer’s money laying around on the desks.
+  </p>
+  <p class="indent">
+   In security issues, you are only as strong, as your weakest link.
+  </p>
+  <h3 class="sectionHead">
+   <span class="titlemark">2</span> <a id="x1-70002" name="x1-70002"></a>The
+   “Secure Shell” (<span class="cmsl-10">ssh</span>)
+  </h3>
+  <p class="noindent">
+   Secure Shell is a program to log into another computer over a network, to
+   execute commands in a remote machine, and to move files from one machine to
+   another. It provides strong authentication and secure communication over
+   insecure channels. It is designed to replace the rlogin. rsh and rcp
+   commands. It never trusts the network, and if working with <span class=
+   "cmsl-10">ssh</span>, the whole communication is encrypted, passwords never
+   walk unencrypted through the network. Rthe only transport protocol supported
+   by <span class="cmsl-10">ssh</span> is TCP/IP.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">2.1</span> <a id="x1-80002.1" name=
+   "x1-80002.1"></a>Parts of <span class="cmsl-10">ssh</span>
+  </h4>
+  <p class="noindent">
+   <span class="cmsl-10">ssh</span> contains of three parts, a server part, a
+   client part and a part for the user key management.
+  </p>
+  <ul class="itemize1">
+   <li class="itemize">Server Part
+    <p class="noindent">
+     One single program, the <span class="cmsl-10">sshd</span> is used.
+     <span class="cmsl-10">sshd</span> normally installed by root, is started
+     at boot time. The <span class="cmsl-10">sshd</span> generates regularly
+     new server keys, listening on port 22 (the <span class=
+     "cmsl-10">ssh</span> port) for incoming connections and handles the
+     <span class="cmsl-10">ssh</span>-protocol due to his configuration in the
+     <span class="cmtt-10">sshd</span><span class="cmtt-10">_config</span>
+     file.
+    </p>
+   </li>
+   <li class="itemize">Client Part
+    <p class="noindent">
+     The client part exports <span class="cmsl-10">ssh</span>, slogin and scp,
+     which are build to replace rsh rlogin and rcp. There are additional
+     parameters to the old ’r’-commands, see the man pages. The most useful
+     option is -v, the verbose mode. Using this option, you can follow the
+     protocol and get information about wrong configurations.
+    </p>
+   </li>
+   <li class="itemize">User key management
+    <p class="noindent">
+     Three commands for user key management are available:
+    </p>
+    <ul class="itemize2">
+     <li class="itemize">
+      <span class="cmsl-10">ssh-keygen</span>
+      <p class="noindent">
+       generates a RSA key
+      </p>
+     </li>
+     <li class="itemize">
+      <span class="cmsl-10">ssh-agent</span>
+      <p class="noindent">
+       holds user keys in memory
+      </p>
+     </li>
+     <li class="itemize">
+      <span class="cmsl-10">ssh-add</span>
+      <p class="noindent">
+       adds the private part of the users key to the <span class=
+       "cmsl-10">ssh-agent</span>.
+      </p>
+     </li>
+    </ul>
+   </li>
+  </ul>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">2.2</span> <a id="x1-90002.2" name=
+   "x1-90002.2"></a>Features <span class="cmsl-10">ssh</span>
+  </h4>
+  <ul class="itemize1">
+   <li class="itemize">Strong host authentication. Using public key rings of
+   trusted (known) hosts the client is able to verify the server. Host keys are
+   typically 1024 bits.
+   </li>
+   <li class="itemize">Encryption of the whole communication. Using
+    <span class="cmsl-10">ssh</span> the prompt for your password comes
+    encrypted over the network, your answer is encrypted, too. Key exchange is
+    done with RSA, the session is encrypted with a cipher, typically IDEA.
+   </li>
+   <li class="itemize">X11 connection forwarding using fake proxies and
+   cookies. $DISPLAY is automatically set on the server, forwarding any X11
+   connections over the secure channel.
+   </li>
+   <li class="itemize">Tunneling (redirect arbitrary TCP/IP connections
+   bi-directional over the encrypted channel) useful for rdist or backup via
+   network
+   </li>
+   <li class="itemize">User authentication using user RSA keys and/or standard
+   authentication methods (.rhosts, passwd). User RSA keys should be at least
+   1024 bits, and are stored in the users private area.
+   </li>
+   <li class="itemize">Server key regeneration. The server regenerates its RSA
+   key (recommended 768 bits) automatically and never saves it in a file.
+   </li>
+   <li class="itemize">Authentication agents. They can hold the users RSA keys,
+   there is no need to store the keys anywhere else. All connections will be
+   forwarded to the authenication agent.
+   </li>
+   <li class="itemize">rsh fallback. <span class="cmsl-10">ssh</span> replaces
+   the ’r’-commands, trying to open every connection via the <span class=
+   "cmsl-10">ssh</span> port. If the server does not support <span class=
+   "cmsl-10">ssh</span>, the old commands are used. A warning is displayed and
+   the connection is continued insecure.
+   </li>
+   <li class="itemize">Compression. All data, including forwarded X11 and
+   TCP/IP tunnels, optionally can be compressed.
+   </li>
+   <li class="itemize">Customizable. The client has customizable configuration
+   files, system-wide and per user. <span class="cmsl-10">ssh</span> can be
+   installed without root access. The server has to use a port number greater
+   1024.
+   </li>
+  </ul>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">3</span> <a id="x1-100003" name=
+   "x1-100003"></a>Cryptophical background
+  </h3>
+  <p class="noindent">
+   Before discussing the <span class="cmsl-10">ssh</span>’s protocol in detail,
+   a number of cryptographic concepts has to be explained, because knowledge of
+   the fundamental cryptography is essential for understanding how the
+   <span class="cmsl-10">ssh</span> works and why it is secure against most
+   attacks known today.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.1</span> <a id="x1-110003.1" name=
+   "x1-110003.1"></a>Conventional encryption
+  </h4>
+  <p class="noindent">
+   <span class="cmsl-10">Conventional encryption</span> is almost as old as
+   mankind itself. The idea is that a text is scrambled and unscrambled, using
+   a certain algorithm and a specific key, for example, as password. The
+   password modifies the way the characters or blocks of characters are
+   substituted, rotated or whatever method the algorithm uses.
+  </p>
+  <p class="indent">
+   Encryption and decryption have to be done with the same key, or the original
+   message will not be recovered. Conventional encryption is very strong and
+   algorithms like Triple DES or IDEA can not be broken today. The disadvantage
+   is, though, that the sender and recipient have to agree on a key before they
+   can communicate securely. Hence, they need a secure channel to exchange the
+   key, because the key can obviously not be sent over a channel where
+   attackers might be listening.
+  </p>
+  <p class="indent">
+   For the sake of accuracy, we will describe the process as a mathematical
+   function: Given an algorithm <span class="cmmi-10">f</span>, a message
+   <span class="cmmi-10">m</span> and a key <span class="cmmi-10">k</span>, an
+   enciphered message is computed as follows:
+  </p>
+  <p class="indent"></p>
+  <center class="math-display">
+   <img src="tex4iki1x.png" alt=" ′ f(m,k) = m . " class="math-display" />
+  </center>
+  <p class="indent">
+   The original message can be recovered by computing
+  </p>
+  <p class="indent"></p>
+  <center class="math-display">
+   <img src="tex4iki2x.png" alt=" ′ f(m ,k) = m. " class="math-display" />
+  </center>
+  <p class="indent">
+   Examples for conventional, or <span class="cmsl-10">symmetric encryption
+   algorithms</span>, that are commonly regarded as secure, are the Digital
+   Encryption Standards (DES) or the International Data Encryption Algorithm
+   (IDEA).
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.2</span> <a id="x1-120003.2" name=
+   "x1-120003.2"></a>Public key encryption
+  </h4>
+  <p class="noindent">
+   <span class="cmsl-10">Public key encryption</span>, also called <span class=
+   "cmsl-10">asymmetric encryption</span> has been discovered in 1976 by Martin
+   Hellman and Whitfield Diffie, and independently by Ralph Merkle. Public key
+   encryption uses not one, but two keys to perform encryption and decryption.
+  </p>
+  <p class="indent">
+   The whole thing works as follows: Each side of the encrypted communications
+   generates a key pair. These two keys are related to each other in a certain
+   mathematical way, which varies, depending on the algorithm deployed. The
+   idea is, that one key decrypts what the other key has encrypted before and
+   vice versa, as shown in figure&nbsp;<a href="#x1-120012">2 </a>.
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-120012" name="x1-120012"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki3x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="169.79327pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;2:</span> <span class="content">Public Key
+     Encryption Principle</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   Now you label one of the keys <span class="cmsl-10">public key</span> and
+   the other one <span class="cmsl-10">secret key</span>. The public key can be
+   distributed openly. You can upload it to a keyserver, publish it in a
+   newspaper or use any other means that deem appropriate. Now let us assume
+   that Alice wants to send a private message to Bob, which should be
+   encrypted.
+  </p>
+  <p class="indent">
+   So what she does is, she gets a copy of Bob’s public key and uses it to
+   encrypt the text (figure&nbsp;<a href="#x1-120023">3</a>).
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-120023" name="x1-120023"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki4x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="134.49597pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;3:</span> <span class="content">Alice
+     encrypts a message for Bob</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   Then Alice sends the encrypted message to Bob. Bob uses his private key to
+   decrypt the message (figure&nbsp;<a href="#x1-120034">4 </a>). Please note
+   that Bob does not need Alice’s public to read the message, his secret key is
+   sufficient. He will need Alice’s public key, though, in case he wants to
+   send her an encrypted reply.
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-120034" name="x1-120034"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki5x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="134.49597pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;4:</span> <span class="content">Bob decrypts
+     Alice’s message</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   What is especially useful about this scheme is, that there’s is no need to
+   exchange any key or password over a secure channel. Any attacker is helpless
+   unless he is able to obtain the secret key of the receiver somehow – what
+   should be avoided. Hence the name “secret” key.
+  </p>
+  <p class="indent">
+   For the mathematically oriented reader, here is the process described as an
+   encryption function: If the two keys are called <span class=
+   "cmmi-10">a</span> and <span class="cmmi-10">b</span>, then encryption is
+   performed by calculating
+  </p>
+  <p class="indent"></p>
+  <center class="math-display">
+   <img src="tex4iki6x.png" alt="f(m,a) = m′, " class="math-display" />
+  </center>
+  <p class="noindent">
+   and decryption is done by calculating
+  </p>
+  <p class="indent"></p>
+  <center class="math-display">
+   <img src="tex4iki7x.png" alt="f(m ′,b) = m. " class="math-display" />
+  </center>
+  <p class="indent">
+   This process works also vice versa:
+  </p>
+  <p class="indent"></p>
+  <center class="math-display">
+   <img src="tex4iki8x.png" alt="f(m, b) = m′ " class="math-display" />
+  </center>
+  <center class="math-display">
+   <img src="tex4iki9x.png" alt=" ′ f(m ,a) = m. " class="math-display" />
+  </center>
+  <p class="indent">
+   A well known algorithm for public key encryption is RSA, which is named
+   after its three inventors: Ron Rivest, Adi Shamir and Leonard Adleman. RSA
+   uses primes to archive the public key effect and works as follows:
+  </p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-12005x1">Choose two primes <span class=
+   "cmmi-10">p</span> and <span class="cmmi-10">q</span>. In todays real life
+   applications, these primes should be at least 512 bit long.
+   </li>
+   <li class="enumerate" id="x1-12007x2">Calculate <span class=
+   "cmmi-10">N</span> = <span class="cmmi-10">pq</span>. This value
+    <span class="cmmi-10">N</span> is called the modulus of RSA. When both
+    <span class="cmmi-10">p</span> and <span class="cmmi-10">q</span> are 512
+    bits long, <span class="cmmi-10">N</span> will be 1024 bit long. These 1024
+    bits are commonly referred to as the <span class="cmsl-10">key
+    length</span> or modulus length.
+   </li>
+   <li class="enumerate" id="x1-12009x3">Calculate <span class=
+   "cmmi-10">m</span> = (<span class="cmmi-10">p</span> <span class=
+   "cmsy-10">-</span> 1)(<span class="cmmi-10">q</span> <span class=
+   "cmsy-10">-</span> 1).
+   </li>
+   <li class="enumerate" id="x1-12011x4">Choose your encryptor <span class=
+   "cmmi-10">E</span>. Usually <span class="cmmi-10">E</span> has the value
+   2<sup><span class="cmr-7">16</span></sup> + 1, but RSA will work with any
+   <span class="cmmi-10">E</span> you will choose.
+   </li>
+   <li class="enumerate" id="x1-12013x5">Now you have to find a number
+   <span class="cmmi-10">d</span> which is relatively prime to <span class=
+   "cmmi-10">E</span> and <span class="cmmi-10">m</span>, what means that it
+   fulfills this equation: <span class="cmmi-10">Ed</span>mod<span class=
+   "cmmi-10">m</span> = 1.
+    <p class="noindent">
+     With a chosen <span class="cmmi-10">E</span>, you can calculate
+     <span class="cmmi-10">d</span> using the extended Euclidean algorithm,
+     which will not be described here but can be found in the mathematical
+     literature.
+    </p>
+   </li>
+   <li class="enumerate" id="x1-12015x6">Now your public key consists of
+   <span class="cmmi-10">E</span> and <span class="cmmi-10">N</span>, while
+   your secret key consists of <span class="cmmi-10">d</span> and <span class=
+   "cmmi-10">N</span>.
+   </li>
+  </ol>
+  <p class="indent">
+   Once you have your key generated, you can encrypt a message with someone’s
+   public key as follows: <span class="cmmi-10">m</span><span class=
+   "cmsy-10">′</span> = <span class="cmmi-10">m</span><sup><span class=
+   "cmmi-7">E</span></sup> mod<span class="cmmi-10">N</span>. <span class=
+   "cmmi-10">m</span> can be any numerical representation of the message you
+   want to encrypt. For encrypting texts, the ASCII code is well suited for
+   this purpose.
+  </p>
+  <p class="indent">
+   The recipient of the encrypted message <span class=
+   "cmmi-10">m</span><span class="cmsy-10">′</span> can now recover the plain
+   text by calculating: <span class="cmmi-10">m</span> = <span class=
+   "cmmi-10">m</span><span class="cmsy-10">′</span><sup><span class=
+   "cmmi-7">d</span></sup> mod<span class="cmmi-10">N</span>.
+  </p>
+  <p class="indent">
+   Encryption and decryption work in both ways. What is encrypted with
+   <span class="cmmi-10">E</span> will be decrypted with <span class=
+   "cmmi-10">d</span> and vice versa. It is just a convention that the
+   encryptor is <span class="cmmi-10">E</span>.
+  </p>
+  <p class="indent">
+   The big advantage of this encryption scheme is, that you can openly
+   distribute your public key <span class="cmmi-10">E</span> and <span class=
+   "cmmi-10">N</span>. You could upload these two numbers to a public key
+   server and everybody could obtain them and use the key to encrypt a message.
+   Only the person who knows <span class="cmmi-10">d</span> is able to recover
+   the plain text. Even though you’re distributing your key through insecure
+   channels, the encrypted message for you is secure as long as nobody is able
+   to steal your secret key <span class="cmmi-10">d</span>.
+  </p>
+  <p class="indent">
+   Obviously, this system can be attacked quite easily. An attacker knows
+   <span class="cmmi-10">E</span> and <span class="cmmi-10">N</span>, so all he
+   has to do is to factorize <span class="cmmi-10">N</span> for <span class=
+   "cmmi-10">p</span> and <span class="cmmi-10">q</span>. Then he can calculate
+   <span class="cmmi-10">m</span>, quickly find your <span class=
+   "cmmi-10">d</span> and read your encrypted mail.
+  </p>
+  <p class="indent">
+   The problem is just, that no algorithm to factor <span class=
+   "cmmi-10">N</span> efficiently is known today. Generating the large prime
+   numbers <span class="cmmi-10">p</span> and <span class="cmmi-10">q</span> is
+   very easy, calculating with them is something every personal computer is
+   capable of. But going the other way of finding a certain pair of
+   <span class="cmmi-10">p</span> and <span class="cmmi-10">q</span> when only
+   their product is known, is virtually impossible.
+  </p>
+  <p class="indent">
+   A modern PC can do all required calculations to generate a 2048 bit key in
+   very short time. But factoring this 2048 bit number is way beyond the scope
+   of what can be done. Not only would the calculations require dozens of
+   centuries, but memory is also an important factor. Using the most efficient
+   number sieve known today, the factoring would result in a matrix with
+   10<sup><span class="cmr-7">150</span></sup> elements. Unfortunately, the
+   Universe features only approximately 10<sup><span class=
+   "cmr-7">100</span></sup> atoms! Even if we could store a multi-digit number
+   in a single atom, the calculation could not be done.
+  </p>
+  <p class="indent">
+   Cryptoanalysts have proposed numerous ways to crack RSA, including quantum
+   computers and biological calculation machines, but none of these attacks
+   looks likely within the next hundred years or beyond.
+  </p>
+  <p class="indent">
+   RSA, and public key encryption in general, does have a few disadvantages,
+   though. First of all, the required calculations are very slow. Even using
+   short cuts like the Chinese Remainder Theorem, Smith’s fast modulus and
+   other algorithms, a Pentium 120 requires several seconds to en-/decrypt a
+   message with a 1024 bit RSA key.
+  </p>
+  <p class="indent">
+   One trick to use RSA in reasonable time, though, is a hybrid system. That
+   means that the actual message is encrypted using a conventional algorithm
+   such as DES or IDEA. The key for the conventional algorithm is created
+   randomly and is called a <span class="cmsl-10">session key</span>. Then this
+   session key is encrypted with RSA and appended to the message. The advantage
+   is that a session key is only, say, 128 bit long, depending on the used
+   algorithm, while the actual message may be several kilobyte long.
+  </p>
+  <p class="indent">
+   Another disadvantage is that all RSA encrypted messages will fall once an
+   efficient factoring algorithm is discovered. Rumor has it that the National
+   Security Agency (NSA) is already able to crack RSA, but no evidence was ever
+   shown. However, whether the NSA can factor large numbers or not, it is
+   absolutely possible that such an algorithm will be discovered in the very
+   near future.
+  </p>
+  <p class="indent">
+   Last but not least, it is not proven yet, that factoring <span class=
+   "cmmi-10">N</span> is the only way to crack RSA. There might well be a
+   different attack, which is able to calculate <span class="cmmi-10">d</span>
+   without having to factor <span class="cmmi-10">N</span>. It just has not
+   been discovered yet.
+  </p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">3.3</span> <a id="x1-130003.3" name=
+   "x1-130003.3"></a>Digital Signatures
+  </h4>
+  <p class="noindent">
+   Next to secrecy, authenticy is one of the prime goals of cryptography. A
+   <span class="cmsl-10">digital</span> <span class="cmsl-10">signature</span>
+   is a proof that a certain message was really written by Alice, for example.
+   Furthermore, signatures usually guarantee that a message has not been
+   tampered with. Using one-way hash functions and public key encryption, a
+   signature can, for example, be issued as follows:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-13002x1">Calculate a certain one-way function
+   over the to-be-signed message (checksum).
+   </li>
+   <li class="enumerate" id="x1-13004x2">Encrypt this checksum using your
+   secret key.
+   </li>
+   <li class="enumerate" id="x1-13006x3">Append the encrypted checksum to the
+   document.
+   </li>
+  </ol>
+  <p class="indent">
+   Now, anybody who knows the appropriate public key, is able to verify who
+   wrote the document. Using the public key of, say, Alice, Bob is able to
+   recover the checksum. Then he calculates the checksum, over the message he
+   received and compares it with the checksum that was appended to the message.
+   If the two checksums are identical, he knows for sure that the owner of the
+   secret key, matching the public key he used, has created this signature.
+  </p>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">4</span> <a id="x1-140004" name=
+   "x1-140004"></a>Technical issues of the <span class="cmsl-10">ssh</span>
+  </h3>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">4.1</span> <a id="x1-150004.1" name=
+   "x1-150004.1"></a>The <span class="cmsl-10">ssh</span> protocol
+  </h4>
+  <p class="noindent">
+   Establishing a host to host connection with <span class="cmsl-10">ssh</span>
+   step by step:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-15002x1">The client, who wants to establish a
+   connetction, connects to the destination host, port&nbsp;22.
+   </li>
+   <li class="enumerate" id="x1-15004x2">The server checks whether the connect
+   comes from an authorized address and, if it does, responds with its version
+   identification string.
+   </li>
+   <li class="enumerate" id="x1-15006x3">The client parses the string and sends
+   his own version identification back.
+   </li>
+   <li class="enumerate" id="x1-15008x4">If either side fails to understand or
+   to support the peer’s version, the connection is closed.
+   </li>
+   <li class="enumerate" id="x1-15010x5">The server now sends its RSA host- and
+   server-key to the client. The RSA host key is generated once, when the
+   <span class="cmsl-10">ssh</span> is installed and shouldn’t change. This key
+   is 1024&nbsp;bit large. The server-key is a 786&nbsp;bit RSA key, which is
+   generated during after startup of the <span class="cmsl-10">sshd</span>.
+   This key is never stored on disk. The <span class="cmsl-10">sshd</span> will
+   regularly erase it and generate a new server-key. Also included in the
+   message are 64&nbsp;bit of random data, a “cookie”, which the client must
+   include in its reply to the server.
+   </li>
+   <li class="enumerate" id="x1-15012x6">The client creates a random session
+   key for the chosen conventional cipher, usually IDEA. This session key is
+   encrypted with both RSA keys of the server and the result is sent back to
+   the server.
+   </li>
+   <li class="enumerate" id="x1-15014x7">Both sides switch to conventional
+   encryption, using the exchanged session key.
+   </li>
+   <li class="enumerate" id="x1-15016x8">The client authenticiates itself using
+   the followings methods in the order we list them here:
+    <ol class="enumerate2">
+     <li class="enumerate" id="x1-15018x1">
+      <span class="cmtt-10">.rhosts</span> or <span class=
+      "cmtt-10">/etc/hosts.equiv</span>
+     </li>
+     <li class="enumerate" id="x1-15020x2">RSA based host authenticiation
+     </li>
+     <li class="enumerate" id="x1-15022x3">RSA authenticiation
+     </li>
+     <li class="enumerate" id="x1-15024x4">password authenticiation
+     </li>
+    </ol>
+   </li>
+   <li class="enumerate" id="x1-15026x9">If authenticiation is successful, the
+   client makes a number of requests to prepare the session. This typically
+   includes allocating a pseudo terminal, X11 forwarding, TCP forwarding
+   (tunneling), authenticiation agent forwarding and executing a shell or a
+   command.
+   </li>
+   <li class="enumerate" id="x1-15028x10">When a shell or a command is
+   executed, the connection enters interactive session mode. In this mode, data
+   is passed in both directions and usually displayed on the users terminal.
+   The session ends when the server sends the exit status of the executed
+   program to the client.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">4.2</span> <a id="x1-160004.2" name=
+   "x1-160004.2"></a>The <span class="cmsl-10">ssh</span> protects in many ways
+  </h4>
+  <p class="noindent">
+   Snooping or eavesdropping is ineffective because the whole session is
+   encrypted. The server key changes regularly, session keys are unique. Even
+   if someone records a whole session and later tries to “replay” it, the
+   attack will fail. No-one can reproduce the server-key or the cookie. To get
+   the information, the RSA key has to be broken.
+  </p>
+  <p class="indent">
+   DNS-spoofing and man-in-the-middle attacks are prevented by using RSA host
+   keys and keyrings of trusted hosts. <span class="cmsl-10">ssh</span> never
+   trusts the network, with RSA authentication nothing but the own private key
+   is trusted.
+  </p>
+  <p class="indent">
+   The security of X11 Sessions is increased. Using X11 forwarding, your
+   session is encrypted. An other point of security using X11 is the use of
+   displays or Xterminals. Most of us did this wrong before. If the
+   $DISPLAY-variable is incorrect, the required application opens anywhere, but
+   not on the monitor the command was started from. Often the console monitor
+   at the server shows such mistakes. A spy would use this feature to snoop the
+   X-session.
+  </p>
+  <p class="indent">
+   X11 forwarding establishes a fake X-server on the server, which handles the
+   connection between <span class="cmsl-10">ssh</span> and <span class=
+   "cmsl-10">sshd</span>. If you open an <span class="cmsl-10">xterm</span> on
+   a remote server, <span class="cmsl-10">sshd</span> forks a fake X-server on
+   the remote server, set the $DISPLAY-variable to, say ”petium:1”.
+   <span class="cmsl-10">xterm</span> sends all X information to this server on
+   its own host. The fake <span class="cmsl-10">sshd</span>-X-Server encrypts
+   the information and sends it to the <span class="cmsl-10">ssh</span> client
+   on the local machine. The <span class="cmsl-10">ssh</span> client encrypts
+   the information and sends it to the real X-Server, which displays it.
+  </p>
+  <p class="indent">
+   The real X-Server on the local machine is communicating to the <span class=
+   "cmsl-10">ssh</span> client on the local machine and not the <span class=
+   "cmsl-10">xterm</span> on “petium”, in much the same ways as the
+   <span class="cmsl-10">xterm</span> on “petium” is communicating with the
+   fake <span class="cmsl-10">sshd</span>-X-Server on “petium”.
+  </p>
+  <p class="indent">
+   Because the old authentication methods are supported and can be combined
+   with new, more secure methods, user can work with <span class=
+   "cmsl-10">ssh</span> without conversion. There is no need to change
+   ”point-files” or scripts.
+  </p>
+  <p class="indent">
+   <span class="cmsl-10">ssh</span> does not protect against inadmissible root
+   access on server or client host. If someone has access to the private RSA
+   keys, authentication becomes insecure.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">4.3</span> <a id="x1-170004.3" name=
+   "x1-170004.3"></a>Keymanagement
+  </h4>
+  <p class="noindent">
+   The RSA keys of trusted hosts (“host keys”) are stored in the file
+   <span class="cmtt-10">/etc/ssh</span><span class=
+   "cmtt-10">_known</span><span class="cmtt-10">_hosts</span> on each server-
+   and client-machine. The security of the <span class=
+   "cmtt-10">ssh</span><span class="cmtt-10">_known</span><span class=
+   "cmtt-10">_hosts</span> file is very important to the security of the whole
+   <span class="cmsl-10">ssh</span>. This file should be maintained carefully.
+  </p>
+  <p class="noindent">
+   Only public key should be inserted, that have been exchanged over a secure
+   channel, for example via <span class="cmsl-10">PGP</span>-encrypted e-mail.
+   This is a job for the network administrator. He also distributes the updated
+   pubkeyring onto the machines runnung <span class="cmsl-10">sshd</span>.
+   Clients can get the actual version of the keyring from one of the server.
+   The user can build his own ring of trusted hosts in his home directory.
+  </p>
+  <p class="indent">
+   Besides the RSA keys to authenticiate hosts, the <span class=
+   "cmsl-10">ssh</span> also supports RSA key pairs for users of a machine,
+   which are used to authenticiate the user. A user creates a key pair of his
+   own by executing <span class="cmsl-10">ssh-keygen</span>. The generated keys
+   are stored in his home directory. To protect the secret part against access
+   by the super-user, the file is stored in encrypted fasion, using a password
+   as chosen by the user. The user will be prompted for this password, every
+   time the <span class="cmsl-10">ssh</span> needs to access his private key.
+  </p>
+  <p class="indent">
+   Authenticiation using the user RSA keys works as follows:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-17002x1">The client tells the server that he
+   wants to log into the remote machine as user “joe”.
+   </li>
+   <li class="enumerate" id="x1-17004x2">The server checks whether a user of
+   this name exists and whether a <span class="cmtt-10">.rhosts</span> or
+   <span class="cmtt-10">/etc/hosts.equiv</span> file permits login from the
+   client’s machine.
+   </li>
+   <li class="enumerate" id="x1-17006x3">If not, the server checks whether a
+   public key for the user on the client’s machine is found in <span class=
+   "cmtt-10">$HOME/.ssh/authorized</span><span class="cmtt-10">_keys</span>. If
+   a key exists, the server wil create a random series of byte, called a
+   challenge, and encrypt it with this key. The encrypted challenge is sent to
+   the client. The client has to decrypt the challenge and return the correct
+   MD5 checksum of the random data, to prove that he owns the matching secret
+   key. Of this is performed successfully, the authenticiation is complete.
+   </li>
+   <li class="enumerate" id="x1-17008x4">If no public key for the user at the
+   client’s host is known, the normal password mechanism will be used to
+   authenticiate the user.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">5</span> <a id="x1-180005" name=
+   "x1-180005"></a>Practical issues of the <span class="cmsl-10">ssh</span>
+  </h3>
+  <p class="noindent">
+   The third part of this paper deals with the practical issues of using the
+   Secure Shell and is meant as a guide to the <span class="cmsl-10">ssh</span>
+   for the Unix user. The authors differentiate between three levels of usage:
+   The transparant or <span class="cmsl-10">ssh</span>-unaware usage, the
+   <span class="cmsl-10">ssh</span>-aware usage and the sophisticated
+   <span class="cmsl-10">ssh</span> usage, which includes the more complex
+   features such as tunnelling and the <span class="cmsl-10">ssh-agent</span>.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.1</span> <a id="x1-190005.1" name=
+   "x1-190005.1"></a>Compilation and Installation
+  </h4>
+  <p class="noindent">
+   After obtaining a copy of the latest <span class="cmsl-10">ssh</span>
+   version, the system administrator will have to compile and install the
+   binaries. This process is explained in great detail in the included
+   <span class="cmtt-10">README</span> and <span class="cmtt-10">INSTALL</span>
+   files and won’t be covered here. The authors would like to give a few
+   recommendations, though, what points of the this process deserve some
+   attention.
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-19002x1">You should add support for the
+   <span class="cmtt-10">libwrap.a</span> library, which comes with the TCP
+   wrapper <span class="cmsl-10">tcpd</span>. This will enable you to block
+   certain addresses, domains or other entinities from accessing the
+   <span class="cmsl-10">ssh</span> at your site at all. The technical details
+   are descibed in the <span class="cmtt-10">INSTALL</span> document in the
+   paragraph “Libwrap and identd”.
+   </li>
+   <li class="enumerate" id="x1-19004x2">The <span class="cmsl-10">ssh</span>
+   should be installed as a drop-in replacement for the ordinary <span class=
+   "cmsl-10">rsh</span> and <span class="cmsl-10">rlogin</span> programs. The
+   technical details are descibed in the <span class="cmtt-10">INSTALL</span>
+   document in the paragraph “Replacing rlogin and rsh”.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.2</span> <a id="x1-200005.2" name=
+   "x1-200005.2"></a>Transparent <span class="cmsl-10">ssh</span> Usage
+  </h4>
+  <p class="noindent">
+   If, and only if, the system administrator has installed the <span class=
+   "cmsl-10">ssh</span> binaries as a drop-in replacement for the ordinary
+   <span class="cmsl-10">rsh</span> and <span class="cmsl-10">rlogin</span>
+   programs, all users will benefit from <span class="cmsl-10">ssh</span>’s
+   security features even if they’re unaware that the <span class=
+   "cmsl-10">ssh</span> is installed at all.
+  </p>
+  <p class="indent">
+   When installing the <span class="cmsl-10">ssh</span> to replace the original
+   commands, the <span class="cmsl-10">ssh</span> will act the same way the old
+   remote-commands did. <span class="cmtt-10">.rhosts</span> or <span class=
+   "cmtt-10">/etc/hosts.equiv</span> authenticiation will be used to determine,
+   who is allowed to access a machine and who is not. If an access attempt is
+   not authenticiated through the “rhosts”-meachnism, the user will be prompted
+   for his login password.
+  </p>
+  <p class="indent">
+   Even though the user is not aware of the new features, he gains a lot of
+   security. The <span class="cmsl-10">ssh</span>-version of <span class=
+   "cmsl-10">rlogin</span> will establish an encrypted session to the target
+   machine and protect all transferred data. It will also tunnel the X11
+   traffic and set the $DISPLAY variable if X11-support has been compiled in.
+  </p>
+  <p class="indent">
+   Thanks to the RSA host authenticiation system deployed by the <span class=
+   "cmsl-10">ssh</span>, it is not possible to fake domain name server entries
+   and to take advantage of the rhosts-mechanism anymore, because a host is not
+   recognized via his DNS name, but through his host key.
+  </p>
+  <p class="indent">
+   The man-in-the-middle attack has also become inpossible, because the client
+   does of course check the identity of the remote host using his host key,
+   too. To archieve maximum security here, the client should be configured to
+   use “StrictHostKeyChecking”. Setting this option to “yes” tells the client
+   not to accept any new or modified hostkey as real. If a new host has been
+   added to the network, or a host key has been changed, the administrator has
+   to install the new key manually. While this is a bit inconvenient in a fast
+   moving network, it ensure that nobody intercepts your IP packets and claims
+   to be the machine you tried to access.
+  </p>
+  <p class="indent">
+   The only danger left is the user authenticiation during the login process.
+   An attack is feasible in the following Scenario: Bob is a legitimate user on
+   the machines “peti.gmd.de” and “petium.rhein.de”. His username is “bob”.
+   Alice owns a legitimate account as “alice” on “peti.gmd.de”, but does not
+   have access to “petium.rhein.de”.
+  </p>
+  <p class="indent">
+   Bob regularly logs into “petium.rhein.de” and thus has the following entry
+   in his local <span class="cmtt-10">.rhosts</span> file:
+  </p>
+  <div class="verbatim" id="verbatim-2">
+   peti.gmd.de&nbsp;bob
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   If Alice is able to fool the login process on “petium.rhein.de” into
+   thinking that her username on “peti.gmd.de” is “bob” instead of “alice”, she
+   is able to log into Bob’s account on “petium.rhein.de”. This can, for
+   example, be archieved with a modified <span class="cmsl-10">rlogin</span>
+   program or by tempering with the <span class="cmsl-10">identd</span> daemon
+   on “peti.gmd.de”.
+  </p>
+  <p class="indent">
+   To make matters worse, once she managed to log into “petium.rhein.de” as
+   “bob”, she can log back into “peti.gmd.de” as “bob”, too, if Bob has a
+   similar <span class="cmtt-10">.rhosts</span> file on “peti.gmd.de”, too.
+  </p>
+  <p class="indent">
+   This attack is admittedly not easy to perform because modifying <span class=
+   "cmtt-10">identd</span> or <span class="cmtt-10">rlogin</span> will require
+   super-user priviledes.
+  </p>
+  <p class="indent">
+   Another weakness remains: Even when installing the <span class=
+   "cmsl-10">ssh</span> as drop-in replacement, the <span class=
+   "cmsl-10">rcp</span> command will not be replaced. If a user wants to copy a
+   file from one host to another securely, he has to use <span class=
+   "cmsl-10">scp</span> instead. If the user is not aware of the Secure Shell,
+   though, he will use <span class="cmsl-10">rcp</span> instead and thus
+   transfer the file unencryptedly.
+  </p>
+  <p class="indent">
+   As a conclusion we will draw, that this level of protection by the
+   <span class="cmsl-10">ssh</span> is pretty satisfactory. The daily
+   procedures, cron jobs and script, which rely on the BSD-style remote
+   commands will continue to function as usual, but offer much more protection
+   against eavesdropping or other attacks. Except for copying a file to a
+   remote host, all other transfers are encrypted and no password can be
+   eavesdropped.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.3</span> <a id="x1-210005.3" name=
+   "x1-210005.3"></a><span class="cmsl-10">ssh</span>-aware Usage
+  </h4>
+  <p class="noindent">
+   For explicit using <span class="cmsl-10">ssh</span> exports the following
+   commands:
+  </p>
+  <p class="indent">
+   <span class="cmsl-10">ssh</span> is the replacement for rsh and rlogin,
+   slogin is linked on <span class="cmsl-10">ssh</span>. One can always use
+   <span class="cmsl-10">ssh</span> instead of rsh or rlogin, even if the other
+   side runs no <span class="cmsl-10">sshd</span>. In this case the fallback to
+   rsh is used. <span class="cmsl-10">ssh</span> has couple of optional
+   parameters, refer to the manpages.
+  </p>
+  <p class="indent">
+   Some examples:
+  </p>
+  <div class="verbatim" id="verbatim-3">
+   $&nbsp;ssh&nbsp;remotehost&nbsp;&nbsp;&nbsp;(--&gt;&nbsp;rsh&nbsp;remotehost,&nbsp;rlogin&nbsp;remotehost)
+   &nbsp;<br />
+   $&nbsp;ssh&nbsp;remotehost&nbsp;command&nbsp;&nbsp;(--&gt;&nbsp;rsh&nbsp;remotehost&nbsp;command)
+   &nbsp;<br />
+   $&nbsp;xterm&nbsp;-e&nbsp;ssh&nbsp;remotehost&nbsp;&amp;
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   scp is the replacement for rcp. It uses <span class="cmsl-10">ssh</span> for
+   data transfer and will ask the user for authenication (password or
+   passphrase) if needed. The data can be compressed with gzip. scp has to be
+   called explicitly, it does not replace rcp.
+  </p>
+  <p class="indent">
+   To use your own RSA keys for authentication, you have to generate your RSA
+   key pair with <span class="cmsl-10">ssh-keygen</span>. It will ask you for a
+   passphrase. This passphrase is used to encrypt your secret RSA key via a
+   conventional cipher, usually IDEA, before it is stored in your local home
+   directory as <span class="cmtt-10">$HOME/.ssh/identity</span>. It it
+   strongly recommended to use passphrases for RSA keys. If the home directory
+   is exported via NFS, your secret key would otherwise be readable in the
+   clear. Protecting your private keys against unauthorized access, is the most
+   important thing you have to obey.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">5.4</span> <a id="x1-220005.4" name=
+   "x1-220005.4"></a>Sophisticated <span class="cmsl-10">ssh</span> Usage
+  </h4>
+  <p class="noindent">
+   The <span class="cmsl-10">ssh</span> has numerous features and capabilities
+   that may prove useful in all kind of network-related work. Some of them
+   offer completely new functionality, some of the features are just meant to
+   increase the security and convenience of using the <span class=
+   "cmsl-10">ssh</span> even more.
+  </p>
+  <p class="noindent"></p>
+  <h5 class="subsubsectionHead">
+   <span class="titlemark">5.4.1</span> <a id="x1-230005.4.1" name=
+   "x1-230005.4.1"></a>The <span class="cmsl-10">ssh-agent</span>
+  </h5>
+  <p class="noindent">
+   The problem with authenticiation via the <span class=
+   "cmtt-10">.rhosts</span> mechanism is, that a hacker might be able to fake
+   his user name on a trusted machine and log into the remote machine as
+   someone else. While this is difficult to accomplish, it is very easy to do
+   for someone who has super-user priviledes.
+  </p>
+  <p class="indent">
+   The <span class="cmsl-10">ssh</span> thus offers a better way to
+   authenticiate the user: The user RSA keys challenge<span class=
+   "footnote-mark"><a href="tex4iki4.html#fn3x0"><sup class=
+   "textsuperscript">3</sup></a></span><a id="x1-23001f3" name=
+   "x1-23001f3"></a>, which has been described in the section about the
+   <span class="cmsl-10">ssh</span>’s protocol. For this scheme to be sure
+   against super-user attacks, though, the secret key has to be stored on the
+   harddisk in encrypted fashion. Hence, the user has to provide a password
+   which decrypts the key, before it can be used.
+  </p>
+  <p class="indent">
+   But many user find entering a password every time the use a remote machine
+   annoying – that is why they used the <span class="cmtt-10">.rhosts</span>
+   mechanism after all. That is why the <span class="cmsl-10">ssh-agent</span>
+   was introduced. The <span class="cmsl-10">ssh-agent</span> is run once,
+   after the user has logged into his local machine, and will then run until
+   the user logs off. This agent is a background daemon, which can maintain the
+   user’s secret keys in memory — unencrypted. The process works as follows:
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-230025" name="x1-230025"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki10x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="264.75986pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;5:</span> <span class="content">The
+     <span class="cmsl-10">ssh-agent</span>.</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   The <span class="cmsl-10">ssh-agent</span> is started. It install itself in
+   the background and then executes a command as specified on the command line.
+   Usually this is a shell or an X server. This command, and all processes it
+   may create are “children” of the agent. If one uses the following call, for
+   example:
+  </p>
+  <div class="verbatim" id="verbatim-4">
+   $&nbsp;ssh-agent&nbsp;/bin/csh
+  </div>
+  <p class="nopar"></p>
+  <p class="noindent">
+   the <span class="cmsl-10">csh</span> would be invoked as a child of the
+   <span class="cmsl-10">ssh-agent</span>, as would all commands started by the
+   <span class="cmsl-10">csh</span>.
+  </p>
+  <p class="indent">
+   These childen now, can access the <span class="cmsl-10">ssh-agent</span> and
+   ask for a RSA user secret key. If the user would start a remote login
+   session via <span class="cmsl-10">ssh</span> in the <span class=
+   "cmsl-10">csh</span> started in the example above, the <span class=
+   "cmsl-10">ssh</span> will connect to the <span class=
+   "cmsl-10">ssh-agent</span> and query it for the user’s secret key in order
+   to use this key for authenticiation purposes.
+  </p>
+  <p class="indent">
+   All processes that are not invoked as children of the <span class=
+   "cmsl-10">ssh-agent</span> can not query the daemon, hence it is not
+   possible for another user to obtain a copy of the secret key via the
+   <span class="cmsl-10">ssh-agent</span>. Once the daemon is up and running,
+   the user will be able to log into other machines securely, without having to
+   provide any kind of password and without using any <span class=
+   "cmtt-10">.rhosts</span> files on the remote hosts. This is the most
+   comfortable and the most secure way to use the <span class=
+   "cmsl-10">ssh</span>.
+  </p>
+  <p class="indent">
+   One point is still missing in our description, though: How does the
+   <span class="cmsl-10">ssh-agent</span> get the secret key? The key is stored
+   encryptedly on the harddisk, so the daemon can not simply read it.
+  </p>
+  <p class="indent">
+   This is indeed true. The user has to add his secret key manually once. While
+   doing this, he will be prompted for the password to unlock the encrypted
+   file on disk, and from then on the key will be available via the
+   <span class="cmsl-10">ssh-agent</span>. This is done with the <span class=
+   "cmsl-10">ssh-add</span> program, included in the distribution.
+  </p>
+  <p class="indent">
+   Obviously, the timing of starting the <span class="cmsl-10">ssh-agent</span>
+   after login is important, because ideally all started user processes should
+   be children of the daemon, to enable them to access the key if necessary.
+   Integrating the <span class="cmsl-10">ssh-agent</span> into a running system
+   can be tricky and should be done by the system administrator.
+  </p>
+  <p class="indent">
+   We will provide two example, how the <span class="cmsl-10">ssh-agent</span>
+   can be transparently integrated into a system. Machines running the tool
+   <span class="cmsl-10">xdm</span>, can add the startup of <span class=
+   "cmsl-10">ssh-agent</span> to the script <span class=
+   "cmtt-10">/usr/X11R6/lib/X11/xdm/Xsession</span>. This script is called
+   immediately after the login succeeded and starts the X11 environment up:
+  </p>
+  <div class="verbatim" id="verbatim-5">
+   #!/bin/sh &nbsp;<br />
+   &nbsp;<br />
+   startup=$HOME/.xinitrc &nbsp;<br />
+   resources=$HOME/.Xdefaults &nbsp;<br />
+   &nbsp;<br />
+   if&nbsp;[&nbsp;-f&nbsp;"$startup"&nbsp;];&nbsp;then &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;exec&nbsp;/usr/local/bin/ssh-agent&nbsp;"$startup"
+   &nbsp;<br />
+   else &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;-f&nbsp;"$resources"&nbsp;];&nbsp;then
+   &nbsp;<br />
+   xrdb&nbsp;-load&nbsp;"$resources" &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;fi &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;exec&nbsp;/usr/local/bin/ssh-agent&nbsp;xsm
+   &nbsp;<br />
+   fi
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   The call to <span class="cmsl-10">ssh-add</span> should then be placed in
+   the script <span class="cmtt-10">$HOME/.xinitrc</span> by the user. Here is
+   an example, how this script may look:
+  </p>
+  <div class="verbatim" id="verbatim-6">
+   #!&nbsp;/bin/sh &nbsp;<br />
+   &nbsp;<br />
+   ssh-add&nbsp;&lt;/dev/null &nbsp;<br />
+   &nbsp;<br />
+   xrdb&nbsp;-load&nbsp;$HOME/.Xdefaults &nbsp;<br />
+   xterm&nbsp;&amp; &nbsp;<br />
+   fvwm2
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   The user will see the following: <span class="cmsl-10">xdm</span> prompts
+   him for his user name and login password. Immediately after he entered both,
+   a second login window will appear and ask him for the password to unlock his
+   <span class="cmsl-10">ssh</span>-secret-key. From then all, he won’t have to
+   enter the password again, as all processes will be able to query the
+   <span class="cmsl-10">ssh-agent</span> for the key.
+  </p>
+  <p class="indent">
+   Integrating the <span class="cmsl-10">ssh-agent</span> info <span class=
+   "cmsl-10">cde</span> is very similar. Just add the call to the script
+   <span class="cmtt-10">/usr/dt/bin/Xsession</span>. Here’s is an example:
+  </p>
+  <div class="verbatim" id="verbatim-7">
+   # &nbsp;<br />
+   #&nbsp;Session&nbsp;startup&nbsp;clients&nbsp;and&nbsp;args &nbsp;<br />
+   # &nbsp;<br />
+   if&nbsp;[&nbsp;"$SESSIONTYPE"&nbsp;=&nbsp;"altDt"&nbsp;];&nbsp;then
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_session[0]="$SDT_ALT_SESSION" &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_hello[0]="$SDT_ALT_HELLO" &nbsp;<br />
+   else &nbsp;<br />
+   &nbsp;&nbsp;if&nbsp;[&nbsp;-d&nbsp;$HOME/.ssh&nbsp;];&nbsp;then &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_session[0]="/opt/local/bin/ssh-agent&nbsp;$DT_BINPATH/dtsession"
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_hello[0]="$DT_BINPATH/dthello&nbsp;&amp;"
+   &nbsp;<br />
+   &nbsp;&nbsp;else &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_session[0]="$DT_BINPATH/dtsession"
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;dtstart_hello[0]="$DT_BINPATH/dthello&nbsp;&amp;"
+   &nbsp;<br />
+   &nbsp;&nbsp;fi &nbsp;<br />
+   fi
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   The use of <span class="cmsl-10">ssh-agent</span> and RSA authenticiation is
+   highly recommended over the <span class="cmtt-10">.rhosts</span>
+   authenticiation scheme.
+  </p>
+  <h5 class="subsubsectionHead">
+   <span class="titlemark">5.4.2</span> <a id="x1-240005.4.2" name=
+   "x1-240005.4.2"></a>Replacing <span class="cmsl-10">rstart</span>
+  </h5>
+  <p class="noindent">
+   <span class="cmsl-10">rstart</span> is a small utility that comes with X11
+   and can be used to start an X11 application remotely. <span class=
+   "cmsl-10">rstart</span> does pretty much the same as <span class=
+   "cmsl-10">rsh</span>, but is X11-aware. That means, that the display of the
+   remotely started program will appear on the screen you’re working at the
+   moment.
+  </p>
+  <p class="indent">
+   The <span class="cmsl-10">ssh</span> offers two switches, ’-n’ and ’-f’,
+   which can be used to accomplish the same effect in a secure way. The ’-n’
+   option tells the <span class="cmsl-10">ssh</span> client to redirect the
+   standard input stream to <span class="cmtt-10">/dev/null</span>, to enable
+   running the client in the background. Using this switch, one can replace
+   <span class="cmsl-10">rstart</span>:
+  </p>
+  <div class="verbatim" id="verbatim-8">
+   $&nbsp;rstart&nbsp;mogli.gmd.de&nbsp;xlogo&nbsp;&amp; &nbsp;<br />
+   $&nbsp;ssh&nbsp;-n&nbsp;mogli.gmd.de&nbsp;xlogo&nbsp;&amp;
+  </div>
+  <p class="nopar"></p>
+  <p class="noindent">
+   Both commands have the same effect.
+  </p>
+  <p class="indent">
+   The problem one may face using this method, though, is that the client may
+   need the standard input stream to prompt for an authenticiation password.
+   This will cause the process to be stopped by the operating system, because
+   it fails to access the terminal. While <span class="cmsl-10">rstart</span>
+   offers no solution to this problem, the <span class="cmsl-10">ssh</span>
+   features the ’-f’ switch.
+  </p>
+  <p class="indent">
+   When ’-f’ is provided on the command line, the <span class=
+   "cmsl-10">ssh</span> client will go into background after the login has
+   succeeded. The following command line, for example:
+  </p>
+  <div class="verbatim" id="verbatim-9">
+   $&nbsp;ssh&nbsp;-f&nbsp;mogli.gmd.de&nbsp;xlogo
+  </div>
+  <p class="nopar"></p>
+  <p class="noindent">
+   performs the following steps:
+  </p>
+  <p class="indent"></p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-24002x1">Log into the remote machine
+   “mogli.gmd.de”.
+   </li>
+   <li class="enumerate" id="x1-24004x2">If required, prompt the user for the
+   password.
+   </li>
+   <li class="enumerate" id="x1-24006x3">Redirect the standard input stream to
+   <span class="cmtt-10">/dev/null</span>.
+   </li>
+   <li class="enumerate" id="x1-24008x4">Start the program on the remote host
+   and forward the X11 display via an encrypted channel to the local screen.
+   </li>
+   <li class="enumerate" id="x1-24010x5">Lay the <span class=
+   "cmsl-10">ssh</span> process in the background and return to the shell.
+   </li>
+  </ol>
+  <p class="noindent"></p>
+  <h5 class="subsubsectionHead">
+   <span class="titlemark">5.4.3</span> <a id="x1-250005.4.3" name=
+   "x1-250005.4.3"></a>Forwarding and Tunneling Connects
+  </h5>
+  <p class="noindent">
+   Even though logging into remote machines and executing commands remotely is
+   secure now, there still remain numberous widely deployed services that
+   transfer sensible data through the Internet in unsecured fashion, for
+   example the electronic mail service SMTP, electronic mail retrieval with
+   POP3, password authenticiation over HTTP and many more.
+  </p>
+  <p class="indent">
+   Some of these services can be tunneled through a secure <span class=
+   "cmsl-10">ssh</span> connection. The principle is as shown in
+   figure&nbsp;<a href="#x1-250016">6 </a>.
+  </p>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-250016" name="x1-250016"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki11x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="157.68524pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;6:</span> <span class="content">Tunneling
+     insecure connects through the <span class="cmsl-10">ssh</span></span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   We will demonstrate the implementation of this scheme by an example. Let us
+   assume that Users of the GMD regularly have to <span class=
+   "cmsl-10">ftp</span> files from “phoenix.rhein.de”. This machine is
+   connected via Ethernet to the already mentioned “petium.rhein.de”, so
+   connects between “phoenix” and “petium” are assumed to be secure. The same
+   applies to connects within the GMD’s local network, which is protected by a
+   firewall.
+  </p>
+  <p class="indent">
+   The super-user on “peti.gmd.de” now executes the commands<span class=
+   "footnote-mark"><a href="tex4iki5.html#fn4x0"><sup class=
+   "textsuperscript">4</sup></a></span><a id="x1-25002f4" name=
+   "x1-25002f4"></a>:
+  </p>
+  <div class="verbatim" id="verbatim-10">
+   $&nbsp;ssh&nbsp;-a&nbsp;-f&nbsp;-L&nbsp;21:phoenix.rhein.de:21&nbsp;petium.rhein.de&nbsp;xlogo
+   &nbsp;<br />
+   $&nbsp;ssh&nbsp;-a&nbsp;-f&nbsp;-L&nbsp;20:phoenix.rhein.de:20&nbsp;petium.rhein.de&nbsp;xlogo
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   These two commands perform the following actions:
+  </p>
+  <ol class="enumerate1">
+   <li class="enumerate" id="x1-25004x1">
+    <span class="cmsl-10">ssh</span> allocates the local TCP port&nbsp;21,
+    respectively&nbsp;20.
+   </li>
+   <li class="enumerate" id="x1-25006x2">
+    <span class="cmsl-10">ssh</span> logs into “petium.rhein.de”, prompting the
+    user for a password if necessary.
+   </li>
+   <li class="enumerate" id="x1-25008x3">Onces the login suceeded, the
+   <span class="cmsl-10">ssh</span> opens a tunnel to “phoenix.rhein.de”,
+   port&nbsp;21 or port&nbsp;20 respectively.
+   </li>
+   <li class="enumerate" id="x1-25010x4">The program <span class=
+   "cmsl-10">xlogo</span> is started on “petium.rhein.de” and the display will
+   appear on the local screen.
+   </li>
+   <li class="enumerate" id="x1-25012x5">Once the remote command has been
+   executed, the <span class="cmsl-10">ssh</span> will place itself in the
+   background and return to the shell.
+   </li>
+  </ol>
+  <p class="indent"></p>
+  <hr class="figure" />
+  <div class="figure">
+   <a id="x1-250137" name="x1-250137"></a>
+   <div class="center">
+    <p class="noindent"></p>
+    <p class="noindent">
+     <img src="tex4iki12x.png" alt="PIC" class="graphics" width="345.0pt"
+     height="147.29126pt" /> <br />
+    </p>
+    <div class="caption">
+     <span class="id">Figure&nbsp;7:</span> <span class="content">An
+     established <span class="cmsl-10">ssh</span> tunnel</span>
+    </div>
+   </div>
+   <p class="indent"></p>
+  </div>
+  <hr class="endfigure" />
+  <p class="indent">
+   The tunnel is now established. Assuming, a user on the machine
+   “mogli.gmd.de” would connect to “peti.gmd.de”, port&nbsp;21, the
+   <span class="cmsl-10">ssh</span>-client started before would accept it and
+   forward the connect through the established <span class="cmsl-10">ssh</span>
+   link to “petium.rhein.de”. “petium” then forwards the connect to
+   “phoenix.rhein.de”, port&nbsp;21 — as has been specified on the command
+   line. This process is illustrated in figure&nbsp;<a href="#x1-250137">7</a>.
+
+  </p>
+  <p class="indent">
+   The connect from “mogli.gmd.de” has ultimately been forwarded to
+   “phoenix.rhein.de” and even though, the file transfer protocol (FTP) does
+   not support any kind of encryption, the whole communication is secured by
+   the <span class="cmsl-10">ssh</span>. Neither the login phase nor the actual
+   data transfer are visible in the Internet.
+  </p>
+  <p class="indent">
+   A nice side-effect of the tunnel feature is, that it is possible to securely
+   reach machines that do not even support the <span class="cmsl-10">ssh</span>
+   themselves. In our example, “phoenix.rhein.de” could be a simple file server
+   and still the tunnel would work. If “phoenix” does support the <span class=
+   "cmsl-10">ssh</span>, though, it would have been better to log directly into
+   “phoenix.rhein.de” and to “tunnel” the connect only on the local machine. By
+   doing this, the user doesn’t even have to trust the local network.
+  </p>
+  <p class="indent">
+   The command line parameter we used, ’-L’ opens the one end of the tunnel on
+   the local machine and opens the other end at the specified host and port.
+   Another possibility is to use ’-R’ instead, which opens the tunnel not on
+   the local machine, but asks the remote machine to open the tunnel. Either
+   ’-L’ or ’-R’ is fine and chosing one way or the other is just a matter of
+   personal taste.
+  </p>
+  <p class="indent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">A</span> <a id="x1-26000A" name=
+   "x1-26000A"></a>Trouble Shooting
+  </h3>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">A.1</span> <a id="x1-27000A.1" name=
+   "x1-27000A.1"></a>Connection closes down immediately after establishing
+  </h4>
+  <p class="noindent">
+   Try again, using ’-v’ option. You will get a lot of information about what’s
+   done. Often a world/group writable home directory or <span class=
+   "cmtt-10">.rhosts</span> file causes the error.
+  </p>
+  <p class="indent">
+   If the servers host key is not in your systems keyring (<span class=
+   "cmtt-10">/etc/ssh</span><span class="cmtt-10">_known</span><span class=
+   "cmtt-10">_hosts</span>), put into your local <span class=
+   "cmtt-10">$HOME/.ssh/known</span><span class="cmtt-10">_hosts</span> file
+   and ask your system administrator to include it in the global file.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">A.2</span> <a id="x1-28000A.2" name=
+   "x1-28000A.2"></a>The $DISPLAY variable is set incorrectly
+  </h4>
+  <p class="noindent">
+   Using <span class="cmsl-10">ssh</span>, you should never set $DISPLAY from
+   your own. The following lines can be placed in different ”point-files”, e.g
+   .login or .cshrc.local:
+  </p>
+  <div class="verbatim" id="verbatim-11">
+   if&nbsp;(!($?DISPLAY)) &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;then &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setenv&nbsp;DISPLAY&nbsp;‘hostname‘:0
+   &nbsp;<br />
+   endif
+  </div>
+  <p class="nopar"></p>
+  <p class="indent">
+   Using .login, this could look something like this:
+  </p>
+  <div class="verbatim" id="verbatim-12">
+   set&nbsp;TTY=‘tty&nbsp;|&nbsp;awk&nbsp;-F/&nbsp;’{print&nbsp;$NF}’‘
+   &nbsp;<br />
+   set&nbsp;REMHOST=‘who&nbsp;|&nbsp;awk&nbsp;’$2=="’"$TTY"’"&nbsp;{print&nbsp;$NF}’‘
+   &nbsp;<br />
+   set&nbsp;DISPLAY_HOST=‘expr&nbsp;X"$REMHOST"&nbsp;:&nbsp;X’(\(.*\):’&nbsp;’
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|’&nbsp;X"$REMHOST"&nbsp;:&nbsp;X’(\(.*\))’&nbsp;’
+   &nbsp;<br />
+   |’&nbsp;UNKNOWN‘ &nbsp;<br />
+   if&nbsp;(!($?DISPLAY))&nbsp;then &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;if&nbsp;($DISPLAY_HOST&nbsp;!=&nbsp;"UNKNOWN")&nbsp;then
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setenv&nbsp;DISPLAY&nbsp;"$DISPLAY_HOST":0
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setenv&nbsp;DISPLAY&nbsp;‘hostname‘:0
+   &nbsp;<br />
+   &nbsp;&nbsp;&nbsp;&nbsp;endif &nbsp;<br />
+   endif
+  </div>
+  <p class="nopar"></p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">A.3</span> <a id="x1-29000A.3" name=
+   "x1-29000A.3"></a><span class="cmsl-10">ssh</span> through a Firewall
+  </h4>
+  <p class="noindent">
+   The firewall has to allow connections between the hosts on port&nbsp;22. If
+   the <span class="cmtt-10">.rhosts</span> mechanism is deployed for user
+   authentication, the backchannel will be allocated on a port below 1024. Some
+   firewalls do not allow incoming connects on ports below 1024, though, and
+   the <span class="cmsl-10">ssh</span> login will fail. This can be fixed by
+   adding the following lines to <span class="cmtt-10">$HOME/.ssh/config</span>
+  </p>
+  <div class="verbatim" id="verbatim-13">
+   Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wanted.server.name
+   &nbsp;<br />
+   RhostsAuthentication&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;no &nbsp;<br />
+   RhostsRSAAuthentication&nbsp;&nbsp;&nbsp;no
+  </div>
+  <p class="nopar"></p>
+  <p class="indent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">B</span> <a id="x1-30000B" name="x1-30000B"></a>List
+   of files
+  </h3>
+  <p class="noindent">
+   The various files used by the <span class="cmsl-10">ssh</span> can be
+   confusing for the beginner. To give the reader an overview and a reference
+   list, we will list all files here, with a short description of their
+   purpose.
+  </p>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">B.1</span> <a id="x1-31000B.1" name=
+   "x1-31000B.1"></a>System-wide files
+  </h4>
+  <p class="noindent">
+   All these files reside in the <span class="cmtt-10">/etc</span> directory.
+  </p>
+  <p class="indent"></p>
+  <dl class="description">
+   <dt class="description">
+    <span class="cmbx-10">/etc/ssh</span><span class=
+    "cmbx-10">_host</span><span class="cmbx-10">_key</span>
+   </dt>
+   <dd class="description">
+    This file contains the hosts private RSA key and should be accessible only
+    by the super-user. The key is generated during the installation of the
+    <span class="cmsl-10">sshd</span>.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">/etc/ssh</span><span class=
+    "cmbx-10">_host</span><span class="cmbx-10">_key.pub</span>
+   </dt>
+   <dd class="description">
+    This is the hosts public RSA key, which is generated during the
+    installation. This file should be world-readable.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">/etc/ssh</span><span class=
+    "cmbx-10">_random-seed</span>
+   </dt>
+   <dd class="description">
+    This file contains the seed for the random number generator and is
+    generated and maintained by the <span class="cmsl-10">ssh</span>
+    automatically. The seed should only be accessible by the super-user.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">/etc/ssh</span><span class=
+    "cmbx-10">_known</span><span class="cmbx-10">_hosts</span>
+   </dt>
+   <dd class="description">
+    The “keyring” of public host-keys for other systems. This file should be
+    maintained by the system administrator and all keys included here should be
+    checked carefully for their authenticity. This file should be
+    world-readable, but only writable for the super-user.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">/etc/sshd</span><span class="cmbx-10">_config</span>
+   </dt>
+   <dd class="description">
+    Configuration file for <span class="cmsl-10">sshd</span>. Please refer to
+    the <span class="cmtt-10">sshd(8)</span> man page for a description of all
+    supported options. This file should be world-readable, but only writable
+    for the super-user. The authors recommend the following settings to be
+    included:
+    <div class="verbatim" id="verbatim-14">
+     ServerKeyBits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1024
+     &nbsp;<br />
+     KeyRegenerationInterval&nbsp;18000 &nbsp;<br />
+     PermitRootLogin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;no
+     &nbsp;<br />
+     IgnoreRhosts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yes
+     &nbsp;<br />
+     StrictModes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yes
+     &nbsp;<br />
+     RhostsAuthentication&nbsp;&nbsp;&nbsp;&nbsp;no &nbsp;<br />
+     RhostsRSAAuthentication&nbsp;yes &nbsp;<br />
+     RSAAuthentication&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yes
+     &nbsp;<br />
+     PasswordAuthentication&nbsp;&nbsp;yes &nbsp;<br />
+     PermitEmptyPasswords&nbsp;&nbsp;&nbsp;&nbsp;no
+    </div>
+    <p class="nopar"></p>
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">/etc/ssh</span><span class="cmbx-10">_config</span>
+   </dt>
+   <dd class="description">
+    The system wide configuration file for <span class="cmsl-10">ssh</span>
+    client. Provides defaults for parameters not set in the user file
+    <span class="cmtt-10">$HOME/.ssh/config</span>. Please refer to the
+    <span class="cmtt-10">ssh(1)</span> man page for a description of all
+    supported options. This file should be world-readable, but only writable
+    for the super-user. The authors recommend the following settings to be
+    included:
+    <div class="verbatim" id="verbatim-15">
+     ForwardAgent&nbsp;yes &nbsp;<br />
+     ForwardX11&nbsp;yes &nbsp;<br />
+     RhostsAuthentication&nbsp;no &nbsp;<br />
+     RhostsRSAAuthentication&nbsp;no &nbsp;<br />
+     RSAAuthentication&nbsp;yes &nbsp;<br />
+     PasswordAuthentication&nbsp;yes &nbsp;<br />
+     FallBackToRsh&nbsp;yes &nbsp;<br />
+     UseRsh&nbsp;no &nbsp;<br />
+     StrictHostKeyChecking&nbsp;yes
+    </div>
+    <p class="nopar"></p>
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">/etc/shosts.equiv</span>
+   </dt>
+   <dd class="description">
+    Same file as the system’s <span class="cmtt-10">/etc/hosts.equiv</span>,
+    but only read by the <span class="cmsl-10">ssh</span>. Usage of this file
+    is discouraged by the authors.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">/etc/sshrc</span>
+   </dt>
+   <dd class="description">
+    Commands to execute after successful login and before starting the user’s
+    shell
+   </dd>
+  </dl>
+  <p class="noindent"></p>
+  <h4 class="subsectionHead">
+   <span class="titlemark">B.2</span> <a id="x1-32000B.2" name=
+   "x1-32000B.2"></a>User customizable files
+  </h4>
+  <p class="noindent">
+   All these files reside in the user’s home directory.
+  </p>
+  <p class="indent"></p>
+  <dl class="description">
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.rhosts</span>
+   </dt>
+   <dd class="description">
+    This file contains a list of trusted hosts and user names, which are
+    allowed to log in without authenticiation. The use of this mechanism is
+    discouraged by the authors.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.shosts</span>
+   </dt>
+   <dd class="description">
+    Same purpose as the <span class="cmtt-10">$HOME/.rhosts</span> file, but
+    only read by the <span class="cmsl-10">ssh</span>. Usage of this file is
+    discouraged by the authors.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/known</span><span class=
+    "cmtt-10">_hosts</span>
+   </dt>
+   <dd class="description">
+    The users own public host keyring. If StrictHostKeyChecking is enabled,
+    this file is ignored, otherwise it is used in conjunction with the global
+    file <span class="cmtt-10">/etc/ssh</span><span class=
+    "cmtt-10">_known</span><span class="cmtt-10">_hosts</span>.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/authorized</span><span class=
+    "cmtt-10">_keys</span>
+   </dt>
+   <dd class="description">
+    A list of public user RSA public keys. Using these keys, a user can log
+    into the system via a RSA challenge.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/identity</span>
+   </dt>
+   <dd class="description">
+    The user’s private RSA key for this machine. This file should be accessable
+    only by the user.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/identity.pub</span>
+   </dt>
+   <dd class="description">
+    The user’s public RSA key for this machine. The key should be in the
+    <span class="cmtt-10">authorized</span><span class="cmtt-10">_key</span>
+    file on the remote hosts, to replace the functionality of .rhosts when
+    using RSA authentication.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/random</span><span class=
+    "cmtt-10">_seed</span>
+   </dt>
+   <dd class="description">
+    This file contains the user’s seed for the random number generator and is
+    generated and maintained by the <span class="cmsl-10">ssh</span>
+    automatically. The file should only be accessible by the user.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/config</span>
+   </dt>
+   <dd class="description">
+    The user’s own confguration file for the <span class="cmsl-10">ssh</span>
+    client. Used in combination with /etc/ssh_config.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/environment</span>
+   </dt>
+   <dd class="description">
+    List of environment variables to set for this user at login.
+   </dd>
+   <dt class="description">
+    <span class="cmtt-10">$HOME/.ssh/rc</span>
+   </dt>
+   <dd class="description">
+    Same functionality as <span class="cmtt-10">/etc/sshrc</span>, but forthe
+    individual user.
+   </dd>
+  </dl>
+  <p class="indent"></p>
+  <h3 class="sectionHead">
+   <span class="titlemark">C</span> <a id="x1-33000C" name=
+   "x1-33000C"></a>Other sources of information
+  </h3>
+  <p class="noindent">
+   The interested reader will find more information about the <span class=
+   "cmsl-10">ssh</span> in the various man pages and, of course, in the
+   Internet. The following list is a collection of URLs, which are recommended
+   by the authors.
+  </p>
+  <p class="indent"></p>
+  <dl class="description">
+   <dt class="description">
+    <span class="cmbx-10">http://www.cs.hut.fi/ssh/</span>
+   </dt>
+   <dd class="description">
+    The official “Secure Shell Home Page”. This page has several interesting
+    documents, links to other sites and always the latest versions of the
+    <span class="cmsl-10">ssh</span> for the various operating systems.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">http://www.datafellows.com/f-secure/</span>
+   </dt>
+   <dd class="description">
+    The company “Datafellows” maintains the commercial branch of the
+    <span class="cmsl-10">ssh</span>, mainly the Windows versions.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">http://www.uni-karlsruhe.de/</span><span class=
+    "cmbx-10">&nbsp;ig25/ssh-faq/</span>
+   </dt>
+   <dd class="description">
+    The “Secure Shell Frequently Asked Questions” are maintained by Thomas
+    König and cover many problems a user or administrator might face while
+    using the <span class="cmsl-10">ssh</span>.
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">http://www.cs.hut.fi/ssh/ssh-archive/</span>
+   </dt>
+   <dd class="description">
+    Another source of information is the <span class="cmsl-10">ssh</span> user
+    mailing list. Under this URL, all posted articles have been made available.
+   </dd>
+   <dt class="description">
+    <span class=
+    "cmbx-10">http://www.gmd.de/intern/WTI/iT/ssh-announce.html</span>
+   </dt>
+   <dd class="description">
+    <p class="noindent">
+     Georg Wittig has written a small text in German, meant for the GMD
+     employees. The text describes the features and purpose of the <span class=
+     "cmsl-10">ssh</span> in way less words than this document does.
+    </p>
+   </dd>
+   <dt class="description">
+    <span class="cmbx-10">http://www1.tu-chemnitz.de/</span><span class=
+    "cmbx-10">&nbsp;hot/ssh/ssh.html</span>
+   </dt>
+   <dd class="description">
+    <p class="noindent">
+     Holger Trapp is the author of the document “Gesicherte Kommunikation über
+     unsichere Netze”, which is a brief description of the <span class=
+     "cmsl-10">ssh</span> for the practical user, in German language.
+    </p>
+   </dd>
+   <dt class="description">
+    <span class=
+    "cmbx-10">http://lists.w3.org/Archives/Public/ietf-tls/msg00555.html</span>
+   </dt>
+   <dd class="description">
+    <p class="noindent">
+     This is the official description of the protocol used by the <span class=
+     "cmsl-10">ssh</span>, published as an official Internet draft by Tatu
+     Ylonen <span class="cmmi-10">&lt;</span>ylo@ssh.fi<span class=
+     "cmmi-10">&gt;</span>.
+    </p>
+   </dd>
+   <dt class="description">
+    <span class=
+    "cmbx-10">http://www.cert.dfn.de/infoserv/dib/dib-9601.html</span>
+   </dt>
+   <dd class="description">
+    Here the reader will find an “Informationsbulletin SSH” in German language,
+    published by the DFN-CERT organization.
+   </dd>
+  </dl>
+ </body>
+</html>
diff --git a/the-secure-shell/tex4ht.css b/the-secure-shell/tex4ht.css
new file mode 100644 (file)
index 0000000..e7de678
--- /dev/null
@@ -0,0 +1,134 @@
+/* start css.sty */
+.cmr-7{font-size:70%;}
+.cmmi-7{font-size:70%;font-style: italic;}
+.cmmi-10{font-style: italic;}
+.cmsy-7{font-size:70%;}
+.cmr-17{font-size:170%;}
+.cmr-12{font-size:120%;}
+.cmr-8{font-size:80%;}
+.cmr-9{font-size:90%;}
+.cmbx-9{font-size:90%; font-weight: bold;}
+.cmbx-9{ font-weight: bold;}
+.cmsl-9{font-size:90%;font-style: oblique;}
+.cmsl-9{font-style: oblique;}
+.cmsl-9{font-style: oblique;}
+.cmtt-10{font-family: monospace;}
+.cmsl-10{font-style: oblique;}
+.cmsl-10{font-style: oblique;}
+.cmsl-10{font-style: oblique;}
+.cmbx-10{ font-weight: bold;}
+.cmbx-10{ font-weight: bold;}
+.cmsl-8{font-size:80%;font-style: oblique;}
+.cmsl-8{font-style: oblique;}
+.cmsl-8{font-style: oblique;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; } 
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
+.index-item, .index-subitem, .index-subsubitem {display:block}
+div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
+div.caption span.id{font-weight: bold; white-space: nowrap; }
+h1.partHead{text-align: center}
+p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
+.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
+.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
+.verse{white-space:nowrap; margin-left:2em}
+div.maketitle {text-align:center;}
+h2.titleHead{text-align:center;}
+div.maketitle{ margin-bottom: 2em; }
+div.author, div.date {text-align:center;}
+div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
+div.author{white-space: nowrap;}
+.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+.figure img.graphics {margin-left:10%;}
+/* end css.sty */
+
diff --git a/the-secure-shell/tex4iki0x.png b/the-secure-shell/tex4iki0x.png
new file mode 100644 (file)
index 0000000..8bd0a33
Binary files /dev/null and b/the-secure-shell/tex4iki0x.png differ
diff --git a/the-secure-shell/tex4iki10x.png b/the-secure-shell/tex4iki10x.png
new file mode 100644 (file)
index 0000000..da0d465
Binary files /dev/null and b/the-secure-shell/tex4iki10x.png differ
diff --git a/the-secure-shell/tex4iki11x.png b/the-secure-shell/tex4iki11x.png
new file mode 100644 (file)
index 0000000..5327341
Binary files /dev/null and b/the-secure-shell/tex4iki11x.png differ
diff --git a/the-secure-shell/tex4iki12x.png b/the-secure-shell/tex4iki12x.png
new file mode 100644 (file)
index 0000000..8831df4
Binary files /dev/null and b/the-secure-shell/tex4iki12x.png differ
diff --git a/the-secure-shell/tex4iki1x.png b/the-secure-shell/tex4iki1x.png
new file mode 100644 (file)
index 0000000..6401efd
Binary files /dev/null and b/the-secure-shell/tex4iki1x.png differ
diff --git a/the-secure-shell/tex4iki2x.png b/the-secure-shell/tex4iki2x.png
new file mode 100644 (file)
index 0000000..18ae294
Binary files /dev/null and b/the-secure-shell/tex4iki2x.png differ
diff --git a/the-secure-shell/tex4iki3x.png b/the-secure-shell/tex4iki3x.png
new file mode 100644 (file)
index 0000000..fef9470
Binary files /dev/null and b/the-secure-shell/tex4iki3x.png differ
diff --git a/the-secure-shell/tex4iki4x.png b/the-secure-shell/tex4iki4x.png
new file mode 100644 (file)
index 0000000..e40eca8
Binary files /dev/null and b/the-secure-shell/tex4iki4x.png differ
diff --git a/the-secure-shell/tex4iki5x.png b/the-secure-shell/tex4iki5x.png
new file mode 100644 (file)
index 0000000..3b1c330
Binary files /dev/null and b/the-secure-shell/tex4iki5x.png differ
diff --git a/the-secure-shell/tex4iki6x.png b/the-secure-shell/tex4iki6x.png
new file mode 100644 (file)
index 0000000..a43967c
Binary files /dev/null and b/the-secure-shell/tex4iki6x.png differ
diff --git a/the-secure-shell/tex4iki7x.png b/the-secure-shell/tex4iki7x.png
new file mode 100644 (file)
index 0000000..7edbd1c
Binary files /dev/null and b/the-secure-shell/tex4iki7x.png differ
diff --git a/the-secure-shell/tex4iki8x.png b/the-secure-shell/tex4iki8x.png
new file mode 100644 (file)
index 0000000..d30cb53
Binary files /dev/null and b/the-secure-shell/tex4iki8x.png differ
diff --git a/the-secure-shell/tex4iki9x.png b/the-secure-shell/tex4iki9x.png
new file mode 100644 (file)
index 0000000..ccc08de
Binary files /dev/null and b/the-secure-shell/tex4iki9x.png differ
diff --git a/tunneling-ordinary-tcp-services/img1.jpg b/tunneling-ordinary-tcp-services/img1.jpg
new file mode 100644 (file)
index 0000000..03937cd
Binary files /dev/null and b/tunneling-ordinary-tcp-services/img1.jpg differ
diff --git a/tunneling-ordinary-tcp-services/index.html b/tunneling-ordinary-tcp-services/index.html
new file mode 100644 (file)
index 0000000..c3ee063
--- /dev/null
@@ -0,0 +1,1455 @@
+[[!meta title="Secure TCP Tunnelling with SSH"]]
+[[!tag security]]
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+  <title></title>
+ </head>
+ <body>
+  <h1 align="center">
+   Securing Ordinary TCP Services through Tunnels
+  </h1>
+  <center>
+   Manfred Bogen<br>
+   Michael Lenz<br>
+   Andreas Reichpietsch<br>
+   Peter Simons
+   <p>
+    April 17, 1998
+   </p>
+  </center>
+  <h3 class="ABSTRACT">
+   Abstract:
+  </h3>
+  <p class="ABSTRACT">
+   Many popular protocols deployed in the Internet today, have been designed
+   years before security, cryptographic authentication and data encryption was
+   an issue. Examples for such protocols are POP, telnet, X11-remote-display,
+   and FTP. These protocols are to be considered insecure nowadays and if we
+   were living in an ideal world, they would have been replaced by more
+   sophisticated protocols completely.
+  </p>
+  <p>
+   In fact, though, Internet services based on these protocols are used more
+   than ever before, because of the widespread availability of implementations
+   for all platforms and operating systems. A large organization or company can
+   not afford to discontinue services like POP or FTP, because so many of their
+   members or employees are using them.
+  </p>
+  <p>
+   The solution for this dilemma is to tunnel the insecure protocols through
+   secure channels, which are protected by strong cryptography. Even though
+   software for this purpose is widely available already, the Secure Shell
+   (SSH) for example, experience has shown that the concept of tunneling is not
+   easy to understand.
+  </p>
+  <p>
+   In this paper, the authors will explain the concept of tunneling TCP
+   connections through secure channels in great detail. Furthermore we will
+   provide several examples, how tunneling can be implemented transparently for
+   the users of a system, explain the necessary changes in the configuration of
+   the server- and the client-side of the service, and discuss the problems
+   that arise when tunneling is used through a firewall.
+  </p>
+  <p>
+   During our work in the German National Research Center for Information
+   Technology (GMD), we have also measured the performance penalty that arises
+   from encrypting and possibly compressing frequently occurring TCP
+   connections and will present the results here.
+  </p>
+  <p>
+   The paper has been written mostly for the administrators and users of Unix
+   and Windows NT workstations, but only very few parts actually depend on the
+   deployed operating systems. The underlying concepts of tunneling are valid
+   for all kinds of operating systems and software implementations.
+  </p>
+  <div align="center">
+   <b>Keywords</b><br>
+  </div>
+  <p>
+   Security, Cryptography, SSH, Unix.
+  </p>
+  <h1>
+   <a name="SECTION00010000000000000000">1 Introduction</a>
+  </h1>
+  <p>
+   The Internet was designed to provide a robust transmission facility of data
+   packets that remains in operation even if parts of the infrastructure are
+   out of service or not available. Security was neither a major issue while
+   defining the underlying protocols nor while defining many applications on
+   top of TCP/IP.
+  </p>
+  <p>
+   Although the fundamental vulnerabilities of computers that are connected to
+   the Internet were known for a long time, the flaws have rather been
+   accommodated than corrected. As a result, within the recent years many cases
+   of wide scale security infractions have occurred.
+  </p>
+  <p>
+   However, many users connected to the Internet rely on services like POP,
+   SMTP, telnet, and X11 despite their immanent security risks. Even more,
+   without using them there would almost be no reason to connect to the
+   Internet at all.
+  </p>
+  <p>
+   Security enhanced versions are available for some of the vulnerable
+   services, but not for all of them. In addition, they are not widespread
+   within the Internet. One possible solution to overcome these drawbacks, as
+   described throughout this paper, is the use of TCP-based tunneling
+   solutions.
+  </p>
+  <p>
+   The paper is structured as follows: After categorizing different types of
+   attacks to TCP-based protocols (section&nbsp;2), section&nbsp;3 describes
+   how tunnels operate in principle. Section four presents an overview about
+   available software solutions. Section five and six respectively deal with
+   tunneling simple and complex protocols and electronic mail. Potential
+   problems and performance penalties by using tunnels are discussed in
+   section&nbsp;7. Section&nbsp;8 describes some alternative solutions to
+   application-level tunneling while section&nbsp;9 concludes the paper.
+  </p>
+  <h1>
+   <a name="SECTION00020000000000000000">2 Insecure Protocols and Services</a>
+  </h1>
+  <h2>
+   <a name="SECTION00021000000000000000">2.1 What is a ``service'' in the
+   Internet?</a>
+  </h2>
+  <p>
+   Before we take a look at the technical details, it is important to clarify
+   the terminology used throughout this paper. The term ``service'' is used to
+   denote an Internet-specific application like the exchange of electronic
+   mail, the transfer of a file from one machine to another through the
+   network. These services are based on specific ``protocols''. Electronic mail
+   is exchanged with the Simple Mail Transfer Protocol (SMTP), files are
+   transferred via the File Transfer Protocol (FTP), etc.
+  </p>
+  <p>
+   The protocols discussed in this paper are based on TCP/IP, the protocol
+   stack of choice in the Internet. That is, a TCP connection is opened from
+   one machine to the other, and the protocol- or application data is
+   transferred through it. In the Internet, other type of protocols layers
+   exist, for example UDP or Multicast transmissions, but those are beyond the
+   scope of this paper.
+  </p>
+  <p>
+   Every TCP-based service in the Internet is identified via an unique ``port
+   number''. When a client initiates a connection to a server, it chooses to
+   connect to, say, port&nbsp;25 on the remote machine. According to [<a href=
+   "#rfc1700">RFC 1700</a>], port&nbsp;25 is assigned to the SMTP protocol and
+   thus to the service of delivering an electronic mail.
+  </p>
+  <p>
+   Most well-known and popular services are assigned a port number in the range
+   from 0 to 1024, but the valid port numbers range from 0 to&nbsp;65535.
+  </p>
+  <p>
+   Throughout our text, we will use the name of the protocol in question to
+   denote the TCP port associated to this protocol and the service for which
+   the protocol is deployed. Only when the context might be misleading, the
+   accurate distinction between the service, the protocol or the port number
+   will be made.
+  </p>
+  <h2>
+   <a name="SECTION00022000000000000000">2.2 Security Threats</a>
+  </h2>
+  <p>
+   Many of the popular TCP-based Internet services used today were not deployed
+   with security as a primary goal. So, they suffer from various potential
+   security threats.
+  </p>
+  <h3>
+   <a name="SECTION00022100000000000000">2.2.1 Sniffing</a>
+  </h3>
+  <p>
+   In the recent years, sniffing has become a pressing problem. IP packets are
+   transferred on a hop-by-hop basis. So, they can be intercepted by all
+   intermediate hosts. In addition, these packets are generally transferred via
+   broadcasting media within local networks. Thus, every host can eavesdrop all
+   data packets on the network it is directly attached to.
+  </p>
+  <p>
+   Unfortunately almost every popular and widespread Internet service like
+   SMTP, POP, HTTP, telnet, the r-commands, and X11 transmits its data in clear
+   text, thus allowing to eavesdrop sensitive or private information. Even
+   worse, many of these services rely on a password based authentication scheme
+   at which accounts and passwords are also transferred in clear text. In the
+   case of POP e.g. the password is transferred every time the POP client
+   accesses the server, which normally happens every few minutes.
+  </p>
+  <p>
+   Due to their passive nature sniffers can practically not be detected.
+   Supporting all kind of TCP/IP-based application protocols, they are quite
+   convenient to use. They can store the intercepted information locally over a
+   long time so that there is no need to initiate frequent connection requests
+   to forward the data which could be traitorous.
+  </p>
+  <h3>
+   <a name="SECTION00022200000000000000">2.2.2 Connection Hijacking</a>
+  </h3>
+  <p>
+   After a successful establishment and authorization, an attacker can try to
+   take over the connection. Target of this very technical attack are terminal
+   or login services, like e.g. telnet. The stolen connection can then be used
+   to initiate requests with the access rights of the originating user and to
+   intercept the replies.
+  </p>
+  <h3>
+   <a name="SECTION00022300000000000000">2.2.3 False Authentication</a>
+  </h3>
+  <p>
+   Many services require no authentication at all or rely solely on IP
+   addresses or domain names: Quite often SMTP servers accept e-mail messages
+   from any host without authentication. The same holds for anonymous FTP as
+   well as Web and gopher servers (as long as they do not offer access to
+   restricted documents). All these services are subject to command channel
+   attacks where ordinary protocol commands are used to exploit security
+   breaches.
+  </p>
+  <p>
+   In addition services like SMTP can also be used for data driven attacks. In
+   the case of SMTP the service may be subverted for mail bombing or for
+   distributing (macro) viruses.
+  </p>
+  <p>
+   The <i>rlogin</i> and <i>rsh</i> service rely on trusted hosts and/or
+   trusted users to grant access to the system without requesting a password.
+   Also FTP or Web servers can be configured in such a way that they allow
+   access to restricted data to specific hosts. But relying on IP-addresses or
+   domain names provides no real protection. IP addresses can be spoofed and
+   even reverse or double reverse look-ups of DNS information does not offer
+   substantially more security as DNS entries can also be forged quite easily
+   by an experienced attacker.
+  </p>
+  <h3>
+   <a name="SECTION00022400000000000000">2.2.4 Data Spoofing</a>
+  </h3>
+  <p>
+   Beside passively monitoring a network (i.e. sniffing) an attacker can also
+   manipulate transmitted datagrams or inject new ones. In general all clear
+   text protocols and services are vulnerable by this kind of attacks.
+  </p>
+  <p>
+   Being able to monitor all passing traffic and to connect to a service (e.g.
+   via IP spoofing) also opens an avenue for replay attacks where parts of an
+   ongoing legal communication are recorded and replayed lateron.
+  </p>
+  <h3>
+   <a name="SECTION00022500000000000000">2.2.5 Implementation and Configuration
+   Bugs</a>
+  </h3>
+  <p>
+   But even with a perfectly secure design a service may suffer from
+   implementation bugs like e.g. a buffer overflow which may be used to gain
+   access to the host. In the context of Web servers poor CGI scripts which
+   pass user provided data to a command shell without carefully checking are
+   wide open avenues for attackers.
+  </p>
+  <p>
+   Additional security breaches may result from misconfiguration. A poor
+   configuration of an anonymous FTP server e.g. may put the whole machine on
+   risk.
+  </p>
+  <h3>
+   <a name="SECTION00022600000000000000">2.2.6 Denial-of-Service Attacks</a>
+  </h3>
+  <p>
+   By launching a denial-of-service attack an existing service is made
+   unavailable to its authorized users. This can be achieved by flooding the
+   server with faked connection requests, like the popular SYN-flood attack.
+   While the flooding takes place, the attacked host is virtually detached from
+   the network.
+  </p>
+  <p>
+   Other attacks are protocol specific. SMTP messages received for local users
+   are ordinarily stored on local disk. Hence by flooding a SMTP server with
+   e-mail messages the service can be made unavailable for other users and in
+   addition the local file system can be filled up entirely. But this is not a
+   SMTP specific problem, virtually every externally accessible service can be
+   made unavailable by flooding it with requests.
+  </p>
+  <h1>
+   <a name="SECTION00030000000000000000">3 What is ``Tunneling''?</a>
+  </h1>
+  <p>
+   The idea of tunneling insecure protocols is to identify networks, that are
+   assumed to be secure. A company's internal network, for example, is usually
+   protected by a sophisticated IP packet filter or firewall software,
+   rendering all attacks to the inside of the network infeasible. The outside
+   network, on the other hand, is known to be insecure.
+  </p>
+  <p>
+   Let us, for example, contemplate what happens when an employee of the
+   company accesses his electronic mail at work from his private workstation
+   through the Internet, using the insecure [<a href="#pop3">POP3</a>] or
+   [<a href="#imap">IMAP</a>] protocols. His user password <i>and</i> the
+   contents of the e-mail are not protected and may be eavesdropped.
+  </p>
+  <p>
+   This is a serious security threat not only to the privacy of the employee,
+   but also for the security of the company and the company's internal network.
+   Of course, eliminating this threat is simple: Just disallow the employee to
+   read his e-mail at home by configuring the packet filter mechanism
+   appropriately. Unfortunately this may be infeasible as employees might be
+   required to access their electronic mail through the Internet from wherever
+   they are.
+  </p>
+  <p>
+   A secure tunnel is the appropriate solution for this dilemma. The concept of
+   tunneling is illustrated in figure&nbsp;<a href="#howdotunnelswork">1</a>
+   below.
+  </p>
+  <p>
+   <a name="31">&nbsp;</a><a name="howdotunnelswork">&nbsp;</a> <img width=
+   "527" height="371" align="bottom" alt="figure28" src="img1.jpg"><br>
+   <strong>Figure 1:</strong> How do tunnels work?<br>
+  </p>
+  <p>
+   To stick with the mail-reading example from above, let us say that a user
+   wants to read e-mail on server A, B, or C, using the insecure POP3 protocol.
+   Instead of connecting directly to the server machine at TCP port&nbsp;110,
+   he or she opens a secure connection from the client machine to the tunnel
+   server. This secure connection is made with a special tunneling software,
+   that features strong encryption and authentication.
+  </p>
+  <p>
+   The tunneling software, once started at the client machine ('Private
+   Workstation'), listens to, say, TCP port&nbsp;5000. All communication
+   requests are forwarded through the encrypted tunnel to the tunnel server,
+   which in turn decrypts the incoming data and forwards it to the mail server
+   at port&nbsp;110.
+  </p>
+  <p>
+   Now the users configure the POP3 software to connect to <tt>localhost</tt>,
+   port&nbsp;5000 and engages the mail-fetching process. The POP3 connection is
+   now tunnelled through the insecure network by the tunneling software and
+   then transparently forwarded by the tunnel server to the mail server again.
+  </p>
+  <p>
+   This works as follows: Both the client and server software speak plain and
+   insecure POP3 with each other, being completely unaware of the tunnel server
+   and the functionality it performs. The mail-fetching process works just fine
+   with the normal, unmodified POP3 programs.
+  </p>
+  <p>
+   Due to the tunnel, all data transmissions between the client machine and the
+   tunnel server are encrypted and have been authenticated properly. The
+   transmission between the tunnel server and the mail server is an ordinary
+   POP3 connection, but it lies within the secure company network and can not
+   be eavesdropped or abused otherwise.
+  </p>
+  <p>
+   This approach fixes two important problems:
+  </p>
+  <ol>
+   <li>The insecure POP3 protocol can be used in a secure fashion, using the
+   well-known software.
+   </li>
+   <li>The packet filter or firewall software, protecting the company network
+   does not need to have any holes to allow employees to read their electronic
+   mail. The packet filter needs to allow only connections to the tunnel server
+   &#8212; nothing else. And this interface is secure due to the functionality
+   of the tunneling software.
+   </li>
+  </ol>
+  <h1>
+   <a name="SECTION00040000000000000000">4 An Overview of Available Software
+   Solutions</a>
+  </h1>
+  <p>
+   Various software packages exist, that implement tunneling functionality. In
+   the following sections we shall introduce the most common solutions.
+  </p>
+  <h2>
+   <a name="SECTION00041000000000000000">4.1 Secure Shell (SSH)</a>
+  </h2>
+  <p>
+   The Secure Shell (SSH) can be found at [<a href="#SSH">SSH</a>]. Versions
+   exists for the Unix (including full source code) and Windows operating
+   system. For new users, a brief tutorial can be found at [<a href=
+   "#SSHTUT">SSH-TUT</a>].
+  </p>
+  <p>
+   The SSH is not exactly a tunneling software. In fact, the ability to tunnel
+   connections securely is only a by-product of SSH's other capabilities.
+   Mainly, the Secure Shell is a replacement for the well-known telnet, rlogin
+   and rcp services. SSH uses strong cryptography (RSA, IDEA, 3DES and other
+   algorithms) and authentication to allow users to log into a Unix machine
+   remotely. SSH's protocol protects against all attacks described in the first
+   section. It also features the ability to open secure tunnels as described in
+   the second section.
+  </p>
+  <p>
+   In our paper, we will use the SSH to demonstrate the real-world applications
+   of tunneling connections, because it is a very sophisticated and useful
+   tool, which is available for free for Unix users.
+  </p>
+  <h2>
+   <a name="SECTION00042000000000000000">4.2 Secure Socket Layer (SSL)</a>
+  </h2>
+  <p>
+   The Secure Socket Layer Protocol, developed by Netscape, has become a de
+   facto standard. SSL implements an additional layer between TCP and the
+   application layers (FTP, HTTP, SMTP, &#8230;). Complete authentication and
+   encryption happens in the Secure Socket Layer. For using SSL, special client
+   and server programs are needed. The applications are not involved, there are
+   no changes necessary and all standard application programs will work.
+  </p>
+  <p>
+   SSL connections are built up in two phases. A handshake protocol is started,
+   server and client agree on an encryption method and key. The server sends
+   its certificate [<a href="#X509">X.509</a>] for authentication &#8212;
+   optional client authentication is possible. Also, various public key
+   encryption methods are available and different kinds of hash functions can
+   be chosen.
+  </p>
+  <p>
+   After the server certificate is verified (and optionally the client is
+   authenticated via the client certificate), an encryption method is selected.
+   A session key is exchanged via public key encryption or token-based
+   encryption systems. This session key can use one out of a number of secret
+   (symmetric) key algorithms for encrypting the session.
+  </p>
+  <p>
+   Now phase two begins. The proper session starts, the message is fragmented
+   into blocks, a MAC (message authentication code) is used, the single blocks
+   (packets) are encrypted and transmitted. On the other side the received
+   packets will be decrypted, verified, put together and delivered up to the
+   higher levels. Client and server certificates use X.509. This enables a
+   complete authentication of both, client and server, and prevents against man
+   in the middle attacks. [<a href="#ssl">SSL3</a>]
+  </p>
+  <p>
+   Most commercial available products use 40-bit RC4 keys for session
+   encryption. This is forced by the US encryption export laws. But there are
+   also free available products which use strong encryption too.
+  </p>
+  <p>
+   A well known application of SSL is HTTPS, but other programs like sslftp or
+   ssltelnet are available on the Internet (see [<a href="#cert">CERT</a>]). A
+   widespread Web server with an optional SSL extension is the [<a href=
+   "#apache">APACHE</a>] Web server.
+  </p>
+  <h1>
+   <a name="SECTION00050000000000000000">5 Real-world Examples of Useful
+   Tunnels</a>
+  </h1>
+  <p>
+   The following applications for secure tunnels are real world examples, that
+   fulfill useful functions in the authors' every-day work. We have emphasized
+   the practical aspects of these tunneling examples and present actual
+   implementations for the Unix operating system, using the Secure Shell, SSH.
+  </p>
+  <p>
+   All examples can be used in an Windows environment with the SSH, too. The
+   differences in the SSH's user interface are trivial as all the concepts are
+   exactly the same.
+  </p>
+  <h2>
+   <a name="SECTION00051000000000000000">5.1 Tunneling Simple Protocols</a>
+  </h2>
+  <p>
+   A ``simple protocol'' is one that uses only one TCP connection to perform
+   all its functionality. Most protocols used in the Internet today are of this
+   type and tunneling them is pretty easy, once one got used to the way this is
+   accomplished.
+  </p>
+  <h3>
+   <a name="SECTION00051100000000000000">5.1.1 POP3</a>
+  </h3>
+  <p>
+   POP3 is used to transfer electronic mail from the mail server to the local
+   machine and is typically implemented in the mail reader. In our example, the
+   mail server is called <tt>mail.my.org</tt> and the tunnel server is called
+   <tt>tunnel.my.org</tt>.
+  </p>
+  <p>
+   Now an user wants to get his e-mail from the company mail server to his
+   private work station through the Internet. First of all, the tunnel needs to
+   be opened. This is achieved by executing the following command:
+  </p>
+  <pre>
+ $ ssh -L 110:mail.my.org:110 tunnel.my.org
+</pre>
+  <p>
+   The SSH will now log into the tunnel server and open the tunnel. For this to
+   succeed, the user needs an accessible shell account on the server, in which
+   he can log into. This may be a personal account, or a generic account to
+   which all employees have access. The authors recommend to use personal
+   accounts, because this gives more power to the server administrators, to
+   control what is going on on their machines.
+  </p>
+  <p>
+   What happens now is this: When the login succeeded, SSH will start to listen
+   to port&nbsp;110 (POP3) on the local machine, that is the private
+   workstation of the user. Every connection that arrives there, is tunnelled
+   through the secure connection to tunnel.my.org. The tunnel server will then
+   forward the connection to the machine mail.my.org, to port&nbsp;110.
+  </p>
+  <p>
+   So all the user has to do is to tell his mail client, that the POP3 server
+   to query for e-mail is the local machine: <tt>localhost</tt>.
+  </p>
+  <p>
+   The tunnel can also be tested using the command:
+  </p>
+  <pre>
+ $ telnet localhost pop3
+</pre>which will be answered like this:
+  <pre>
+Trying 127.0.0.1 ...
+Connected to localhost.my.org.
+Escape character is '^]'.
++OK QPOP (version 2.2-b7) at mail.my.org starting. \
+        &lt;27752.887390202@mail.my.org&gt;
+</pre>
+  <p>
+   If the tunnel works correctly, the server answering the connection will be
+   the intended machine, even though the TCP connection was originated with
+   <tt>localhost</tt> as target.
+  </p>
+  <h3>
+   <a name="SECTION00051200000000000000">5.1.2 IMAP</a>
+  </h3>
+  <p>
+   If the user uses the IMAP protocol, rather than POP3, the whole process is
+   identical except for the port numbers. The command to open the tunnel is now
+   as follows:
+  </p>
+  <pre>
+ $ ssh -L 220:mail.my.org:220 tunnel.my.org
+</pre>
+  <h3>
+   <a name="SECTION00051300000000000000">5.1.3 Telnet</a>
+  </h3>
+  <p>
+   <a name="Telnet">&nbsp;</a>
+  </p>
+  <p>
+   Of course a normal telnet session can be tunnelled, too. The corresponding
+   port is 23. So if one wants to telnet into the server
+   <tt>server.my.org</tt>, this command will open the tunnel:
+  </p>
+  <pre>
+ $ ssh -L 23:server.my.org:23 tunnel.my.org
+</pre>
+  <p>
+   To start the telnet session, execute:
+  </p>
+  <pre>
+ $ telnet localhost
+</pre>
+  <p>
+   Obviously, there is little point in tunneling a telnet session to a Unix
+   server. One should rather log into that machine with the SSH directly, which
+   is easier and adds additional benefits the SSH provides. But still there are
+   enough machines that can not be equipped with an SSH server, for example
+   ISDN routers, which frequently need to be accessed with telnet.
+  </p>
+  <h2>
+   <a name="SECTION00052000000000000000">5.2 More Complex Protocols</a>
+  </h2>
+  <p>
+   A ``complex'' protocol is one that uses more than one TCP connection. A good
+   example for this is the File Transfer Protocol (FTP) discussed below.
+   Tunneling of complex protocols can be tricky or flatly impossible.
+  </p>
+  <h3>
+   <a name="SECTION00052100000000000000">5.2.1 FTP</a>
+  </h3>
+  <p>
+   The FTP protocol uses two connections: A control channel and a data channel.
+   Over the control channel, the user logs into the FTP server, browses through
+   the available files or issues any GET or PUT commands. Once such a command
+   has been given, the FTP server and client open up a second channel over
+   which the actual data transmission takes place. When the file transfer is
+   over, the data channel is closed and control is given to the control channel
+   again.
+  </p>
+  <p>
+   The problem when trying to tunnel FTP is that it is not possible to predict,
+   which ports will be used for the data channel. The control channel is always
+   opened at port&nbsp;21, but the data channel may use any port that is
+   available and the actual number is negotiated between the client and the
+   server on the fly.
+  </p>
+  <p>
+   So it is possible to tunnel the control channel, thus securing the login and
+   password of the user. But the actual data transmission will take place
+   without protection. Protecting the user and password information is better
+   than nothing but the authors recommend to consider using the SCP tool
+   provided in the SSH distribution, to replace FTP for file transfers
+   completely, when sensitive data has to be exchanged.
+  </p>
+  <h3>
+   <a name="SECTION00052200000000000000">5.2.2 X11 Displays</a>
+  </h3>
+  <p>
+   An important feature of the graphical interface X11 is the ability to
+   forward graphical objects, like windows, through the network to a remote
+   machine.
+  </p>
+  <p>
+   Such transmissions can be secured with SSH, too, even though this is not
+   achieved with the usual tunnel approach. The SSH login tool has an in-built
+   X11 forwarding mechanism, which does this transparently. When logging into a
+   remote server with the SSH, a pseudo display is set up there and the
+   <tt>$DISPLAY</tt> environment variable is set automatically.
+  </p>
+  <p>
+   As a result, all started programs will open their displays as usual, but
+   internally, the transmission is tunnelled through the connection without any
+   further effort.
+  </p>
+  <h1>
+   <a name="SECTION00060000000000000000">6 Tunneling Electronic Mail</a>
+  </h1>
+  <p>
+   A rather unexpected, useful application of tunneling is the protection of
+   company internal electronic mail. For the sake of the example, let us
+   contemplate an imaginary company of the name ``Big Bucks''. Big Bucks has
+   two major departments, which are located in Tokyo, Japan and Birlinghoven,
+   Germany respectively. The corresponding Internet subdomains for each
+   department are <tt>tokyo.big-bucks.com</tt> and
+   <tt>birlinghoven.big-bucks.com</tt>.
+  </p>
+  <p>
+   Naturally, e-mail is used a lot for internal communication between the two
+   departments of the company, but the problem is that this mail is routed
+   through the insecure Internet and consequently is subject to eavesdropping
+   or even modification. Because many of the employees of Big Bucks are
+   non-technicians, it is not suitable to enforce that all e-mail is sent
+   encrypted.
+  </p>
+  <p>
+   A simple SSH tunnel between the two divisions of Big Bucks can solve this
+   problem easily and comfortably. We will describe the set-up below.
+  </p>
+  <ol>
+   <li>Each department needs a dedicated mail server:
+   mail.birlinghoven.big-bucks.com and mail.tokyo.big-bucks.com respectively.
+   </li>
+   <li>All machines are configured to deliver all non-local mail to the mail
+   server. This can be assured by blocking outgoing connections to the SMTP
+   port (25) via an IP packet filter or firewall software.
+   </li>
+   <li>mail.birlinghoven.big-bucks.com and mail.tokyo.big-bucks.com will
+   deliver outgoing mails for recipients in the Internet, or within the
+   division's network, as usual.
+   </li>
+   <li>mail.birlinghoven.big-bucks.com will send all e-mail directed to the
+   tokyo.big-bucks.com division to mail.tokyo.big-bucks.com and vice versa.
+   This delivery, though, is carried out through a secure tunnel.
+   </li>
+  </ol>
+  <p>
+   In this set-up, all company internal e-mail is transparently protected
+   against eavesdropping or modification &#8212; the employees of Big Bucks
+   need not even be aware of this measure!
+  </p>
+  <h2>
+   <a name="SECTION00061000000000000000">6.1 The Tunnel</a>
+  </h2>
+  <p>
+   Practically, this set-up is realized as follows. We are assuming, the
+   standard Unix sendmail program, version&nbsp;8 is installed. The tunnel is
+   done via SSH.
+  </p>
+  <p>
+   Opening the required tunnels is nothing really new, so we will keep the
+   description briefly. On mail.birlinghoven.big-bucks.com, the tunnel to
+   mail.tokyo.big-bucks.com is opened by logging into the other machine with
+   the command
+  </p>
+  <pre>
+ $ ssh -L 5000:mail.tokyo.big-bucks.com:25 \
+        mail.tokyo.big-bucks.com
+</pre>and the other way round is as easy:
+  <pre>
+ $ ssh -L 5000:mail.birlinghoven.big-bucks.com:25 \
+        mail.birlinghoven.big-bucks.com
+</pre>
+  <h2>
+   <a name="SECTION00062000000000000000">6.2 The Sendmail Configuration</a>
+  </h2>
+  <p>
+   Configuring sendmail is a bit more tricky. First of all, it is essential
+   that all machines are configure to relay all outgoing mail via the
+   appropriate mail server. With sendmail, this can be accomplished by adding
+   the following statement to the M4 configuration file:
+  </p>
+  <pre>
+define(`SMART_HOST', `esmtp:[mail.birlinghoven.big-bucks.com]')
+</pre>or
+  <pre>
+define(`SMART_HOST', `esmtp:[mail.tokyo.big-bucks.com]')
+</pre>
+  <p>
+   On other platforms, most notably Windows, this setting has to be made in the
+   user's mail reader, for example Netscape, so we will not describe it here.
+  </p>
+  <p>
+   Now we need to configure the mail servers. Both of them use the following M4
+   file to create the <tt>sendmail.cf</tt>:
+  </p>
+  <pre>
+divert(-1)
+include(`../m4/cf.m4')
+OSTYPE(bsd4.4)
+MAILER(smtp)
+Mtsmtp,         P=[IPC], F=mDFMuX, S=11/31,
+                R=21, E=\r\n, L=990,
+                T=DNS/RFC822/SMTP, A=IPC $h 5000
+FEATURE(mailertable, `hash -o /etc/mail/mailertable')
+</pre>
+  <p>
+   This configuration file is pretty normal, except for the definition of the
+   new mailer type ``tsmtp''. ``tsmtp'' is the ordinary ``smtp'' driver,
+   included in sendmail, except for the fact, that it will connect to
+   port&nbsp;5000, rather than port&nbsp;25.
+  </p>
+  <p>
+   Please note that this sendmail still behaves perfectly normal. Mail is
+   delivered with ``ordinary'' SMTP or ESMTP to the usual ports. The only
+   addition is a mailer, that uses port&nbsp;5000 instead.
+  </p>
+  <p>
+   Now comes the crucial part: On mail.tokyo.big-bucks.com, the following file
+   will now be installed in <tt>/etc/mail/mailertable</tt>:
+  </p>
+  <pre>
+.birlinghoven.big-bucks.com  tsmtp:[mail.tokyo.big-bucks.com]
+</pre>and then the command
+  <pre>
+ $ makemap hash /etc/mail/mailertable.db &lt;/etc/mail/mailertable
+</pre>is executed.
+  <p>
+   For mail.birlinghoven.big-bucks.com, the appropriate file is:
+  </p>
+  <pre>
+.tokyo.big-bucks.com  tsmtp:[mail.birlinghoven.big-bucks.com]
+</pre>
+  <p>
+   All e-mail addressed to recipients outside big-bucks.com is delivered
+   through the normal (E)SMTP client of sendmail. All other mail stays either
+   inside the secure company network or is tunnelled securely through the
+   Internet, to the other department's mail server.
+  </p>
+  <h1>
+   <a name="SECTION00070000000000000000">7 When Using Tunnels</a>
+  </h1>
+  <h2>
+   <a name="SECTION00071000000000000000">7.1 Problems</a>
+  </h2>
+  <p>
+   There are various pitfalls that may cause trouble when using tunnels, in
+   particular with the SSH software:
+  </p>
+  <ul>
+   <li>On some machines, the SSH is compiled with the [<a href=
+   "#tcpd">TCPWRAP</a>] option included. TCP Wrapper is a program that
+   controls, who may connect to certain services on the local machine. Even
+   though this is not obvious at first, this also affects the ability to open
+   tunnels on that machine.
+    <p>
+     The tricky bit is that the SSH connection will succeed just fine and
+     everything looks okay at first. But every time someone tries to use the
+     tunnel, the connection will abort without further comment, if TCP Wrapper
+     disallows it. So if you are experiencing problems using the tunnel, it is
+     a good idea to specify the <i>-v</i> flag of SSH, when logging into the
+     remote machine.
+    </p>
+    <p>
+     This will turn the ``verbose-mode'' on, giving you a more detailed
+     description of what happens, and what does not happen.
+    </p>
+   </li>
+   <li>In the default configuration, the SSH binary will be installed with
+   owner ``root'' and the ``setuid'' bit set. This is necessary for the SSH to
+   take advantage of the common ``rhosts'' mechanism in Unix. In order to allow
+   rhosts-authentication, the client must engage the connection from a trusted
+   port &#8212; a port number lower or equal to&nbsp;1024 that is, and these
+   ports can only be used as superuser.
+    <p>
+     The problem that arises from this behaviour is that many company networks
+     are protected by a IP packet filter or firewall software and the default
+     configuration of these programs is to deny outgoing and incoming
+     connections from or to a port lower or equal to&nbsp;1024. Hence, if you
+     attempt to log into the remote machine with SSH, it will fail, even if
+     you're not using the rhosts-mechanism at all.
+    </p>
+    <p>
+     The solution is to either remove the ``setuid-root'' bit from the SSH
+     binary, or to set the following configuration options in
+     <tt>/etc/ssh_config</tt>:
+    </p>
+    <pre>
+RhostsAuthentication no
+</pre>Then the SSH will not use the trusted ports for outgoing connections
+anymore.
+   </li>
+   <li>In section&nbsp;<a href="#Telnet">5.1.3</a> an example of tunneling a
+   telnet session was shown. In the example, the tunnel was opened at the local
+   machine on port&nbsp;23. This is convenient, because port&nbsp;23 is the
+   port assigned to the telnet service and hence, a simple <tt>telnet
+   localhost</tt> command would deploy the tunnel as intended.
+    <p>
+     Often this will not be possible, though, because the local port&nbsp;23 is
+     already allocated by the <tt>telnetd</tt> program, the software that
+     accepts incoming telnet connections and handles them. The same is true for
+     an attempt to tunnel a POP3 connection from the local machine to some
+     remote server, using port&nbsp;110. If the local machine supports the POP3
+     service, too, then port&nbsp;110 will be allocated already and opening the
+     tunnel will fail.
+    </p>
+    <p>
+     Fortunately the solution is rather easy. Instead of opening the local end
+     of the tunnel at the port that is commonly assigned to the service, one
+     can use a random, free port number instead, for example port&nbsp;5000.
+     The only difference in this case is that the client software, which
+     initiates the connection, must connect to port&nbsp;5000 instead, rather
+     than the port number assigned to the service usually.
+    </p>
+    <p>
+     With almost any modern client software, the port number to connect to can
+     be configured at run time, so that this doesn't pose a problem.
+    </p>
+   </li>
+  </ul>
+  <h2>
+   <a name="SECTION00072000000000000000">7.2 Costs</a>
+  </h2>
+  <p>
+   An interesting point to check is, what encryption will cost. To get some
+   ideas how encryption slows down the transmission, we set the follwing
+   experiment up:
+  </p>
+  <p>
+   A file of 7375432 byte was transported between different hosts using the
+   built-in rcp and the scp command from the ssh-distributon. The times were
+   stopped for the whole rcp/scp command, both processes used <tt>.rhosts</tt>
+   for login authentication.
+  </p>
+  <p>
+   The ssh programs were compiled without any additional optimization, we used
+   our normal inhouse network, the hosts were connected via hubs and switches.
+   SSH was configured not to use compression. The used encryption algorithm was
+   IDEA.
+  </p>
+  <div align="center">
+   <p align="center"></p>
+   <table cols="7" border frame="BOX" rules="GROUPS">
+    <col align="center">
+    <col align="center">
+    <col align="center">
+    <col align="center">
+    <col align="center">
+    <col align="center">
+    <col align="center">
+    <tbody>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       method
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       machines
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       sec
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       sec
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       sec
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       sec
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       network interface
+      </td>
+     </tr>
+    </tbody>
+    <tbody>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       RCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       5s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       7s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       6s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       6s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ATM Class. IP
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       SCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       27s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       26s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       29s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       27s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ATM Class. IP
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       RCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       9s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       11s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       9s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       9s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ATM Lane
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       SCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       32s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       33s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       28s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       29s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ATM Lane
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       RCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       i586, i686
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       9s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       13s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       15s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       8s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       10 MB Ethernet
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       SCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       i586, i686
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       24s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       23s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       22s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       23s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       10 MB Ethernet
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       RCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       12s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       12s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       11s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       10 MB Ethernet
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       SCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       2x SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       34s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       31s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       32s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       34s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       10 MB Ethernet
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       RCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       i586, SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m11s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m04s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m12s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       16m59s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ISDN 64 kb
+      </td>
+     </tr>
+     <tr>
+      <td valign="baseline" align="center" nowrap>
+       SCP
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       i586, SS20
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m20s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       16m58s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m08s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       17m12s
+      </td>
+      <td valign="baseline" align="center" nowrap>
+       ISDN 64 kb
+      </td>
+     </tr>
+    </tbody>
+   </table>
+   <p>
+    <small class="SMALL">SS20 = Sparc SS20 (Solaris
+    2.5.1),&nbsp;&nbsp;&nbsp;i586 = Pentium 66 MHz (Linux)<br>
+    i686 = Pentium Pro 200 MHz (NetBSD),&nbsp;&nbsp;&nbsp;ATM = 155
+    MBit/s</small>
+   </p>
+  </div>
+  <p>
+   At first, the speed loss due to encryption may be surprising, but it is
+   clear that the loss suffered from the additional encryption phase becomes
+   more substantial, the faster the network is. Practically, this is not a big
+   problem as the average network transmission hardly exceeds the
+   10&nbsp;MB/second rate in the Internet.
+  </p>
+  <p>
+   Furthermore, the choice of the encryption algorithm greatly influences the
+   performance. IDEA is considered to be the most secure algorithm of those,
+   available in the SSH. That's why we used it in our tests, even though it is
+   one of the slowest, too. Other algorithms, for example ``Blowfish'', are
+   known to be a lot faster, at the cost of some security.
+  </p>
+  <h1>
+   <a name="SECTION00080000000000000000">8 Alternative Solutions</a>
+  </h1>
+  <p>
+   There are two fundamentally different approaches to secure transactions
+   through the Internet: The one we described so far is on application-level,
+   the other one works on network-level. Both approaches have their advantages
+   and disadvantages.
+  </p>
+  <h2>
+   <a name="SECTION00081000000000000000">8.1 IPv6</a>
+  </h2>
+  <p>
+   In contrast to the method described so far by encrypting complete
+   sessions/associations between humans and applications, there is also the
+   possibility to encrypt on packet level. A new IP packet type is added to the
+   normal IP protocol, with security built into each packet.
+  </p>
+  <p>
+   IPv4 and IPv6 use two specific headers in IP datagrams to provide security
+   services: the "IP Authentication Header (AH" and the "IP Encapsulating
+   Security Payload (ESP)" header. Both headers are used alternatively or in
+   combination to maintain a Security Association (SA) for each destination
+   network or host. The SA is identified by a particular destination address
+   and a set of security parameters (Security Parameter Index, SPI) like
+   authentication algorithm, encryption algorithm, or keys.
+  </p>
+  <p>
+   The IP Authentication Header (AH) is designed to provide integrity and
+   authentication without confidentiality to IP datagrams. It holds
+   authentication information for its IP datagram. It does this by computing a
+   cryptographic authentication function like keyed MD5, DES, or CBC over the
+   IP datagram and using a secret authentication key in the computation. The
+   sender computes the authentication data prior to sending the authenticated
+   IP packet. The receiver verifies the correctness of the authentication data
+   upon reception. Certain fields needed for the transport of the datagram are
+   omitted from the authentication calculation. Use of the Authentication
+   Header will increase the IP protocol processing costs and the communications
+   latency.
+  </p>
+  <p>
+   The IP Encapsulating Security Payload (ESP) is designed to provide
+   integrity, authentication, and confidentiality to IP datagrams. It does this
+   by encapsulating either an entire IP datagram (Tunnel-mode) or only the
+   upper-layer protocol (e.g. TCP, UDP, ICMP) data inside the ESP
+   (Transport-Mode), encrypting most of the ESP contents, and then appending a
+   new clear text IP header to the now encrypted Encapsulating Security
+   Payload. The encapsulating security approach used by ESP can noticeably
+   impact network performance in participating systems, but use of ESP should
+   not adversely impact routers or other intermediate systems that are not
+   participating in the particular ESP association. Use of encryption will also
+   increase the communication latency.
+  </p>
+  <p>
+   Several key management systems will be usable with AH and ESP, including
+   manual key configuration. Both of these IP mechanisms can be used to
+   increase the security provided by firewalls. Finally, the Security
+   Parameters Indexes (SPIs) used in the IP security mechanisms, are
+   receiver-oriented, making them well suited for the use in IP multicast (e.g.
+   MBone).
+  </p>
+  <h2>
+   <a name="SECTION00082000000000000000">8.2 VPN</a>
+  </h2>
+  <p>
+   Big vendors like [<a href="#intel">INTEL98</a>] see the Virtual Private
+   Network Technology (VPN Technology) as a first step towards building
+   Internet-based networking in general by enabling secure, private networking
+   among LANs at multiple company sites. The reasons for implementing this
+   technology are not only security requirements, but also include cost,
+   quality of service and bandwidth issues.
+  </p>
+  <p>
+   Virtual Private Networks (VPNs) are implemented by encryption software used
+   between a firewall or router and communicating entities. Because VPN
+   software typically operates at the network level, all application protocols
+   like ``FTP'', ``HTTP'', or ``SMTP are encrypted transparently. The
+   firewall/router with VPN software simultaneously provides security services
+   and encryption. LAN protocol traffic is encrypted and encapsulated in the
+   TCP/IP protocol over the tunnel and then re-encapsulated in the WAN protocol
+   being used on the real WAN link.
+  </p>
+  <p>
+   VPNs will play an important role in the future by enabling secure
+   communication and co-operation in and between organizations even over
+   unsecure networks like Internet.
+  </p>
+  <h2>
+   <a name="SECTION00083000000000000000">8.3 Simple Key-Management for Internet
+   Protocols (SKIP)</a>
+  </h2>
+  <p>
+   ``Simple Key-Management for Internet Protocols'' was developed by Sun
+   Microsystems, but the patents held by Sun were placed into the public
+   domain, so SKIP became an open standard.
+  </p>
+  <p>
+   SKIP handles security over the network layer, what makes the encryption to
+   be completely invisible for the applications and the user. All packets
+   between two hosts will be encrypted. The IP header of SKIP packets have a
+   protocol header field of 57, while TCP got 6 or UDP got 17 assigned by the
+   Internet Assigned Numbers Authority (IANA). The encrypted datagrams and the
+   SKIP header, preceded by an IP header, can be routed through every standard
+   IP network.
+  </p>
+  <p>
+   The main goal of SKIP is to implement a usable key management. Each host
+   generates his own Diffie-Hellman (see [<a href="#diffie">DIFFIE</a>]) key
+   pair and gets the public key certified by a certification authority (CA).
+  </p>
+  <p>
+   Both hosts compute the same shared secret, using only the information in
+   their own secret and the other side's public key. This shared secret will
+   not be used to encr