Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Blocker_Device

Overview

This repository represents the device module of a blockchain-based IoT software update platform. When the manufacturer registers a new software update on the blockchain, the device detects the event, purchases the update, downloads the encrypted update package from IPFS, verifies its integrity, decrypts it, and installs it. The installation status is then recorded on the blockchain.

Device Update Process

  1. Detect a new software update event on the blockchain and receive the update notification
  2. Purchase the update package
  3. Download the encrypted update file (Es) from IPFS
  4. Compute the SHA3-256 hash of the file and verify it against the registered reference hash (hEbj)
  5. Decrypt the symmetric key (kbj) from the CP-ABE encrypted key (Ec)
  6. Derive the AES-256 key by serializing kbj and applying SHA-256 hashing, then decrypt the update file to restore the original file (bj)
  7. Install the verified update on the device and record the installation result on the blockchain via smart contract

Development Environment

image
  • IoT Device: AIoT AutoCar Prime X
    • AiOT AutoCar Prime X is an AI-enabled model car equipped with the Nvidia Jetson Xavier NX module, offering sufficient computing power to run advanced applications.

    • In our project, we chose this car as the IoT device because the manufacturer’s update files were designed to deliver autonomous driving services. The device was set up to subscribe to these updates, so that each update installation would add new autonomous driving features. While we demonstrated our system on the AutoCar Prime X, the service is also designed to be compatible with other IoT devices such as Raspberry Pi.

  • OS: DockerUbuntu
  • Programming Language: Python
    • Configured a Docker-based Ubuntu environment using the Python 3.10-slim (arm64) image
  • Development Tools: VSCode

Technology Stack

  • Blockchain Upload the signature, update price, version, description, hash of the encrypted file, IPFS hash, and the encrypted symmetric key to the blockchain.

  • Smart ContractEnsure atomic software distribution and purchase between manufacturer and device

  • ECDSA Verify update request and installation integrity using ECDSA signature validation

  • Web3Interact with the blockchain using Web3 libraries

  • IPFS Download encrypted update files from IPFS with distributed storage support

  • AES-256Decrypt update files using AES-256 symmetric key to retrieve the original file

  • CP-ABE Decrypt the encrypted symmetric key using CP-ABE with the device’s secret key, ensuring that decryption is only possible when the key matches the update policy defined by the manufacturer.

  • SHA3-256Verify file integrity by comparing SHA3-256 hash with blockchain values

  • WebSocketDetect blockchain events in real-time for update monitoring

  • Flask Device backend server built with Flask.

Installation

See install.md for installation and usage instructions.

Directory Structure

Blocker_Device/
├── backend/
│ └── api.py # Backend API entry point
├── blockchain/
│ └── registry_address.json # Blockchain registry address/config
├── client/
│ ├── device_client.py # Implements the device update process
│ └── keys/
│ ├── device_secret_key_file.bin # Device CP-ABE private key
│ └── public_key.bin # Device Manufacturer Public key
├── crypto/
│ ├── cpabe/
│ │ └── cpabe.py # CP-ABE (attribute-based encryption) implementation
│ ├── hash/
│ │ └── hash.py # SHA3-256 Hash utilities
│ └── symmetric/
│ └── symmetric.py # AES-256 Symmetric-key encryption utilities
├── ipfs/
│ └── download/
│ └── download.py # IPFS download logic
├── Dockerfile # Root application Docker build config
├── docker-compose.yml # Service orchestration config
└── requirements.txt # Python dependencies list

License

This project is licensed under the MIT License. See LICENSE for details. This distribution includes several third-party software components. For an overview of included third-party libraries and their license types, please see NOTICE.txt.
For the complete license texts, refer to the LICENSES directory.


Contributions and questions are always welcome through Issues and Pull Requests. For detailed contribution guidelines, please refer to the Contribution Guide.


Contributions and questions are welcome via Issues and Pull Requests. For more information about the overall project, visit the HSU-Blocker GitHub organization.

FOSSA Status Large

About

[캡스톤디자인, 현대자동차 산학협력] 블록체인 기반 IoT 소프트웨어 업데이트 플랫폼 - 디바이스

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages