HTTP Public Key Pinning (HPKP)

Die IETF (Internet Engineering Task Force) steht anscheinen kurz vor der Verabschiedung von HTTP Public Key Pinning als weiteren Standard. Dieser Ansatz soll Webseitenbetreibern die Möglichkeit bieten, zu verhindern, dass ein zweites gültiges SSL Zertifikat anstelle des originalen an Webseitenbesucher ausgeliefert werden kann und der Browser der Clients dies nicht erkennt. Dies ist aktuell noch möglich, da für eine Domain von jeder gültigen CA ein Zertifikat für eine Webseite ausgestellt werde kann und dieses auch von allen Clients als gültig anerkannt wird, solange die Clients der Root CA vertrauen.

Durch das Key Pinning kann der Webseitenbetreiber einen HTTP Header mit ausliefern, welcher den gehashten Wert von Zertifkaten aus der Zertifizierungskette beinhaltet. Auf welche Zertifikate hierbei in Form von Hashes verwiesen wird ist dabei egal. Es ist also möglich, dass Zertifikat der Root-CA sowie das eigene Zertifikat anzugeben. Somit ist ein Client nach dem einmalgen Besuch einer Webseite über HTTPS also in der Lage zu erkennen, ob die Zertifikate noch mit denen, des vorherigen Besuches übereinstimmen. Durch einen Alerungswert, kann der Webseitenbetreiber die maximale Laufzeit dieser Cache-Werte festlegen.

Ein Beispiel für einen Key-Pinning Header ist:

<IfModule mod_headers.c>
   Header always set Public-Key-Pins "pin-sha256=\"kb6xLprt35abNnSn74my4Dkfya9arbk5zN5a60YzuqE=\"; pin-sha256=\"Q7TFaToJQRkpKkHoU23mFcGODWeaUM6tpYw5A/NJQYg=\"; max-age=300; includeSubDomains"
</IfModule>

Nachfolgend ein paar Links, welche den Einstieg in das Thema erleichtern.

Wie der Header erstellt werden kann, beschreiben folgende Seiten bzw. Tools

Ob Webbrowser HPKP wirklich unterstützen, kann über nachfolgenden Link getestet werden:

Leider gibt es noch keine einfache Möglichkeit, den HPKP Header einer Webseite zu validieren. Dieser Punkt wurde bei Mozilla bereits diskutiert. Es gibt aber bereits Ansätze auf Github für eine entsprechende Lösung. Man kann jedoch durch einen Sniffer prüfen, ob der entsprechende Header vom Webserver ausgeliefert wird. Alternativ auch über die bash

$ curl -I https://o-o-s.de
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2015 21:00:29 GMT
Server: Apache
X-Pingback: https://o-o-s.de/xmlrpc.php
Strict-Transport-Security: max-age=604800;
Public-Key-Pins: pin-sha256="Q7TFaToJQRkpKkHoU23mFcGODWeaUM6tpYw5A/NJQYg="; pin-sha256="kb6xLprt35abNnSn74my4Dkfya9arbk5zN5a60YzuqE="; max-age=604800
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

Mit Firefox Version 35 hat Mozilla die Auswertung des Key Pinnings von HTTPS Seiten eingeüheingeführt. Diese Funktion war bisher lediglich Chrome vorbehalten.

Update vom 31.01.2015

Ich habe gerade bei ssllabs.com gesehen, dass dort "Public Key Pinning (HPKP)" mit getestet wird. Es lässt sich also doch relati sehr einfach prüfen.

Exchange 2010: alten Server aus Konsole entfernen

del "%userprofile%\AppData\Roaming\Microsoft\MMC\Exchange Management Console"
reg delete HKCU\Software\Microsoft\Exchangeserver\v14\AdminTools\NodeStructureSet
tings

Windows 8: Treiber und Updates in Installations-Medium integrieren

Wer Windows 8 bzw. 8.1 öfters installiert, freut sich nicht immer über die anschließenden Updates, welche einer OS-Installation auf dem Fuße folgen. Diese lassen sich jedoch relativ einfach in die Installation (install.wmi) integrieren, genauso wie eventuelle Treiber. Voraussetzung für mein nachfolgenden Beispiel ist, dass für die Installation ein USB-Stick verwendet wird, der wie hier beschrieben eingerichtet werden kann.

Um Updates und Treiber zu integrieren, muss zuerst die Kommandozeile mit Administratorrechten gestartet werden. Anschließend werden, falls noch vorhanden, Mount-Rest aufgeräumt. Dieser Schritt kann beim ersten Mal übersprungen weden.

Weiterlesen

Windows 8.(1): in VHD-Disk inkl. diff-Disk installieren (SteadyState)

Jeder, der seinen Rechner nicht nur zum Arbeiten verwendet, probiert über kurz oder lang auch mal Dinge an seinem Rechner aus, die sich später evtl. als nicht sehr hilfreich herausstellen. Für Windows 7 gibt es eine Anleitung, wie man einen Rechner in eine virtuelle Festplatte installiert, um anschließend mit einer differencing disk zu arbeiten. Dies ermöglicht es, jederzeit zum Ursprungszustand zurück zu kehren und das binnen Sekunden. Gefallen hat mir an der für Windows 7 beschriebenen Lösungen, dass man die Änderungen auf der differencing disk mittels WinPE auch jederzeit in das Basis-System überführen kann. Leider lässt sich dieses Vorgehen jedoch nicht 1:1 auf Windows 8 übertragen. Daher habe ich mir mal die Mühe gemacht, die ursprüngliche Anleitung für Windows 8.(1) anzupassen.

Das Ziel ist, wie gesagt, Windows in eine virtuelle Festplatte zu installieren (c:\win8.vhd), um anschließend Änderungen nur noch in die differencing disk (c:\temp.vhd) fließen zu lassen. Mittels WinPE können die Änderungen (c:\temp.vhd) jedoch relativ einfach in das Basis-Abbild (c:\win8.vhd) übernommen werden.

Im Verlauf meiner Anleitung tauchen mehrere GUIs für die einzelen Boot-Einträge auf. Einfachheitshalber empfehle ich, die entsprechenden IDs parallel zu notieren, da diese mind. noch immer ein zweites Mal gebraucht werden. An der jeweiligen Stelle werden die erfoderlichen GUIDs dann durch {GUID-Name} benannt.

  • Win8Temp-GUID:
  • Win8-GUID:
  • RAMDISK-GUID:
  • WinPE-GUID:

Da in meiner Anleitung einige Tätigkeiten auf der zu installierenden Maschine (Test-PC) und einige auf einem anderen Windows 8 System (Arbeits-PC) durchgeführt werden, steht im Titel jedes Schrittes, auf welcher Maschine ich diese durchgeführt habe.

Weiterlesen

Citrix: Verzögerte Mausbewegungen (Virtual Desktop) in einer Xen Desktop Umgebung

Wenn in einem Virtual Desktop die Mausbewegungen verzögert dargestellt werden, so lässt sich dies über eine GPO in der Registry korrigieren.
Folgende Werte müssen dahingehend angepasst werden (siehe Artikel).

Set the below values to blank. All of the values are REG_EXPAND_SZ

HKCU\Control Panel\Cursors
AppStarting
Arrow
Crosshair
Hand
Help
IBeam
No
NWPen
SizeAll
SizeNEoSW
SizeNSC
SizeNWSE
SizeWE
UpArrow
Wait

Set “Scheme Source” REG_DWORD to 0.
 
Execution time 0.15618705749512 seconds