Skip to content

Latest commit

 

History

History
91 lines (69 loc) · 4.46 KB

FAQ.md

File metadata and controls

91 lines (69 loc) · 4.46 KB

Frequently Asked Question

Security

Random source:

  • Does the hardware wallet have an entropy source?
    • Yes, the True random number generator peripheral implemented on wallet microcontrollers is based on an analog circuit. This circuit generates a continuous analog noise that will be used by the RNG processing in order to produce a 32-bit random number. To verify the true randomness of the numbers generated a verification is performed based on the National Institute of Standards and Technology (NIST) Statistical Test Suite (STS) SP 800-22rev1a (April 2010).
  • Does the hardware wallet get entropy from the host machine?
    • Yes, an external random 32 bytes buffer is used to increase internal entropy when performing cryptographically sensitive operations e.g. mnemonic generation
  • How does the hardware wallet get entropy?
    • The hardware wallet generates internal entropy from a peripheral device. This value is salted with several sources so as to make unfeasible some kinds of dictionary and lookup attacks (e.g. rainbow tables ). The salt is chosen in such a way that no two devices can generate the same value in (at least) the time frame of a human lifetime. Such values might not be particularly random. Internal entropy is eventually combined with an external entropy received from the user host device.

Salt sources

  • What types of salt sources are considered ?
    1. Between devices (such as device UUID)
    2. Between device runs (at init time)
    3. Over time (after init, value continues to change)
  • What are salt sources used in firmware ?
    1. MCU core registers
      • We use constant values of three registers, namely: PC - shows which instruction perform next. SP - track the call stack LR - hold the address of the function.
    2. Device UUID
      • Every Microcontroller has its universal unique identifier which is stored at the specific location in memory, depending on different families. As it is unique in every device, it can be used as a good salt for the entropy.
    3. SysTick timer
      • All the Microprocessor have it, regardless of the manufacturer. Systick timer is a part of the core.
    4. Unconnected GPIO pins
      • We configure a detached port as an input and then read the value from it. Because of specific physical processes appears noise, which goes with waves, which has minimal statistical dependence.

Why do I see an inverted skycoin logo in bootloader?

If you see an inverted skycoin logo in bootloader mode like in the following image, maybe you have either flashed for development or not official device.

Kiku

What should I do if something fails?

If you are experiencing any issues:

Troubleshooting

This section describes quick solutions to some common errors or mistakes.

What does "Got TypeError when importing the protocol definitions for generator" message mean?

If you are getting this error quite likely your system is configured to run Python version 2.x by default. This version of Python is not supported. At all times Python3 is a requirement.

Firstly , confirm that Python 2.x was executed by running the following commands from a terminal window:

which protoc
protoc --version
python -c 'import google.protobuf; print(google.protobuf.__file__)'

If python2 is part of the output then that's exactly the case so continue with instructions that follow. Otherwise contact the team.

In order to force using Python3 set PYTHON=python3 environment variable while invoking all make targets. For instance if building bootloader binary just once

make bootloader PYTHON=python3

In order to invoke multiple targets export that variable to the glovbal OS environment, e.g. on Unix systems

export PYTHON=python3
make bootloader
make firmware
make full-firmware

For further details see #235 .