From e8756da13af024145701e686c59e407a0dfad1cf Mon Sep 17 00:00:00 2001 From: tadeubas Date: Thu, 28 Nov 2024 18:54:13 -0300 Subject: [PATCH 1/7] few docs changes and additions --- .../features/encrypted-mnemonics.en.md | 2 +- .../features/tamper-detection.en.md | 2 +- .../installing/from-gui/usage.en.md | 2 +- .../installing/from-pre-built-release.en.md | 9 +++++++++ docs/getting-started/installing/from-source.en.md | 14 ++++++++++---- docs/snippets/after-install-installer.en.md | 1 - docs/snippets/sd-card-info-faq.en.txt | 2 +- docs/support.en.md | 2 +- 8 files changed, 24 insertions(+), 10 deletions(-) delete mode 100644 docs/snippets/after-install-installer.en.md diff --git a/docs/getting-started/features/encrypted-mnemonics.en.md b/docs/getting-started/features/encrypted-mnemonics.en.md index 05af6d8b..2c99a39b 100644 --- a/docs/getting-started/features/encrypted-mnemonics.en.md +++ b/docs/getting-started/features/encrypted-mnemonics.en.md @@ -42,4 +42,4 @@ In search of efficiency and smaller QR codes, all data is converted to bytes and ## Considerations Storage of encrypted mnemonics on the device or SD cards are meant for convenience only and should not be considered a form of backup. Always make a physical backup of your keys that is independent from electronic devices and test recovering your wallet from this backup before you send funds to it. -Remember that the stored encrypted mnemonic is protected by the key you defined to encrypt it. If the defined [key is weak](https://www.hivesystems.com/blog/are-your-passwords-in-the-green), your encrypted mnemonic will not be protected. If you have stored a mnemonic with funds in the device's internal flash memory using a [weak key](https://www.hivesystems.com/blog/are-your-passwords-in-the-green), the best way to undo this is to [wipe the device](./tools.md/#wipe-device). \ No newline at end of file +Remember that the stored encrypted mnemonic is protected by the key you defined to encrypt it. If the defined [key is weak](https://www.hivesystems.com/blog/are-your-passwords-in-the-green), your encrypted mnemonic will not be protected. If you have stored a mnemonic with funds in the device's internal flash memory using a [weak key](https://www.hivesystems.com/blog/are-your-passwords-in-the-green), the best way to undo this is to [erase user's data](tools.md/#erase-users-data). \ No newline at end of file diff --git a/docs/getting-started/features/tamper-detection.en.md b/docs/getting-started/features/tamper-detection.en.md index e1d85f4d..076693e2 100644 --- a/docs/getting-started/features/tamper-detection.en.md +++ b/docs/getting-started/features/tamper-detection.en.md @@ -17,7 +17,7 @@ To secure your Krux device, always verify firmware authenticity before installat - **Learn Verification Tools:** Familiarize yourself with verification methods and tools to maintain control over your device's security. -- **Build from Source:** Consider building the firmware from source code and verifying its reproducibility for maximum assurance. +- **Build from Source:** Consider building the firmware from source code and verifying its [reproducibility](../installing/from-source.md#reproducibility) for maximum assurance. - **Use SD Card for Updates:** After the initial flash through USB, perform subsequent updates via the SD card. This keeps your device air-gapped and allows the existing firmware to verify new updates before installation. diff --git a/docs/getting-started/installing/from-gui/usage.en.md b/docs/getting-started/installing/from-gui/usage.en.md index 824e1fe2..73de4006 100644 --- a/docs/getting-started/installing/from-gui/usage.en.md +++ b/docs/getting-started/installing/from-gui/usage.en.md @@ -174,7 +174,7 @@ Now you will be able to select if you do a flash process or need to do an airgap KruxInstaller unzip -Click on [Flash with](#flash) to install via USB or [Air-gapped update with](#air-gapped-update-with) to perform upgrades via a SD card. +Click on [Flash with](#flash-with) to install via USB or [Air-gapped update with](#air-gapped-update-with) to perform upgrades via a SD card. #### Flash with diff --git a/docs/getting-started/installing/from-pre-built-release.en.md b/docs/getting-started/installing/from-pre-built-release.en.md index 9fa180ad..541f600d 100644 --- a/docs/getting-started/installing/from-pre-built-release.en.md +++ b/docs/getting-started/installing/from-pre-built-release.en.md @@ -11,8 +11,17 @@ Before installing the release, it's a good idea to check that: You can either do this manually or with the `krux` shell script, which contains helper commands for this: ```bash +### Using krux script ### +# Hash checksum ./krux sha256 {{latest_krux}}.zip +# Signature ./krux verify {{latest_krux}}.zip selfcustody.pem + +### Manually ### +# Hash checksum +sha256sum {{latest_krux}}.zip.sha256.txt -c +#Signature +openssl sha256 <{{latest_krux}}.zip -binary | openssl pkeyutl -verify -pubin -inkey selfcustody.pem -sigfile {{latest_krux}}.zip.sig ``` On Mac you may need to install `coreutils` to be able to use `sha256sum` diff --git a/docs/getting-started/installing/from-source.en.md b/docs/getting-started/installing/from-source.en.md index 6ea5269a..47267d63 100644 --- a/docs/getting-started/installing/from-source.en.md +++ b/docs/getting-started/installing/from-source.en.md @@ -50,9 +50,15 @@ Failed to clone ... ``` #### Reproducibility -If you build from the `main` branch of the source code, you should be able to reproduce the build process used to generate the last release binaries and obtain exact copies of the `firmware.bin` and `kboot.kfpkg` files, with matching hash checksums. +If you build from the `main` branch of the source code, you should be able to reproduce the build process used to generate the latest release binaries and obtain exactly the same copies of the `firmware.bin` and `kboot.kfpkg` files, with matching hash checksums (to check for an older version, use the `tag` instead). -To extract and verify the firmware.bin contained in kboot.kfpkg, you can use the following command: +To check, use the compiled files for the target device. Each command should output the same hash for the two provided files: +```bash +sha256sum build/firmware.bin {{latest_krux}}/maixpy_DEVICE/firmware.bin +sha256sum build/kboot.kfpkg {{latest_krux}}/maixpy_DEVICE/kboot.kfpkg +``` + +If you want to extract and verify the `firmware.bin`file contained in `kboot.kfpkg`, use the following: ```bash unzip kboot.kfpkg -d ./kboot/ @@ -61,10 +67,10 @@ unzip kboot.kfpkg -d ./kboot/ ### Flash the firmware onto the device Connect the device to your computer via USB (for Maix Amigo, make sure you’re using bottom port), power it on, and run the following, replacing `DEVICE` with either `m5stickv`, `amigo`, `bit`, `cube`, `dock` or `yahboom`: ```bash -# build firmware for DEVICE +# flash firmware to DEVICE ./krux flash maixpy_DEVICE ``` -If the flashing fails try one of the following common solutions listed on FAQ +If flashing fails try reading [Troubleshooting](../../troubleshooting.md) ----8<---- flash-krux-logo.en.txt diff --git a/docs/snippets/after-install-installer.en.md b/docs/snippets/after-install-installer.en.md deleted file mode 100644 index fc81b67d..00000000 --- a/docs/snippets/after-install-installer.en.md +++ /dev/null @@ -1 +0,0 @@ -Once installed, you can proceed to [firmware installation](/krux/getting-started/installing/from-gui/usage). diff --git a/docs/snippets/sd-card-info-faq.en.txt b/docs/snippets/sd-card-info-faq.en.txt index 8545fd8c..9dbaef25 100644 --- a/docs/snippets/sd-card-info-faq.en.txt +++ b/docs/snippets/sd-card-info-faq.en.txt @@ -1 +1 @@ -We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the [Troubleshooting](troubleshooting.md/#why-isnt-krux-detecting-my-microsd-card-or-presenting-an-error) for more info. \ No newline at end of file +We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the [Troubleshooting](/krux/troubleshooting/#why-isnt-krux-detecting-my-microsd-card-or-presenting-an-error) for more info. \ No newline at end of file diff --git a/docs/support.en.md b/docs/support.en.md index b4c06f89..c460136f 100644 --- a/docs/support.en.md +++ b/docs/support.en.md @@ -28,7 +28,7 @@ The purpose of this ethos is not to virtue signal, but to introduce newcomers to To implement ideas that make self-custody more powerful, accessible, and user-friendly. ### Don't Trust, Verify -Do not trust developers’ intentions or competence. Krux is a DIY, use-at-your-own-risk project. We are committed to continuously improving security, but will not make claims or create marketing narratives about it. It is up to the users verify their hardware, the [firmware](../getting-started/installing/from-pre-built-release/#Verify-the-files) and [Krux-Installer](../getting-started/installing/from-gui/debian-like/#Verify-the-integrity) +Do not trust developers’ intentions or competence. Krux is a DIY, use-at-your-own-risk project. We are committed to continuously improving security, but will not make claims or create marketing narratives about it. It is up to the users verify their hardware, the [firmware](getting-started/installing/from-pre-built-release.md/#verify-the-files) and [Krux-Installer](getting-started/installing/from-gui/debian-like.md/#verify-the-integrity) ### Donations Krux will not solicit, receive, manage, or distribute donations. Therefore, Krux has no budget for publicity, audits, or similar activities. Contributors to Krux will fund their own work—whether by promoting their efforts, applying for grants, or seeking direct individual donations. From 2ad942eab9c91afa380d9f375fb997c44cef8765 Mon Sep 17 00:00:00 2001 From: tadeubas Date: Fri, 6 Dec 2024 23:20:55 -0300 Subject: [PATCH 2/7] fix wonder_mv imgs --- simulator/assets/maixpy_wonder_mv.png | Bin 70477 -> 62215 bytes simulator/assets/maixpy_wonder_mv_mask.png | Bin 15472 -> 10771 bytes simulator/kruxsim/devices.py | 8 ++--- .../wonder-mv/_load-12-word-mnemonic.txt | 17 +++++++++ .../wonder-mv/_load-12-word-mnemonic_b.txt | 17 +++++++++ .../wonder-mv/_load-24-word-mnemonic.txt | 17 +++++++++ .../sequences/wonder-mv/_mnemonic-24-word.txt | 11 ++++++ simulator/sequences/wonder-mv/_sign-psbt.txt | 33 ++++++++++++++++++ 8 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 simulator/sequences/wonder-mv/_load-12-word-mnemonic.txt create mode 100644 simulator/sequences/wonder-mv/_load-12-word-mnemonic_b.txt create mode 100644 simulator/sequences/wonder-mv/_load-24-word-mnemonic.txt create mode 100644 simulator/sequences/wonder-mv/_mnemonic-24-word.txt create mode 100644 simulator/sequences/wonder-mv/_sign-psbt.txt diff --git a/simulator/assets/maixpy_wonder_mv.png b/simulator/assets/maixpy_wonder_mv.png index dd02760f8869b30f010f5e6fd153c6da46166ed0..bfe4392b5cbcf81f004e58f1689c7170124c4120 100644 GIT binary patch literal 62215 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

NpWpBQsNk}+2>pyVqSP@2{!)0p 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

    q#+{W-^r+Q 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 diff --git a/simulator/assets/maixpy_wonder_mv_mask.png b/simulator/assets/maixpy_wonder_mv_mask.png index 0b9b1c43fa1ae673eba4bb93a88b66f916f4e4e9..9fb364257879d579521de15672bd823b3218c843 100644 GIT binary patch delta 7653 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%0AAP3>z%1cf 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 Date: Sat, 7 Dec 2024 00:55:42 -0300 Subject: [PATCH 3/7] updating docs + readme --- README.md | 4 ++++ .../installing/from-pre-built-release.en.md | 2 +- .../installing/from-source.en.md | 2 +- .../installing/from-test-release.en.md | 18 ++++++++++++++++++ docs/getting-started/settings.en.md | 2 +- docs/img/maixpy_wonder_mv/logo-152.en.png | Bin 0 -> 17815 bytes docs/index.en.md | 3 ++- docs/snippets/camera-scan-tips.en.txt | 2 +- simulator/kruxsim/devices.py | 1 - simulator/simulator.py | 6 +++--- 10 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 docs/img/maixpy_wonder_mv/logo-152.en.png diff --git a/README.md b/README.md index 18b5c114..d37610cf 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ +

    Krux is an open-source firmware facilitating the creation of Bitcoin signing devices from readily available components, such as Kendryte K210 devices. It transforms these devices into airgapped tools capable of handling transactions for both single and multisignature wallets, supporting offline signing via QR code or SD card, thus empowering users to securely self-custody their Bitcoin. @@ -148,6 +149,9 @@ poetry run poe simulator-yahboom # Run simulator on the device cube, then use keyboard (arrow keys UP or DOWN and ENTER) poetry run poe simulator-cube + +# Run simulator with the touch device wonderMV, then use mouse to navigate +poetry run poe simulator-wonder-mv ``` Note: With emulated SD card it is possible to store settings, encrypted mnemonics, also drop and sign PSBTs. After some time running, the simulator may become slow. If that happens, just close and open again! diff --git a/docs/getting-started/installing/from-pre-built-release.en.md b/docs/getting-started/installing/from-pre-built-release.en.md index 541f600d..2ff00025 100644 --- a/docs/getting-started/installing/from-pre-built-release.en.md +++ b/docs/getting-started/installing/from-pre-built-release.en.md @@ -37,7 +37,7 @@ Extract the latest version of Krux you downloaded and enter the folder: unzip {{latest_krux}}.zip && cd {{latest_krux}} ``` -Connect the device to your computer via USB (for Maix Amigo, make sure you’re using bottom port), power it on, and run the following, replacing `DEVICE` with either `m5stickv`, `amigo`, `bit`, `cube`, `dock` or `yahboom` (to yahboom you may need to manually specify the port, for example `/dev/ttyUSB0` on Linux or `COM6` on Windows): +Connect the device to your computer via USB (for Maix Amigo, make sure you’re using bottom port), power it on, and run the following, replacing `DEVICE` with either `m5stickv`, `amigo`, `bit`, `cube`, `dock`, `yahboom` or `wonder_mv` (to yahboom you may need to manually specify the port, for example `/dev/ttyUSB0` on Linux or `COM6` on Windows): ```bash ./ktool -B goE -b 1500000 maixpy_DEVICE/kboot.kfpkg ``` diff --git a/docs/getting-started/installing/from-source.en.md b/docs/getting-started/installing/from-source.en.md index 47267d63..fd9a7eca 100644 --- a/docs/getting-started/installing/from-source.en.md +++ b/docs/getting-started/installing/from-source.en.md @@ -65,7 +65,7 @@ unzip kboot.kfpkg -d ./kboot/ ``` ### Flash the firmware onto the device -Connect the device to your computer via USB (for Maix Amigo, make sure you’re using bottom port), power it on, and run the following, replacing `DEVICE` with either `m5stickv`, `amigo`, `bit`, `cube`, `dock` or `yahboom`: +Connect the device to your computer via USB (for Maix Amigo, make sure you’re using bottom port), power it on, and run the following, replacing `DEVICE` with either `m5stickv`, `amigo`, `bit`, `cube`, `dock`, `yahboom` or `wonder_mv`: ```bash # flash firmware to DEVICE ./krux flash maixpy_DEVICE diff --git a/docs/getting-started/installing/from-test-release.en.md b/docs/getting-started/installing/from-test-release.en.md index 4a4f19e9..90a8c4a4 100644 --- a/docs/getting-started/installing/from-test-release.en.md +++ b/docs/getting-started/installing/from-test-release.en.md @@ -124,3 +124,21 @@ See the correct port at Device Manager > Ports (COM & LPT), in the example below ```pwsh .\ktool-win.exe -B goE -b 1500000 -p COM6 maixpy_yahboom\kboot.kfpkg ``` + +#### Hiwonder WonderMV Vision Recognition Module +To Flash WonderMV you need to pass the `-B dan` parameter. + +##### Linux +```bash +./ktool-linux -B dan -b 1500000 maixpy_wonder_mv/kboot.kfpkg +``` + +##### Mac +```bash +./ktool-mac -B dan -b 1500000 maixpy_wonder_mv/kboot.kfpkg +``` + +##### Windows +```pwsh +.\ktool-win.exe -B dan -b 1500000 maixpy_wonder_mv\kboot.kfpkg +``` diff --git a/docs/getting-started/settings.en.md b/docs/getting-started/settings.en.md index 98f47427..6297c921 100644 --- a/docs/getting-started/settings.en.md +++ b/docs/getting-started/settings.en.md @@ -96,7 +96,7 @@ Here you choose between Thermal, CNC or none (default). Leave this setting to "n
    -#### Touchscreen (Maix Amigo and Yahboom only) +#### Touchscreen (Maix Amigo, Yahboom and WonderMV only) If your device has touchscreen you can change the touch detection threshold. If it is being too sensitive or detecting false or ghost touches, you should increase the threshold value, making it less sensitive. The other way is also valid, reduce the threshold to make the screen more sensitive to touches. diff --git a/docs/img/maixpy_wonder_mv/logo-152.en.png b/docs/img/maixpy_wonder_mv/logo-152.en.png new file mode 100644 index 0000000000000000000000000000000000000000..d419d6c5f9685d905ac1759297ff1a66f5d726a8 GIT binary patch literal 17815 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 + Krux is an open-source firmware that transforms off-the-shelf Kendryte K210 devices, such as the Maix Amigo, M5StickV and [more](parts.md), into versatile bitcoin transaction signers. Beyond its core functionality, Krux is a flexible platform that can adapt to devices with different form factors, providing a suite of tools to assist with the creation and recovery of mnemonic backups, some of which include encryption options for enhanced security. -Devices like the Maix Amigo and Yahboom come ready to use, with large touchscreens that make it easy and user-friendly to operate. These devices are ideal for those looking for a plug-and-play solution. On the other hand, Krux also supports development board kits, which are perfect for DIY enthusiasts who enjoy customizing and building their own hardware setups. +Devices like the Maix Amigo, Yahboom or WonderMV come ready to use, with large touchscreens that make it easy and user-friendly to operate. These devices are ideal for those looking for a plug-and-play solution. On the other hand, Krux also supports development board kits, which are perfect for DIY enthusiasts who enjoy customizing and building their own hardware setups. Interacting seamlessly with leading coordinator wallets through QR codes, SD cards, and even thermal printers, the user-friendly firmware offers unique features to support transactions and mnemonic backups in an offline environment. diff --git a/docs/snippets/camera-scan-tips.en.txt b/docs/snippets/camera-scan-tips.en.txt index bfbd8720..e261dbeb 100644 --- a/docs/snippets/camera-scan-tips.en.txt +++ b/docs/snippets/camera-scan-tips.en.txt @@ -1 +1 @@ -If you are in a dark environment, you can hold down the `ENTER` button of the M5StickV or Maix Amigo to turn on their LED light to potentially increase visibility. Some cameras (`OV7740`, `OV2640` and `GC2145`) have an anti-glare mode to better capture images from high brightness screens or with incident light, they are present on M5StickV, Amigo, Cube and Yahboom. To enable/disable the anti-glare mode on a supported device just press the `PAGE` button while scanning. \ No newline at end of file +If you are in a dark environment, you can hold down the `ENTER` button of the M5StickV or Maix Amigo to turn on their LED light to potentially increase visibility. Some cameras (`OV7740`, `OV2640` and `GC2145`) have an anti-glare mode to better capture images from high brightness screens or with incident light, they are present on M5StickV, Amigo, Cube, Yahboom and WonderMV. To enable/disable the anti-glare mode on a supported device just press the `PAGE` button while scanning. \ No newline at end of file diff --git a/simulator/kruxsim/devices.py b/simulator/kruxsim/devices.py index 219db396..53a6c474 100644 --- a/simulator/kruxsim/devices.py +++ b/simulator/kruxsim/devices.py @@ -138,7 +138,6 @@ def screenshot_rect(device): screen.get_rect().center[1] - 13, ) elif device == WONDER_MV: - # Todo: Adjust the rect for the Wonder MV device rect.width -= 88 rect.height -= 129 rect.center = ( diff --git a/simulator/simulator.py b/simulator/simulator.py index 2bc221be..a1a729ab 100644 --- a/simulator/simulator.py +++ b/simulator/simulator.py @@ -151,9 +151,9 @@ def run_krux(): AMIGO_SIZE = (150, 252) M5STICKV_SIZE = (125, 247) DOCK_SIZE = (151, 258) -YAHBOOM_SIZE = (156,220) -CUBE_SIZE = (200,212) -WONDER_MV_SIZE = (156, 220) +YAHBOOM_SIZE = (156, 220) +CUBE_SIZE = (200, 212) +WONDER_MV_SIZE = (152, 220) # Handle screenshots scale and alpha bg # When exporting the mask from GIMP uncheck "Save info about transparent pixels color" From ffba652e5b5d5a53851ca328c9c946f918145b5c Mon Sep 17 00:00:00 2001 From: tadeubas Date: Sat, 7 Dec 2024 15:40:33 -0300 Subject: [PATCH 4/7] docs parts --- docs/parts.en.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/parts.en.md b/docs/parts.en.md index c9a9955b..df4229d4 100644 --- a/docs/parts.en.md +++ b/docs/parts.en.md @@ -3,7 +3,7 @@ ### Comparative Table -| Device | M5StickV | Maix Amigo | Maix Dock | Maix Bit | Yahboom k210 module | Maix Cube | WonderMV +| Device | M5StickV | Maix Amigo | Maix Dock | Maix Bit | Yahboom k210 module | Maix Cube | WonderMV | | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | | Price range | US$ 50-55 | US$ 50-85 | US$ 27-35 | US$ 32-42 | US$ 45-61 | US$ 34-49 | US$ 58-86 | | Screen size / resolution | 1.14" / 135*240 | 3.5" / 320*480 | 2.4" / 240*320 | 2.4" / 240*320 | 2" / 240*320 | 1.3" / 240*240 | 2" / 240*320 | @@ -95,6 +95,19 @@ Below is a list of some distributors where you can find this device:
    +### WonderMV + + +It comes with a compatible 32G card, an USB card reader, and two Molex 51004 4-pin male-to-male cable (to connect to a [thermal printer](#optional-ttl-serial-thermal-printer)). Below is a list of some distributors where you can find this device: + +- [AliExpress](https://www.aliexpress.com/w/wholesale-k210-wondermv.html) +- [Amazon](https://www.amazon.com/s?k=k210+WonderMV) +- [Hiwonder Store](https://www.hiwonder.com/products/wondermv) +- [Ruten](https://www.ruten.com.tw/item/show?22351444721094) +- [飆機器人](https://shop.playrobot.com/products/veo0116) + +
    + ### Maix Dock and Maix Bit @@ -135,4 +148,4 @@ Krux has the capability to print all QR codes it generates, including those for Many TTL serial thermal printers may be compatible, but currently, the [Goojprt QR203](https://www.aliexpress.com/w/wholesale-Goojprt-QR203.html) has the best support (except this printer only supports ASCII or Chinese characters, non-ASCII characters will be printed as Chinese). The [Adafruit printer starter pack](https://www.adafruit.com/product/600) can also be a convenient option to get started, as it includes all the necessary components for printing (except the conversion cable). To ensure proper functionality, enable the printer driver in the [Krux settings](./getting-started/settings.md/#thermal), set the Tx pin and baud rate value to either 19200 or 9600 (depends on the printer), as explained in this [Adafruit printer tutorial](https://learn.adafruit.com/mini-thermal-receipt-printer/first-test). You will need to connect the device's Tx to the printer's Rx and device's ground to the printer's ground, do not connect any other pins because a wrong connection may damage your device. The printer requires a dedicated power supply, typically with an output of 5 to 9V (or 12V) and capable of supplying at least 2A. For more information, [see this discussion](https://github.com/selfcustody/krux/discussions/312). #### (Optional) Conversion Cable for Thermal Printer -To connect the printer to M5StickV, Amigo or Cube, you will need a [grove conversion cable](https://store-usa.arduino.cc/products/grove-4-pin-male-to-grove-4-pin-cable-5-pcs) with a 4-pin male Grove connector on one end (to connect to the device) and 4-pin male jumpers on the other end (to connect to the printer). Check your device and printer model connection first, Yahboom comes with PH2.0 4Pin female connector; Dock and Bit doesn't have a connector. For a more reliable connection, it is recommended to cut and solder the wires of your custom cables instead of using jumpers. \ No newline at end of file +To connect the printer to M5StickV, Amigo or Cube, you will need a [grove conversion cable](https://store-usa.arduino.cc/products/grove-4-pin-male-to-grove-4-pin-cable-5-pcs) with a 4-pin male Grove connector on one end (to connect to the device) and 4-pin male jumpers on the other end (to connect to the printer). Check your device and printer model connection first, Yahboom comes with PH2.0 4Pin female connector; Dock and Bit doesn't have a connector; WonderMV comes with [Molex 51004 4-pin connector](https://www.digikey.ca/en/products/detail/molex/0530150410/1785079) (used with smart servo). For a more reliable connection, it is recommended to cut and solder the wires of your custom cables instead of using jumpers. Here we have a description of some [inter-integrated circuit (I2C) connector standards](https://www.cable-tester.com/i2c-pin-out/). \ No newline at end of file From 876f012a0f0b8f25e4587381eae6103cf3c5cb3d Mon Sep 17 00:00:00 2001 From: tadeubas Date: Sun, 8 Dec 2024 00:56:32 -0300 Subject: [PATCH 5/7] Added links and changed text a bit --- .../features/tamper-detection.en.md | 76 ++++++++----------- docs/getting-started/features/tools.en.md | 4 +- 2 files changed, 33 insertions(+), 47 deletions(-) diff --git a/docs/getting-started/features/tamper-detection.en.md b/docs/getting-started/features/tamper-detection.en.md index 076693e2..e9b213b8 100644 --- a/docs/getting-started/features/tamper-detection.en.md +++ b/docs/getting-started/features/tamper-detection.en.md @@ -1,5 +1,5 @@ # Tamper Detection Mechanism (Experimental) -Krux's tamper detection tool combines cryptographic hashes, a *Tamper Check Code*, and camera-generated entropy to create a tamper indicator that is unique to each device, represented by a memorable image and four words. +Krux's tamper detection tool combines cryptographic hashes, a *Tamper Check Code (TC Code)*, and camera-generated entropy to create a tamper indicator that is unique to each device, represented by a memorable image and two sets of two words. Before we get into details, let's start with some limitations and necessary prerequisites to allow the feature to work. @@ -9,76 +9,62 @@ To secure your Krux device, always verify firmware authenticity before installat ### Firmware Verification Methods -- **Using OpenSSL Command-Line Tool:** Follow the Krux documentation to verify the firmware's signature manually. This method provides a high level of assurance but requires familiarity with command-line operations. +- **Using OpenSSL Command-Line Tool:** Follow [from pre-built official release](../installing/from-pre-built-release.md/#verify-the-files) instructions to verify the firmware's signature manually. This method provides a high level of assurance but requires familiarity with command-line operations. -- **Using Krux-Installer:** For a more user-friendly experience, verify the Krux-Installer's signature using GPG. Graphical interfaces like Sparrow Wallet can facilitate this process. Krux-Installer automatically downloads the firmware from Github, verifies the firmware signature, informs you of the results, and guides you through manual verification if desired. +- **Using Krux-Installer:** Our [Krux-Installer GUI](../installing/from-gui/index.md) can facilitate this process by downloading our firmware from Github and verifying its signature. It also guides you through manual verification if desired. Just don't forget to verify the integrity of the Krux-Installer as well. -### Recommendations -- **Learn Verification Tools:** Familiarize yourself with verification methods and tools to maintain control over your device's security. +### Recommendations -- **Build from Source:** Consider building the firmware from source code and verifying its [reproducibility](../installing/from-source.md#reproducibility) for maximum assurance. +- **Build from Source:** Consider building the firmware [from source code](../installing/from-source.md) and verifying its [reproducibility](../installing/from-source.md/#reproducibility) for maximum assurance. -- **Use SD Card for Updates:** After the initial flash through USB, perform subsequent updates via the SD card. This keeps your device air-gapped and allows the existing firmware to verify new updates before installation. +- **Use SD Card for Updates:** After the initial flash through USB, perform subsequent [updates via the SD card](../features/sd-card-update.md). This keeps your device air-gapped and allows the existing firmware to verify the new one before installation. -Note: The effectiveness of the *TC Flash Hash* tamper detection feature relies on running legitimate, uncompromised firmware and safely protecting your *Tamper Check Code*. +Note: The effectiveness of *TC Flash Hash* tamper detection feature relies on running legitimate, uncompromised firmware and safely protecting your *TC Code*. ## Tamper Check Code (TC Code) -A *Tamper Check Code*, composed of numbers, letters and special characters, with a minimum length of six characters, can be stored and required to execute *Tamper Check (TC) Flash Hash* tamper verification before Krux boots at the main application, or optionally as a feature available in `Tools -> Flash Tools`. +A *TC Code*, composed of numbers, letters and special characters, with a minimum length of six characters, can be stored and required to execute *TC Flash Hash* tamper verification before Krux boots at the main application, or optionally as a feature available in `Tools -> Flash Tools`. -Before being stored in the device’s flash, the *TC Code* is hashed together with the K210 chip’s unique ID and stretched using PBKDF2. This ensures the *TC Code* is not retrievable via a flash dump and can only be brute-forced outside the device if the attacker also has access to the device’s unique ID. By allowing letters, special characters, and running 100k iterations of PBKDF2, brute-forcing the *TC Code* from dumped data becomes more time-consuming and resource-intensive. +Before being stored in the device’s flash, the *TC Code* is hashed together with the K210 chip’s unique ID and stretched using PBKDF2. This ensures the *TC Code* is not retrievable via a flash dump and can only be brute-forced outside the device if the attacker also has access to the device’s unique ID (UID). By allowing letters, special characters, and running 100k iterations of PBKDF2, brute-forcing the *TC Code* from dumped data becomes more time-consuming and resource-intensive. ### Enhancing Tamper Detection After setting the *TC Code*, you are prompted to fill empty flash memory blocks with random entropy from the camera. This process ensures that attackers cannot exploit unused memory space. -## Tamper Check (TC) Flash Hash - A Tamper Detection Tool -### Introduction - -The "TC Flash Hash" tool enables you to verify if the flash memory content has been altered. - -### How It Works +## Tamper Check Flash Hash (TC Flash Hash) - A Tamper Detection Tool -The tool generates a unique image and four tamper detection words based on a hash of your *TC Code*, the device's UID, and the flash content. The flash memory is divided into two regions: +The *TC Flash Hash* tool enables you to verify if the device's internal flash memory content has been altered. This tool generates a unique image and two sets of two tamper detection words based on a hash of your *TC Code*, the device's UID, and its internal flash content. The flash memory is divided into two regions: -- **Firmware Region:** Generates the image and the first two words. +- **Firmware Region:** The area only filled with firmware code. It generates the memorable image and the first set of two words. -- **User's Region:** Generates the last two words. +- **User's Region:** The area used to stored encrypted mnemonics, settings and TC Code. It generates the last set of two words.
    TC Flash Hash
    -*Example: The blue symbol and words 'tail monkey' represent the firmware region, while 'wrestle over' reflects the user region.* +*Example: The blue symbol and words 'tail monkey' represents the firmware region, while 'wrestle over' user's region.* -Any change in the flash content results in a different image or words: +Any change in the flash content results in a different image and words: -- **Firmware Changes:** Alterations in the firmware region, including the bootloader, change the image and the first two words. +- **Firmware Changes:** Alterations in the firmware region, including the bootloader, change the image and the first set of two words. -- **User's Data Changes:** Modifications in the user's region, such as new settings or stored mnemonics, change the last two words. +- **User's Data Changes:** Changes in the user's region, such as new settings or stored mnemonics, change the last set of two words. -- ***TC Code* Changes:** Replacing the *TC Code* alters the image and all four words. +- ***TC Code* Changes:** Replacing the *TC Code* alters the image and all sets of words. -### Filling Empty Flash Blocks +### Filling Empty Flash Memory Blocks -Krux performs a memory sweep while simultaneously capturing a live feed from the camera. Whenever an empty block is found in the flash memory, Krux estimates the image's entropy by evaluating its color variance. Krux waits until minimum threshold is met, then uses the data from the image to fill these empty spaces with rich, random entropy. +Use this to enhance tamper detection. Krux performs a memory sweep while capturing a live feed from the camera. Whenever an empty block is found in the flash memory, it uses the data from the image to fill these empty spaces with rich, random entropy. It estimates the image's entropy by evaluating its color variance waiting until a minimum threshold is met. ### Ensuring Tamper Detection -The TC Flash Hash function securely hashes the combination of the *TC Code*, UID, and flash content: - -`hash(TC Code,UID,Flash content)` -> Image + Words - -Hash properties ensure that without knowing the *TC Code*, UID, and flash content, an attacker cannot reproduce the TC Flash Hash results. +The *TC Flash Hash* function securely hashes the combination of the *TC Code*, device's UID, and flash memory contents. The hash properties ensure that without knowing these three elements, an attacker will not be able to reproduce the *TC Flash Hash* results. ## Executing *TC Flash Hash* After setting a *TC Code* user can use the *TC Flash Hash* feature, available in `Tools -> Flash Tools -> TC Flash Hash`. -By navigating to `Settings -> Security -> TC Flash Hash at Boot`, you can set Krux to always require *TC Flash Hash* verification after device is turned on. - -If a wrong *TC Code* is typed at boot, the device will turn off. As storing code typing attempts count on flash would change its contents, there will be no consequences if wrong *TC Code* is typed multiple times. - -As *TC Code* verification data is stored in the user's region of memory, *TC Flash Hash* and *TC Code* requirement is disabled if the user wipes the device. Flashing an older firmware version will also disable the feature. +By navigating to `Settings -> Security -> TC Flash Hash at Boot`, users can set Krux to always require *TC Flash Hash* verification after device is turned on. If a wrong *TC Code* is typed at boot, the device will turn off. Nothing else will happen if the wrong *TC Code* is entered multiple times. As *TC Code* verification data is stored in the user's region of memory, the requirement to type at boot is disabled if the user [erases user's data](../features/tools.md/#erase-users-data) or [wipe device](../installing/from-gui/usage.md/#wipe-device). Flashing an older firmware version will also disable this feature. ## Potential Attack Scenarios and Their Mitigation ### Challenge for an Attacker @@ -87,30 +73,30 @@ An attacker faces major challenges in replacing the firmware: - **Lack of Original Flash Data:** Without the exact original flash content, the attacker cannot reproduce the correct hash. -- **Sequential Hash Dependency:** The hash function processes data sequentially (*TC Code*, UID, flash content), preventing the attacker from injecting or rearranging data to produce the same hash. +- **Sequential Hash Dependency:** The hash function processes data sequentially (*TC Code*, device's UID, and flash memory contents), preventing the attacker from injecting or rearranging data to produce the same hash. - **One-Way Hash Functions:** Cryptographic hash functions like SHA-256 are one-way, making it infeasible to reverse-engineer or manipulate the hash without the original inputs. ### Why Tampered Firmware Cannot Bypass Verification -- **Cannot Reconstruct the Hash:** Without the original flash data, the attacker cannot generate the correct hash, even if they know the UID and *TC Code* after the user enters it. +- **Cannot Reconstruct the Hash:** Without the original flash data, the attacker cannot generate the correct hash, even if it knows the device's UID and the *TC Code* (after the user enters it). -- **Hash Sensitivity:** Any alteration in the flash content changes the hash output, which will be evident through a different image or tamper detection words. +- **Hash Sensitivity:** Any alteration in the flash content changes the hash output, which will be evident through a different image or the set of two words. - **Entropy Filling:** Filling empty flash blocks with camera-generated entropy leaves no space for malicious code and any changes to these blocks will alter the hash. ### Possible Attack Strategies and Failures -- **Precomputing Hashes:** The attacker cannot precompute the correct hash without the *TC Code*, UID, and exact flash content. +- **Precomputing Hashes:** The attacker cannot precompute the correct hash without the *TC Code*, device's UID, and exact contents of the flash memory. -- **Storing Hashes:** Storing `hash(flash content)` is ineffective because the overall hash depends on the sequential combination of *TC Code*, UID, and flash data. +- **Storing Hashes:** Storing `hash(flash_content)` is ineffective because the overall hash depends on the sequential combination of *TC Code*, device's UID, and the flash data. -- **Inserting Malicious Code:** Attempting to insert code into empty spaces fails because the entropy filling process and hash verification will detect any changes. +- **Inserting Malicious Code:** Attempting to insert code into empty spaces fails because after the entropy filling process, the hash verification will detect any changes. -- **Using an SD Card to Store a Copy of Original Flash Content:** An attacker could extract an exact copy of the flash contents to an SD card and subsequently install malicious firmware. This firmware could capture the chip's UID and the user's TC Code, then hash the content of the SD card instead of the flash memory. Although this would make the verification process slower, it introduces a potential security risk. To mitigate this vulnerability, it is advisable to avoid performing verifications while an SD card is inserted. +- **Using an SD Card to Store a Copy of Original Flash Content:** An attacker could extract an exact copy of the flash contents to an SD card and subsequently install malicious firmware. This firmware could read the device's UID and the *TC Code* (after the user enters it), then hash the content of the SD card instead of the flash memory. Although this would make the verification process slower, it introduces a potential security risk. To mitigate this vulnerability, it is advisable to avoid performing verifications while an SD card is inserted. ## Conclusion -The *TC Flash Hash* tool significantly enhances security by making it infeasible for attackers to tamper with the firmware without detection. By combining *TC Code* hashing, filling empty memory with random entropy, and verifying flash integrity through unique images and words, Krux significantly enhances the detection of any tamper attempts. +The *TC Flash Hash* tool significantly enhances security by making it impossible for attackers to tamper with firmware without being detected. By combining *TC Code* hashing, filling empty memory with random entropy, and verification of the the unique image and set of words, Krux allows the detection of any tamper attempts. -Note: The strength of this defense strategy depends on maintaining a strong, confidential *TC Code* and following secure practices when unlocking the device. +Note: The strength of this defense strategy depends on maintaining a strong, confidential *TC Code* and remove the SD card before unlocking the device. diff --git a/docs/getting-started/features/tools.en.md b/docs/getting-started/features/tools.en.md index 96896496..8267553a 100644 --- a/docs/getting-started/features/tools.en.md +++ b/docs/getting-started/features/tools.en.md @@ -66,7 +66,7 @@ Learn more about *Tamper Check Flash Hash* on [Tamper Detection](tamper-detectio -This option permanently removes all stored encrypted mnemonics, settings and `TC Code` from the device's internal flash memory. It ensures that the data is irrecoverable, making it an adequate measure to take if any important mnemonics were stored with a weak encryption key. +This option permanently removes all stored encrypted mnemonics, settings and `TC Code` from the device's internal flash memory. It ensures that the data is irrecoverable, making it an adequate measure to take if any important mnemonics were stored with a [weak encryption key](https://www.hivesystems.com/blog/are-your-passwords-in-the-green).
    @@ -77,6 +77,6 @@ This option permanently removes all stored encrypted mnemonics, settings and `TC This option allows you to remove any stored encrypted mnemonic from the device's internal memory or an SD card. For more information, see [Krux Encrypted Mnemonics](./encrypted-mnemonics.md). -When mnemonics are removed from the device's flash memory, Krux will no longer be able to access them. However, as with most operating systems, the data may still be recoverable using specialized tools. If you stored any important keys with a weak encryption key, it is recommended to use the "Wipe Device" feature below to ensure that the data is irrecoverable. +When mnemonics are removed from the device's flash memory, Krux will no longer be able to access them. However, as with most operating systems, the data may still be recoverable using specialized tools. If you stored any important keys with a [weak encryption key](https://www.hivesystems.com/blog/are-your-passwords-in-the-green), it is recommended to use the "Wipe Device" feature below to ensure that the data is irrecoverable. When mnemonics are removed from an SD card, Krux will overwrite the region where the encrypted mnemonic was stored with empty data. This makes it more secure to delete mnemonics from SD cards using Krux rather than a PC or another device. However, Krux does not have a "Wipe" feature for SD cards; you can find this feature in third-party applications. From ac54271504d3865c6cf40203baf2d2dbf51ec972 Mon Sep 17 00:00:00 2001 From: tadeubas Date: Mon, 9 Dec 2024 11:00:10 -0300 Subject: [PATCH 6/7] Changes following PR suggestions --- docs/getting-started/features/tamper-detection.en.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/getting-started/features/tamper-detection.en.md b/docs/getting-started/features/tamper-detection.en.md index e9b213b8..44f7413c 100644 --- a/docs/getting-started/features/tamper-detection.en.md +++ b/docs/getting-started/features/tamper-detection.en.md @@ -42,7 +42,7 @@ The *TC Flash Hash* tool enables you to verify if the device's internal flash me TC Flash Hash -*Example: The blue symbol and words 'tail monkey' represents the firmware region, while 'wrestle over' user's region.* +*Example: The blue symbol and words 'tail monkey' represent the firmware region, while 'wrestle over' user's region.* Any change in the flash content results in a different image and words: @@ -64,14 +64,14 @@ The *TC Flash Hash* function securely hashes the combination of the *TC Code*, d After setting a *TC Code* user can use the *TC Flash Hash* feature, available in `Tools -> Flash Tools -> TC Flash Hash`. -By navigating to `Settings -> Security -> TC Flash Hash at Boot`, users can set Krux to always require *TC Flash Hash* verification after device is turned on. If a wrong *TC Code* is typed at boot, the device will turn off. Nothing else will happen if the wrong *TC Code* is entered multiple times. As *TC Code* verification data is stored in the user's region of memory, the requirement to type at boot is disabled if the user [erases user's data](../features/tools.md/#erase-users-data) or [wipe device](../installing/from-gui/usage.md/#wipe-device). Flashing an older firmware version will also disable this feature. +By navigating to `Settings -> Security -> TC Flash Hash at Boot`, users can set Krux to always require *TC Flash Hash* verification after device is turned on. If a wrong *TC Code* is typed at boot, the device will turn off. Nothing else will happen if the wrong *TC Code* is entered multiple times. As *TC Code* verification data is stored in the user's region of memory, the requirement to type at boot is disabled if the user [erases user's data](../features/tools.md/#erase-users-data) or [wipe device](../installing/from-gui/usage.md/#wipe-device). Flashing an older firmware version, prior to *TC Flash Hash* support, will also disable this feature. ## Potential Attack Scenarios and Their Mitigation ### Challenge for an Attacker An attacker faces major challenges in replacing the firmware: -- **Lack of Original Flash Data:** Without the exact original flash content, the attacker cannot reproduce the correct hash. +- **Lack of Original Flash Data:** Without the exact original flash content, attackers cannot reproduce the correct hash. - **Sequential Hash Dependency:** The hash function processes data sequentially (*TC Code*, device's UID, and flash memory contents), preventing the attacker from injecting or rearranging data to produce the same hash. @@ -79,9 +79,9 @@ An attacker faces major challenges in replacing the firmware: ### Why Tampered Firmware Cannot Bypass Verification -- **Cannot Reconstruct the Hash:** Without the original flash data, the attacker cannot generate the correct hash, even if it knows the device's UID and the *TC Code* (after the user enters it). +- **Cannot Reconstruct the Hash:** Without the original flash data, the attacker cannot generate the correct hash, even if they know the device's UID and the *TC Code* (after the user enters it). -- **Hash Sensitivity:** Any alteration in the flash content changes the hash output, which will be evident through a different image or the set of two words. +- **Hash Sensitivity:** Any alteration in the flash content changes the hash output, which will be evident through a different image and words. - **Entropy Filling:** Filling empty flash blocks with camera-generated entropy leaves no space for malicious code and any changes to these blocks will alter the hash. @@ -97,6 +97,6 @@ An attacker faces major challenges in replacing the firmware: ## Conclusion -The *TC Flash Hash* tool significantly enhances security by making it impossible for attackers to tamper with firmware without being detected. By combining *TC Code* hashing, filling empty memory with random entropy, and verification of the the unique image and set of words, Krux allows the detection of any tamper attempts. +The *TC Flash Hash* tool significantly enhances security by making it infeasible for attackers to tamper with firmware without being detected. By combining *TC Code* hashing, filling empty memory with random entropy, and verification of the the unique image and set of words, Krux allows the detection of any tamper attempts. Note: The strength of this defense strategy depends on maintaining a strong, confidential *TC Code* and remove the SD card before unlocking the device. From 5a6ed3cc20b29ccb58e65dd8b585548f4d12bc00 Mon Sep 17 00:00:00 2001 From: odudex Date: Mon, 9 Dec 2024 14:50:57 -0300 Subject: [PATCH 7/7] docs: add Setting Up Tamper Detection section --- .../features/tamper-detection.en.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/getting-started/features/tamper-detection.en.md b/docs/getting-started/features/tamper-detection.en.md index 44f7413c..469c2553 100644 --- a/docs/getting-started/features/tamper-detection.en.md +++ b/docs/getting-started/features/tamper-detection.en.md @@ -22,9 +22,20 @@ To secure your Krux device, always verify firmware authenticity before installat Note: The effectiveness of *TC Flash Hash* tamper detection feature relies on running legitimate, uncompromised firmware and safely protecting your *TC Code*. -## Tamper Check Code (TC Code) -A *TC Code*, composed of numbers, letters and special characters, with a minimum length of six characters, can be stored and required to execute *TC Flash Hash* tamper verification before Krux boots at the main application, or optionally as a feature available in `Tools -> Flash Tools`. +### Setting Up Tamper Detection +To help ensure the integrity of your device’s firmware, you can set up tamper detection tools, called *Tamper Check (TC) Flash Hash* and a *Tamper Check (TC) Code*. The *TC Code* must be at least six characters long, and for best security, should include a mix of letters, numbers, and special characters. You can create or change your *TC Code* by going to `Settings -> Security -> Tamper Check Code`. + +Ensure that your *TC Code* remains confidential and challenging to guess, as its security directly influences the effectiveness of your tamper detection. + +Once configured, your *TC Code* will be required to run *TC Flash Hash*. You can run TC Flash Hash at any time by navigating to `Tools -> Flash Tools -> TC Flash Hash`. Alternatively, enable automatic checks on every boot by selecting `Settings -> Security -> TC Flash Hash at Boot`. + +When you enable the *TC Flash Hash at Boot* feature, the device will require you to enter your TC Code at each startup, ensuring routine integrity checks. This also prevents device usage unless the correct code is entered. +*TC Flash Hash* produces a unique visual and verbal signature (an image and two sets of words) that helps you instantly recognize unauthorized changes. See below for details on how it works and what to expect from its output. + +### How Krux Tamper Detection Works + +## Tamper Check Code (TC Code) Before being stored in the device’s flash, the *TC Code* is hashed together with the K210 chip’s unique ID and stretched using PBKDF2. This ensures the *TC Code* is not retrievable via a flash dump and can only be brute-forced outside the device if the attacker also has access to the device’s unique ID (UID). By allowing letters, special characters, and running 100k iterations of PBKDF2, brute-forcing the *TC Code* from dumped data becomes more time-consuming and resource-intensive. ### Enhancing Tamper Detection @@ -79,7 +90,7 @@ An attacker faces major challenges in replacing the firmware: ### Why Tampered Firmware Cannot Bypass Verification -- **Cannot Reconstruct the Hash:** Without the original flash data, the attacker cannot generate the correct hash, even if they know the device's UID and the *TC Code* (after the user enters it). +- **Cannot Reconstruct the Hash:** Without the original flash data, attackers cannot generate the correct hash, even if they know the device's UID and the *TC Code* (after the user enters it). - **Hash Sensitivity:** Any alteration in the flash content changes the hash output, which will be evident through a different image and words. @@ -99,4 +110,4 @@ An attacker faces major challenges in replacing the firmware: The *TC Flash Hash* tool significantly enhances security by making it infeasible for attackers to tamper with firmware without being detected. By combining *TC Code* hashing, filling empty memory with random entropy, and verification of the the unique image and set of words, Krux allows the detection of any tamper attempts. -Note: The strength of this defense strategy depends on maintaining a strong, confidential *TC Code* and remove the SD card before unlocking the device. +Note: The strength of this defense strategy depends on maintaining a strong, confidential *TC Code*, removing the SD card before running *TC Flash Hash* and following usual security and privacy practices.