Криптография и аутентификация через TLS с Web of Trust на Java

Для программы, которую я пишу, я хотел бы использовать TLS (или что-то подобное) для инкапсуляции протокола моего приложения. Это сведет к минимуму как объем работы, которую мне нужно сделать, так и количество уязвимостей, которые я могу случайно создать.

Моя программа предназначена для работы в одноранговой сети, хотя один или несколько серверов предоставляют некоторые услуги, чтобы помочь одному пользователю найдите другой (он регистрирует комбинации IP-адрес / порт), но мало что сделайте. Я хочу сделать эту систему очень отказоустойчивой, поэтому использование этих серверов в качестве центра сертификации недопустимо, потому что компрометация сервера или его ключа затронет слишком много пользователей. Поэтому я планирую использовать сеть доверия.

Основная проблема с использованием TLS заключается в том, что исходный TLS 1. 2 (RFC 5246) не предусматривает использование сертификатов OpenPGP. Вроде очень ориентирован на x.509. RFC 6091, который отменяет RFC 5081 и расширяет RFC 5246, предусматривает расширение TLS, которое делает то, что я хочу. Проблема в том, что я не думаю, что BouncyCastle реализует это расширение, и я не могу найти криптографическую библиотеку Java, которая поддерживает. Я также не хочу писать свои собственные / вносить свой вклад в BC, потому что я действительно плохо умею не делать ошибок и очень ленив.

Другая проблема в том, что BouncyCastle предоставляет "легкую клиентскую сторону" TLS API », но поскольку это программное обеспечение является P2P, также необходим серверный API, чтобы я мог использовать TLS, убедив его, что одноранговый узел, инициирующий соединение, является клиентом. Я почти уверен, что после того, как рукопожатие завершится, все будет так же. Могу ли я по-прежнему использовать TLS (в чем я очень сомневаюсь)? Есть ли такой протокол, как TLS, который разработан для P2P или, по крайней мере, может работать таким образом (как я полагаю, TLS может), но может работать с сертификатом OpenPGP? Если это не так, следует ли мне продолжить идею, изложенную в , этот вопрос и реализовать свой собственный уровень, взяв концепции из TLS?

Ссылки на RFC: RFC 5246 и RFC 6091

6
задан Community 23 May 2017 в 11:45
поделиться