Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Криптографски алгоритми?

Криптографски алгоритми?

Мнениеот Гост » 20 Фев 2021, 04:21

Начинаещ съм в програмирането, алгоритмите и криптографията. Натъкнах се на следния проблем, за който нямам решение, и не знам дали има въобще. Допускам, че може да е известна задача, решена вече, или пък нерешена. Ще съм благодарен за отговори, обяснения и линкове към обяснения и сорс-код.

Търся два криптиращи алгоритъма, които имат следните свойства.
Вход и на двата са два стринга, които са произволни, връщан резултат е стринг. Възможно е да има ограничение String1 да е с определена, предварително зададена дължина. Ако означим двата алгоритъма с Alg1 и Alg2, то за произволни два стринга String1 и String2 да имаме:
String3=Alg1(String1, String2);
String1=Alg2(String2, String3).
Горните две обработки да се извършват приемливо бързо, но да не съществува алгоритъм, по който криптоаналитик да може приемливо бързо да намери String1, разполагайки със String3, но без да знае String2.
И друг вариант на задачата (по-ограничителен). Също като горната задача, но с допълнителнито условие криптоаналитикът да е затруднен с намирането на String1, ако знае String2, но не знае String3.
Тези задачи са при условие, че криптоаналитикът знае и двата алгоритъма Alg1 и Alg2. Ако тези два алгоритъма ползват някакви допълнителни аргументи (като пароли), счита се, че те са известни на криптоаналитика.
Т.е. имаме двама криптоаналитици. Криптоаналитик 1 знае String3, но не знае String2. Криптоаналитик 2 знае String2, но не знае String3. И двамата знаят каква е дължината на String1, но не знаят самия String1 и се опитват да го намерят. При първа задача затруднен трябва да е само криптоаналитик 1, при втора задача затруднени трябва да са и двамата криптоаналитици.
Разбира се, ясно е, че изразът "приемливо бързо" е много условен и точни или приблизителни разчети могат да се дават само за конкретни алгоритми. Но все пак има ли алгоритми, които биха се вписали като решение на тези задачи, поне частично?
Гост
 

Re: Криптографски алгоритми?

Мнениеот peyo » 20 Фев 2021, 11:29

Ако вместо твоите означения:

String3=Alg1(String1, String2)
String1=Alg2(String2, String3)

Използваме по-смислени думи като:

cyphertext = Alg1(plaintext, key)
plaintext = Alg2(key, cyphertext)

Виждаме, че това е стандартен Symmetric Encryption Algorithm. Такива например са DES , 3DES , AES и сугурно доста други.

Нещо не съм сигурен какво е 2-ра задача. Много объкващо е какви са тези Криптоаналитик 1 и 2. Мже би ако използаваш по-ясни термини като user и hacker, ще става по-ясно за какво се борят.
peyo
Математик
 
Мнения: 1767
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 663

Re: Криптографски алгоритми?

Мнениеот Гост » 21 Фев 2021, 04:41

Благодаря за отговора, peyo.
А за втора задача. Може би не съм го обяснил ясно. Ще опитам да обясня по-ясно какво имам предвид. Криптоаналитици - това са хакери, които опитват да разгадаят plaintext.
Хакер 1 знае ciphertext, но не знае key. Хакер 2 знае key, но не знае ciphertext. И двамата не знаят plaintext и се опитват да го отгатнат. Та иска се алгоритмите за криптиране да са такива, че и двамата хакери да бъдат силно затруднени. Потребител търси такива алгоритми, защото иска да опази своя plaintext от разкриване. Понеже има някаква вероятност key и ciphertext да бъдат прихванати (т.е. узнати) от хакери. Но вероятността един хакер да узнае и двете неща - key и ciphertext, е по-малка. Понеже алгоритмите се считат за публично известни (значи и на хакерите), се предявява изискване системата за криптиране да е устойчива и в двата случая. Е, разбира се, ако и key и ciphertext попаднат в ръцете на един хакер - ясно е, че тогава спасение няма.
Не знам дали с това обяснение стана по-ясно. Надявам се, ако с настоящето обяснение не съм внесъл допълнителна яснота, поне да не съм внесъл още неяснота.
Гост
 

Re: Криптографски алгоритми?

Мнениеот peyo » 21 Фев 2021, 07:20

Гост написа:... Но вероятността един хакер да узнае и двете неща - key и ciphertext, е по-малка. Понеже алгоритмите се считат за публично известни (значи и на хакерите), се предявява изискване системата за криптиране да е устойчива и в двата случая. Е, разбира се, ако и key и ciphertext попаднат в ръцете на един хакер - ясно е, че тогава спасение няма...


Във всички съвременни системи за криптиране се предполага, че хакера има достъп по ciphertext който е public. Usera пази key и plaintext private. Ако хакера придобие по някакъв начин key, то ббитката е загубена, защото не само може да разшифрова стари съобщения, а може и да шифрова нови съобщения с което да навреди и в бъдеще. Системите с несиметрично криптиране имат 2 key-a, отделен за криптиране и за декриптиране, което решава частично проблема хакера да придобие само един от ключовете.
peyo
Математик
 
Мнения: 1767
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 663


Назад към Алгоритми



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)
cron