Реализация безопасного удаленного пароля для iPhone - PullRequest
5 голосов
/ 06 октября 2009

Я читал о протоколе безопасного удаленного пароля Стэнфорда , и он выглядит идеально для среды, в которой работают приложения для iPhone. К сожалению, мне не удалось найти хорошую реализацию протокола Objective-C. Насколько я могу судить, криптографические библиотеки в SDK также не реализуют его.

Кто-нибудь знает о такой реализации?

В противном случае, какова будет моя лучшая ставка, как вы думаете? Я мог бы попытаться встроить OpenSSL в мое приложение , но это похоже на действительно большую вещь, которую нужно добавить для этого маленького кусочка. Я мог бы попытаться перевести реализации JavaScript или Java в Objective-C, но это нарушает правило крипто # 1 (используйте известную, проверенную реализацию).

Пара дополнительных пунктов: во-первых, это должно быть очевидно из контекста, но мне нужно что-то совместимое с коммерческим использованием с закрытым исходным кодом (реализация JavaScript, с которой я связывался, как я позже заметил, AGPL).

Кроме того, предполагая, что я в конечном итоге перейду на OpenSSL, у меня возникли реальные проблемы с поиском примера использования его для выполнения SRP. Их сайт утверждает, что код там, но я не могу найти никаких доказательств этого ни в документации OpenSSL , ни в поиске исходного кода (v 0.9.8k). (Или я серьезно неправильно читаю вещи, и мне все еще нужно применить один из их патчей к источнику OpenSSL?)

EDIT:

На этом этапе я действительно мог бы использовать готовый код, довольно полный рецепт или какой-то пример использования SRP в OpenSSL. Я почти уверен, что смог бы собрать что-нибудь с нуля с документами по протоколу , но я действительно стараюсь не изобретать велосипед, если смогу помочь.

Ответы [ 2 ]

5 голосов
/ 06 октября 2009

Реализации SRSS-TLS в OpenSSL и GnuTLS являются единственными, которые, как я знаю, поддерживаются на C (TinySRP не обновлялся с 2001 года, и было много уведомлений о безопасности базовой версии OpenSSL, на которой он основан, хотя я не знаю, влияют ли они на сам TinySRP).

Тем не менее, каждый проект iPhone, который я создал, в конечном итоге должен был включать копию OpenSSL для чего-то или другого. Я рекомендую просто кусать пулю и использовать ее. Инструкции, на которые вы ссылаетесь, работают нормально.

Лично я встраиваю OpenSSL в универсальную библиотеку, используя lipo с версиями arm и x86. Таким образом, я могу ссылаться на один .a для симулятора и устройства. Липо очень легко. Просто соберите две библиотеки и склейте их вместе. Вот правило из моего Makefile:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo \
        -create \
        -arch armv6 iPhoneOS$(SDK_VER)/lib/$(1) \
        -arch i386 iPhoneSimulator$(SDK_VER)/lib/$(1) \
        -output iPhoneUniversal$(SDK_VER)/lib/$(1)
3 голосов
/ 10 июля 2015

Для реализации SRP на платформе iOS требуется OpenSSL, поэтому хорошим способом является установка OpenSSL через модули.

Существует хорошая реализация srp на языке C от hoccer, которая называется csrp .

Я написал обертку iOS для этой реализации, которую вы можете найти здесь . Но я должен упомянуть, что csrp уже хорошо реализован и самоочевиден из его документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...