Voor een project ben ik belast met het ontwerpen van een methode om remote (embedded) devices op een veilige manier draadloos ( BTLE) met elkaar te kunnen laten communiceren. De devices hebben een hardwarematige AES engine aan boord, dus daar wil ik graag gebruik van maken voor de symmetrische encryptie die nodig is om de veilige verbinding op te zetten tussen de devices.
Voor het verkrijgen van sleutels voor dit verkeer ben ik uitgekomen op het (modified) Needham-Schroeder protocol. Er is dus een server S die bepaalt of een sleutel KAB wordt uitgereikt aan B(en ook A) gebaseerd op het feit of de eigenaar van device B betaald heeft voor de services van device A.
De constructie waar ik op uitkom gaat er uiteindelijk van uit dat als device B een bericht van A ("challenge") kan decrypten en het goede antwoord kan terugsturen naar device A, dit voor device A een teken is dat device B inderdaad daartoe gemachtigd is door de server die de sleutel KAB heeft uitgedeelt.
Nou ben ik nogal een nitwit op het gebied van security/encryptie, maar wat me wel duidelijk is geworden is dat als je ondanks de keuze voor bewezen technieken (AES,N-S protocol,...) je ergens een (denk)fout maakt je uiteindelijk het systeem behoorlijk lek kunt maken. Ik heb daarom de volgende vragen:
- Als je AES gaat gebruiken, welke mode of operation zou je in deze use-case dan moeten nemen? Moet het een authenticated mode zijn?
- Hoe belangrijk is het om de IV aan beide kanten random en hetzelfde te laten zijn? is dit ook belangrijk als het aantal brichten laag is?
- Is de aanname die ik schets dat het correct kunnen decrypten en beantwoorden van een challenge van A door B (in feite een identity check?) een correcte? (Misschien wel dezelfde vraag als de eerste)
- Hoe lang zou de verkregen key (eigenlijk een session key) geldig moeten zijn? Zijn dat uren? Dagen?
Mijn excuses voor de wat abstracte formulering, maar NDA en zo ....
[edit]
Inderdaad IV, thx
Voor het verkrijgen van sleutels voor dit verkeer ben ik uitgekomen op het (modified) Needham-Schroeder protocol. Er is dus een server S die bepaalt of een sleutel KAB wordt uitgereikt aan B(en ook A) gebaseerd op het feit of de eigenaar van device B betaald heeft voor de services van device A.
De constructie waar ik op uitkom gaat er uiteindelijk van uit dat als device B een bericht van A ("challenge") kan decrypten en het goede antwoord kan terugsturen naar device A, dit voor device A een teken is dat device B inderdaad daartoe gemachtigd is door de server die de sleutel KAB heeft uitgedeelt.
Nou ben ik nogal een nitwit op het gebied van security/encryptie, maar wat me wel duidelijk is geworden is dat als je ondanks de keuze voor bewezen technieken (AES,N-S protocol,...) je ergens een (denk)fout maakt je uiteindelijk het systeem behoorlijk lek kunt maken. Ik heb daarom de volgende vragen:
- Als je AES gaat gebruiken, welke mode of operation zou je in deze use-case dan moeten nemen? Moet het een authenticated mode zijn?
- Hoe belangrijk is het om de IV aan beide kanten random en hetzelfde te laten zijn? is dit ook belangrijk als het aantal brichten laag is?
- Is de aanname die ik schets dat het correct kunnen decrypten en beantwoorden van een challenge van A door B (in feite een identity check?) een correcte? (Misschien wel dezelfde vraag als de eerste)
- Hoe lang zou de verkregen key (eigenlijk een session key) geldig moeten zijn? Zijn dat uren? Dagen?
Mijn excuses voor de wat abstracte formulering, maar NDA en zo ....
[edit]
Inderdaad IV, thx
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.