Files
obsidian/cybersec/crypto/Public key Basic.md
T

16 lines
1.8 KiB
Markdown

RSA - шифрование с использованием публичного ключа, позволяющее безопасно отправлять данные по небезопсаным каналам связи. При использовании небезопасных каналов связи, мы ожидаем что их будут прослушивать.
RSA основывается на вычислении множителей большого числа.
Публичный ключ используется что бы зашифровать сообщение, а приватный ключ что бы расшифровать его.
Рассмотрим на примере:
![[Pasted image 20260907152906.png]]
1. Боб выбирает 2 простыл числа, *p* и *q* (например 157, 199) и вычисляет *n* = *p* * *q* = 157 * 199 = 31243
2. При `F(n) = n - p - q + 1` (31243 - 157 - 199 + 1 = 30888), боб выбирает e = 163, которое является ваимопростым с F(n), так же он выбирает d = 379, такое что `e * d = 1 mod F(n)` (163 * 379 - 61777, 61777 mod 30888 = 1). Публичным ключем является (n,e) (31243,163), а приватным ключем ялвятся (n,d) (31243,379).
3. Представим что зашифрованное сообщение является x = 13, тогда Алисе надо вычислить и отправить: $y = x^e~mod~n$ ($13^{163}~mod~31243 = 16341$)
4. Боб расшифрует полученное значение таким образом: $x = y^d~mod~n$ ($16341^{379}~mod~31243=13$, таким образом он получил ровно то сообщение которое было отправлено.