2009-11-10 1 views
2

Насколько я понимаю, некоторые понятия возникают, когда я пишу игрушки для изолированных аспектов проблемы. Например, для шифрования вы можете написать программу для шифрования, а затем расшифровать строку .. и увидеть, что вы получаете начальную строку.Какие учебные программы игрушек вы предлагаете писать, чтобы понимать сертификаты?

Какие игрушки вы предлагаете мне написать, чтобы понимать сертификаты? (взаимодействие с сервером/клиентом, связь ssl, подписи и т. д.) И/или какие пространства имен .NET следует исследовать?

(не важно для вопроса, но я использую C#)

+0

Что приложения вы планируете написать? Если это будет приложение ASP.NET, вы можете написать страницу «Hello, » ASP.NET с заменой пользователя, взятого из одного из свойств сертификата. В реальном приложении вы можете использовать что-то вроде серийной версии сертификата в качестве ключа для ввода базы данных. – okutane

+0

Я нашел это: http://www.example-code.com/csharp/certs.asp – Nestor

ответ

3
  • Создать симметричный ключ и зашифровать/расшифровать что-то с ним. Измените зашифрованный байт [] и попробуйте его расшифровать. Играйте с различными дополнениями и режимами и повторяйте несколько раз.
  • Создание/сохранение/загрузка сертификатов и закрытых ключей.
  • Проверьте цепочку сертификатов для любого сертификата, который вы найдете, чтобы увидеть наиболее распространенный вид ошибок.
  • Создайте симметричный ключ, зашифруйте его с помощью открытого ключа одного сертификата («клиент») и частного другого («сервер»).
  • Создайте сообщение, которое отправляет вышеупомянутый ключ, зашифрованный «закрытым» ключом сервера, затем зашифрованный текст и подпишите все это. Затем декодируйте и проверьте это, используя открытый ключ «сервер» и закрытый ключ «клиент».

Пространства имён?

  • System.Security.Cryptography
  • System.Security.Cryptography.Authentication
  • System.Security.Cryptography.X509Certificates

Несколько интересных типов:

  • RSACryptoServiceProvider
  • SymmetricAlgorithm
  • RijndaelManaged
  • ICryptoTransform
  • X509Chain
+0

Я понятия не имею (пока), что это все, но я сделаю некоторые исследования Google. Являются ли эти новички, промежуточные или продвинутые темы в этой области? – Nestor

+0

Заказ от более легкого к «сложнее». Каждый шаг помогает вам перейти к следующему (кроме верификации цепочки). – Gonzalo

+0

Gonzaloooo! ha ... Я не ожидал найти вас здесь. Замечательно! Я сделаю домашние задания, а затем поеду в Бостон для оценки :-) – Nestor

2

Я не согласен с данным ответом. Чтобы понять сертификаты, вы должны понимать инфраструктуру, лежащую за ней (PKI, инфраструктура открытых ключей). Это означает, что вы должны прочитать некоторые материалы о первой

  • Как открытый ключ шифрования работы (в целом)
  • Почему ПКИ нужны
  • Что такое сертификат и почему он нужен

Программирование этого материала не имеет смысла, если вы не знаете концепций, стоящих за ним.

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

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

Редактировать после комментария: Да, игрушечные программы всегда приятно воспринимать концепцию на практике. Что приходит на ум:

  • сделать публичный шифровать ключ/дешифрования (базовый)
  • Do подпись/проверить подпись (я знаю, что это то же самое, что и предыдущий, но он принципиально отличается) (базовый)
  • Попытки подключиться к серверу и сделать SSL рукопожатие себя (продвинутого)
  • Попробуйте подключиться к серверу, получать сертификат и проверить действительность через всю цепочку сертификатов (умеренную)
  • Попробуйте создать свой собственные самоподписанные сертификаты (умеренные)
  • Попробуйте использовать другие алгоритмы шифрования, кроме RSA, попробуйте DSA, Эль-Гамаля, эллиптических кривых Crypto (умеренный)
  • Реализовать Диффи-Хеллмана keyexchange алгоритм (расширенный)

И как только вы закончите с я думаю, вы вполне разумно понимаете все это. Если вам все еще интересно, вы всегда можете погрузиться в более продвинутые вещи, такие как математика, например, как вы обманываете, доказательства правильности алгоритмов и т. Д.

Кстати, я просто наткнулся на недавнее открытие относительно SSL/TLS и с тех пор вы работаете по этому вопросу, возможно, вы хотели бы прочитать эту небольшую статью:

http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html

+0

ОК .. и после того, как я прочитал понятия (которые у меня были), вы могли бы написать игрушечные программы для консолидации своих знаний или нет? если да, то какие? – Nestor