#import "@preview/glossarium:0.5.6": *

= Technischer Hintergrund



Die Operation einer #gls("puf") beinhaltet zwei verschiedene Arbeitsschritte: *Enrollment* und *Reconstruction*.\
Als Enrollment wird die erste Messung des Verhaltens des Schaltkreises bezeichnet.
Diese kann direkt in der Fertigungsstätte des Schaltkreises durchgeführt werden.
Da bis zu diesem Punkt noch keine andere Messung mit dem Schaltkreis durchgeführt worden ist, können die Ergebnisse aus diesem Schritt als unveränderlichen Referenzwert für das Geheimnis des Schaltkreises angenommen werden.
Anschließend wird aus den Messergebnissen mittels eines Quantisierungsprozesses ein geheimer Schlüssel generiert.\
Reconstruction bezeichnet jede weitere Messung des Verhaltens des Schaltkreises.
Da Messfehler in diesem Schritt nicht ausgeschlossen werden können, ist davon auszugehen, dass das hier gemessene Geheimnis nicht mit dem Referenz-Geheimnis bzw. dem geheimen Schlüssel nach der Enrollment Phase vollständig übereinstimmt.
Die Anzahl der Bits, die zwischen diesen beiden Schlüsseln verschieden ist, ist als Bitfehlerrate definiert.
Zusätzlich ist davon auszugehen, dass die Messwerte einer #gls("puf") 
normalverteilt und mittelwertfrei sind.

Die Ausgangslage der Praxis stellt die Bachelorarbeit "Towards Efficient Helper Data Algorithms for Multi-Bit PUF Quantization" da.
Konkret wurden in der Arbeit zwei verschiedene Methoden zur Verbesserung der Bitfehlerrate nach der Reconstruction Phase für Quantisierungen höherer Ordnung analyisert.
Die erste Methode beschreibt eine Verallgemeinerung der #gls("tmhdt") @tmhd1.
Mit Hilfe von #gls("tmhdt") werden zwei verschiedene Quantisiererfunktionen definiert. Während der Enrollment Phase wird anschließend entschieden, welche der beiden Funktionen ein verlässlicheres Ergebnis bei wiederholten Messergebnissen hervorrufen wird.
Die #gls("smhdt") verallgemeinert dieses Konzept auf die Quantisierung mit mehr als einem Bit @smhd.
Da mit der Publikation von Fischer @smhd bereits eine mögliche Implementation von #gls("smhdt") vorgestellt wurde, bildet die in der Arbeit vorgelegte Implementierung eine Basis um die Performanz der zweiten vorgestellten Methode einordnen zu können. 

Im zweiten Teil der Arbeit wurde ein neuer Ansatz zur Verbesserung der Fehlerrate implementiert und genauer analysiert.
Die Grundlage der neuen Methode ergibt sich aus der natürlichen Beschaffenheit der Standardnormalverteilung.
Da der Erwartungswert einer mittelwertfreien Normalverteilung bei $0$ liegt und ein Vorzeichen-basierter 1-bit Quantisierer seine Entscheidungsgrenze ebenfalls bei $0$ definiert, sind die Messwerte welche nahe der $0$ liegen aufgrund ihrer inhärenten Messschwankungen dazu anfällig, bei wiederholten Messungen und Quantisierungen unterschiedliche Ergebnisse zu verursachen.

Dieses Problem wird in @bach_original_1 grafisch verdeutlicht.

#figure(
  include("../graphics/background/sign-based-overlay.typ"), 
  caption: [1-bit Quantisierer mit normalverteilten Eingangswerten]
)<bach_original_1>

Für die Umsetzung der neuen Methode werden gewichtete Summen aus mindestens 3 Eingangswerten -- wie Ring-Oszillator-Differenzen -- gebildet. Die Vorfaktoren der Summanden sind festgelegt als $plus.minus 1$, wobei die jeweiligen Vorzeichen als Helperdaten abgespeichert werden.

$ f(bold(x), bold(h)) = h_1 x_1 + h_2 x_2 + h_3 x_3 $<eq:weighted_sum>

@eq:weighted_sum zeigt die Struktur einer Funktion mit drei Eingangswerten und ihrer jeweiligen Gewichtung durch $h_1$, $h_2$ und $h_3$.
Diese Vorfaktoren sollen nun so gewählt werden, dass die Werte der resultierenden Summen einen möglichst großen Abstand zu ihrer jeweils nächsten Quantisierergrenze haben.

Eine Lösung für den 1-bit Fall der in @bach_original_1 dargestellt wird, ist die betragsmäßige Maximierung der Werte der gewichteten Summen.

#figure(
  include("../graphics/background/z_distribution.typ"),
  caption: [Darstellung der optimierten Eingangswerte]
)<fig:bach_1_optimal>

Mathematisch lässt sich dies durch die Maximierung des Betrags der Funktion aus @eq:weighted_sum herleiten:

$ max_(h_1, h_2, h_3) |f(bold(x), bold(h))|  $<eq:1bit_opt>

@eq:1bit_opt definiert hiermit die Funktion zur Optimierung der Eingangwerte vor dem Quantisierer für den 1-bit Fall.
Jedoch wird die Definition dieser Funktion für eine Vorbereitung der Quantisierung höherer Ordnung um einiges komplexer. 

#figure(
  include("../graphics/background/two-bit-enroll.typ"),
  caption: [2-bit Quantisierer Funktion]
)<fig:2bit_quant>

Anstelle einer Quantisierung basierend auf dem Vorzeichen des Eingangswertes, wie in @bach_original_1 ist bei einer Quantisierung höherer Ordnung eine mehrstufige Entscheidungsfunktion mit mehreren Grenzen wie in @fig:2bit_quant notwendig. 
Es stellt sich nun die Frage, wie man die Grenzen $g_1$ und $g_2$ aus @fig:2bit_quant wählt, um die Optimierung des 1-bit Falles aus @fig:bach_1_optimal auf Fälle höherer Bit-Ordnung zu übertragen.

Die ersten Ansätze der Bachelorarbeit beinhalteten zunächst ein naives Raten der möglichen Grenzen für die Quantisierung basierend auf einer Schätzung der Form der resultierenden Verteilung.
Zunächst wurde ein globales Optimierungsverfahren untersucht, bei dem nach einer ersten Optimierung nach der maximalen Distanz zu allen Grenzen, neue Grenzen basierend auf einer empirischen kumulativen Wahrscheinlichkeitsdichtefunktion definiert werden. Dieser Prozess wurde anschließend über mehrere Iterationen hinweg durchgeführt, um ein stabiles Ergebnis Wahrscheinlichkeitsverteilungen zu erhalten. 

#figure(
grid(
  columns: (1fr, 1fr),
  rows: (2),
  [//#figure(
  #image("../graphics/background/bach/instability/frame_1.png")
  #v(-2em)
  //)
  Iteration 1],
  [//#figure(
  #image("../graphics/background/bach/instability/frame_18.png")
  #v(-2em)
  //)
  Iteration 18],
),
  caption: [Wahrscheinlichkeitsverteilungen für verschiedene Iterationen]
)<fig:bach_instability>

@fig:bach_instability zeigt die Ergebnisse dieses iterativen Prozesses zu verschiedenen Zeitpunkten.
Wegen des sehr instabilen Verhaltens der Verteilungen auch über mehrere Iterationen hinweg wurde eine zweite, konvergierende Methode untersucht.

Anstelle die Gewichtungen zu wählen, dass die resultierende Summe möglichst weit weg von allen Grenzen liegt, sollen die Summen möglichst genau die Mitten zwischen den Grenzen treffen und so implizit möglichst weit weg von den Grenzen liegen. 
Diese Methode hatte zwar den Vorteil, dass die hervorgehenden Verteilungen zu einer festen Verteilung konvergieren, jedoch zeigte eine spätere Analyse keine signifikante Verbesserung der Bitfehlerrate auf.

Ziel der Ingenieurspraxis ist nun, eine mögliche Lösung für das Problem der Konvergenz dieses Ansatzes zu finden und mit anderen Methoden zur Verbesserung der Bitfehlerrate zu vergleichen. 
