On Tue, Apr 26, 2011 at 11:45 AM, NdK <ndk.cla...@gmail.com> wrote:
>> I was thinking microcontroller size, but if you're using a more
>> powerful USB device hardware that can run Linux then it could be
>> realized pretty quickly using softhsm.
> Since speed is quite critical, I was thinking to use something like G20
> Fox Board ( http://acmesystems.com/ ). It's surely not cheap (anyway it
> can be WAY cheaper than other solutions), but it's tiny, fast (400MHz
> ARM9), can work as USB device (and host, maybe to keep a master key on a
> standard smart card used only once at boot time), can accomodate a
> (small) display and many keys, and there's a module with an FPGA if you
> want/need to implement some crypto acceleration in HW.
> There's even an Ethernet port (better not to use it... :) ). Too bad USB
> runs at most at 12Mbps, but that shouldn't be an issue.
>
> Didn't know softhsm... I'll have a look at it.

There is no reference for this board in the link you sent.

It would be a great solution if the device will be very small and run Linux!
It would be lovely to have PIN keypad and BIO reader on board as-well.

However, I want to raise some issues.
Developing an implementation that directly accesses the USB device
impose fundamental security issue. As it requires the user to have
special privilege. It is true that on modern linux, udev can deal with
some device privilege settings, but it would be better to emulate some
standard interface, such as serial over USB.

Serial over USB has the advantage to work on all modern operating
systems, including Windows (PKCS#11 only not mini CSP). While
implementing all logic within userspace.

It will even be possible to access these devices in remote terminal
services of Windows.

Serial over USB has also the potential to be a very secured implementation.

Then you need to deal with device sharing. Stateless implementation
(connect, operate, disconnect) would solve this, while creating some
authentication cookie with the device.

And need to deal with channel encryption.... secured messaging is not
this strong...

And last, power management should be applied, so device will be able
to be powered down while inactive. This should be simple if stateless
mode is used and if authentication cookies are stored in non-volatile
memory.

After solving the above, it is all about PKCS#11 API serialization.
Most of the PKCS#11 objects may be loaded into the host computer. Only
private key operations should be serialized and sent to device in
runtime.

Proper definition of the communication interface of the device will
enable people to provide compatible hardware. Which would be great.

Alon
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to