A

p

e

r

s

o

n

a

l

B

l

o

g

Reactions to Meltdown and Spectre

Meltdown and Spectre

A recent illustration* by CommitStrip got the point. Some researchers discovered a huge leak in the hardware which is accompaning our daily life. Many products are effected. This is a collection of some reactions and voices until now:

15.11.2017

26.12.2017

  • Intel: Intel Management Engine Critical Firmware Update (Intel-SA-00086)

03.01.2018

04.01.2018

  • TU Graz: Researchers discover serious security vulnerabilities
  • Alan Cox: Advice
  • LLVM: Introduce the “retpoline” x86 mitigation technique
  • Steinar H. Gunderson: Loose threads about Spectre mitigation

05.01.2018

  • Anders Fogh: Behind the scenes of a bug collision
  • Raspberry Pi: Why Raspberry Pi isn’t vulnerable to Spectre or Meltdown
  • Apple: About speculative execution vulnerabilities in ARM-based and Intel CPUs
  • Amazon: Processor Speculative Execution Research Disclosure

06.01.2018

In addition my laptop has reached the end of life and is no longer supported by the manufacturer and it looks like there are many systems they have the same problem. Many people don’t even know they have a problem. We all can only apply software patches if they’re reaching us. Holders of most smartphones just bought a buggy device. The dream of multi-user-tasking devices got disruptions. Actually, the whole idea of memory protection based on the hardware protection mechanism which separates the kernel space from the userspace.

If you’re still confused by the events which are shaking the IT world so much and do not understand why action is required maybe the XKCD can help.

*) Published with friendly permissions on a non-commercial blog.

Meltdown and Spectre are examples of what happens when we reason about security in the context of that abstraction, and then encounter minor discrepancies between the abstraction and reality.

Eben Upton

Papercraft Car

Papercraft Car

This is the design of a papercraft car based on a atmega microcontroller.

Features:

  • Automatic lights system
  • Forward ultrasonic radar
  • Inertial navigation system
  • Serial debug output
  • In-system programming

Future improvements:

CAN bus or I2C bus to exchange information between all the car components. A more robust and good looking design. The posibility to give wireless instuctions. All this this will increase the size of the car too.

Fotowiderstand

Light Dependent Resistor

Ich stehe vor der Herausforderung, dass ich einen Mikrocontroller (Atmega8) über die umgebenen Lichtverhältnisse informieren möchte und dafür auch schon einen licht-abhängigen Widerstand habe (A 906011). Dieser Widerstand ändert seinen Wert in Abhängekit des Umgebungslichtes. Dabei bedeutet viel Licht einen kleiner Widerstandswert und umgekehrt wenig Licht oder gar Dunkelheit einen großen Widerstand. Die genauen Werte ergeben sich aus dem Datenblatt.

Jetzt geht es um den Anschluss am Mikrocontroller. Dieser verfügt über einen Analog-Digital-Wandler und kann in Abhängigkeit einer Referenzspannung analoge Spannungswerte auf einen 10 bit großen nummerischen Wert abbilden (10 bit bedeutet 210 = 1024. Also ein Zahlenbereich von 0 bis 1023).

Damit an dem licht-abhängigen Widerstand eine Spannung abfällt, muss dieser in einfacher Weise zu einem Spannungsteiler verschaltet werde (siehe Abbildung).

Formal stellt lässt sich die Situation durch zwei Formeln beschreiben. Die Maschenregel und das Ohmsche Gesetz:

$ U = \oint_G E\, ds = 0 $ oder $ U – U_1 – U_2 = 0 $ oder $ U = U_1 + U_2 $

\begin{equation}\label{eq:ohm} U = R_1 \cdot I + R_2 \cdot I \Leftrightarrow U = (R_1 + R_2) \cdot I \Leftrightarrow I = \frac{U}{R_1 + R_2}\end{equation}

$ U_2 $ ist hier die Spannung am licht-abhängigen Widerstand:

$ U_2 = R_2 \cdot I \quad\hbox{mit}\quad I = \frac{U}{R_1 + R_2} \quad\hbox{aus (\ref{eq:ohm})} $

\begin{equation}\label{eq:ldr} U_2 = U \cdot \frac{R_2}{R_2 + R_1}\end{equation}

Damit ist die Spannung am licht-abhängigen Widerstand gegeben. Wie schon in der Einleitung beschrieben ändert dieser Widerstand seinen Wert $ R_2 $ in Abhängigkeit des Umgebungslichtes. Dabei nimmt der Wert zwei Extrema an:

$ R_i $ bei besonders viel Licht und $ R_x $ bei besonders wenig Licht.

Ziel ist jetzt den Widerstand $ R_1 $ so zu dimensionieren, dass am licht-abhängigen Widerstand ein möglichst großes Spannungsspektrum abfällt. Dazu werden die Werte für $ R_i \hbox{ und } R_x \hbox{ für } R_2 \hbox{ in (\ref{eq:ldr})} $ eingesetzt und die Differenzspannung weiter diskutiert.

\begin{equation}\Delta U(R_1) = U \cdot \frac{R_x}{R_x + R_1} – U \cdot \frac{R_i}{R_i + R_1}\end{equation}

Jetzt wird die erste Ableitung gebildet und gleich Null gesetzt, um die maximale Differenzspannung ermitteln zu können:

\begin{equation}\frac{d\Delta U(R_1)}{dR_1} = U \cdot \frac{R_i}{(R_i + R_1)^2} - \frac{R_x}{(R_x + R_1)^2}\end{equation}

Weiter wird die Ableitung gleich Null gesetzt: $ \frac{d\Delta U(R_1)}{dR_1} \overset{!}{=} 0 $. Da ein Produkt immer Null ist, wenn einer der Faktoren Null ist und die Spannung $ U $ per Definition größer als Null ist, wird $ U $ hier nicht mehr gebraucht:

\begin{equation}R_i \cdot (R_x + R_1)^2 = R_x \cdot (R_i + R_1)^2\end{equation}

Ausmultiplizieren und $ R_1 $ ausklammern gibt weiter:

\begin{equation}R_1^2 = \frac{R_i \cdot R_x^2 - R_x \cdot R_i^2}{R_x - R_i}\end{equation}

Und da $ R_x > R_i > 0 $ angenommen wird, steht unter der Wurzel immer etwas positives. Und auch das Ergebnis der Wurzel ist nur positiv sinnvoll:

\begin{equation}R_1 = \sqrt{R_x \cdot \frac{R_i \cdot R_x - R_i^2}{R_x – R_i}}\end{equation}

Für meinen Fall beträgt der Widerstand bei maximalen Lichteinfall $ 3,5k\Omega $ und bei Dunkelheit $ 180k\Omega $. Damit ist für $ R_1 = 25k\Omega $ gegeben. Die Differenzspannung beträgt $ \Delta U = 3,78 V $, die minimale Spannung beträgt $ U_i = 0,61 V $ und die maximale Spannung beträgt $ U_x = 4,39 V $.

Im Analog-Digital-Wandler des Mikrocontrollers werden die analogen Werte nummerisch abgebildet:

\begin{equation}ADC = \frac{U_i}{U}\cdot 1024\quad\hbox{und}\quad ADC = \frac{U_x}{U}\cdot 1024\end{equation}

Es ergibt sich ein Wertebereich von 125 bis 900 von viel Licht bis wenig Licht. Die Betriebsspannung von $ 5V $ für den Mikrocontroller entspricht bei mir auch der Referenzspannung des Analog-Digital-Wandlers.

Da es bei meiner Anwendung nicht um hohe Präzision geht, kann ich den Analog-Digital-Wandlers Left-Adjusted betreiben werden und auf die unteren 2 bit verzichten.

Lichtdose

Lichtdose

Wieder einmal eine kleine Spielerei mit Leuchtdioden. Dieses mal ganz ohne Mikrocontroller, eine kleine Fingerübung um mit den Bausteinen 74HC4017 und NE555 warm zu werden.

In eine leere Blechdose werden Löcher gebohrt und Leuchtdioden in diesen mit Heißkleber fixiert. Eine Steuereinheit innerhalb der Dose sorgt für abwechselt aufleuchtende Dioden.

Die Schaltung ist für 3V ausgelegt. Es darf aber auch eine etwas größere Potentialdifferenz sein. Im Zweifel die Datenblätter lesen. Bei 3V eignet sich eine Knopfzelle als Spannungsquelle. Etwa CR2032. Diese sollte auch noch Platzt in der Dose haben.

Etwas dokumentiert habe ich das Projekt auch. Hier ist ein Schema wie die LED’s angesteuert werden und ein Abbild der Logikeinheit auf einer Lochrasterplatine:

Lichtdose