frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Preventing IoT Edge Device Cloning

https://www.embedded.com/preventing-iot-device-cloning/
5•willhschmid•2h ago

Comments

imglorp•1h ago
AWS Greengrass was a pain in the tail to use, but I feel they had several ideas to mitigate this problem at least: identity was managed centrally with certificate rotation. I'm pretty sure a captured device could not be cloned and continue to phone into the cloud. They had several other good ideas, maybe standard now, like device shadows, where intent is propagated towards the edge and state is propagated back to the cloud.
tylerflick•49m ago
I hate managing clients certs, but I doubt there’s a better way.
evgpbfhnr•1h ago
"How it works" https://realtimelogic.com/ba/doc/en/SoftTPM.html

I couldn't find "actual sources", but one of their github repo has this: https://github.com/RealTimeLogic/BAS/blob/main/examples/Mako...

Which extracts to this .config file (looks like lua code, that creates a secret from PBKDF2 of... what? I couldn't find where secrets would come from here, but that repo obviously misses the interesting bindings; from the how it works link it looks like they're just hashing the SN to generate a pseudorandom key but I don't see why you couldn't just generate a key for neighboring devices by just faking the SN then...)

    local maxHash=pcall(function() ba.crypto.hash("sha512") end) and "sha512" or "sha256"
    local sfmt,jencode,jdecode,symmetric,PBKDF2,keyparams,sign,jwtsign,createkey,createcsr,sharkcert=
    string.format,ba.json.encode,ba.json.decode,ba.crypto.symmetric,ba.crypto.PBKDF2,ba.crypto.keyparams,
    ba.crypto.sign,require"jwt".sign,ba.create.key,ba.create.csr,ba.create.sharkcert
    local function setuser(ju,db,name,pwd)
    if pwd then
    if type(pwd) == "string" then
    pwd={pwd=pwd,roles={}}
    end
    db[name]=pwd
    else
    db[name]=nil
    end
    local ok,err=ju:set(db)
    if not ok then error(err,3) end
    end
    local function tpm(gpkey,upkey)
    local keys={}
    local function tpmGetKey(kname)
    local key=keys[kname]
    if not key then error(sfmt("ECC key %s not found",tostring(kname)),3) end
    return key
    end
    local function tpmSign(h,kname,op) return sign(h,tpmGetKey(kname),op) end
    local function tpmJwtsign(p,kname,op) return jwtsign(p,function(h) return sign(h,tpmGetKey(kname)) end,op) end
    local function tpmKeyparams(kname) return keyparams(tpmGetKey(kname)) end
    local function tpmCreatecsr(kname,...) return createcsr(tpmGetKey(kname),...) end
    local function tpmCreatekey(kname,op)
    if keys[kname] then error(sfmt("ECC key %s exists",kname),2) end
    op = op or {}
    if op.key and op.key ~= "ecc" then error("TPM can only create ECC keys",2) end
    local newOp={}
    for k,v in pairs(op) do newOp[k]=v end
    newOp.rnd=PBKDF2(maxHash,"@#"..kname,upkey,5,1024)
    local key=createkey(newOp)
    keys[kname]=key
    return true
    end
    local function tpmHaskey(kname) return keys[kname] and true or false end
    local function tpmSharkcert(kname,certdata) return sharkcert(certdata,tpmGetKey(kname)) end
    require"acme/engine".setTPM{jwtsign=tpmJwtsign,keyparams=tpmKeyparams,createcsr=tpmCreatecsr,createkey=tpmCreatekey,haskey=tpmHaskey}
    local t={}
    function t.haskey(k) return tpmHaskey(k) end
    function t.createkey(k,...) return tpmCreatekey(k,...) end
    function t.createcsr(k,...) return tpmCreatecsr(k,...) end
    function t.sign(h,k,o) return tpmSign(h,k,o) end
    function t.jwtsign(k,...) return tpmJwtsign(k,...) end
    function t.keyparams(k,...) return tpmKeyparams(k,...) end
    function t.sharkcert(k,...) return tpmSharkcert(k,...) end
    function t.globalkey(n,l) return PBKDF2(maxHash,n,gpkey,5,l) end
    function t.uniquekey(n,l) return PBKDF2(maxHash,n,upkey,5,l) end
    function t.jsonuser(k,global)
    k=PBKDF2("sha256","@#"..k,global and gpkey or upkey,6,1)
    local function enc(db)
    local iv=ba.rndbs(12)
    local gcmEnc=symmetric("GCM",k,iv)
    local cipher,tag=gcmEnc:encrypt(jencode(db),"PKCS7")
    return iv..tag..cipher
    end
    local function dec(encdb)
    if encdb and #encdb > 30 then
    local iv=encdb:sub(1,12)
    local tag=encdb:sub(13,28)
    local gcmDec=symmetric("GCM",k,iv)
    local db
    pcall(function() db=jdecode(gcmDec:decrypt(encdb:sub(29,-1),tag,"PKCS7")) end)
    if db then return db end
    end
    return nil,"Data corrupt"
    end
    local ju,db=ba.create.jsonuser(),{}
    return {
    users=function() local x={} for u in pairs(db) do table.insert(x,u) end return x end,
    setuser=function(name,pwd) setuser(ju,db,name,pwd) return enc(db) end,
    setdb=function(encdb) local d,err,ok=dec(encdb) if d then ok,err=ju:set(d) if ok then db=d return ok end end return nil,err end,
    getauth=function() return ju end
    }
    end
    ba.tpm=t
    end
    
    local klist={}
    return function(x)
    if true == x then
    local hf=ba.crypto.hash(maxHash)
    for _,k in ipairs(klist) do hf(k) end
    tpm(ba.crypto.hash(maxHash)(klist[1])(true),hf(true))
    klist=nil
    return
    end
    table.insert(klist,x)
    end
mrbluecoat•43m ago
> when attackers capture real devices, extract cryptographic keys or identifiers, and use them to build duplicates

If they've captured the device, what if they don't clone it but use it directly instead?

RPM 6.0 Released with OpenPGP Improvements and Signature Checking by Default

https://www.phoronix.com/news/RPM-6.0-Released
1•westurner•2m ago•0 comments

GitHub's plan for a more secure NPM supply chain

https://github.blog/security/supply-chain-security/our-plan-for-a-more-secure-npm-supply-chain/
1•gnabgib•2m ago•0 comments

NYC Telecom Raid: What's Up with Those Weird SIM Banks?

https://tedium.co/2025/09/23/secret-service-raid-sim-bank-telecom-hardware/
2•coloneltcb•5m ago•0 comments

Louise Vincent, 49, Drug User Who Led Harm Reduction Movement, Dies

https://www.nytimes.com/2025/09/22/health/louise-vincent-dead.html
1•mitchbob•5m ago•1 comments

SEC Chief Eyes Rule Exemptions for Crypto Trading by December

https://www.bloomberg.com/news/articles/2025-09-23/sec-chief-eyes-rule-exemptions-for-crypto-trad...
2•petethomas•5m ago•1 comments

Automotive Owners' Manuals

https://books4cars.com/
1•bookofjoe•5m ago•0 comments

What Turns Some Scholars into Frauds?

https://www.chronicle.com/article/what-turns-some-scholars-into-frauds
1•pseudolus•5m ago•1 comments

Acting Chairman Pham Launches Tokenized Collateral and Stablecoins Initiative

https://www.cftc.gov/PressRoom/PressReleases/9130-25
1•petethomas•9m ago•0 comments

Show HN: Thehomeschoolingcompany.com, fast, easy, personalized learning

https://www.thehomeschoolingcompany.com/
1•garberchov•13m ago•0 comments

Are Blue Light Blocking Glasses a $3B Scam? [video]

https://www.youtube.com/watch?v=LR6V2s9pKT0
3•pedalpete•14m ago•1 comments

Eight years of organizing tech meetups

https://notes.eatonphil.com/eight-years-of-tech-meetups.html
1•ibobev•15m ago•0 comments

When "no" means "yes": Why AI chatbots can't process Persian social etiquette

https://arstechnica.com/ai/2025/09/when-no-means-yes-why-ai-chatbots-cant-process-persian-social-...
2•jnord•16m ago•1 comments

Circle of Thirds

https://circleofthirds.com/
1•JMiao•17m ago•0 comments

Rules of Thumb

https://www.rulesofthumb.org/
1•bookofjoe•17m ago•0 comments

FT: Nvidia's $100B deal with OpenAI: an Alphaville FAQ

https://www.ft.com/content/7f1426ab-9f70-44e0-bb06-d83df348b64b
1•snake_doc•18m ago•0 comments

Qwen3-Max is here–no preview, just power

https://twitter.com/Alibaba_Qwen/status/1970599097297183035
1•sergiotapia•18m ago•0 comments

Kaidan 0.13.0: Multi-Account Support and Secure Password Storage – XMPP Client

https://www.kaidan.im/2025/09/21/kaidan-0.13.0/
1•neustradamus•19m ago•0 comments

9 Linux certifications to boost your career

https://www.networkworld.com/article/4060215/9-linux-certifications-to-boost-your-career.html
2•dxs•20m ago•2 comments

GitHub powered Y Combinator phishing campaign

https://y-comblnator.com/apply
3•nickphx•21m ago•2 comments

Show HN: BX Live Server – VS Code live reload with embedded preview

https://marketplace.visualstudio.com/items?itemName=Thinkback.tbx-live-server
2•th3mailman•22m ago•0 comments

Microsoft is building an AI marketplace to pay publishers for content

https://www.neowin.net/news/microsoft-is-reportedly-building-an-ai-marketplace-to-pay-publishers-...
1•bundie•22m ago•0 comments

From Prison to Helping the FBI to a TV Miniseries, to Google-Hallucinated Libel?

https://reason.com/volokh/2025/09/23/from-prison-to-helping-the-fbi-to-an-apple-tv-miniseries-to-...
1•anonymousiam•30m ago•0 comments

MCP is missing secure auth

https://blog.arcade.dev/mcp-server-authorization-guide
1•shawneechase•31m ago•1 comments

Walking Around the Compiler

https://bernsteinbear.com/blog/walking-around/
1•chunkles•33m ago•0 comments

Daslang

https://daslang.io/
1•Stevvo•34m ago•0 comments

Sonhadores

https://apenasumsonhador.substack.com/
1•danitzsche•34m ago•1 comments

Sonhador

1•danitzsche•35m ago•0 comments

Deploy your own AI vibe coding platform – in one click

https://blog.cloudflare.com/deploy-your-own-ai-vibe-coding-platform/
2•felipevolpatto•36m ago•0 comments

Show HN: A Live Map for Running Seattle's Light Rail

https://raceconditionrunning.com/light-rail-relay-25/
1•nickswalker•39m ago•0 comments

'SIM Farms' Are a Spam Plague. A Giant One in NY Threatened US Infrastructure

https://www.wired.com/story/sim-farm-new-york-threatened-us-infrastructure-feds-say/
4•petethomas•40m ago•0 comments