Итак, я пытаюсь предоставить безопасную систему обмена сообщениями приложений, которая предоставляет все преимущества CIA.
У меня есть отправитель и получатель.
Ключи отправителя: Частный = (55,27) Общедоступные = (55,3)
Ключи приемника: Частный = (35, 29) Общедоступные = (35,29)
В этом конкретном сценарии я использую RSA, цифровую подпись и шифр сдвига.
Однако по какой-то причине при внедрении этого в код я застреваю.
В моем конкретном случае:
У меня есть строка сообщения "СНГ"
После выбора Ks (5)
Я сдвигаю все буквы на обозначенные K, используя ShiftCipher, и получаю сообщение «hnx», которое после преобразования в bigInteger с использованием ASCII, я получаю 204210220. (Это после добавления 100 к каждому значению, чтобы получить 3 цифры для каждого письмо.)
Вот где я теряюсь во время пошагового процесса.
Насколько я понимаю. Сначала я хэширую сообщение. Итак, выбрав хэш 6, (204210220% 6) я получаю 4.
Итак, я шифрую хешированное сообщение. Это будет Ka- (H (m)) или иначе 4 ^ 26 mod 55. Что дает мне 49.
Я предполагаю интегрировать это с помощью цифровой подписи. Что было бы
47 ^ 27 mod 55. Что дает мне ответ 53.
Затем я бы использовал Ks с открытым ключом Боба, поэтому 5 ^ 29 mod 35, что дает мне 10.
После этого я не понимаю, что делать.
Насколько мне известно, я предполагаю зашифровать 53 ключа, но я не понимаю, какой именно.
В дополнение к этому, после окончательной отправки всего этого получателю, как они предполагают получить сообщение, поскольку хеширование является односторонней функцией?
У меня все это реализовано в коде нескольких разных классов, которые передают значения туда и обратно, поэтому я подумал, что будет проще просто ввести мою логику, поэтому извиняюсь!
Любая помощь будет очень признательна!
Это просто для базового понимания, а его реализация - просто для ясности и обучения.
Хорошо. Ну, во-первых, размеры ваших ключей RSA слишком малы. Вы также используете RSA без заполнения, что по определению небезопасно. Кроме того, вам нужно решить, хотите ли вы зашифровать сообщение или подписать сообщение. Это две разные вещи и служат двум разным целям. Если вы шифруете, вы не должны хешировать, вы шифруете сообщение с помощью открытый ключ. Если вы подписываете, вы шифруете хэш сообщения с помощью закрытый ключ. Это все основные понятия. Я настоятельно рекомендую вам изучить это самостоятельно - информации достаточно.
По крайней мере, как меня учили, хэш уже известен обеим сторонам. Так какой же смысл в шифровании хэша закрытым ключом?
Владелец закрытого ключа создает сообщение, хеширует его и шифрует хеш своим закрытым ключом. Сообщение и зашифрованный хэш отправляются получателю, у которого есть соответствующий открытый ключ. Затем этот человек может расшифровать хеш с помощью открытого ключа, вычислить хеш самостоятельно и сравнить их, чтобы убедиться, что сообщение действительно пришло от человека, которому принадлежит закрытый ключ.




Это просто для развлечения или это будет чем-то, что превратится в реальную реализацию? Первое, что я замечаю, это то, что ничто из этого не является отдаленно безопасным по ряду причин - вы понимаете это, да?