Как лучше всего развернуть сервер CoAP-DTLS, который может поддерживать несколько наборов идентификаторов / секретов PSK?

Мы оцениваем возможность замены нашего обычного HTTPS / RESTful через сотовую сеть (4G-LTE) на CoAP / DTLS через NB-IoT, чтобы продлить время автономной работы удаленных устройств. Приложение IoT, которое мы развернули, занимает лишь небольшую часть полосы пропускания данных 4G-LTE, а UDP через NB-IoT достаточно хорош; поэтому качество передачи не является нашей главной заботой.

Но проблема в том, что теперь мы используем взаимную аутентификацию на уровне SSL / TLS и назначаем разные клиентские сертификаты разным подгруппам. И я не уверен, как это сделать в CoAP / DTLS.

Я узнал, что модель учетных данных по умолчанию для CoAP / DTLS - это Pre-Shared Key (PSK), и я также узнал из RFC4279, что я могу использовать пару идентификаторов PSK / общих ключей в качестве простой альтернативы. на имя пользователя, которое могло бы соответствовать моим потребностям. Но когда я пытался понять, как это реализовать, я обнаружил, что интернет-ресурс очень ограничен. Пока я исследовал node-coap.js и libcoap, но не могу найти никаких подсказок в документах. Оба, казалось, одновременно поддерживали только одну учетную запись.

Как лучше всего развернуть сервер CoAP-DTLS, который может поддерживать несколько наборов идентификаторов / общих ключей PSK? Или мне нужно реализовать весь механизм аутентификации на уровне приложения?


person RichardLiu    schedule 20.11.2019    source источник


Ответы (1)


Одним из вариантов CoAP на стороне сервера / облака является Eclipse Californium. Я вовлечен в этот проект и поэтому могу быть предвзятым. Тем не менее, мы фактически построили Калифорниум именно для этой цели.

person Kai Hudalla    schedule 20.11.2019
comment
Спасибо. Следуя вашей подсказке, я просто проверяю исходный код Scandium на GitHub. Кажется, теперь он реализует репозиторий PSK либо как статический (один фиксированный ключ), либо как java.util.Map. Поэтому мне нужно заново настраивать хранилище PSK при каждой инициализации серверного приложения. Я прав ? - person RichardLiu; 21.11.2019
comment
Эти StaticPskStore и InMemoryPskStore являются примерами реализации PskStore. Не стесняйтесь реализовать его в соответствии с вашими требованиями. Использование InMemoryPskStore для начала, как вы уже выяснили, потребует такой инициализации. - person Achim Kraus; 22.11.2019
comment
@AchimKraus Спасибо. Думаю, имеет смысл расширить InMemoryPskStorage для интеграции с MapDB. - person RichardLiu; 22.11.2019
comment
Хотя californium задуман как библиотека для создания приложения, это расширение PskStore (или InMemoryPskStorage), на мой взгляд, оставлено этому приложению. - person Achim Kraus; 22.11.2019