The book is an introduction to cryptography for programmers.

বইটি প্রোগ্রামারদের জন্য ক্রিপ্টোগ্রাফির একটি ভূমিকা।


This book starts with simple primitives and gradually introduces new ones.

এই বইটি সাধারণ মৌলিক ধারণা থেকে শুরু করে ধীরে ধীরে নতুন ধারণাগুলির সাথে পরিচয় করিয়ে দেয়।


The goal is to understand how cryptosystems work and how to apply them.

লক্ষ্য হল ক্রিপ্টোসিitemমগুলি কীভাবে কাজ করে এবং কীভাবে সেগুলি প্রয়োগ করতে হয় তা বোঝা।


Exercises focus on teaching cryptography by breaking inferior systems.

অনুশীলনগুলি দুর্বল সিস্টেমগুলি ভেঙে ক্রিপ্টোগ্রাফি শেখানোর উপর দৃষ্টি নিবদ্ধ করে।


You will understand why these primitives are necessary for complete cryptosystems.

আপনি বুঝতে পারবেন কেন এই মৌলিক ধারণাগুলি সম্পূর্ণ ক্রিপ্টোসিitemমের জন্য প্রয়োজনীয়।


The book hopes to be a bridge to teach programmers enough cryptography.

বইটি প্রোগ্রামারদের যথেষ্ট ক্রিপ্টোগ্রাফি শেখানোর জন্য একটি সেতু হওয়ার আশা করে।


Exclusive or, often called XOR, is a Boolean operator.

এক্সক্লুসিভ অর, যা প্রায়শই XOR নামে পরিচিত, একটি বুলিয়ান অপারেটর।


XOR is true when either the first input or the second input, but not both, are true.

XOR সত্য হয় যখন প্রথম ইনপুট বা দ্বিতীয় ইনপুট, কিন্তু উভয়ই নয়, সত্য হয়।


XOR can be thought of as a programmable inverter.

XOR-কে একটি প্রোগ্রামযোগ্য ইনভার্টার হিসাবে ভাবা যেতে পারে।


In mathematics, exclusive or is generally represented by a cross in a circle.

গণিতে, এক্সক্লুসিভ অর সাধারণত একটি বৃত্তের মধ্যে একটি ক্রস দ্বারা উপস্থাপিত হয়।


We will use the same notation in this book.

আমরা এই বইটিতে একই স্বরলিপি ব্যবহার করব।


There are a few useful arithmetic tricks we can derive from that.

এমন কিছু দরকারী গাণিতিক কৌশল রয়েছে যা আমরা তা থেকে পেতে পারি।


আপনি যে কোনও ক্রমে XOR প্রয়োগ করতে পারেন।


যে কোনও বিট নিজেই XOR করলে ০ হয়।


যে কোনও বিট XOR ০ করলে সেই বিটটিই পাওয়া যায়।


XOR, as we've just defined it, operates only on single bits.

আমরা যেমন সংজ্ঞায়িত করেছি, XOR শুধুমাত্র একক বিটগুলিতে কাজ করে।


Most programming languages provide a bitwise XOR operator.

বেশিরভাগ প্রোগ্রামিং ভাষা একটি বিটওয়াইজ XOR অপারেটর সরবরাহ করে।


Python provides the ^ operator that performs bitwise XOR.

পাইথন ^ অপারেটর সরবরাহ করে যা বিটওয়াইজ XOR করে।


This scheme has the strongest possible security guarantee.

এই স্কিমটির সম্ভাব্য সবচেয়ে শক্তিশালী নিরাপত্তা গ্যারান্টি রয়েছে।


If the bits are truly random, the attacker learns nothing.

যদি বিটগুলি সত্যিই এলোমেলো হয়, তবে আক্রমণকারী কিছুই জানতে পারে না।


এগুলিকে মানানসই করতে আমাদের কিছু কৌশলের প্রয়োজন।


এই প্রক্রিয়াটিকে প্যাডিং বলা হয়।


Padding with zeroes (or some other pad byte) One way to pad would be to simply append a particular byte value until the plaintext is of the appropriate length.

শূন্য (বা অন্য কোনো প্যাড বাইট) দিয়ে প্যাডিং করা। প্যাডিং করার একটি উপায় হল একটি নির্দিষ্ট বাইট মান যোগ করা যতক্ষণ না প্লেনটেক্সট উপযুক্ত দৈর্ঘ্যের হয়।


To undo the padding, you just remove those bytes.

প্যাডিং বাতিল করতে, আপনি কেবল সেই বাইটগুলি সরিয়ে ফেলুন।


This scheme has an obvious flaw: you can’t send messages that end in that particular byte value, or you will be unable to distinguish between padding and the actual message.

এই স্কিমের একটি সুস্পষ্ট ত্রুটি রয়েছে: আপনি এমন বার্তা পাঠাতে পারবেন না যা সেই নির্দিষ্ট বাইট মান দিয়ে শেষ হয়, অথবা আপনি প্যাডিং এবং আসল বার্তার মধ্যে পার্থক্য করতে পারবেন না।


A better, and much more popular scheme, is PKCS#5/PKCS#7 padding.

একটি ভালো, এবং আরও জনপ্রিয় স্কিম হল PKCS#5/PKCS#7 প্যাডিং।


Take the number of bytes you have to pad, and pad them with that many times the byte with that value.

আপনাকে কতগুলি বাইট প্যাড করতে হবে তা নিন এবং সেই মানের বাইট দিয়ে ততবার প্যাড করুন।


For example, if the block size is 8 bytes, and the last block has the three bytes 12 34 45, the block becomes 12 34 45 05 05 05 05 05 after padding.

উদাহরণস্বরূপ, যদি ব্লকের আকার 8 বাইট হয় এবং শেষ ব্লকে 12 34 45 তিনটি বাইট থাকে, তাহলে প্যাডিং করার পরে ব্লকটি 12 34 45 05 05 05 05 05 হয়ে যায়।


If the plaintext happened to be exactly a multiple of the block size, an entire block of padding is used.

যদি প্লেনটেক্সট ব্লকের আকারের গুণিতক হয়, তবে প্যাডিংয়ের একটি সম্পূর্ণ ব্লক ব্যবহার করা হয়।


Otherwise, the recipient would look at the last byte of the plaintext, treat it as a padding length, and almost certainly conclude the message was improperly padded.

অন্যথায়, প্রাপক প্লেনটেক্সটের শেষ বাইটটি দেখবে, এটিকে প্যাডিং দৈর্ঘ্য হিসাবে বিবেচনা করবে এবং প্রায় নিশ্চিতভাবে এই সিদ্ধান্তে আসবে যে বার্তাটি ভুলভাবে প্যাড করা হয়েছে।


We can refine CBC bit flipping attacks to trick a recipient into decrypting arbitrary messages!

আমরা ইচ্ছামত বার্তা ডিক্রিপ্ট করতে প্রাপককে ফাঁদে ফেলতে CBC বিট ফ্লিপিং আক্রমণকে পরিমার্জন করতে পারি!


As we’ve just discussed, CBC mode requires padding the message to a multiple of the block size.

আমরা যেমন আলোচনা করেছি, CBC মোডের জন্য বার্তার ব্লক আকারের গুণিতক পর্যন্ত প্যাডিং প্রয়োজন।


If the padding is incorrect, the recipient typically rejects the message, saying that the padding was invalid.

যদি প্যাডিং ভুল হয়, তাহলে প্রাপক সাধারণত বার্তাটি প্রত্যাখ্যান করে, এই বলে যে প্যাডিং অবৈধ ছিল।


We can use that tiny bit of information about the padding of the plaintext to iteratively decrypt the entire message.

আমরা প্লেনটেক্সটের প্যাডিং সম্পর্কে তথ্যের সেই সামান্য অংশটি ব্যবহার করে পুনরাবৃত্তিমূলকভাবে পুরো বার্তাটি ডিক্রিপ্ট করতে পারি।


The attacker will do this, one ciphertext block at a time, by trying to get an entire plaintext block worth of valid padding.

আক্রমণকারী এটি করবে, একবারে একটি সাইফারটেক্সট ব্লক, বৈধ প্যাডিংয়ের একটি সম্পূর্ণ প্লেনটেক্সট ব্লক পাওয়ার চেষ্টা করে।


To mount this attack, an attacker only needs two things: A target ciphertext to decrypt and a padding oracle.

এই আক্রমণ চালানোর জন্য, একজন আক্রমণকারীর শুধুমাত্র দুটি জিনিসের প্রয়োজন: ডিক্রিপ্ট করার জন্য একটি টার্গেট সাইফারটেক্সট এবং একটি প্যাডিং ওরাকল।


For a long time, most systems did not even attempt to hide if the padding was valid or not.

দীর্ঘকাল ধরে, বেশিরভাগ সিস্টেম প্যাডিং বৈধ ছিল কিনা তা লুকানোর চেষ্টা করেনি।


In this chapter, we’ll assume that PKCS#5/PKCS#7 padding is being used, since that’s the most popular option.

এই অধ্যায়ে, আমরা ধরে নেব যে PKCS#5/PKCS#7 প্যাডিং ব্যবহার করা হচ্ছে, কারণ এটি সবচেয়ে জনপ্রিয় বিকল্প।


The attacker fills a block with arbitrary bytes R=r1, r2 . . . rb.

আক্রমণকারী একটি ব্লকে ইচ্ছামত বাইট R=r1, r2 . . . rb পূরণ করে।


They also pick a target block Ci from the ciphertext that they’d like to decrypt.

তারা সাইফারটেক্সট থেকে একটি টার্গেট ব্লক Ci বেছে নেয় যা তারা ডিক্রিপ্ট করতে চায়।


The attacker does learn that the message exists, and, in this simple scheme, the length of the message.

আক্রমণকারী জানতে পারে যে বার্তাটি বিদ্যমান, এবং এই সাধারণ পদ্ধতিতে, বার্তার দৈর্ঘ্যও জানতে পারে।


While this typically isn’t too important, there are situations where this might matter, and there are secure cryptosystems to both hide the existence and the length of a message.

যদিও এটি সাধারণত খুব গুরুত্বপূর্ণ নয়, এমন কিছু পরিস্থিতি রয়েছে যেখানে এটি গুরুত্বপূর্ণ হতে পারে এবং এমন সুরক্ষিত ক্রিপ্টোসি stem রয়েছে যা একটি বার্তার অস্তিত্ব এবং দৈর্ঘ্য উভয়ই গোপন করতে পারে।


The one-time pad security guarantee only holds if it is used correctly.

ওয়ান-টাইম প্যাডের নিরাপত্তা গ্যারান্টি শুধুমাত্র তখনই কার্যকর হয় যদি এটি সঠিকভাবে ব্যবহার করা হয়।


First of all, the one-time pad has to consist of truly random data.

প্রথমত, ওয়ান-টাইম প্যাডটিতে অবশ্যই সম্পূর্ণরূপে এলোমেলো ডেটা থাকতে হবে।


Secondly, the one-time pad can only be used once (hence the name).

দ্বিতীয়ত, ওয়ান-টাইম প্যাডটি শুধুমাত্র একবার ব্যবহার করা যেতে পারে (অতএব এই নাম)।


Unfortunately, most commercial products that claim to be ”one-time pads” are snake oil , and don’t satisfy at least one of those two properties.

দুর্ভাগ্যবশত, বেশিরভাগ বাণিজ্যিক পণ্য যা ”ওয়ান-টাইম প্যাড” হওয়ার দাবি করে, তা আসলে ভুয়া, এবং এই দুটি বৈশিষ্ট্যের মধ্যে অন্তত একটিও পূরণ করে না।


The first issue is that they use various deterministic constructs to pro- duce the one-time pad, instead of using truly random data.

প্রথম সমস্যা হল যে তারা সত্যিকারের এলোমেলো ডেটা ব্যবহার না করে ওয়ান-টাইম প্যাড তৈরি করতে বিভিন্ন ডিটারমিনিস্টিক গঠন ব্যবহার করে।


That isn’t necessarily insecure: in fact, the most obvious example, a synchronous stream cipher, is something we’ll see later in the book.

এটি অগত্যা অনিরাপদ নয়: প্রকৃতপক্ষে, সবচেয়ে সুস্পষ্ট উদাহরণ, একটি সিঙ্ক্রোনাস স্ট্রিম সাইফার, যা আমরা বইটিতে পরে দেখব।


The end user would be better served by a more honest cryptosystem, instead of one that lies about its security properties.

ব্যবহারকারীর জন্য একটি বেশি নির্ভরযোগ্য ক্রিপ্টোসি stem ভালো, যা তার নিরাপত্তা বৈশিষ্ট্য সম্পর্কে মিথ্যা কথা বলে না।


The other issue is with key reuse, which is much more serious.

অন্য সমস্যাটি হল কী পুনরায় ব্যবহার করা, যা আরও গুরুতর।


Suppose an attacker gets two ciphertexts with the same ”one-time” pad.

ধরুন একজন আক্রমণকারী একই ”ওয়ান-টাইম” প্যাড সহ দুটি সাইফারটেক্সট পায়।


The problem is that even the result of the XOR operation on two plaintexts contains quite a bit information about the plaintexts themselves.

সমস্যা হল যে দুটি প্লেনটেক্সটের উপর XOR অপারেশনের ফলাফলও প্লেনটেক্সটগুলি সম্পর্কে বেশ কিছু তথ্য ধারণ করে।


A classical approach to breaking multi-time pad systems involves ”crib- dragging”, a process that uses small sequences that are expected to occur with high probability.

মাল্টি-টাইম প্যাড সিস্টেম ভাঙার একটি ক্লাসিক্যাল পদ্ধতির মধ্যে রয়েছে ”ক্রিব-ড্র্যাগিং”, এমন একটি প্রক্রিয়া যা ছোট সিকোয়েন্স ব্যবহার করে যা উচ্চ সম্ভাবনা সহ ঘটার আশা করা হয়।


If we could correctly guess the plaintext for one of the messages, let’s sayC j , we’d knowK:

যদি আমরা বার্তাগুলির মধ্যে একটির জন্য প্লেনটেক্সট সঠিকভাবে অনুমান করতে পারি, যেমন C j, তাহলে আমরা K জানতে পারব:


If we guess a few plaintext bitsp i correctly foranyof the messages, that would reveal the key bits at that position forallof the messages, sincek=c i ⊕p i .

যদি আমরা বার্তাগুলির জন্য কয়েকটি প্লেনটেক্সট বিট p i সঠিকভাবে অনুমান করি, তবে এটি সমস্ত বার্তার জন্য সেই অবস্থানে কী বিট প্রকাশ করবে, যেহেতু k = c i ⊕ p i।


Guessing parts of the plaintext is a lot easier than guessing the entire plaintext.

প্লেনটেক্সটের অংশ অনুমান করা সম্পূর্ণ প্লেনটেক্সট অনুমান করার চেয়ে অনেক সহজ।


If we know more about the plaintext, we can make even better guesses.

যদি আমরা প্লেনটেক্সট সম্পর্কে আরও জানি, তবে আমরা আরও ভাল অনুমান করতে পারি।


If our guess is correct, we know all the other plaintexts at that position as well, using the technique described earlier.

যদি আমাদের অনুমান সঠিক হয়, তবে আমরা আগের বর্ণিত কৌশলটি ব্যবহার করে সেই অবস্থানে থাকা অন্যান্য সমস্ত প্লেনটেক্সটও জানতে পারি।


These small, highly probable sequences are called ”cribs” because they’re the start of a larger decryption process.

এই ছোট, অত্যন্ত সম্ভাব্য সিকোয়েন্সগুলিকে ”ক্রিবস” বলা হয় কারণ এগুলি একটি বৃহত্তর ডিক্রিপশন প্রক্রিয়ার শুরু।


Real one-time pads, implemented properly, have an extremely strong security guarantee.

বাস্তব ওয়ান-টাইম প্যাড, সঠিকভাবে প্রয়োগ করা হলে, অত্যন্ত শক্তিশালী নিরাপত্তা প্রদান করে।


WEP, a standard for protecting wireless networks that was popular at the time, was heavily affected by this attack.

সেই সময়ে জনপ্রিয় একটি স্ট্যান্ডার্ড, ওয়্যারলেস নেটওয়ার্ক সুরক্ষিত করার জন্য ব্যবহৃত WEP, এই আক্রমণের দ্বারা মারাত্মকভাবে প্রভাবিত হয়েছিল।


A scheme where the long-term key and the nonce had been securely combined wouldn’t have had this weakness.

যেখানে দীর্ঘমেয়াদী কী এবং ননসকে নিরাপদে একত্রিত করা হয়েছিল, সেই স্কিমের এই দুর্বলতা থাকত না।


Many other standards including TLS were therefore not affected.

অতএব, TLS সহ অন্যান্য অনেক স্ট্যান্ডার্ড এতে প্রভাবিত হয়নি।


আবারও বলছি, আক্রমণগুলি কেবল আরও উন্নত হচ্ছে।


Instead of tens of millions of messages with the Fluhrer, Mantin, Shamir attacks, attackers now only needed several tens of thousands of messages to make the attack practical.

ফ্লুয়েরার, ম্যানটিন, শামীর আক্রমণগুলির মাধ্যমে কয়েক কোটি বার্তার পরিবর্তে, আক্রমণকারীদের এখন আক্রমণটিকে কার্যকরী করতে কয়েক হাজার বার্তার প্রয়োজন ছিল।


This was applied against WEP with great effect.

এটি WEP-এর বিরুদ্ধে দারুণভাবে কার্যকর করা হয়েছিল।


In 2013, a team of researchers at Royal Holloway in London produced a combination of two independent practical attacks.

2013 সালে, লন্ডনের রয়্যাল হলোওয়ের একদল গবেষক দুটি স্বাধীন কার্যকরী আক্রমণের একটি সমন্বয় তৈরি করেন।


These attacks proved to be very damning for RC4.

এই আক্রমণগুলি RC4-এর জন্য অত্যন্ত ক্ষতিকর প্রমাণিত হয়েছিল।


By performing statistical analysis on the keystreams produced by a large number of keys, they were able to analyze the already well-known biases in the early keystream bytes of RC4 in much greater detail.

বহু সংখ্যক কী দ্বারা উত্পাদিত কীস্ট্রিমগুলির পরিসংখ্যানগত বিশ্লেষণ করে, তারা RC4-এর প্রাথমিক কীস্ট্রিম বাইটগুলিতে ইতিমধ্যে সুপরিচিত পক্ষপাতগুলি আরও বিস্তারিতভাবে বিশ্লেষণ করতে সক্ষম হয়েছিল।


It says that when the first byte i=1 of any 256-byte chunk from the cipher is 0, then the byte following it is slightly more likely (1 + 2 −9 times as likely, to be exact) to be 0 than for it to be any other number.

এতে বলা হয়েছে যে যখন সাইফার থেকে আসা যেকোনো 256-বাইট অংশের প্রথম বাইট i=1, 0 হয়, তবে এর পরের বাইটটি অন্য যেকোনো সংখ্যার চেয়ে সামান্য বেশি সম্ভাব্য (1 + 2 −9 গুণ বেশি, যদি সঠিকভাবে বলতে হয়) 0 হওয়ার সম্ভাবনা থাকে।


We can also see that when one of the keystream bytes is 255, you can make many predictions about the next byte, depending on where it occurs in the keystream.

আমরা আরও দেখতে পারি যে যখন কীস্ট্রিম বাইটগুলির মধ্যে একটি 255 হয়, তখন আপনি কীস্ট্রিমে এটি কোথায় ঘটছে তার উপর নির্ভর করে পরবর্তী বাইট সম্পর্কে অনেক পূর্বাভাস করতে পারেন।


আবারও, আক্রমণগুলি কেবল আরও উন্নত হয়।


There’s no way around it: we need to stop using RC4.

এতে কোনো উপায় নেই: আমাদের RC4 ব্যবহার বন্ধ করতে হবে।


Fortunately, we’ve also developed many secure alternatives.

সৌভাগ্যবশত, আমরা অনেক নিরাপদ বিকল্পও তৈরি করেছি।


The continuing advances in cryptanalysis of RC4 helped contribute to a sense of urgency regarding the improvement of commonly available cryptographic primitives.

RC4-এর ক্রিপ্টোঅ্যানালাইসিসের ক্রমাগত অগ্রগতি সাধারণত উপলব্ধ ক্রিপ্টোগ্রাফিক আদিমগুলির উন্নতির বিষয়ে জরুরি অবস্থার অনুভূতি তৈরি করতে সাহায্য করেছে।


Salsa20 is a newer stream cipher designed by Dan Bernstein.

Salsa20 হল ড্যান বার্নস্টাইন দ্বারা ডিজাইন করা একটি নতুন স্ট্রিম সাইফার।


There are currently no publicly known attacks against Salsa20, ChaCha, nor against any of their recommended reduced-round variants, that break their practical security.

বর্তমানে Salsa20, ChaCha বা তাদের প্রস্তাবিত হ্রাস-রাউন্ড ভেরিয়েন্টের বিরুদ্ধে এমন কোনো সর্বজনবিদিত আক্রমণ নেই যা তাদের ব্যবহারিক নিরাপত্তা ভেঙে দেয়।


Both cipher families are also pretty fast.

উভয় সাইফার পরিবারও বেশ দ্রুত।


For long streams, Salsa20 takes about 4 cycles per byte for the full-round version, about 3 cycles per byte for the 12-round version and about 2 cycles per byte for the 8-round version, on modern Intel processors and modern AMD processors.

দীর্ঘ স্ট্রীমগুলির জন্য, Salsa20 আধুনিক Intel প্রসেসর এবং আধুনিক AMD প্রসেসরগুলিতে সম্পূর্ণ-রাউন্ড সংস্করণের জন্য প্রতি বাইটে প্রায় 4 চক্র, 12-রাউন্ড সংস্করণের জন্য প্রতি বাইটে প্রায় 3 চক্র এবং 8-রাউন্ড সংস্করণের জন্য প্রতি বাইটে প্রায় 2 চক্র নেয়।


Firstly, It’s possible to ”jump” to a particular point in the keystream without computing all previous bits.

প্রথমত, আগের সমস্ত বিট গণনা না করেই কীস্ট্রিমে একটি নির্দিষ্ট স্থানে ” ঝাঁপ দেওয়া” সম্ভব।


Even though 3DES is significantly worse in terms of performance and slightly worse in terms of security, 3DES is still the workhorse of the financial industry.

যদিও কর্মক্ষমতার দিক থেকে 3DES উল্লেখযোগ্যভাবে খারাপ এবং নিরাপত্তার দিক থেকেও সামান্য খারাপ, তবুও 3DES এখনও আর্থিক শিল্পের প্রধান হাতিয়ার।


With a plethora of standards already in existence and new ones continuing to be created, it will probably continue to be used for many years to come.

ইতিমধ্যে বিদ্যমান প্রচুর মান এবং নতুন তৈরি হতে থাকায়, সম্ভবত এটি আগামী বহু বছর ধরে ব্যবহৃত হতে থাকবে।


We’ll address this problem with a stream cipher.

আমরা একটি স্ট্রিম সাইফারের মাধ্যমে এই সমস্যার সমাধান করব।


This scheme is called ECB mode (Electronic Code Book Mode), and it is one of the many ways that block ciphers can be used to construct stream ciphers.

এই স্কিমটিকে ECB মোড (ইলেকট্রনিক কোড বুক মোড) বলা হয় এবং এটি ব্লক সাইফার ব্যবহার করে স্ট্রিম সাইফার তৈরি করার একটি উপায়।


Unfortunately, while being very common in home-grown cryptosystems, it poses very serious security flaws.

দুর্ভাগ্যবশত, ঘরোয়া ক্রিপ্টো-সিস্টেমগুলিতে এটি খুব সাধারণ হলেও, এটি নিরাপত্তা ত্রুটি তৈরি করে।


Assuming the block cipher is secure, it doesn’t look like an attacker would be able to decrypt anything.

যদি ধরে নেওয়া হয় ব্লক সাইফার সুরক্ষিত, তবে দেখে মনে হয় না যে একজন আক্রমণকারী কিছু ডিক্রিপ্ট করতে পারবে।


By dividing the ciphertext stream up into blocks, an attacker would only be able to see that a ciphertext block, and therefore a plaintext block, was repeated.

সাইফারটেক্সট স্ট্রিমকে ব্লকে ভাগ করে, একজন আক্রমণকারী কেবল দেখতে পাবে যে একটি সাইফারটেক্সট ব্লক, এবং সেই কারণে একটি প্লেনটেক্সট ব্লক, পুনরাবৃত্তি হয়েছে।


We’ll now illustrate the many flaws of ECB mode with two attacks.

আমরা এখন দুটি আক্রমণের মাধ্যমে ECB মোডের অনেক ত্রুটি ব্যাখ্যা করব।


First, we’ll exploit the fact that repeating plaintext blocks result in repeating ciphertext blocks, by visually inspecting an encrypted image.

প্রথমত, আমরা একটি এনক্রিপ্টেড চিত্র দৃশ্যমানভাবে পরিদর্শন করে, পুনরাবৃত্ত প্লেনটেক্সট ব্লকগুলির ফলে পুনরাবৃত্ত সাইফারটেক্সট ব্লকগুলি তৈরি হওয়ার বিষয়টি কাজে লাগাব।


Then, we’ll demonstrate that attackers can often decrypt messages encrypted in ECB mode by communicating with the person performing the encryption.

তারপরে, আমরা দেখাব যে আক্রমণকারীরা প্রায়শই এনক্রিপশন সম্পাদনকারীর সাথে যোগাযোগ করে ECB মোডে এনক্রিপ্ট করা বার্তাগুলি ডিক্রিপ্ট করতে পারে।


To demonstrate that this is, in fact, a serious problem, we’ll use a simulated block cipher of various block sizes and apply it to an image.

এটি যে একটি গুরুতর সমস্যা, তা দেখানোর জন্য, আমরা বিভিন্ন ব্লক আকারের একটি সিমুলেটেড ব্লক সাইফার ব্যবহার করব এবং এটি একটি চিত্রের উপর প্রয়োগ করব।


Because identical blocks of pixels in the plaintext will map to identical blocks of pixels in the ciphertext, the global structure of the image is largely preserved.

কারণ প্লেনটেক্সটের পিক্সেলের অভিন্ন ব্লকগুলি সাইফারটেক্সটের পিক্সেলের অভিন্ন ব্লকের সাথে মিলিত হবে, তাই চিত্রের সামগ্রিক কাঠামোটি মূলত অক্ষুণ্ণ থাকে।


As you can see, the situation appears to get slightly better with larger block sizes, but the fundamental problem still remains.

আপনি দেখতে পাচ্ছেন, বৃহত্তর ব্লক আকারের সাথে পরিস্থিতি সামান্য উন্নত বলে মনে হচ্ছে, তবে মৌলিক সমস্যাটি এখনও বিদ্যমান।


Furthermore, all but the smallest of these block sizes are unrealistically large.

অধিকন্তু, এই ব্লকগুলির আকারের মধ্যে ক্ষুদ্রতমটি বাদ দিয়ে, সবই অবাস্তবভাবে বড়।


For an uncompressed bitmap with three color channels of 8 bit depth, each pixel takes 24 bits to store.

8 বিট গভীরতার তিনটি কালার চ্যানেল সহ একটি অসংকুচিত বিটম্যাপের জন্য, প্রতিটি পিক্সেল সংরক্ষণ করতে 24 বিট লাগে।


But AES is the workhorse of modern block ciphers—it can’t be at fault, certainly not because of an insufficient block size.

তবে AES আধুনিক ব্লক সাইফারের প্রধান হাতিয়ার—এটি ভুল হতে পারে না, অবশ্যই অপর্যাপ্ত ব্লক আকারের কারণে নয়।


When we look at a picture of what would happen with an idealized encryption scheme, we notice that it looks like random noise.

যখন আমরা একটি আদর্শ এনক্রিপশন স্কিমের সাথে কী ঘটবে তার একটি ছবি দেখি, তখন আমরা লক্ষ্য করি যে এটি এলোমেলো শব্দের মতো দেখাচ্ছে।


Keep in mind that ”looking like random noise” doesn’t mean something is properly encrypted: it just means that we can’t inspect it using methods this trivial.

মনে রাখবেন যে ”এলোমেলো শব্দের মতো দেখাচ্ছে” এর অর্থ এই নয় যে কিছু সঠিকভাবে এনক্রিপ্ট করা হয়েছে: এর অর্থ হল আমরা এই সাধারণ পদ্ধতিগুলি ব্যবহার করে এটি পরীক্ষা করতে পারি না।


In this section, we’ll study a different, active attack, where the attacker actively communicates with their target.

এই বিভাগে, আমরা একটি ভিন্ন, সক্রিয় আক্রমণ অধ্যয়ন করব, যেখানে আক্রমণকারী সক্রিয়ভাবে তাদের লক্ষ্যের সাথে যোগাযোগ করে।


We’ll see how the active attack can enable an attacker to decrypt ciphertexts encrypted using ECB mode.

আমরা দেখব কিভাবে সক্রিয় আক্রমণ একজন আক্রমণকারীকে ECB মোড ব্যবহার করে এনক্রিপ্ট করা সাইফারটেক্সট ডিক্রিপ্ট করতে সক্ষম করতে পারে।


There's no way for him to prove that he's the legitimate participant.

তাঁর পক্ষে প্রমাণ করার কোনো উপায় নেই যে তিনিই আসল অংশগ্রহণকারী।


As far as Alice can tell, Bob just chose a few random numbers.

অ্যালিসের ধারণা অনুযায়ী, বব কেবল কয়েকটি এলোমেলো সংখ্যা বেছে নিয়েছেন।


Attacks like these are called man-in-the-middle (MITM) attacks.

এই ধরনের আক্রমণকে ম্যান-ইন-দ্য-মিডল (এমআইটিএম) আক্রমণ বলা হয়।


Given that the network infrastructure that we typically use to send messages is run by many different operators, this kind of attack scenario is very realistic.

যেহেতু আমরা সাধারণত বার্তা পাঠাতে যে নেটওয়ার্ক অবকাঠামো ব্যবহার করি তা বিভিন্ন অপারেটর দ্বারা পরিচালিত হয়, তাই এই ধরনের আক্রমণের দৃশ্যকল্প খুবই বাস্তবসম্মত।


We need tools that help us authenticate Alice to Bob and vice versa.

আমাদের এমন সরঞ্জাম দরকার যা আমাদের অ্যালিসকে ববের কাছে প্রমাণ করতে সাহায্য করে এবং এর বিপরীতটাও করতে পারে।


People can encrypt information intended for you by using your public key.

আপনার পাবলিক কী ব্যবহার করে লোকেরা আপনার জন্য উদ্দিষ্ট তথ্য এনক্রিপ্ট করতে পারে।


এটিকে পাবলিক-কী এনক্রিপশন বলা হয়।


The first publicly available encryption scheme was produced by three cryptographers from MIT.

প্রথম সর্বজনীনভাবে উপলব্ধ এনক্রিপশন স্কিমটি এমআইটি-র তিনজন ক্রিপ্টোগ্রাফার তৈরি করেছিলেন।


Public-key algorithms aren’t limited to encryption.

পাবলিক-কী অ্যালগরিদম শুধুমাত্র এনক্রিপশনের মধ্যে সীমাবদ্ধ নয়।


We could just use public key encryption for everything.

আমরা কেবল সবকিছুর জন্য পাবলিক কী এনক্রিপশন ব্যবহার করতে পারতাম।


By far the most important reason for this is performance.

এর সবচেয়ে গুরুত্বপূর্ণ কারণ হল কর্মক্ষমতা।


RSA is limited to at most its key size, which for 2048-bit means 256 bytes.

আরএসএ-এর সীমাবদ্ধতা হল এটির কী আকারের মধ্যে, যা 2048-বিট এর জন্য 256 বাইট।


Encryption and decryption RSA encryption and decryption relies on modular arithmetic.

এনক্রিপশন এবং ডিক্রিপশন আরএসএ এনক্রিপশন এবং ডিক্রিপশন মডুলার গাণিতিক পদ্ধতির উপর নির্ভর করে।


In order to generate a key, you pick two large prime numbers p and q.

একটি কী তৈরি করার জন্য, আপনি দুটি বড় মৌলিক সংখ্যা p এবং q নির্বাচন করেন।


The security of RSA relies on that decryption operation being impossible without knowing the secret exponent d.

আরএসএ-এর নিরাপত্তা নির্ভর করে সেই ডিক্রিপশন অপারেশনটির উপর, যা গোপন সূচক d না জেনে করা অসম্ভব।


Breaking RSA Like many cryptosystems, RSA relies on the presumed difficulty of a particular mathematical problem.

আরএসএ ভাঙা: অনেক ক্রিপ্টো সিস্টেমের মতো, আরএসএ একটি নির্দিষ্ট গাণিতিক সমস্যার অনুমিত কঠিনতার উপর নির্ভর করে।


For RSA, this is the RSA problem, specifically: to find the plaintext message M, given a ciphertext C, and public key (N, e) in the equation: C ≡ M^e (mod N)(9.1)

আরএসএ-এর জন্য, এটি হল আরএসএ সমস্যা, বিশেষ করে: সমীকরণে একটি সাইফারটেক্সট C, এবং পাবলিক কী (N, e) দেওয়া হলে মূল বার্তা M খুঁজে বের করা: C ≡ M^e (mod N)(9.1)


Right now, there are no known practical complete breaks against RSA.

এই মুহূর্তে, আরএসএ-এর বিরুদ্ধে কোনো পরিচিত কার্যকরী সম্পূর্ণ ভাঙন নেই।


Like with most broken cryptosystems, there are plenty of cases where sound components, improperly applied, result in a useless system.

অধিকাংশ ভাঙা ক্রিপ্টো সিস্টেমের মতোই, এমন অনেক ঘটনা রয়েছে যেখানে সঠিক উপাদানগুলি, ভুলভাবে প্রয়োগ করা হলে, একটি অকেজো সিস্টেমের ফল দেয়।


OAEP, short for optimal asymmetric encryption padding, is the state of the art in RSA padding.

OAEP, অপটিমাল অ্যাসিমেট্রিক এনক্রিপশন প্যাডিং-এর সংক্ষিপ্ত রূপ, আরএসএ প্যাডিং-এর ক্ষেত্রে অত্যাধুনিক।


HKDF is a key derivation function designed for high entropy inputs.

HKDF হল একটি কী ডেরিভেশন ফাংশন যা উচ্চ এনট্রপি ইনপুটগুলির জন্য ডিজাইন করা হয়েছে।


It is specifically not designed to be secure for low-entropy inputs such as passwords.

এটি বিশেষভাবে কম-এনট্রপি ইনপুটগুলির জন্য সুরক্ষিত হওয়ার জন্য ডিজাইন করা হয়নি, যেমন পাসওয়ার্ড।


Previously, key derivation was often something that was done ad hoc for a particular standard.

আগে, কী ডেরিভেশন প্রায়শই এমন কিছু ছিল যা একটি নির্দিষ্ট স্ট্যান্ডার্ডের জন্য তাৎক্ষণিকভাবে করা হতো।


HKDF HMAC-এর উপর ভিত্তি করে তৈরি।


The extraction phase is responsible for extracting a small amount of data with a high entropy content.

এক্সট্রাকশন ফেজটি উচ্চ এনট্রপিযুক্ত অল্প পরিমাণ ডেটা বের করার জন্য দায়ী।


লবণ মান ঐচ্ছিক।


Even a fairly low-entropy salt can already contribute significantly to the security of the key derivation function.

এমনকি একটি অপেক্ষাকৃত কম-এনট্রপি লবণও কী ডেরিভেশন ফাংশনের সুরক্ষায় উল্লেখযোগ্যভাবে অবদান রাখতে পারে।


While the extraction phase is very good at concentrating entropy, it is not capable of amplifying entropy.

যদিও এক্সট্রাকশন ফেজ এনট্রপিকে ঘনীভূত করতে খুব ভালো, এটি এনট্রপিকে বাড়াতে সক্ষম নয়।


In the expansion phase, the random data extracted from the inputs in the extraction phase is expanded into as much data as is required.

এক্সপ্যানশন পর্যায়ে, এক্সট্রাকশন পর্যায়ে ইনপুট থেকে আহরিত এলোমেলো ডেটা প্রয়োজনীয় হিসাবে প্রসারিত হয়।


The "info" parameter is intended to contain some application-specific context.

"info" প্যারামিটারটি কিছু অ্যাপ্লিকেশন-নির্দিষ্ট প্রসঙ্গ ধারণ করার উদ্দেশ্যে তৈরি করা হয়েছে।


Many cryptographic systems require random numbers.

অনেক ক্রিপ্টোগ্রাফিক সিস্টেমের জন্য এলোমেলো সংখ্যার প্রয়োজন।


Producing random numbers is a fairly intricate process.

এলোমেলো সংখ্যা তৈরি করা একটি বেশ জটিল প্রক্রিয়া।


True random number generators get their randomness from physical processes.

সত্যিকারের এলোমেলো সংখ্যা জেনারেটরগুলি তাদের এলোমেলোতা শারীরিক প্রক্রিয়া থেকে পায়।


Systems like dice are still in common use today.

যেমন পাশা, এই ধরনের সিস্টেমগুলি আজও সাধারণ ব্যবহার্য।


There are several categories of physical processes that are used for hardware random number generation.

হার্ডওয়্যার এলোমেলো সংখ্যা প্রজন্মের জন্য ব্যবহৃত শারীরিক প্রক্রিয়ার বেশ কয়েকটি বিভাগ রয়েছে।


Radioactive decay is one example of a quantum physical process used to produce random numbers.

তেজস্ক্রিয় ক্ষয় হল এলোমেলো সংখ্যা তৈরি করতে ব্যবহৃত একটি কোয়ান্টাম ভৌত প্রক্রিয়ার উদাহরণ।


Shot noise is another quantum physical process used to produce random numbers.

শট নয়েজ হল এলোমেলো সংখ্যা তৈরি করতে ব্যবহৃত আরেকটি কোয়ান্টাম ভৌত প্রক্রিয়া।


Nyquist noise is the noise that occurs from charge carriers traveling through a medium.

নাইকুইস্ট নয়েজ হল সেই গোলমাল যা চার্জ ক্যারিয়ারগুলি একটি মাধ্যমের মধ্য দিয়ে যাওয়ার সময় ঘটে।


As an application developer, you should never be making a choice between one of them.

একজন অ্যাপ্লিকেশন বিকাশকারী হিসাবে, আপনার তাদের মধ্যে একটি বেছে নেওয়া উচিত নয়।


Mersenne Twister is a very common pseudorandom number generator.

মার্সেন টুইস্টার একটি অতি সাধারণ সিউডোর্যান্ডম সংখ্যা জেনারেটর।


The password would result in the same hash everywhere.

পাসওয়ার্ডের ফলে সব জায়গায় একই হ্যাশ তৈরি হবে।


This problem was generally solved by using salts.

সাধারণত লবণ ব্যবহার করে এই সমস্যার সমাধান করা হয়েছিল।


By mixing the password with some random value before hashing it, you could produce completely different hash values.

হ্যাশ করার আগে পাসওয়ার্ডের সাথে কিছু এলোমেলো মান মিশিয়ে, আপনি সম্পূর্ণ ভিন্ন হ্যাশ মান তৈরি করতে পারেন।


The salt value is stored next to the password hash in the database.

লবণের মান ডাটাবেসে পাসওয়ার্ড হ্যাশের পাশে সংরক্ষণ করা হয়।


When the user authenticates using the password, you just combine the salt with the password, hash it, and compare it against the stored hash.

ব্যবহারকারী পাসওয়ার্ড ব্যবহার করে প্রমাণীকরণ করলে, আপনি কেবল লবণকে পাসওয়ার্ডের সাথে একত্রিত করুন, হ্যাশ করুন এবং সংরক্ষিত হ্যাশের সাথে তুলনা করুন।


If you pick a sufficiently large, cryptographically random salt, you’ve completely defeated ahead-of-time attacks.

যদি আপনি যথেষ্ট বড়, ক্রিপ্টোগ্রাফিকভাবে এলোমেলো লবণ নির্বাচন করেন, তবে আপনি অগ্রিম আক্রমণকে সম্পূর্ণরূপে পরাজিত করেছেন।


In order to successfully mount a rainbow table attack, an attacker would have to have a separate table for each of those salt values.

সফলভাবে রেইনবো টেবিল আক্রমণ চালানোর জন্য, একজন আক্রমণকারীকে সেই লবণ মানগুলির প্রত্যেকটির জন্য একটি আলাদা টেবিল রাখতে হবে।


Many systems used a single salt for all users.

অনেক সিস্টেমে সমস্ত ব্যবহারকারীর জন্য একটি একক লবণ ব্যবহার করা হত।


While that prevented an ahead-of-time rainbow table attack, it still allowed attackers to attack all passwords simultaneously.

যদিও এটি অগ্রিম রেইনবো টেবিল আক্রমণ প্রতিরোধ করে, এটি এখনও আক্রমণকারীদের একই সাথে সমস্ত পাসওয়ার্ড আক্রমণ করার অনুমতি দেয়।


An attacker would simply compute a single rainbow table for that salt, and compare the results with the hashed passwords from the database.

একজন আক্রমণকারী কেবল সেই লবণের জন্য একটি একক রেইনবো টেবিল গণনা করবে এবং ডাটাবেস থেকে হ্যাশ করা পাসওয়ার্ডের সাথে ফলাফলগুলি তুলনা করবে।


Modern attacks on weak password systems To a modern attack, salts quite simply don’t help.

দুর্বল পাসওয়ার্ড সিস্টেমের উপর আধুনিক আক্রমণ আধুনিক আক্রমণের জন্য, লবণগুলি সহজভাবে সাহায্য করে না।


Modern attacks take advantage of the fact that the hash function being used is easy to compute.

আধুনিক আক্রমণগুলি এই সত্যের সুবিধা নেয় যে ব্যবহৃত হ্যাশ ফাংশনটি গণনা করা সহজ।


Salts may make precomputed attacks impossible, but they do very little against an attacker that actually knows the salt.

লবণগুলি সম্ভবত পূর্ব-গণিত আক্রমণকে অসম্ভব করে তোলে, তবে তারা সেই আক্রমণকারীর বিরুদ্ধে খুব কমই কাজ করে যে আসলে লবণ জানে।


In order to protect passwords, you need a key derivation function.

পাসওয়ার্ড রক্ষা করার জন্য, আপনার একটি কী ডেরিভেশন ফাংশন প্রয়োজন।


In many hash functions, particularly the previous generations, the internal state kept by the hash function is used as the digest value.

অনেক হ্যাশ ফাংশনে, বিশেষ করে আগের প্রজন্মের, হ্যাশ ফাংশন দ্বারা রাখা অভ্যন্তরীণ অবস্থাটি ডাইজেস্ট মান হিসাবে ব্যবহৃত হয়।


If an attacker knows H(M1), it’s very simple to compute H(M1 ‖ M2), without actually knowing the value of M1.

যদি একজন আক্রমণকারী H(M1) জানে, তবে M1-এর মান না জেনেও H(M1 ‖ M2) গণনা করা খুব সহজ।


Hash trees are trees where each node is identified by a hash value.

হ্যাশ ট্রি হল এমন ট্রি যেখানে প্রতিটি নোড একটি হ্যাশ মান দ্বারা চিহ্নিত করা হয়।


Examples include distributed version control systems such as Git, digital currencies such as Bitcoin, distributed peer-to-peer networks like Bittorrent, and distributed databases such as Cassandra.

উদাহরণগুলির মধ্যে রয়েছে গিট-এর মতো বিতরণ সংস্করণ নিয়ন্ত্রণ ব্যবস্থা, বিটকয়েনের মতো ডিজিটাল মুদ্রা, বিটটরেন্টের মতো বিতরণ করা পিয়ার-টু-পিয়ার নেটওয়ার্ক এবং ক্যাসান্দ্রার মতো বিতরণ করা ডাটাবেস।


A Message authentication code (MAC) is a small bit of information that can be used to check the authenticity and the integrity of a message.

একটি বার্তা প্রমাণীকরণ কোড (MAC) হল তথ্যের একটি ছোট অংশ যা একটি বার্তার সত্যতা এবং অখণ্ডতা পরীক্ষা করতে ব্যবহার করা যেতে পারে।


In this book we’re mostly interested in MACs as a way to achieve authenticated encryption, so the message will always be a ciphertext.

এই বইটিতে আমরা মূলত MAC-এর প্রতি আগ্রহী, যা প্রমাণীকৃত এনক্রিপশন অর্জনের একটি উপায়, তাই বার্তাটি সর্বদা একটি সাইফারটেক্সট হবে।


A state generation function, which produces a new state from the old state.

একটি স্টেট জেনারেশন ফাংশন, যা পুরনো স্টেট থেকে একটি নতুন স্টেট তৈরি করে।


The initialization function creates an instance of Mersenne Twister’s state array, from a small initial random number called aseed.

ইনস্টালাইজেশন ফাংশনটি একটি ছোট প্রাথমিক র্যান্ডম সংখ্যা থেকে মার্সেন টুইস্টারের স্টেট অ্যারের একটি উদাহরণ তৈরি করে, যাকে সিড বলা হয়।


The state regeneration function takes the current state and produces a new state.

স্টেট পুনরুৎপাদন ফাংশনটি বর্তমান স্টেট নেয় এবং একটি নতুন স্টেট তৈরি করে।


The tempering function is applied to the current element of the state before returning it as the produced random number.

টেম্পারিং ফাংশনটি উৎপাদিত র্যান্ডম সংখ্যা হিসাবে এটি ফেরত পাঠানোর আগে স্টেটের বর্তমান উপাদানে প্রয়োগ করা হয়।


Remember that for cryptographic security, it has to be impossible to predict future outputs or recover past outputs given present outputs.

মনে রাখবেন যে ক্রিপ্টোগ্রাফিক নিরাপত্তার জন্য, বর্তমান আউটপুটগুলি দেওয়া হলে ভবিষ্যতের আউটপুটগুলি অনুমান করা বা অতীতের আউটপুটগুলি পুনরুদ্ধার করা অসম্ভব হতে হবে।


SSL, short for Secure Socket Layer, is a cryptographic protocol originally introduced by Netscape Communications for securing traffic on the Web.

SSL, সিকিউর সকেট লেয়ারের সংক্ষিপ্ত রূপ, একটি ক্রিপ্টোগ্রাফিক প্রোটোকল যা মূলত ওয়েবে ট্র্যাফিক সুরক্ষিত করার জন্য নেটস্কেপ কমিউনিকেশনস দ্বারা চালু করা হয়েছিল।


TLS is the world’s most common cryptosystem, and hence probably also the most studied.

TLS বিশ্বের সবচেয়ে সাধারণ ক্রিপ্টোসিstem, এবং সম্ভবত এটি সবচেয়ে বেশি অধ্যয়ন করা হয়েছে।


A downgrade attack is a man-in-the-middle attack where an attacker modifies the handshake messages that negotiate which ciphersuite is being used.

একটি ডাউনগ্রেড আক্রমণ হল একটি ম্যান-ইন-দ্য-মিডল আক্রমণ যেখানে একজন আক্রমণকারী হ্যান্ডশেক বার্তাগুলি পরিবর্তন করে যা আলোচনা করে যে কোন সাইফারসুইট ব্যবহার করা হচ্ছে।


TLS certificates can be used to authenticate peers, but how do we authenticate the certificate?

TLS সার্টিফিকেটগুলি সহকর্মীদের প্রমাণীকরণের জন্য ব্যবহার করা যেতে পারে, কিন্তু আমরা কীভাবে শংসাপত্রটি প্রমাণীকরণ করব?


When someone actually tries to use a certificate to impersonate a bank, real browsers don’t believe them.

যখন কেউ আসলে একটি ব্যাংককে নকল করতে একটি শংসাপত্র ব্যবহার করার চেষ্টা করে, তখন আসল ব্রাউজারগুলি তাদের বিশ্বাস করে না।


TLS clients come with a list of trusted certificate authorities, commonly shipped with your operating system or your browser.

TLS ক্লায়েন্টরা বিশ্বস্ত শংসাপত্র কর্তৃপক্ষের একটি তালিকা নিয়ে আসে, যা সাধারণত আপনার অপারেটিং সিস্টেম বা আপনার ব্রাউজারের সাথে সরবরাহ করা হয়।


In TLS, certificates are usually only used to identify the server.

TLS-এ, সার্টিফিকেটগুলি সাধারণত শুধুমাত্র সার্ভার সনাক্ত করতে ব্যবহৃত হয়।


There’s no reason users can’t have their own certificates, and use them to authenticate to the server.

ব্যবহারকারীদের নিজস্ব সার্টিফিকেট থাকতে পারে এবং সার্ভারে প্রমাণীকরণের জন্য সেগুলি ব্যবহার করার কোনও কারণ নেই।


Suppose an attacker gets access to the server’s private key.

ধরুন একজন আক্রমণকারী সার্ভারের ব্যক্তিগত কী-তে অ্যাক্সেস পায়।


That property is called perfect forward secrecy.

এই বৈশিষ্ট্যটিকে পারফেক্ট ফরোয়ার্ড সিক্রেসি বলা হয়।


Attacks on TLS can usually be grouped into two distinct categories.

TLS-এর আক্রমণগুলি সাধারণত দুটি স্বতন্ত্র বিভাগে বিভক্ত করা যেতে পারে।


CRIME is an attack by the authors of BEAST.

CRIME হল BEAST-এর লেখকদের দ্বারা করা একটি আক্রমণ।


The attacker needs some way to inject their guess of the secret so that their guess occurs in the plaintext.

আক্রমণকারীর গোপনীয়তার অনুমান ইনজেক্ট করার জন্য কিছু উপায় দরকার যাতে তাদের অনুমানটি প্লেনটেক্সটে ঘটে।


In order to defend against CRIME, disable TLS compression.

CRIME-এর বিরুদ্ধে রক্ষা করার জন্য, TLS কম্প্রেশন অক্ষম করুন।


HSTS is a way for web servers to communicate that what they’re saying should only ever be transferred over a secure transport.

HSTS হল ওয়েব সার্ভারগুলির জন্য যোগাযোগ করার একটি উপায় যে তারা যা বলছে তা শুধুমাত্র একটি সুরক্ষিত পরিবহনের মাধ্যমে স্থানান্তর করা উচিত।


Because they’re prepended, the internal state of the hash function after processing the prefixes can be computed ahead of time, shaving a few cycles off the MAC computation time.

যেহেতু এগুলি পূর্বে যুক্ত করা হয়েছে, তাই প্রিফিক্সগুলি প্রক্রিয়াকরণের পরে হ্যাশ ফাংশনের অভ্যন্তরীণ অবস্থা আগে থেকেই গণনা করা যেতে পারে, যা MAC গণনার সময় কয়েক চক্র সাশ্রয় করে।


An algorithm that only works once just seems objectively worse.

এমন একটি অ্যালগরিদম যা শুধুমাত্র একবার কাজ করে তা বস্তুবাদীভাবে খারাপ বলেই মনে হয়।


They can be incredibly fast to evaluate, even for very large messages.

এগুলি মূল্যায়ন করতে অবিশ্বাস্যভাবে দ্রুত হতে পারে, এমনকি খুব বড় আকারের বার্তার ক্ষেত্রেও।


A construction exists to turn a one-time MAC into a secure multiple-use MAC, removing the principal problem.

একটি নির্মাণ বিদ্যমান যা এককালীন MAC-কে একটি সুরক্ষিত বহু-ব্যবহারযোগ্য MAC-এ পরিণত করে, প্রধান সমস্যাটি দূর করে।


A typical simple example of such one-time MACs consists of a simple multiplication and addition modulo some large prime p.

এই ধরনের এককালীন MAC-এর একটি সাধারণ উদাহরণ হল কিছু বৃহৎ মৌলিক সংখ্যা p-এর মডুলো-তে একটি সাধারণ গুণ এবং যোগফল।


This simple example only works for one-block messages m, and some prime p slightly bigger than the biggest m.

এই সাধারণ উদাহরণটি শুধুমাত্র এক-ব্লক বার্তা m-এর জন্য কাজ করে এবং কিছু মৌলিক সংখ্যা p, যা বৃহত্তম m-এর চেয়ে সামান্য বড়।


It can be extended to support bigger messages M consisting of blocks m i by using a message-specific polynomial P:

একটি বার্তা-নির্দিষ্ট পলিনোমিয়াল P ব্যবহার করে এটিকে ব্লক m i সমন্বিত বৃহত্তর বার্তা M সমর্থন করার জন্য প্রসারিত করা যেতে পারে:


In many ways, a one-time MAC is to authentication what a one-time pad is to encryption.

অনেক ক্ষেত্রে, এককালীন MAC প্রমাণীকরণের জন্য যা, এককালীন প্যাড এনক্রিপশনের জন্য তাই।


The security argument is similar: as long as the key is only used once, an attacker learns no information about the key or the message, because they are being irreversibly mixed.

নিরাপত্তার যুক্তিও একই রকম: যতক্ষণ না চাবিটি শুধুমাত্র একবার ব্যবহার করা হয়, ততক্ষণ একজন আক্রমণকারী চাবি বা বার্তা সম্পর্কে কোনো তথ্য জানতে পারে না, কারণ সেগুলি অপরিবর্তনীয়ভাবে মিশ্রিত হচ্ছে।


This demonstrates that the MAC is secure against attackers trying to produce existential forgeries, even when that attacker has infinite computational power.

এটি প্রমাণ করে যে MAC অস্তিত্বগত জালিয়াতি তৈরি করার চেষ্টা করা আক্রমণকারীদের বিরুদ্ধে সুরক্ষিত, এমনকি যখন সেই আক্রমণকারীর অসীম গণনা ক্ষমতা থাকে।


a এবং b পুনরায় ব্যবহার করা


As you can see, as with one-time pads, re-using the key even once leads to a complete failure of the cryptosystem to preserve privacy or integrity, as the case may be.

আপনি দেখতে পাচ্ছেন, এককালীন প্যাডের মতো, চাবিটি এমনকি একবার পুনরায় ব্যবহার করা হলে গোপনীয়তা বা অখণ্ডতা রক্ষার জন্য ক্রিপ্টো-সিস্টেমের সম্পূর্ণ ব্যর্থতা দেখা দেয়, যেমনটি হতে পারে।


Fortunately, this weakness can be solved with a construction called a Carter-Wegman MAC, which we’ll see in the next section.

সৌভাগ্যবশত, এই দুর্বলতাটি কার্টার-ওয়েগম্যান MAC নামক একটি নির্মাণ দ্বারা সমাধান করা যেতে পারে, যা আমরা পরবর্তী বিভাগে দেখব।


The idea behind a Carter-Wegman MAC is that you can use a one-time MAC O to produce a tag for the bulk of the data, and then encrypt a nonce n with a pseudorandom function F, such as a block cipher, to protect that one-time tag:

কার্টার-ওয়েগম্যান MAC-এর পেছনের ধারণা হল যে আপনি ডেটার বৃহৎ অংশের জন্য একটি ট্যাগ তৈরি করতে এককালীন MAC O ব্যবহার করতে পারেন এবং তারপরে সেই এককালীন ট্যাগ সুরক্ষিত করতে একটি সিউডোর্যান্ডম ফাংশন F, যেমন একটি ব্লক সাইফার, এর সাথে একটি ননস n এনক্রিপ্ট করতে পারেন:


As long as F is a secure pseudorandom function, the nonce’s encryption is totally unpredictable.

যতক্ষণ F একটি সুরক্ষিত সিউডোর্যান্ডম ফাংশন, ততক্ষণ ননস-এর এনক্রিপশন সম্পূর্ণ অপ্রত্যাশিত।


In the eyes of an attacker, that means the XOR operation will randomly flip the bits of the one-time MAC tag O(k 2, M).

একজন আক্রমণকারীর চোখে, এর মানে হল XOR অপারেশন এলোমেলোভাবে এককালীন MAC ট্যাগ O(k 2, M)-এর বিটগুলি উল্টে দেবে।


Because this masks the real value of the one-time MAC tag, the attacker can not perform the algebraic tricks we saw for one-time MACs recovering the key when it is used more than once.

কারণ এটি এককালীন MAC ট্যাগের আসল মানকে মাস্ক করে, তাই আক্রমণকারী এককালীন MAC-এর জন্য আমরা যে বীজগণিত কৌশলগুলি দেখেছি তা সম্পাদন করতে পারে না, যখন এটি একবারের বেশি ব্যবহার করা হয় তখন চাবি পুনরুদ্ধার করা হয়।


In the second term, O(k 2, M), the large input message M is only handled by the very fast one-time MAC O.

দ্বিতীয় পদে, O(k 2, M), বৃহৎ ইনপুট বার্তা M শুধুমাত্র অতি দ্রুত এককালীন MAC O দ্বারা পরিচালিত হয়।


These constructions, in particular Poly1305-AES, currently represent some of the state of the art in MAC functions.

এই নির্মাণগুলি, বিশেষ করে Poly1305-AES, বর্তমানে MAC ফাংশনগুলির ক্ষেত্রে শিল্পের কিছু প্রতিনিধিত্ব করে।


The majority of secure connections that are set up every day have that distinction as well: they treat encryption and authentication as fundamentally different steps.

প্রতিদিন যে সুরক্ষিত সংযোগগুলি স্থাপন করা হয় তার অধিকাংশই এই পার্থক্যটি বজায় রাখে: তারা এনক্রিপশন এবং প্রমাণীকরণকে মৌলিকভাবে ভিন্ন পদক্ষেপ হিসাবে বিবেচনা করে।


Symmetric-key encryption is also known as secret-key encryption.

প্রতিসম-কী এনক্রিপশনকে গোপন-কী এনক্রিপশনও বলা হয়।


AES stands for Advanced Encryption Standard.

এ ই এস-এর অর্থ হল উন্নত এনক্রিপশন স্ট্যান্ডার্ড।


সিবিসি-এর অর্থ হল সাইফার ব্লক চেইনিং।


CDN stands for content distribution network.

সিডিএন-এর অর্থ হল কন্টেন্ট ডিস্ট্রিবিউশন নেটওয়ার্ক।


ডি ই এস হল ডেটা এনক্রিপশন স্ট্যান্ডার্ড।


FIPS stands for Federal Information Processing Standards.

এফআইপিএস-এর অর্থ হল ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ডস।


HKDF is HMAC-based (Extract-and-Expand) Key Derivation Function.

এইচকেডিএফ হল এইচএমএসি-ভিত্তিক (এক্সট্রাক্ট-এন্ড-এক্সপ্যান্ড) কী ডিরাইভেশন ফাংশন।


HMAC stands for Hash-based Message Authentication Code.

এইচএমএসি-এর অর্থ হল হ্যাশ-ভিত্তিক মেসেজ অথেনটিকেশন কোড।


HSTS stands for HTTP Strict Transport Security.

এইচএসটিএস-এর অর্থ হল এইচটিটিপি স্ট্রিক্ট ট্রান্সপোর্ট সিকিউরিটি।


আইভি-এর অর্থ হল ইনিশিয়ালাইজেশন ভেক্টর।


কেডিএফ-এর অর্থ হল কী ডিরাইভেশন ফাংশন।


MAC stands for message authentication code.

এমএসি-এর অর্থ হল মেসেজ অথেনটিকেশন কোড।


এমআইটিএম-এর অর্থ হল ম্যান-ইন-দ্য-মিডল।


ওসিবি-এর অর্থ হল অফসেট কোডবুক।


ওটিআর-এর অর্থ হল অফ-দ্য-রেকর্ড।


পিআরএফ-এর অর্থ হল সিউডোর‍্যান্ডম ফাংশন।


PRNG stands for pseudorandom number generator.

পিআরএনজি-এর অর্থ হল সিউডোর‍্যান্ডম নম্বর জেনারেটর।


PRP stands for pseudorandom permutation.

পিআরপি-এর অর্থ হল সিউডোর‍্যান্ডম পারমুটেশন।


আরএসএ হল রিভেস্ট, শামীর ও অ্যাডেলম্যান।


SMP stands for socialist millionaire protocol.

এসএমপি-এর অর্থ হল সোস্যালিস্ট মিলিয়নেয়ার প্রোটোকল।


Browsers originally implemented certificate pinning by coming shipped with a list of certificates from large, high-profile websites.

ওয়েবসাইটগুলি মূলত সার্টিফিকেট পিনিং প্রয়োগ করত, যেখানে তারা বৃহৎ এবং গুরুত্বপূর্ণ ওয়েবসাইটগুলির সার্টিফিকেটগুলির একটি তালিকা সরবরাহ করত।


For example, Google included whitelisted certificates for all of their services in their Chrome browser.

উদাহরণস্বরূপ, গুগল তাদের ক্রোম ব্রাউজারে তাদের সমস্ত পরিষেবার জন্য শ্বেত তালিকাভুক্ত সার্টিফিকেট অন্তর্ভুক্ত করেছে।


Often, the defaults are unsafe, and people are unaware that they should be changed.

প্রায়শই, ডিফল্ট সেটিংসগুলি অনিরাপদ থাকে এবং লোকেরা জানে না যে সেগুলি পরিবর্তন করা উচিত।


The things that constitute a secure TLS configuration can change rapidly, because cryptanalysis and practical attacks are continuously improving.

নিরাপদ TLS কনফিগারেশন তৈরি করে এমন বিষয়গুলি দ্রুত পরিবর্তন হতে পারে, কারণ ক্রিপ্ট্যানালাইসিস এবং বাস্তব আক্রমণগুলি ক্রমাগত উন্নত হচ্ছে।


Old clients that still need to be supported sometimes mean that you have to hang on to broken configuration options.

পুরানো ক্লায়েন্টদের সমর্থন করার প্রয়োজন হলে, মাঝে মাঝে আপনাকে ত্রুটিপূর্ণ কনফিগারেশন বিকল্পগুলির সাথে থাকতে হয়।


That attack exploited weaknesses in CBC ciphersuites in TLSv1.0, which were parts of the default ciphersuite specifications everywhere.

এই আক্রমণটি TLSv1.0-এর CBC সাইফারস্যুটগুলির দুর্বলতাগুলি কাজে লাগিয়েছিল, যা সর্বত্র ডিফল্ট সাইফারস্যুট স্পেসিফিকেশনের অংশ ছিল।


Many people recommended defending against it by switching to RC4.

অনেকে RC4-এ পরিবর্তন করে এর বিরুদ্ধে প্রতিরোধের পরামর্শ দিয়েছিলেন।


RC4 was already considered cryptographically weak, later cryptanalysis showed that RC4 was even more broken than previously suspected.

RC4 ইতিমধ্যেই ক্রিপ্টোগ্রাফিকভাবে দুর্বল হিসাবে বিবেচিত হত, পরবর্তীকালে ক্রিপ্ট্যানালাইসিস দেখিয়েছিল যে RC4 পূর্বে যা সন্দেহ করা হয়েছিল তার চেয়েও বেশি ক্ষতিগ্রস্ত হয়েছিল।


The attack had been known for years before being practically exploited; it was already fixed in TLSv1.1 in 2006, years before the BEAST paper being published.

আক্রমণটি বাস্তবে কাজে লাগানোর আগে বহু বছর ধরে পরিচিত ছিল; এটি ২০০৬ সালে TLSv1.1-এ ইতিমধ্যেই সংশোধন করা হয়েছিল, BEAST গবেষণাপত্রটি প্রকাশের কয়েক বছর আগে।


Good advice necessarily changes over time, and it’s impossible to do so in a persistent medium such as a book.

ভালো পরামর্শ সময়ের সাথে সাথে পরিবর্তিত হয় এবং বইয়ের মতো একটি স্থায়ী মাধ্যমে এটি করা অসম্ভব।


Instead, you should look at continuously updated third party sources such as Qualys SSL Labs.

পরিবর্তে, আপনার উচিত Qualys SSL ল্যাবের মতো ক্রমাগত আপডেট হওয়া তৃতীয় পক্ষের উৎসগুলি দেখা।


They provide tests for both SSL clients and servers, and extensive advice on how to improve configurations.

তারা SSL ক্লায়েন্ট এবং সার্ভার উভয়ের জন্য পরীক্ষা প্রদান করে এবং কনফিগারেশন উন্নত করার বিষয়ে বিস্তারিত পরামর্শ দেয়।


OpenPGP is an open standard that describes a method for encrypting and signing messages.

OpenPGP হল একটি উন্মুক্ত মান যা বার্তা এনক্রিপ্ট এবং স্বাক্ষর করার একটি পদ্ধতি বর্ণনা করে।


Unlike TLS, which focuses on data in motion, OpenPGP focuses on data at rest.

TLS-এর বিপরীতে, যা গতিশীল ডেটার উপর দৃষ্টি নিবদ্ধ করে, OpenPGP স্থিতিশীল ডেটার উপর মনোযোগ দেয়।


A TLS session is active: bytes fly back and forth as the peers set up the secure channel.

একটি TLS সেশন সক্রিয় থাকে: নিরাপদ চ্যানেল সেট আপ করার সময় বাইটগুলি আসা যাওয়া করে।


An OpenPGP interaction is, by comparison, static: the sender computes the entire message up front using information shared ahead of time.

তুলনায়, একটি OpenPGP ইন্টারঅ্যাকশন স্থিতিশীল: প্রেরক আগে থেকে শেয়ার করা তথ্য ব্যবহার করে পুরো বার্তাটি আগেই গণনা করে।


Users have key pairs consisting of a public key and a private key.

ব্যবহারকারীদের কী জোড়া থাকে, যার মধ্যে একটি পাবলিক কী এবং একটি প্রাইভেট কী থাকে।


Public key algorithms are used both for signing and encryption.

পাবলিক কী অ্যালগরিদমগুলি স্বাক্ষর এবং এনক্রিপশন উভয়ের জন্যই ব্যবহৃত হয়।


The simplest case is a directly trusted key.

সবচেয়ে সহজ উদাহরণ হল একটি সরাসরি বিশ্বস্ত কী।


If we meet up in person, we can verify each other’s identities.

যদি আমরা ব্যক্তিগতভাবে দেখা করি, তবে আমরা একে অপরের পরিচয় যাচাই করতে পারি।


Keep in mind that this method will still leak timing information, so it’s only suitable for offline computation.

মনে রাখবেন যে এই পদ্ধতিটি এখনও সময় সম্পর্কিত তথ্য ফাঁস করবে, তাই এটি শুধুমাত্র অফলাইন গণনার জন্য উপযুক্ত।


Many programming languages provide access to specific modular exponentiation functions.

অনেক প্রোগ্রামিং ভাষা নির্দিষ্ট মডুলার এক্সপোনেনশিয়াল ফাংশনগুলিতে অ্যাক্সেস সরবরাহ করে।


For example, in Python, pow(e, x, m) performs efficient modular exponentiation.

উদাহরণস্বরূপ, পাইথনে, pow(e, x, m) দক্ষ মডুলার এক্সপোনেনশিয়াল করে।


However, the expression (e ** x) % m will still use the inefficient method.

যাইহোক, (e ** x) % m অভিব্যক্তিটি এখনও অদক্ষ পদ্ধতি ব্যবহার করবে।


The Montgomery ladder is an algorithm that resolves this by guaranteeing the same number of operations irrespective of the particular value of the exponent.

মন্টগোমারি ল্যাডার হল এমন একটি অ্যালগরিদম যা সূচকের নির্দিষ্ট মান নির্বিশেষে একই সংখ্যক অপারেশন নিশ্চিত করে এটি সমাধান করে।


It was originally applied for efficient scalar multiplications over elliptic curves, but the mathematics works for many other systems: specifically, for any abelian group.

এটি মূলত উপবৃত্তাকার বক্ররেখার উপর দক্ষ স্কেলার গুণনের জন্য প্রয়োগ করা হয়েছিল, তবে গণিতবিদ্যা অন্যান্য অনেক সিস্টেমের জন্য কাজ করে: বিশেষ করে, যেকোনো অ্যাবেলিয়ান গ্রুপের জন্য।


That definition might look scary, but all you’re really doing here is defining k_i as bit of k at position i.

সেই সংজ্ঞাটি ভীতিকর লাগতে পারে, তবে আপনি এখানে যা করছেন তা হল k_i কে i অবস্থানে k এর বিট হিসাবে সংজ্ঞায়িত করা।


The sum goes over all the bits: if k is t bits long, and we start indexing at 0, the index of the highest bit is t-1, and the index of the lowest bit is 0.

যোগফলটি সমস্ত বিটের উপর যায়: যদি k t বিট লম্বা হয়, এবং আমরা 0 থেকে সূচীকরণ শুরু করি, তাহলে সর্বোচ্চ বিটের সূচক t-1, এবং সর্বনিম্ন বিটের সূচক 0।


For example, the binary expansion of the number 6 is 0b110.

উদাহরণস্বরূপ, 6 সংখ্যার বাইনারি বিস্তার হল 0b110।


That number is three bits long, so t = 3.

সেই সংখ্যাটি তিনটি বিট লম্বা, তাই t = 3।


The next few steps don’t make a lot of sense until you see them come together at the end, so bear with me and check that the math works out.

পরের কয়েকটি ধাপের তেমন কোনো মানে হয় না যতক্ষণ না আপনি তাদের একসাথে আসতে দেখেন, তাই আমার সাথে থাকুন এবং দেখুন যে গণিত কাজ করে কিনা।


Essentially, L_j is just k shifted to the right by j bits.

মূলত, L_j হল k কে j বিট দ্বারা ডানদিকে স্থানান্তরিত করা।


Shifting to the right by one bit is the same thing as flooring division by two, just like right-shifting by a decimal digit is the same thing as flooring division by 10.

এক বিট দ্বারা ডানে স্থানান্তরিত করা দুই দ্বারা ফ্লোরিং বিভাগের মতোই, যেমন একটি দশমিক অঙ্ক দ্বারা ডানে স্থানান্তরিত করা 10 দ্বারা ফ্লোরিং বিভাগের মতো।


For example: 73, shifted one decimal digit to the right is 7; 0b101 (5) shifted one binary digit (bit) to the right is 0b10 (2).

উদাহরণস্বরূপ: 73, এক দশমিক অঙ্ক ডানে স্থানান্তরিত করলে 7 হয়; 0b101 (5) এক বাইনারি অঙ্ক (বিট) ডানে স্থানান্তরিত করলে 0b10 (2) হয়।


Analogously, shifting left is the inverse operation, and is equivalent to multiplying by two.

অনুরূপভাবে, বাম দিকে স্থানান্তরিত করা বিপরীত অপারেশন, এবং এটি দুই দ্বারা গুণ করার সমতুল্য।


Next, we’ll perform a little arithmetical hocus pocus.

এর পরে, আমরা সামান্য গাণিতিক কৌশল করব।


We can combine these to produce an inductive way to compute L_j and H_j:

আমরা L_j এবং H_j গণনা করার জন্য একটি আবেশিক উপায় তৈরি করতে এগুলি একত্রিত করতে পারি:


Remember that we’re doing this to compute g^k.

মনে রাখবেন যে আমরা g^k গণনা করার জন্য এটি করছি।


Let’s write the exponentiation out: g^L_j

আসুন এক্সপোনেনশিয়ালটি লিখি: g^L_j


The important part about this algorithm is the constant number of operations.

এই অ্যালগরিদম সম্পর্কে গুরুত্বপূর্ণ অংশটি হল অপারেশনের ধ্রুবক সংখ্যা।