Как реализовать зашифрованный одноранговый чат в Какао? - PullRequest
2 голосов
/ 07 декабря 2010

Я заинтересован в создании зашифрованного однорангового чата в компании в Какао, но даже не знаю, с чего начать.

Можете ли вы указать мне правильное направление? Какие книги, документацию и т. Д. Вы рекомендуете? Мне нужно узнать об одноранговой связи и шифровании.

Я знаю Objective-C и Какао, но я совершенно не понимаю, что такое пиринг и шифрование.

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Несколько лет назад я работал над проектом с очень похожими целями разработки, хотя и написанным на Java, под названием Узлы спагетти .Он был более сфокусирован как приложение для обмена файлами, но также включал компонент чата.С тех пор проект застопорился, но на wiki есть несколько заметок, которые могут оказаться вам полезными.Я также написал пост-вскрытие сообщения в блоге об опыте.

Этот вопрос довольно широкий, но вот несколько указателей для начала:

  • Рассмотримиспользуя Bonjour для одноранговой связи, если это возможно.(Peer-to-peer работает только в локальных сетях и не очень хорошо работает, если вообще используется в подсетях, поэтому это может быть невозможным.)
  • Возможно, вы захотите использовать SSH-как метод для шифрования.То есть пользователи имеют пары закрытых / открытых ключей и распространяют открытые ключи.Вы используете пару ключей для инициирования сеанса, а затем согласовываете одноразовый ключ шифрования, чтобы вы могли использовать более быстрое шифрование с симметричным ключом для остальной части сеанса.
  • Мы использовали алгоритм Twofish для симметричного шифрования.
1 голос
/ 07 декабря 2010

В качестве рекомендации, любой хорошей отправной точкой (хотя она гораздо более общая, чем P2P / шифрование) будет, вероятно, документ Bonjour Overview , поскольку такая услуга будет хорошим средством вещания. / слушать, чтобы увидеть, кто в настоящее время в системе чата.

Есть также некоторый пример кода, связанный с ссылкой на класс NSNetService документы, которые могут оказаться очень полезными и, по крайней мере, предоставить некоторые хорошие указатели относительно того, где искать дальше.

...