Advertisement
GeorgiLukanov87

Encryption and hashing

Jan 4th, 2025
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.74 KB | None | 0 0
  1. Криптирането и хеширането са два различни процеса в програмирането, които се използват за осигуряване на сигурност, но имат различни цели и принципи на работа. Ето основните разлики:
  2.  
  3. Криптиране
  4. Цел:
  5. Защита на данни по начин, който позволява те да бъдат възстановени в оригиналния си вид (декриптиране).
  6.  
  7. Приложение:
  8. За изпращане на данни сигурно по интернет.
  9. Защитени съобщения, файлове или други данни, които трябва да се четат само от оторизирани лица.
  10.  
  11. Метод на работа:
  12. Преобразува данните в шифрован (нечетим) формат, използвайки ключ за криптиране.
  13. Оторизираните потребители могат да върнат данните в оригиналния им вид с помощта на ключ за декриптиране.
  14.  
  15. Примерни алгоритми:
  16. AES (Advanced Encryption Standard).
  17. RSA (асиметрично криптиране).
  18. DES (Data Encryption Standard).
  19.  
  20. Характеристики:
  21. Процесът е обратим (може да се декриптира, ако имате ключа).
  22. Хеширане
  23.  
  24. Цел:
  25. Създаване на уникален "отпечатък" или идентификатор на данните.
  26. Проверка за автентичност или промени в данните.
  27.  
  28. Приложение:
  29. Съхранение на пароли.
  30. Проверка на данни за промени (напр. верификация на файлове).
  31. Генериране на идентификатори или проверки в бази данни.
  32.  
  33. Метод на работа:
  34. Преобразува данните в уникален фиксиран низ (хеш).
  35. Хешът не може да бъде върнат обратно в оригиналните данни.
  36.  
  37. Примерни алгоритми:
  38. MD5 (не се препоръчва за сигурност).
  39. SHA-256 (Secure Hash Algorithm).
  40. bcrypt (за пароли).
  41.  
  42. Характеристики:
  43. Процесът е необратим (хешът не може да бъде декриптиран).
  44. Малка промяна в данните води до напълно различен хеш (свойство на хеш функциите).
  45.  
  46. Основни разлики:
  47. Критерий Криптиране Хеширане
  48. Обратимост Обратим (с ключ). Необратим.
  49. Цел Запазване на поверителност. Проверка за целостност/идентификация.
  50. Приложение Защитено предаване на данни. Съхранение на пароли или проверки.
  51. Използване на ключ Да (за криптиране/декриптиране). Не (само хеш функция).
  52.  
  53. 1. Видове криптиране
  54. Симетрично криптиране: Един и същи ключ се използва за криптиране и декриптиране (напр. AES). Бързо е, но ключът трябва да бъде защитен.
  55. Асиметрично криптиране: Използват се два различни ключа — публичен (за криптиране) и частен (за декриптиране), напр. RSA. Подходящо е за сигурно споделяне на ключове.
  56. Важно: Асиметричното криптиране е по-бавно от симетричното, но често се използват заедно (напр. TLS/SSL).
  57.  
  58. 2. Проблеми при хеширане
  59. Колизии: Различни данни могат да доведат до един и същ хеш (макар и рядко). Алгоритми като MD5 и SHA-1 са уязвими към колизии и не се препоръчват за сигурност.
  60. Солиране (Salting): При съхранение на пароли е важно да се добавя "сол" (произволна стойност), за да се предотвратят атаки чрез дъгови таблици (rainbow table attacks).
  61. 3. Уязвимости
  62. Brute force атаки: При хеширането или криптирането, ако алгоритъмът или ключът е слаб, може да се разбие с опитване на всички възможни комбинации.
  63.  
  64. Решение: Използвай по-дълги ключове и по-сложни алгоритми.
  65. Man-in-the-Middle (MITM) атаки: При криптиране, ако не се проверява автентичността на ключовете, нападател може да се преструва на другата страна.
  66.  
  67. Решение: Използвай сертификати и сигурни протоколи (напр. HTTPS).
  68. 4. Реални приложения
  69. TLS/SSL протоколи: Използват криптиране, за да осигурят сигурна връзка между клиенти и сървъри (напр. за уебсайтове).
  70. Защита на пароли: Паролите никога не се съхраняват като обикновен текст; вместо това се хешират с добавяне на сол.
  71. Цифрови подписи: Използват криптиране и хеширане, за да се гарантира автентичност и интегритет на данните.
  72. 5. Най-добри практики
  73. Използвай съвременни алгоритми:
  74.  
  75. За криптиране: AES (256-битов ключ).
  76. За хеширане на пароли: bcrypt, Argon2 или PBKDF2.
  77. Регулярно обновявай ключовете: Особено важно за системи с висока сигурност.
  78.  
  79. Избягвай собствени решения: Никога не измисляй свой криптографски алгоритъм, освен ако не си експерт. Използвай утвърдени библиотеки (напр. OpenSSL, PyCrypto).
  80.  
  81. Минимизирай излагането на данни: Например, съхранявай възможно най-малко чувствителна информация.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement