The book is an introduction to cryptography for programmers.

یہ کتاب پروگرامرز کے لیے کرپٹوگرافی کا تعارف ہے۔


XOR is a fundamental operation in cryptography.

XOR کرپٹوگرافی میں ایک بنیادی عمل ہے۔


The security of a one-time pad depends on the randomness of the key.

ایک بار استعمال ہونے والے پیڈ کی حفاظت کلید کی بے ترتیبی پر منحصر ہے۔


This book explains how to apply cryptosystems in real software.

یہ کتاب بتاتی ہے کہ اصلی سافٹ ویئر میں کرپٹو سسٹم کو کیسے لاگو کیا جائے۔


The goal is to understand how complete cryptosystems work.

مقصد یہ ہے کہ یہ سمجھا جائے کہ مکمل کرپٹو سسٹم کیسے کام کرتے ہیں۔


Exercises focus on teaching cryptography by breaking inferior systems.

مشقیں کمتر نظاموں کو توڑ کر کرپٹوگرافی سکھانے پر مرکوز ہیں۔


You will understand why all these primitives and constructions are necessary.

آپ سمجھ جائیں گے کہ یہ تمام ابتدائی عناصر اور تعمیرات کیوں ضروری ہیں۔


Cryptography has been deemed the exclusive realm of experts.

کرپٹوگرافی کو ماہرین کا خصوصی میدان سمجھا جاتا رہا ہے۔


We must join them into one world where all programmers are educated.

ہمیں انہیں ایک دنیا میں شامل ہونا چاہیے جہاں تمام پروگرامرز کو تعلیم دی جائے۔


یہ کتاب ایک پل بننے کی امید رکھتی ہے۔


Some sections go into more depth than they need to.

کچھ حصے ضرورت سے زیادہ گہرائی میں جاتے ہیں۔


The entire Crypto 101 project is publicly developed on GitHub.

پورا Crypto 101 پروجیکٹ GitHub پر عوامی طور پر تیار کیا گیا ہے۔


Your questions, comments and bug reports are highly appreciated.

آپ کے سوالات، تبصرے اور بگ رپورٹس کی بہت تعریف کی جاتی ہے۔


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

Exclusive or، جسے اکثر XOR کہا جاتا ہے، ایک بولین آپریٹر ہے۔


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

XOR اس وقت درست ہوتا ہے جب یا تو پہلا ان پٹ یا دوسرا ان پٹ، لیکن دونوں نہیں، درست ہوں۔


Another way to think of XOR is as a programmable inverter.

XOR کے بارے میں سوچنے کا ایک اور طریقہ یہ ہے کہ اسے ایک قابل پروگرام انورٹر کے طور پر دیکھا جائے۔


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

ریاضی اور کرپٹوگرافی کے مقالوں میں، exclusive or کو عام طور پر دائرے میں ایک کراس کے ذریعے ظاہر کیا جاتا ہے۔


We will be dealing with XOR extensively during this book.

ہم اس کتاب کے دوران XOR سے وسیع پیمانے پر نمٹیں گے۔


If you’re already familiar with how XOR works, feel free to skip this section.

اگر آپ پہلے سے ہی واقف ہیں کہ XOR کیسے کام کرتا ہے، تو بلا جھجھک اس حصے کو چھوڑ دیں۔


XOR may seem like an awfully simple, even trivial operator.

XOR ایک بہت ہی سادہ، یہاں تک کہ معمولی آپریٹر کی طرح لگ سکتا ہے۔


کلیدی بٹس یا تو 0 یا 1 تھے۔


Since the key bits are truly random, both options are equally probable.

چونکہ کلیدی بٹس واقعی بے ترتیب ہیں، اس لیے دونوں اختیارات یکساں طور پر ممکن ہیں۔


The attacker learns that the message exists.

حملہ آور کو معلوم ہوتا ہے کہ پیغام موجود ہے۔


There are secure cryptosystems to hide the existence and the length of a message.

پیغام کے وجود اور لمبائی کو چھپانے کے لیے محفوظ کرپٹو سسٹم موجود ہیں۔


The one-time pad has to consist of truly random data.

ون ٹائم پیڈ کو حقیقی طور پر بے ترتیب ڈیٹا پر مشتمل ہونا چاہیے۔


ون ٹائم پیڈ کو صرف ایک بار استعمال کیا جا سکتا ہے۔


Most commercial products that claim to be one-time pads are snake oil.

زیادہ تر تجارتی مصنوعات جو ون ٹائم پیڈ ہونے کا دعویٰ کرتی ہیں وہ دھوکہ ہیں۔


They use various deterministic constructs to produce the one-time pad.

وہ ون ٹائم پیڈ تیار کرنے کے لیے مختلف قطعی تعمیرات کا استعمال کرتے ہیں۔


This invalidates the unbreakable security property of one-time pads.

یہ ون ٹائم پیڈ کی ناقابلِ شکست سیکیورٹی پراپرٹی کو کالعدم قرار دیتا ہے۔


The end user would be better served by a more honest cryptosystem.

اختتامی صارف کو ایک زیادہ ایماندار کرپٹو سسٹم سے بہتر خدمت ملے گی۔


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

فرض کریں کہ ایک حملہ آور کو ایک ہی ون ٹائم پیڈ کے ساتھ دو سائیفر ٹیکسٹ ملتے ہیں۔


The attacker can then XOR the two ciphertexts.

اس کے بعد حملہ آور دونوں سائیفر ٹیکسٹ کو XOR کر سکتا ہے۔


The result of the XOR operation on two plaintexts contains information about the plaintexts.

دو سادہ متن پر XOR آپریشن کا نتیجہ سادہ متن کے بارے میں معلومات پر مشتمل ہوتا ہے۔


A classical approach to breaking multi-time pad systems involves crib-dragging.

ملٹی ٹائم پیڈ سسٹمز کو توڑنے کا ایک کلاسیکی طریقہ کار کریب ڈریگنگ پر مشتمل ہے۔


ان چھوٹے سلسلوں کو کریبز کہا جاتا ہے۔


If we could correctly guess the plaintext for one of the messages, we’d know K.

اگر ہم پیغامات میں سے کسی ایک کے لیے سادہ متن کا صحیح اندازہ لگا سکیں، تو ہمیں K معلوم ہو جائے گا۔


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

سادہ متن کے حصوں کا اندازہ لگانا پورے سادہ متن کا اندازہ لگانے سے کہیں زیادہ آسان ہے۔


We would expect to see a lot of letters e, t, a, o, i, n.

ہمیں بہت سے حروف e, t, a, o, i, n دیکھنے کی توقع ہوگی۔


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

اگر ہمارا اندازہ درست ہے، تو ہمیں اس پوزیشن پر موجود دیگر تمام سادہ متن بھی معلوم ہو جائیں گے۔


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

حقیقی ون ٹائم پیڈ، جو مناسب طریقے سے لاگو کیے گئے ہیں، ایک انتہائی مضبوط سیکیورٹی کی ضمانت رکھتے ہیں۔


ہمیں انہیں فٹ کرنے کے لیے کچھ طریقہ کار کی ضرورت ہے۔


اس عمل کو پیڈنگ کہا جاتا ہے۔


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!

ہم وصول کنندہ کو من مانے پیغامات کو ڈکرپٹ کرنے کے لیے دھوکہ دینے کے لیے سی بی سی بٹ فلپنگ حملوں کو بہتر بنا سکتے ہیں!


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.

اس حملے کو شروع کرنے کے لیے، ایک حملہ آور کو صرف دو چیزوں کی ضرورت ہے: ڈکرپٹ کرنے کے لیے ایک ٹارگٹ سائفر ٹیکسٹ اور ایک پیڈنگ اوریکل۔


The massive impact of this attack proves otherwise.

اس حملے کا زبردست اثر اس کے برعکس ثابت کرتا ہے۔


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 attack is general enough to work on other kinds of padding, with minor modifications.

یہ حملہ معمولی تبدیلیوں کے ساتھ، دیگر قسم کی پیڈنگ پر کام کرنے کے لیے کافی عام ہے۔


The attacker fills a block with arbitrary bytes.

حملہ آور ایک بلاک کو من مانے بائٹس سے بھرتا ہے۔


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 سمیت کئی دوسرے معیارات متاثر نہیں ہوئے۔


دوبارہ، حملے صرف بہتر ہوتے جاتے ہیں۔


Andreas Klein showed more extensive correlation between the key and the keystream.

اینڈریاس کلین نے کلید اور کی اسٹریم کے درمیان زیادہ وسیع تعلق ظاہر کیا۔


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 کے ابتدائی کی اسٹریم بائٹس میں پہلے سے معلوم تعصبات کا بہت زیادہ تفصیل سے تجزیہ کرنے کے قابل تھے۔


The second attack is based on double byte biases anywhere in the keystream.

دوسرا حملہ کی اسٹریم میں کہیں بھی ڈبل بائٹ تعصبات پر مبنی ہے۔


It turns out that adjacent bytes of the keystream have an exploitable relation, whereas in an ideal stream cipher you would expect them to be completely independent.

یہ پتہ چلتا ہے کہ کی اسٹریم کے ملحقہ بائٹس کا ایک قابل استعمال رشتہ ہے، جب کہ ایک مثالی اسٹریم سائفر میں آپ ان سے مکمل طور پر آزاد ہونے کی توقع کریں گے۔


This table may seem a bit daunting at first.

یہ جدول پہلی نظر میں تھوڑا مشکل لگ سکتا ہے۔


Suppose that RC4 was a good stream cipher, and all values occurred with equal probability.

فرض کریں کہ RC4 ایک اچھا اسٹریم سائفر تھا، اور تمام اقدار مساوی امکان کے ساتھ ظاہر ہوئیں۔


By writing the probability in the 2 −16 (1 + 2 −k ) form, it’s easier to see how much RC4 deviates from what you’d expect from an ideal stream cipher.

امکان کو 2 −16 (1 + 2 −k ) شکل میں لکھنے سے، یہ دیکھنا آسان ہو جاتا ہے کہ RC4 ایک مثالی اسٹریم سائفر سے آپ جو توقع کریں گے اس سے کتنا انحراف کرتا ہے۔


So, let’s try to read the first line of the table.

تو، آئیے جدول کی پہلی سطر پڑھنے کی کوشش کرتے ہیں۔


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 ہے، تو آپ اگلے بائٹ کے بارے میں بہت سی پیشین گوئیاں کر سکتے ہیں، اس پر منحصر ہے کہ یہ کی اسٹریم میں کہاں واقع ہوتا ہے۔


These attacks have primarily focused on the cipher itself, and haven’t been fully optimized for practical attacks on, say, web services.

ان حملوں نے بنیادی طور پر خود سائفر پر توجہ مرکوز کی ہے، اور ویب سروسز پر عملی حملوں کے لیے مکمل طور پر بہتر نہیں کیا گیا ہے۔


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

اس کا کوئی راستہ نہیں ہے: ہمیں RC4 کا استعمال بند کرنے کی ضرورت ہے۔


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.

پہلے سے موجود معیارات کی کثرت اور نئے معیارات کی مسلسل تخلیق کے ساتھ، یہ غالباً آنے والے کئی سالوں تک استعمال ہوتا رہے گا۔


For example, we can only send messages of a very limited length: the block length of the block cipher.

مثال کے طور پر، ہم صرف ایک بہت ہی محدود لمبائی کے پیغامات بھیج سکتے ہیں: بلاک سائفر کی بلاک لمبائی۔


We’ll address this problem with a stream cipher.

ہم اس مسئلے کو اسٹریم سائفر کے ذریعے حل کریں گے۔


Although we have reduced the key size drastically, we still need to address the issue of agreeing on those few key bytes.

اگرچہ ہم نے کلیدی سائز کو ڈرامائی طور پر کم کر دیا ہے، ہمیں اب بھی ان چند کلیدی بائٹس پر متفق ہونے کے مسئلے کو حل کرنے کی ضرورت ہے۔


A stream cipher is asymmetric-key encryption algorithm that encrypts a stream of bits.

اسٹریم سائفر ایک غیر متناسب کلیدی انکرپشن الگورتھم ہے جو بٹس کے ایک سلسلے کو انکرپٹ کرتا ہے۔


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

اس سکیم کو ECB موڈ (الیکٹرانک کوڈ بک موڈ) کہا جاتا ہے، اور یہ ان بہت سے طریقوں میں سے ایک ہے جن سے بلاک سائفرز استعمال کیے جا سکتے ہیں۔


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

بدقسمتی سے، گھر میں تیار کردہ کرپٹو سسٹم میں بہت عام ہونے کے باوجود، یہ سیکیورٹی کی سنگین خامیاں پیدا کرتا ہے۔


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 موڈ میں انکرپٹڈ پیغامات کو اس شخص سے بات چیت کرکے ڈکرپٹ کر سکتے ہیں جو انکرپشن کر رہا ہے۔


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.

کیونکہ سادہ ٹیکسٹ میں پکسلز کے یکساں بلاکس سائفر ٹیکسٹ میں پکسلز کے یکساں بلاکس پر نقشہ بنائیں گے، اس لیے تصویر کی عالمی ساخت بڑی حد تک محفوظ رہتی ہے۔


Keep in mind that ”looking like random noise” doesn’t mean something is properly encrypted.

دھیان میں رکھیں کہ ”بے ترتیب شور کی طرح نظر آنا” کا مطلب یہ نہیں ہے کہ کوئی چیز مناسب طریقے سے انکرپٹڈ ہے۔


This particular demonstration only works on uncompressed bitmaps.

یہ خاص مظاہرہ صرف غیر کمپریسڈ بٹ میپس پر کام کرتا ہے۔


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

اس حصے میں، ہم ایک مختلف، فعال حملے کا مطالعہ کریں گے، جہاں حملہ آور فعال طور پر اپنے ہدف سے بات چیت کرتا ہے۔


Given some data A chosen by the attacker, the oracle will encrypt that data, followed by a secret suffix S, in ECB mode.

حملہ آور کے ذریعہ منتخب کردہ کچھ ڈیٹا A کو دیکھتے ہوئے، اوریکل اس ڈیٹا کو انکرپٹ کرے گا، اس کے بعد ایک خفیہ لاحقہ S، ECB موڈ میں۔


حملہ آور کا مقصد اسے ڈکرپٹ کرنا ہے۔


This oracle might seem artificial, but is quite common in practice.

یہ اوریکل مصنوعی لگ سکتا ہے، لیکن یہ عملی طور پر کافی عام ہے۔


The attacker starts by sending in a plaintext A that’s just one byte shorter than the block size.

حملہ آور ایک سادہ ٹیکسٹ A بھیج کر شروع کرتا ہے جو بلاک سائز سے صرف ایک بائٹ چھوٹا ہے۔


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.

اس طرح کے حملوں کو مین ان دی مڈل (MITM) حملے کہا جاتا ہے۔


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.

عوامی کلید کے الگورتھم انکرپشن تک محدود نہیں ہیں۔


Key exchange algorithms, such as Diffie-Hellman, which allow you to agree on a shared secret across an insecure medium.

کلید کے تبادلے کے الگورتھم، جیسے ڈیفی-ہیلمین، جو آپ کو غیر محفوظ میڈیم پر مشترکہ راز پر متفق ہونے کی اجازت دیتے ہیں۔


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.

RSA زیادہ سے زیادہ اس کے کلیدی سائز تک محدود ہے، جو 2048 بٹ کے لیے 256 بائٹس ہے۔


RSA encryption and decryption relies on modular arithmetic.

RSA انکرپشن اور ڈکرپشن ماڈیولر ریاضی پر انحصار کرتا ہے۔


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.

RSA کی سیکیورٹی اس ڈکرپشن آپریشن پر منحصر ہے جو خفیہ ایکسپونینٹ d کو جانے بغیر ناممکن ہے۔


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

RSA کو توڑنا۔ بہت سے کرپٹو سسٹم کی طرح، RSA ایک خاص ریاضیاتی مسئلے کی مفروضہ مشکل پر انحصار کرتا ہے۔


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

اس وقت، 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، جو کہ بہترین غیر متناسب انکرپشن پیڈنگ کا مخفف ہے، RSA پیڈنگ میں جدید ترین ہے۔


Most public-key encryption schemes can only encrypt small chunks of data at a time.

زیادہ تر عوامی کلید انکرپشن سکیمیں ایک وقت میں صرف ڈیٹا کے چھوٹے ٹکڑوں کو خفیہ کر سکتی ہیں۔


That means that we can now communicate with anyone, using only public information, completely secure from eavesdroppers.

اس کا مطلب ہے کہ اب ہم کسی کے ساتھ بھی صرف عوامی معلومات کا استعمال کرتے ہوئے بات چیت کر سکتے ہیں، جو سننے والوں سے مکمل طور پر محفوظ ہے۔


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.

رینبو ٹیبل حملے کو کامیابی سے شروع کرنے کے لیے، حملہ آور کو ان نمک کی ہر قدر کے لیے ایک الگ ٹیبل رکھنا ہوگا۔


Since even a single table was usually quite large, storing a large amount of them would be impossible.

چونکہ یہاں تک کہ ایک ٹیبل بھی عام طور پر کافی بڑا تھا، ان میں سے بڑی مقدار کو ذخیرہ کرنا ناممکن ہوگا۔


Even if an attacker would be able to store all that data, they’d still have to compute it first.

یہاں تک کہ اگر کوئی حملہ آور وہ تمام ڈیٹا ذخیرہ کرنے کے قابل ہو جائے، تب بھی اسے پہلے اس کا حساب لگانا ہوگا۔


Computing a single table takes a decent amount of time; computing 2^160 different tables is impossible.

ایک ٹیبل کا حساب لگانے میں مناسب وقت لگتا ہے؛ 2^160 مختلف ٹیبلز کا حساب لگانا ناممکن ہے۔


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, once they knew the value of the salt.

اگرچہ اس نے وقت سے پہلے رینبو ٹیبل حملے کو روکا، اس نے اب بھی حملہ آوروں کو تمام پاس ورڈز پر بیک وقت حملہ کرنے کی اجازت دی، ایک بار جب وہ نمک کی قدر جانتے تھے۔


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

ایک حملہ آور آسانی سے اس نمک کے لیے ایک رینبو ٹیبل کا حساب لگائے گا، اور نتائج کا ڈیٹا بیس سے ہیش شدہ پاس ورڈز سے موازنہ کرے گا۔


While this would have been prevented by using a different salt for each user, systems that use a cryptographic hash with a per-user salt are still considered fundamentally broken today.

اگرچہ یہ ہر صارف کے لیے ایک مختلف نمک استعمال کرنے سے روکا جا سکتا تھا، لیکن وہ نظام جو فی صارف نمک کے ساتھ ایک خفیہ ہیش استعمال کرتے ہیں، آج بھی بنیادی طور پر ٹوٹے ہوئے سمجھے جاتے ہیں۔


Perhaps the biggest problem with salts is that many programmers were suddenly convinced they were doing the right thing.

شاید نمک کے ساتھ سب سے بڑا مسئلہ یہ ہے کہ بہت سے پروگرامرز کو اچانک یقین ہو گیا کہ وہ صحیح کام کر رہے ہیں۔


They’d heard of broken password storage schemes, and they knew what to do instead, so they ignored all talk about how a password database could be compromised.

انہوں نے ٹوٹے ہوئے پاس ورڈ اسٹوریج سکیموں کے بارے میں سنا تھا، اور وہ جانتے تھے کہ اس کے بجائے کیا کرنا ہے، اس لیے انہوں نے اس بارے میں تمام گفتگو کو نظر انداز کر دیا کہ پاس ورڈ ڈیٹا بیس سے سمجھوتہ کیسے کیا جا سکتا ہے۔


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.

جدید حملے اس حقیقت کا فائدہ اٹھاتے ہیں کہ استعمال ہونے والا ہیش فنکشن حساب لگانا آسان ہے۔


Using faster hardware, in particular video cards, we can simply enumerate all of the passwords, regardless of salt.

تیز ہارڈ ویئر، خاص طور پر ویڈیو کارڈز کا استعمال کرتے ہوئے، ہم آسانی سے تمام پاس ورڈز کو شمار کر سکتے ہیں، قطع نظر نمک کے۔


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

نمک پہلے سے حساب شدہ حملوں کو ناممکن بنا سکتا ہے، لیکن وہ ایک ایسے حملہ آور کے خلاف بہت کم کام کرتے ہیں جو درحقیقت نمک کو جانتا ہے۔


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.

یہ خاص طور پر کم اینٹروپی ان پُٹس جیسے پاس ورڈز کے لیے محفوظ ہونے کے لیے ڈیزائن نہیں کیا گیا ہے۔


HKDF exists to give people an appropriate, off-the-shelf key derivation function.

HKDF لوگوں کو ایک مناسب، تیار شدہ کلیدی اخذ کرنے کا فنکشن دینے کے لیے موجود ہے۔


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

اس سے پہلے، کلیدی اخذ اکثر ایک ایسی چیز تھی جو کسی خاص معیار کے لیے ایڈ ہاک کی جاتی تھی۔


HKDF HMAC پر مبنی ہے۔


Like HMAC, it is a generic construction that uses hash functions.

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.

یہاں تک کہ ایک نسبتاً کم اینٹروپی نمک بھی پہلے سے ہی حفاظت میں نمایاں طور پر حصہ ڈال سکتا ہے۔


The expansion phase, the random data extracted from the inputs in the extraction phase is expanded.

ایکسپینشن فیز میں، ایکسٹریکشن فیز میں ان پُٹس سے نکالا گیا بے ترتیب ڈیٹا پھیلایا جاتا ہے۔


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

”انفو” پیرامیٹر کا مقصد کچھ ایپلی کیشن سے متعلقہ سیاق و سباق پر مشتمل ہونا ہے۔


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.

ڈائس جیسے نظام آج بھی عام استعمال میں ہیں۔


Radioactive decay is one example of a quantum physical process.

ریڈیو ایکٹیو زوال کوانٹم فزیکل عمل کی ایک مثال ہے۔


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

شاٹ شور بے ترتیب نمبر تیار کرنے کے لیے استعمال ہونے والا ایک اور کوانٹم فزیکل عمل ہے۔


Nyquist noise is the noise that occurs from charge carriers.

نائکوسٹ شور وہ شور ہے جو چارج کیریئرز سے ہوتا ہے۔


We’ll see several examples of cryptographically secure pseudorandom generators.

ہم خفیہ نگاری کے لحاظ سے محفوظ سیوڈو رینڈم جنریٹرز کی کئی مثالیں دیکھیں گے۔


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

ایک ایپلیکیشن ڈویلپر کے طور پر، آپ کو ان میں سے کسی ایک کے درمیان کبھی بھی انتخاب نہیں کرنا چاہیے۔


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

ایک ریاستی جنریشن فنکشن، جو پرانے ریاست سے ایک نئی ریاست تیار کرتا ہے۔


The state initialization function is also called right before the first number is extracted.

ریاست کی ابتدائی تقریب کو پہلے نمبر کے نکالنے سے ٹھیک پہلے بھی بلایا جاتا ہے۔


یہ عمل غیر معینہ مدت تک دہرایا جاتا ہے۔


We’ll look at each of the parts briefly.

ہم مختصراً ہر ایک حصے پر نظر ڈالیں گے۔


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

ابتدائی تقریب مرسین ٹوئسٹر کی ریاستی صف کی ایک مثال بناتی ہے، جو ایک چھوٹے سے ابتدائی بے ترتیب نمبر سے جسے سیڈ کہا جاتا ہے۔


صف خود بیج سے شروع ہوتی ہے۔


Then, each next element is produced from a constant, the previous element, and the index of the new element.

پھر، ہر اگلا عنصر ایک مستقل، پچھلے عنصر، اور نئے عنصر کے انڈیکس سے تیار کیا جاتا ہے۔


Elements are produced until there are 624 of them.

عناصر اس وقت تک تیار کیے جاتے ہیں جب تک ان کی تعداد 624 نہ ہو جائے۔


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

ریاست کی دوبارہ تخلیق کا فنکشن موجودہ ریاست لیتا ہے اور ایک نئی ریاست تیار کرتا ہے۔


It is called right before the first number is extracted, and every time all 624 elements of the state have been used up.

اسے پہلے نمبر کے نکالنے سے ٹھیک پہلے اور ہر بار جب ریاست کے تمام 624 عناصر استعمال ہو چکے ہوں تو بلایا جاتا ہے۔


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

ٹیمپیرنگ فنکشن کو ریاست کے موجودہ عنصر پر لاگو کیا جاتا ہے اس سے پہلے کہ اسے تیار کردہ بے ترتیب نمبر کے طور پر واپس کیا جائے۔


It may not be obvious, especially if you’re not used to binary arithmetic, but this function is bijective or one-to-one.

یہ واضح نہیں ہو سکتا، خاص طور پر اگر آپ بائنری ریاضی کے عادی نہیں ہیں، لیکن یہ فنکشن بائیجیکٹیو یا ون ٹو ون ہے۔


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

یاد رکھیں کہ خفیہ کاری کی حفاظت کے لیے، مستقبل کے نتائج کی پیش گوئی کرنا یا موجودہ نتائج کو دیکھتے ہوئے ماضی کے نتائج کو بازیافت کرنا ناممکن ہونا چاہیے۔


The Mersenne Twister doesn’t have that property.

مرسین ٹوئسٹر میں وہ خاصیت نہیں ہے۔


It’s designed to be fast and have strong randomness properties.

اسے تیز رفتاری اور مضبوط بے ترتیب خصوصیات کے لیے ڈیزائن کیا گیا ہے۔


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

SSL، جو کہ Secure Socket Layer کا مخفف ہے، ایک خفیہ کاری پروٹوکول ہے جو اصل میں Netscape Communications نے ویب پر ٹریفک کو محفوظ بنانے کے لیے متعارف کرایا تھا۔


The term SSL is still commonly used, even when the speaker actually means a TLS connection.

اصطلاح SSL اب بھی عام طور پر استعمال ہوتی ہے، یہاں تک کہ جب اسپیکر کا اصل مطلب TLS کنکشن ہوتا ہے۔


Its first and foremost goal is to transport bytes securely, over the Internet or any other insecure medium.

اس کا سب سے پہلا اور اہم مقصد انٹرنیٹ یا کسی دوسرے غیر محفوظ میڈیم پر محفوظ طریقے سے بائٹس کی منتقلی کرنا ہے۔


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

TLS دنیا کا سب سے عام کرپٹو سسٹم ہے، اور اس لیے شاید سب سے زیادہ مطالعہ کیا جاتا ہے۔


Over the years, many flaws have been discovered in SSL and TLS, despite many of the world’s top cryptographers contributing to and examining the standard.

سالوں کے دوران، SSL اور TLS میں بہت سی خامیاں دریافت ہوئی ہیں، اس کے باوجود کہ دنیا کے بہت سے اعلیٰ کرپٹوگرافرز نے اس معیار میں حصہ ڈالا اور اس کا جائزہ لیا۔


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 کے حساب کے وقت میں چند سائیکلوں کی بچت ہوتی ہے۔


So far, we’ve always assumed that MAC functions can be used with a single key to produce secure MACs for a very large number of messages.

اب تک، ہم نے ہمیشہ یہ فرض کیا ہے کہ MAC فنکشنز کو ایک ہی کلید کے ساتھ بہت بڑی تعداد میں پیغامات کے لیے محفوظ MACs تیار کرنے کے لیے استعمال کیا جا سکتا ہے۔


An algorithm that only works once just seems objectively worse.

ایک ایسا الگورتھم جو صرف ایک بار کام کرتا ہے وہ معروضی طور پر بدتر لگتا ہے۔


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

ان کا اندازہ لگانا ناقابل یقین حد تک تیز ہو سکتا ہے، یہاں تک کہ بہت بڑے پیغامات کے لیے بھی۔


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

اس طرح کے ایک وقتی MACs کی ایک عام سی مثال میں کچھ بڑے پرائم 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:

اسے بڑے پیغامات M کی حمایت کے لیے بڑھایا جا سکتا ہے جس میں بلاکس m i شامل ہیں، ایک پیغام مخصوص پولیومیل P کا استعمال کرتے ہوئے:


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.

سیکیورٹی کا استدلال اسی طرح کا ہے: جب تک کہ کلید صرف ایک بار استعمال کی جاتی ہے، حملہ آور کلید یا پیغام کے بارے میں کوئی معلومات حاصل نہیں کرتا، کیونکہ وہ ناقابل واپسی طور پر ملائے جا رہے ہیں۔


Re-using a and b We’ll illustrate that our example MAC is insecure if it is used to authenticate two messages m1, m2 with the same key(a, b):

a اور b کو دوبارہ استعمال کرنا ہم واضح کریں گے کہ اگر ہمارے مثال MAC کو دو پیغامات m1, m2 کو ایک ہی کلید (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(k2, M).

ایک حملہ آور کی نظر میں، اس کا مطلب ہے کہ XOR آپریشن بے ترتیب طور پر ایک وقتی MAC ٹیگ O(k2, M) کے بٹس کو پلٹ دے گا۔


Keep in mind that while Carter-Wegman MACs take two distinct keys k1 and k2, and that Carter-Wegman MACs are related to one-time MACs, some of which also take two distinct keys a and b, they are not the same two keys.

دھیان میں رکھیں کہ جب کہ کارٹر-ویگمین MACs دو الگ الگ کلیدیں k1 اور k2 لیتے ہیں، اور کارٹر-ویگمین MACs ایک وقتی MACs سے متعلق ہیں، جن میں سے کچھ دو الگ الگ کلیدیں a اور b بھی لیتے ہیں، وہ ایک ہی دو کلیدیں نہیں ہیں۔


In F(k1, n), F is just a regular pseudorandom function, such as a block cipher.

F(k1, n) میں، F صرف ایک باقاعدہ سوڈو رینڈم فنکشن ہے، جیسے کہ بلاک سائفر۔


It is quite slow by comparison to the one-time MAC.

یہ ایک وقتی MAC کے مقابلے میں کافی سست ہے۔


The unpredictable output of the block cipher masks the output of the one-time MAC.

بلاک سائفر کا غیر متوقع آؤٹ پٹ ایک وقتی MAC کے آؤٹ پٹ کو ماسک کرتا ہے۔


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

دوسرے اصطلاح میں، O(k2, M)، بڑا ان پٹ پیغام M صرف بہت تیز ایک وقتی MAC O کے ذریعے سنبھالا جاتا ہے۔


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

سیمٹرک کی انکرپشن کو خفیہ کلید انکرپشن کے نام سے بھی جانا جاتا ہے۔


AES stands for Advanced Encryption Standard.

AES کا مطلب ہے ایڈوانسڈ انکرپشن اسٹینڈرڈ۔


An AKE is an authenticated key exchange.

AKE ایک تصدیق شدہ کلید کا تبادلہ ہے۔


ARX refers to add, rotate, XOR operations.

ARX سے مراد جمع، گھمانا، XOR آپریشنز ہیں۔


BEAST is a Browser Exploit Against SSL/TLS.

BEAST SSL/TLS کے خلاف ایک براؤزر ایکسپلائٹ ہے۔


CBC کا مطلب ہے سائفر بلاک چیننگ۔


CDN ایک مواد کی تقسیم کا نیٹ ورک ہے۔


CSPRNG is a cryptographically secure pseudorandom number generator.

CSPRNG ایک کرپٹوگرافکلی محفوظ سیوڈورینڈم نمبر جنریٹر ہے۔


CSRF کراس سائٹ ریکوئسٹ جعل سازی ہے۔


DES ڈیٹا انکرپشن اسٹینڈرڈ ہے۔


FIPS refers to Federal Information Processing Standards.

FIPS سے مراد وفاقی معلومات پروسیسنگ کے معیارات ہیں۔


GCM گالوس کاؤنٹر موڈ ہے۔


HKDF is HMAC-based Key Derivation Function.

HKDF HMAC پر مبنی کلید اخذ کرنے کا فنکشن ہے۔


HMAC is Hash-based Message Authentication Code.

HMAC ہیش پر مبنی پیغام کی توثیق کا کوڈ ہے۔


HSTS HTTP سخت ٹرانسپورٹ سیکیورٹی ہے۔


IV کا مطلب ہے ابتدائی ویکٹر۔


KDF کلید اخذ کرنے کا فنکشن ہے۔


MAC پیغام کی توثیق کا کوڈ ہے۔


MITM کا مطلب ہے مین ان دی مڈل۔


OTR آف دی ریکارڈ ہے۔


The website uses a different certificate to pretend to be the one we are connecting to.

ویب سائٹ اس ویب سائٹ ہونے کا بہانہ کرنے کے لیے ایک مختلف سرٹیفکیٹ استعمال کرتی ہے جس سے ہم جڑ رہے ہیں۔


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

گوگل نے اپنے کروم براؤزر میں اپنی تمام سروسز کے لیے وائٹ لسٹڈ سرٹیفکیٹ شامل کیے۔


There are several issues with configuring TLS securely.

TLS کو محفوظ طریقے سے کنفیگر کرنے میں کئی مسائل ہیں۔


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

اکثر، ڈیفالٹس غیر محفوظ ہوتے ہیں، اور لوگ اس سے بے خبر ہوتے ہیں کہ انہیں تبدیل کیا جانا چاہیے۔


Good advice necessarily changes over time.

اچھا مشورہ لازمی طور پر وقت کے ساتھ بدلتا ہے۔


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

اوپن پی جی پی ایک کھلا معیار ہے جو پیغامات کو خفیہ کرنے اور سائن کرنے کے طریقہ کار کو بیان کرتا ہے۔


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

TLS کے برعکس، جو حرکت میں موجود ڈیٹا پر توجہ مرکوز کرتا ہے، اوپن پی جی پی ڈیٹا کو آرام پر مرکوز کرتا ہے۔


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

صارفین کے پاس کلیدی جوڑے ہوتے ہیں جن میں ایک عوامی کلید اور ایک نجی کلید ہوتی ہے۔


OpenPGP does not operate using such trusted roots.

اوپن پی جی پی اس طرح کی قابل اعتماد جڑوں کا استعمال نہیں کرتا ہے۔


It relies on a system called the Web of Trust.

یہ ایک ایسے نظام پر انحصار کرتا ہے جسے ٹرسٹ کا ویب کہا جاتا ہے۔


The simplest case is a directly trusted key.

سب سے آسان معاملہ براہ راست قابل اعتماد کلید ہے۔


ہم ایک دوسرے کی شناخت کی تصدیق کر سکتے ہیں۔


There’s a direct trust link between the two of us, and we can communicate securely.

ہمارے درمیان براہ راست اعتماد کا ایک ربط ہے، اور ہم محفوظ طریقے سے بات چیت کر سکتے ہیں۔


A slightly more complicated case is when a friend of yours would like to send me a message.

ایک قدرے زیادہ پیچیدہ معاملہ یہ ہے کہ جب آپ کا کوئی دوست مجھے پیغام بھیجنا چاہے گا۔


Keys and signatures are typically uploaded to a network of key servers.

چابیاں اور دستخط عام طور پر کلیدی سرورز کے نیٹ ورک پر اپ لوڈ کیے جاتے ہیں۔


The main weakness in this system are ”islands” of trust.

اس نظام کی بنیادی کمزوری اعتماد کے ”جزائر” ہیں۔


Off-the-record (OTR) messaging is a protocol for securing instant messaging communication.

آف دی ریکارڈ (OTR) پیغام رسانی فوری پیغام رسانی مواصلات کو محفوظ بنانے کا ایک پروٹوکول ہے۔


It encrypts messages, preventing eavesdroppers from reading them.

یہ پیغامات کو خفیہ کرتا ہے، جس سے جاسوسوں کو انہیں پڑھنے سے روکا جاتا ہے۔


It is also designed to have perfect forward secrecy.

اسے کامل فارورڈ سیکریسی کے لیے بھی ڈیزائن کیا گیا ہے۔


The deniability and perfect forward secrecy properties are very different from those of other systems.

انکار اور کامل فارورڈ سیکریسی کی خصوصیات دوسرے نظاموں سے بہت مختلف ہیں۔


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.

یہ اصل میں بیضوی منحنی خطوط پر موثر اسکیلر ضرب کے لیے لاگو کیا گیا تھا، لیکن ریاضی بہت سے دوسرے نظاموں کے لیے کام کرتا ہے: خاص طور پر، کسی بھی ابیلیئن گروپ کے لیے۔


This is an optional, in-depth section. It almost certainly won’t help you write better software, so feel free to skip it.

یہ ایک اختیاری، گہرائی سے متعلق سیکشن ہے۔ اس سے آپ کو بہتر سافٹ ویئر لکھنے میں تقریباً یقینی طور پر مدد نہیں ملے گی، اس لیے بلا جھجھک اسے چھوڑ دیں۔


Like with exponentiation by squaring, we start by looking at the binary expansion of the exponent k.

اسکوائرنگ کے ذریعے ایکسپونینشن کی طرح، ہم ایکسپونینٹ k کی بائنری توسیع کو دیکھ کر شروع کرتے ہیں۔


Generally, any k can be written as a sum ( ∑ ) of some powers of two (2 i ).

عام طور پر، کسی بھی k کو دو کی کچھ طاقتوں (2 i ) کے مجموعے ( ∑ ) کے طور پر لکھا جا سکتا ہے۔


یہ ہمیں دیتا ہے: k= t−1 ∑ i=0 2 i k i


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.

اگلے چند مراحل اس وقت تک زیادہ سمجھ میں نہیں آئیں گے جب تک کہ آپ انہیں آخر میں ایک ساتھ آتے ہوئے نہ دیکھیں، اس لیے میرے ساتھ رہیں اور چیک کریں کہ ریاضی کام کرتا ہے۔


We’ll define a related sum, L j : L j = t−1 ∑ i=j 2 i−j k i

ہم ایک متعلقہ رقم، L j کی وضاحت کریں گے: L j = t−1 ∑ i=j 2 i−j k i


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) ہے۔