Sunday, October 7, 2012

Did a book inspire your choice of a profession?

At the last Intel Developer Forum in San Francisco, Intel's futurist David Brian Johnson talked about the Tomorrow Projects http://www.tomorrow-projects.com/.  I downloaded one of the related texts from David's works, namely Science Fiction Prototyping.  The book talks about Science Fiction and how it contributes the the "future casting" efforts.  The quote that I took away from the book that inspired this blog entry, though, was how many of the pioneers in aeronautics were inspired by the science fiction of Jules Verne.  For me, the book that inspired my pursuit into electrical engineering, and then the computing sciences, wasn't from the genre of science fiction so much as science fact.  Specifically, I recall Norbert Wiener's Cybernetics as the text which fused an information theoretic view of the world, including control theory, as an inspiration.
I would be curious whether others had a specific book or author that inspired their professional pursuits.

Starting with a scientific degree doesn't necessarily guarantee a successful engineering career, either.  In fact, one of the best programmers with whom I've had the pleasure to work during my early career didn't even have a degree in computer science or engineering.  Instead, he was an ex-Marine who afterward joined the Trappist order in Gethsemani http://www.monks.org/ for ten years, studying Heidegger's Being and Time while observing the silence and working in the fields. After leaving the order he returned to Houston and picked up a bachelors degree in philosophy.

What does philosophy mean for tech?  Consider the fact that most smart phones of 2012 can hold the equivalent of the Library of Alexandria.  But what do most most people use their devices for? Cat watching, such as http://www.youtube.com/watch?v=jI-kpVh6e1U&feature=relmfu and http://www.lolcats.com/.  Why not download from http://www.gutenberg.org/? As such, studying the philosophy and the meaning of existence doesn't sound like such a bad idea.

Now go back to work and/or read a good book.

PS
From the earlier blogs, here's a quick update.  The SF IDF presentation has an audio link at http://intelstudios.edgesuite.net/idf/2012/sf/aep/EFIS003/EFIS003.html.   And for the http://pdxlinux.org/ talk, the presentation is posted to https://docs.google.com/open?id=0BxgB4JDywk3MbENUTVdqZkZaUmM   and watch the pdx website for the video to be posted.

Thursday, September 20, 2012

Late September mumbling

I'm back to the (still) sunny Pacific Northwest from the Intel Developer Forum (IDF) in San Francisco.  Roy Hopkins & I presented on UEFI and McAfee EEPC.  The presentation can be found at https://intel.activeevents.com/sf12/scheduler/catalog.do "Intel and McAfee: Hardening and Harnessing the Secure Platform" session EFIS003.  As an "Advanced" course, we stayed away from generic feature overviews and spent most time in design issues and code examples, including how a key logger could afflict a pre-UEFI Secure Boot system.   Some best practices for system design and coding were reviewed with the goal to follow-up w/ a document detailing this advocacy for posting at www.tianocore.org.   

Looks like I was premature calling September the end of the speaking circuit.   I will present at the Seattle Tech Forum on 10/17 along with speakers from Citrix and Cloudant on "Cases of Network Technology."   More details can be found at http://www.meetup.com/Sea-Tech-Forum/events/36852802/.  This meetup goes out to about 20k technologists in the Seattle area, so the subset of that list who show up in person should prove interesting. During my session, I will discuss the state of the art in UEFI pre-OS networking and security.

In addition, I will travel to down to the backyard of Intel, namely the Portland area, to talk about UEFI Secure Boot.


      October 4th, 2012

      UEFI Secure Boot and Open Source. 
      It's not a 'general war against computation.' 
 


More details can be found at http://pdxlinux.org and http://calagator.org/events/1250462851.   Judging by some direct messages from some of the possible attendees, it should prove to be an 'animated' meeting.

Speaking of UEFI Secure Boot, the Register picked up the posting http://www.itsec.it/2012/09/18/uefi-technology-say-hello-to-the-windows-8-bootkit.   Akin to many earlier presentations, from John Heasman in BlackHat 2007 to Loukas K's BlackHat 2012 talk, they all conclude with the sentiment that UEFI image signing is a good idea.  For Heasman, his advocacy antedated UEFI Secure Boot, but Loukas K and the ITSEC posting all advocate UEFI Secure Boot as part of their mitigation recommendations to address attacks against arbitrary UEFI code extensibility.

The dialectic isn't too complicated, IMHO, once the case is plainly stated.  Here's the Q/A I'd like to have with the alarmists on this topic-
Question: What is UEFI?
Answer:  UEFI stands for the “Unified Extensible Firmware Interface,” a software interface to the platform for booting operating systems such as Linux and Microsoft Windows. Along with the Advanced Configuration and Power Interface (ACPI), UEFI abstracts away many of the platform hardware details from the operating system.
UEFI software interfaces are codified in the UEFI Specification, which is presently at version 2.3.1c. That specification is owned and evolved by the UEFI Forum, an industry group that includes OS vendors (OSVs), independent hardware vendors (IHVs), independent BIOS vendors (IBVs), original equipment manufacturers (OEMs), and independent software vendors (ISVs).
Question: What is UEFI Secure Boot?
Answer:   UEFI Secure Boot entails a set of technology elements that apply policy for loading UEFI executables, including applications and drivers. These elements include the Platform Key (PK), the Key Exchange Key (KEK), the allowed database (db), and the prohibited database (dbx). To provide access control, these objects are stored in something called an authenticated variable, which is a class of UEFI variable that needs to be cryptographically signed to update the contents. These keys contain policy about who can update things and what code can run.
UEFI is all about loading images, the most important being the OS loader. With UEFI Secure Boot, the UEFI images are signed using Authenticode, or an embedded signature format inside of the PE/COFF executable. Authenticode and PE/COFF are the same cryptographic signature and image encoding used by Microsoft Windows.
Question: What was the world like before UEFI Secure Boot?
Answer: Prior to UEFI Secure Boot, the UEFI firmware would load any well-formed UEFI executable found in an adapter card, the EFI System Partition on the disk, or from across the network. With the addition of UEFI Secure Boot, the UEFI firmware now will assess the UEFI executable to see if it “meets policy.” This policy includes if the image is cryptographically signed used asymmetric cryptography such as public/private keys, whether the signature verifies to another key in the allowed list, and whether it’s on the prohibited list.
In a sense, UEFI Secure Boot is a simple form of managing and enforcing a white list of “good” and “bad” UEFI drivers and applications. This allows the system board vendor or owner and other authorized parties to manage which software publishers can execute content on a platform.
Question: Why is it important to the industry?
Answer: At the highest level, security is an important facet of platform deployment, along with compatibility, usability, performance, power and other capabilities. In the context of UEFI, Secure Boot helps support the general roll-out and mass deployment of UEFI-based technology in the market. A platform owner can leverage UEFI to defend the platform and operating systems from malware and other software attacks.
To see why this is important, recall that the “E” in UEFI stands for “extensibility.” Extensibility acts as a two-edged knife: on the bright edge of extensibility, a UEFI-conforming platform can “just work” with executables that conform to the construction and API rules of the UEFI specification. This allows for shrink-wrap operating system vendors to write one loader (Windows loader, Linux loader), or an IHV one boot driver (NIC, GFX, Storage adapter), or an ISV pre-boot application (diagnostic/provisioning), for a given micro architecture (Itanium, IA32, x64, ARM). 
On the dark edge of the UEFI knife, a permissive load policy of “any UEFI executable” as featured in the UEFI specification circa 2006 might allow bad actors to add and run content on the platform. Since UEFI executables can be introduced via a pluggable PCI card, a possibly hostile network, or from a disk that UEFI cannot protect after booting to an OS, there’s a rich set of attack vectors. This class of attack against the boot process is known in the security community as a “boot kit.” Such kits for both UEFI-based and PC/AT BIOSs exist today. And, as operating systems and hypervisors grow increasingly robust, malware and viruses are moving earlier in the boot and into the platform.   UEFI Secure Boot provides a policy based control for the Extensible code elements within a UEFI pre-OS environment.
Question: Is this locking out the user and a salvo in the “war against computation” http://www.softwarefreedom.org/blog/2012/jan/04/doctorow-ccc-keynote/?
Answer: No.   The UEFI Specification only reads on the mechanism.   End-user controls and choice of operating system, such as enabled via Custom Mode screens to add additional keys, are provided in UEFI-based products.   UEFI Secure Boot is not an ‘attack’ on the compute ecosystem so much as a ‘prevention’ of wounds on the compute ecosystem that the dark side of UEFI’s extensibility may inflict.
For more information on UEFI Secure Boot, see
Chapter 27 of the UEFI 2.3.1c specification www.uefi.org

Magnus Nystrom, Martin Nicholes, Vincent Zimmer, "UEFI Networking and Pre-OS Security," in Intel Technology Journal - UEFI Today:  Boostrapping the Continuum, Volume 15, Issue 1, pp. 80-101, October 2011, ISBN 978-1-934053-43-0, ISSN 1535-864X  

http://www.intel.com/content/www/us/en/research/intel-technology-journal/2011-volume-15-issue-01-intel-technology-journal.html





Friday, August 31, 2012

Training?

I received this mail recently


From: Anders Amundson [mailto:anders.amundson@techstream.com]
Sent: Thursday, August 23, 2012 1:05 PM
To: Zimmer, Vincent
Subject: UEFI, BIOS, Tiano, and PC Architecture Training

Dear Vincent,

The transition to UEFI is happening fast.

Microsoft’s announcement that new computers shipping with Windows 8 pre-installed must be certified in UEFI mode has made the industry move fast to migrate all platforms to this firmware architecture. Today there are both ARM- and Intel Atom-based smartphones on the market that use UEFI, and in the x86 space products ranging from laptops to high-end servers now expose their UEFI interface.

If you have started porting your products, including development-, testing-, validation-, and integration-tools, as well as your custom pre-OS applications, to run on UEFI you are on your way to take advantage of this migration.

If you still are focused on legacy BIOS, or other boot firmware, it is time to start the migration, and it is getting urgent.

In either case Techstream® can help you get to UEFI faster and easier.

We have the experience: Over the last 15 years, we have delivered hundreds of Tiano, UEFI PI, UEFI architecture, and legacy BIOS courses all over the world, and to virtually all major players in the industry.

Our current firmware-related offerings are:

Tiano and UEFI Architecture. Most UEFI implementations on x86-64, ARM, and Itanium use the highly flexible, modular, and platform independent, architecture defined by the UEFI Forum’s PI (Platform Initialization) Specification, based on the early stages of Intel’s Tiano architecture.

This course takes you through all of the UEFI PI’s and Tiano’s phases and interfaces. For the full outline, please go to www.techstream.com/209.htm.

I think that I'll pass.


Vincent

Sunday, August 26, 2012

One conference down, one to go....

Back fromToorCamp, 2012.   To get a sense of the event, check out the closing video  http://www.youtube.com/watch?v=Q7IeJ0HGK6o.  Here are a few pictures of the camp I snapped on my phone, including the dome in the distance.

The camp site was right next to the beach, too.   Neah Bay is the northwest-most point of the continental US, so the Pacific Ocean formed the back yard for the talk.



The main dome hosted the various talks.   Here's a closer view, including the podium in the back:
I delivered my talk on firmware security on Thursday afternoon.   A link to my foils for
“UEFI Secure Boot and challenges in platform firmware” can be found at https://docs.google.com/open?id=0BxgB4JDywk3MWnM0WmNXMHBTcm8.   The other talks were a mix of information security and the maker movement leading up to my presentation, so I treated my discussion of firmware security alongside a a review of the UDK2010 open source implementation of UEFI Secure Boot and the user controls enabled via Custom Mode on IA32 machines.   Insightful questions both during the talk and with the researchers afterward.

Other interesting talks included Dan Griffin's discussion on TPM's and UEFI, which largely focused on measured boot from the operating system perspective.  This talk was a shortened version of his DEFCON talk 
https://docs.google.com/file/d/0B7n3jaMQDSNCeDJBd2tnRGIxbDA/edit#.    Dan Kaminsky also spoke about all things security, including weaknesses of random number generators http://dankaminsky.com/2012/08/15/dakarand/.  Other interesting perspectives from DanK included how type safe language are not the security panacea since different machine on the network are written in different languages, so all communications must convert data to strings.  And it is in these strings that attacks, injections, and vulnerabilities occur.   Hearing both Seattle Dan's speak alone was worth the trip.

On top of the great info-sec talks, on Friday I had the opportunity to attend a session by George Dyson http://en.wikipedia.org/wiki/George_Dyson_(science_historian) on Project Orion http://en.wikipedia.org/wiki/Project_Orion_(nuclear_propulsion)



And speak with George afterward.
I was as much inspired by his discussions of Orion, my read of his recent book on the history of the computer http://www.amazon.com/Turings-Cathedral-Origins-Digital-Universe/dp/0375422773, and of course, kayaks http://www.amazon.com/Baidarka-Kayak-George-Dyson/dp/088240315X/ref=sr_1_4?s=books&ie=UTF8&qid=1346014068&sr=1-4.   Regrettably, the only hard copy of a book related to  George I brought along to the camp was the book 'about' George and his father Freeman http://en.wikipedia.org/wiki/Freeman_Dyson
But I asked for an autograph anyway.

Overall, I enjoyed having the opportunity to participate in this type of conference.   The spirit of creation, invention and curiosity was infectious and shared by all.   And the accommodations were quite interesting, too.


Next stop is the Intel Developer Forum in San Francisco on September 10.   I suspect that my hotel will be a little further detached from Mother Nature, though.

Cheers

Saturday, August 4, 2012

A recent whitepaper posted and an upcoming talk


A Tour Beyond BIOS into UEFI Secure Boot at the download location http://sourceforge.net/projects/edk2/files/General%20Documentation/A_Tour_Beyond_BIOS_into_UEFI_Secure_Boot_White_Paper.pdf/download was recently posted.    My co-author Lee Rosenbaum and I provide a integrity model for an extensible pre-OS that motivates UEFI Secure Boot



along with a review of the implementation at tianocore.org.   I provide an overview of some of the material in the paper at the toorcamp talk next Thursday near Neah Bay.

Roy Hopkins of Intel/McAfee and I https://intel.activeevents.com/sf12/scheduler/speakers.do will be presenting Intel and McAfee: Hardening and Harnessing the Secure Platform on Tuesday, September 11, at the Intel Developer Forum in San Francisco, CA. The topics will include:

-UEFI and Platform Initialization (PI) security overview
-Hardening the platform and development assurance practices
-Introducing McAfee* Endpoint Encryption
-Value proposition of a secured preboot
-Maintain the chain of trust.

I look forward to meeting people in SF next month.



Wednesday, July 4, 2012

UEFI 2.3.1 Errata C, and more

A few things have happened recently.

These include the publication of errata C of the UEFI2.3.1 specification at www.uefi.org.    One interesting update in that document includes support for network booting additional architecture types.   See "Processor Architecture Types" at  http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.txt.  Notable additions in that list include PowerPC and ARM64, along with reconciling some earlier conflicts between the UEFI specification and early RFC's.   This update, along with http://tools.ietf.org/rfc/rfc5970.txt, allows for rich network bootstrap opportunities.

In addition to the UEFI and IETF updates, a YouTube video of "Security & Personal Computing" was just posted to the intelchannel at http://www.youtube.com/watch?v=lZ505uz1TZ4.   In this talk I provide a broad overview of some the efforts underway in the industry around platform protection.

On that same topic, my presentation proposal http://toorcamp.org/content12/33 for ToorCamp 2012 was accepted.   The entire schedule of talks can be found at http://toorcamp.org/talks.  Dan "I broke DNS" Kaminsky is speaking that same day http://toorcamp.org/content12/28, and the speaker immediately prior to my talk http://toorcamp.org/content12/2 will discuss hacking measured and UEFI secure boot.   It should be interesting.

Friday, February 24, 2012

Anniversary day

Today makes 15 years since I started working at Intel. Coincidentally, it also makes 20 years for me in the technology industry (post undergrad).

I worked on my first embedded systems project 20 years ago, converting an embedded control system from assembly to C. And during the last 12 years on the EFI project, work has included converting a PC/AT BIOS ecosystem largely written in 16-bit assembly to a C-based infrastructure based upon UEFI.

Crazy stuff.

I've heard that the half life of an engineer is 15 years. I look forward to where the journey takes me next.

It has been an interesting run thus far.

Cheers