1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [RSA] 2 00:00:02,000 --> 00:00:04,000 [రాబ్ బౌడెన్] [టామీ MacWilliam] [హార్వర్డ్ విశ్వవిద్యాలయం] 3 00:00:04,000 --> 00:00:07,000 [ఈ CS50 ఉంది.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 యొక్క RSA, డేటా ఎన్క్రిప్ట్ కోసం విస్తృతంగా ఉపయోగించే అల్గారిథమ్ పరిశీలించి చూద్దాం. 5 00:00:11,000 --> 00:00:16,000 సీజర్ మరియు విజెనెరే సాంకేతికలిపులు వంటి గుప్తలేఖన యాంత్రిక పద్ధతులకు చాలా సురక్షితం కాని. 6 00:00:16,000 --> 00:00:20,000 సీజర్ సాంకేతికలిపి తో, దాడి మాత్రమే 25 వివిధ కీలు ప్రయత్నించండి అవసరం 7 00:00:20,000 --> 00:00:22,000 సందేశం యొక్క సాదా టెక్స్ట్ పొందడానికి. 8 00:00:22,000 --> 00:00:25,000 విజెనెరే సాంకేతికలిపి సీజర్ సాంకేతికలిపి కంటే ఎక్కువ సురక్షితమైనది ఉండగా 9 00:00:25,000 --> 00:00:28,000 ఎందుకంటే కీలు కోసం పెద్ద శోధన స్థలం యొక్క, ఒకసారి దాడి 10 00:00:28,000 --> 00:00:30,000 ఒక విజెనెరే సాంకేతికలిపిలో కీ యొక్క పొడవు తెలుసు 11 00:00:30,000 --> 00:00:34,000 ఇది encrypted టెక్స్ట్ లో నమూనాల యొక్క ఒక విశ్లేషణ ద్వారా నిర్ణయించబడతాయి 12 00:00:34,000 --> 00:00:38,000 విజెనెరే సాంకేతికలిపి ఆ మరింత సురక్షిత సీజర్ సాంకేతికలిపి కంటే లేదు. 13 00:00:38,000 --> 00:00:42,000 RSA, మరోవైపు, ఈ వంటి దాడులు కాదు. 14 00:00:42,000 --> 00:00:45,000 సీజర్ సాంకేతికలిపి మరియు విజెనెరే సాంకేతికలిపి అదే కీ ఉపయోగించడానికి 15 00:00:45,000 --> 00:00:47,000 గుప్తీకరించడానికి మరియు వ్యక్తీకరించడానికి ఒక సందేశాన్ని రెండు. 16 00:00:47,000 --> 00:00:51,000 ఈ ఆస్తి ఈ సాంకేతికలిపులు సమాన కీ యాంత్రిక పద్ధతులు చేస్తుంది. 17 00:00:51,000 --> 00:00:54,000 సమాన కీ యాంత్రిక పద్ధతుల ద్వారా ఒక ప్రాధమిక సమస్య 18 00:00:54,000 --> 00:00:57,000 వారు సందేశం గుప్తలేఖనం మరియు పంపే ఒక ఆధారపడి ఉంది 19 00:00:57,000 --> 00:00:59,000 మరియు ఒక స్వీకరించడం మరియు సందేశం రహస్య సంకేతాన్ని సమాచారంగా మార్చే 20 00:00:59,000 --> 00:01:03,000 ఇప్పటికే వారు రెండు ఉపయోగించే కీ న upfront అంగీకరించాయి కు. 21 00:01:03,000 --> 00:01:06,000 కానీ మేము ఇక్కడ ఒక ప్రారంభ సమస్య ఒక బిట్ కలిగి ఉంటాయి. 22 00:01:06,000 --> 00:01:10,000 ఎలా కమ్యూనికేట్ చేయడానికి కావలసిన 2 కంప్యూటర్లు వాటి మధ్య ఒక రహస్య కీ ఏర్పరచాలి? 23 00:01:10,000 --> 00:01:16,000 కీ రహస్య ఉండాలి, అప్పుడు మేము కీ గుప్తీకరించడానికి మరియు వ్యక్తీకరించడానికి ఒక మార్గం అవసరం. 24 00:01:16,000 --> 00:01:18,000 మేము అన్ని సమాన కీ గూఢ లిపి శాస్త్రం ఉంటే 25 00:01:18,000 --> 00:01:21,000 అప్పుడు మేము అదే సమస్య తిరిగి వచ్చి. 26 00:01:21,000 --> 00:01:25,000 RSA, మరోవైపు, కీలు ఒక జత ఉపయోగిస్తుంది 27 00:01:25,000 --> 00:01:28,000 వ్యక్తీకరణకు ఎన్క్రిప్షన్ మరియు మరొక కోసం ఒకటి. 28 00:01:28,000 --> 00:01:32,000 ఒక పబ్లిక్ కీ అని, మరియు ఇతర ప్రైవేట్ కీ ఉంది. 29 00:01:32,000 --> 00:01:34,000 పబ్లిక్ కీ సందేశాలను గుప్తీకరించడానికి ఉపయోగించిన. 30 00:01:34,000 --> 00:01:38,000 మీరు దాని పేరు ద్వారా ఊహించినట్లుగా, మేము మా పబ్లిక్ కీ భాగస్వామ్యం చేయవచ్చు 31 00:01:38,000 --> 00:01:43,000 మేము ఒక గుప్తీకరించిన సందేశాన్ని భద్రతతో సంబంధం లేకుండా కావలసిన ఎవరైనా. 32 00:01:43,000 --> 00:01:45,000 సందేశాలు ఒక పబ్లిక్ కీని ఉపయోగించి గుప్తీకరించబడింది 33 00:01:45,000 --> 00:01:49,000 దాని సంబంధిత ప్రైవేట్ కీతో దానిని వ్యక్తపరచడం సాధ్యమవుతుంది. 34 00:01:49,000 --> 00:01:53,000 మీరు మీ పబ్లిక్ కీ భాగస్వామ్యం అయితే, మీరు ఎల్లప్పుడూ మీ ప్రైవేట్ కీ రహస్య ఉండాలి. 61 00:01:55,000 --> 00:01:58,000 మరియు మాత్రమే ప్రైవేట్ కీ వ్యక్తీకరించడానికి సందేశాలను ఉపయోగించవచ్చు 62 00:01:58,000 --> 00:02:02,000 2 వినియోగదారులు RSA తో సందేశాలను ఎన్క్రిప్టెడ్ పంపండి అనుకుంటే 63 00:02:02,000 --> 00:02:07,000 ముందుకు వెనుకకు రెండు వినియోగదారులు వారి స్వంత పబ్లిక్ మరియు ప్రైవేట్ కీ జతను కలిగి ఉండాలి. 64 00:02:07,000 --> 00:02:10,000 యూజర్ 1 నుండి యూజర్ 2 సందేశాలను 65 00:02:10,000 --> 00:02:15,000 వినియోగదారు 2 నుండి యూజర్ 1 యూజర్ 2 యొక్క కీ జతను, మరియు సందేశాలను మీరు ఉపయోగించే 66 00:02:15,000 --> 00:02:17,000 వినియోగదారు 1 యొక్క కీ జతను ఉపయోగించండి. 67 00:02:17,000 --> 00:02:21,000 2 ప్రత్యేక గుప్తీకరించడానికి కీలు మరియు వ్యక్తీకరించడానికి సందేశాలను ఉన్నారనే వాస్తవం 68 00:02:21,000 --> 00:02:24,000 RSA ఒక అసమాన కీ యాంత్రిక చేస్తుంది. 69 00:02:24,000 --> 00:02:28,000 మేము మరొక కంప్యూటర్ కు పంపడానికి పబ్లిక్ కీ గుప్తీకరించడానికి లేదు 70 00:02:28,000 --> 00:02:31,000 కీ ఏమైనప్పటికీ పబ్లిక్ నుండి. 71 00:02:31,000 --> 00:02:33,000 ఈ RSA అదే ప్రారంభ సమస్య అర్థం కాదు 72 00:02:33,000 --> 00:02:36,000 సమాన కీ యాంత్రిక పద్ధతులు వంటి. 73 00:02:36,000 --> 00:02:39,000 నేను RSA ఎన్క్రిప్షన్ వాడి ఒక సందేశాన్ని పంపాలని అనుకుంటున్నారా అయితే 74 00:02:39,000 --> 00:02:42,000 లాక్కోవడానికి, నేను మొదటి రాబ్ యొక్క పబ్లిక్ కీ అవసరం. 75 00:02:42,000 --> 00:02:47,000 కీలు ఒక జత ఉత్పత్తి చేయడానికి, రాబ్ 2 పెద్ద ప్రధాన సంఖ్యలు ఎంచుకోండి అవసరం. 76 00:02:47,000 --> 00:02:50,000 ఈ సంఖ్యలు, రెండు ప్రభుత్వ మరియు ప్రైవేట్ కీలను ఉపయోగించబడుతుంది 77 00:02:50,000 --> 00:02:54,000 కానీ పబ్లిక్ కీ మాత్రమే, ఈ 2 సంఖ్యల ఉత్పత్తి ఉపయోగించే 78 00:02:54,000 --> 00:02:56,000 కాదు సంఖ్యలు చూపింది. 79 00:02:56,000 --> 00:02:59,000 ఒకసారి నేను రాబ్ యొక్క పబ్లిక్ కీని ఉపయోగించి సందేశం గుప్తీకరించబడింది చేసిన 80 00:02:59,000 --> 00:03:01,000 నేను రాబ్ సందేశాన్ని పంపవచ్చు. 81 00:03:01,000 --> 00:03:05,000 ఒక కంప్యూటర్ కోసం, కారక సంఖ్యలు హార్డు సమస్య. 82 00:03:05,000 --> 00:03:09,000 పబ్లిక్ కీ, గుర్తు, 2 ప్రధాన సంఖ్యల ఉత్పత్తి ఉపయోగిస్తారు. 83 00:03:09,000 --> 00:03:12,000 ఈ ఉత్పత్తి అప్పుడు మాత్రమే 2 అంశాలు కలిగి ఉండాలి 84 00:03:12,000 --> 00:03:16,000 ప్రైవేట్ కీ తయారు చేసే సంఖ్యలు అని జరిగే. 85 00:03:16,000 --> 00:03:20,000 వ్యక్తీకరించడానికి సందేశాన్ని చేయడానికి, RSA ఈ ప్రైవేట్ కీ ఉపయోగించే 86 00:03:20,000 --> 00:03:25,000 లేదా సంఖ్యలు పబ్లిక్ కీ సృష్టించే విధానంలో కలిసి గుణించ. 87 00:03:25,000 --> 00:03:28,000 ఇది అంశం గణన కష్టం ఎందుకంటే 88 00:03:28,000 --> 00:03:32,000 ప్రైవేట్ కీని ఉపయోగిస్తారు 2 సంఖ్యలను ఒక పబ్లిక్ కీ ఉపయోగిస్తారు 89 00:03:32,000 --> 00:03:36,000 దాడి చేసేవారు ప్రైవేట్ కీని గుర్తించడానికి ఇది కష్టం 90 00:03:36,000 --> 00:03:39,000 వ్యక్తీకరించడానికి సందేశాన్ని అవసరం అని. 91 00:03:39,000 --> 00:03:43,000 ఇప్పుడు RSA యొక్క కొన్ని తక్కువ స్థాయి వివరాలు లోకి వీడలేదు. 92 00:03:43,000 --> 00:03:46,000 లెట్ యొక్క మొదటి మేము కీలు ఒక జత ఉత్పత్తి ఎలా చూడండి. 93 00:03:46,000 --> 00:03:49,000 మొదటి, మేము 2 ప్రధాన సంఖ్యలు చేయాలి. 94 00:03:49,000 --> 00:03:52,000 ఈ 2 సంఖ్యలను p మరియు q పిలుస్తాను. 95 00:03:52,000 --> 00:03:56,000 ఆచరణలో p మరియు q, పిక్ చేయడానికి మేము pseudorandomly రూపొందించే 96 00:03:56,000 --> 00:03:59,000 అప్పుడు పెద్ద సంఖ్యలో మరియు నిర్ణయించడానికి ఒక పరిశీలనను ఉపయోగించటానికి లేదో 97 00:03:59,000 --> 00:04:02,000 ఆ సంఖ్యలు బహుశా ప్రధాన ఉన్నాయి. 98 00:04:02,000 --> 00:04:05,000 మేము మళ్ళీ మరియు తర్వాత రాండమ్ సంఖ్యలు ఉత్పత్తి ఉంచుకోవచ్చు 99 00:04:05,000 --> 00:04:08,000 మేము ఉపయోగించే 2 పూర్ణాంకాల వరకు. 100 00:04:08,000 --> 00:04:15,000 ఇక్కడ p = 23 మరియు q = 43 ఎంచుకోండి అనుమతిస్తుంది. 101 00:04:15,000 --> 00:04:19,000 ఆచరణలో, గుర్తుంచుకో, p మరియు q పెద్ద సంఖ్యలో ఉండాలి. 102 00:04:19,000 --> 00:04:22,000 చాలా మేము తెలిసిన, సంఖ్యలు పెద్ద, కష్టం లేదు 103 00:04:22,000 --> 00:04:25,000 ఒక గుప్తీకరించిన సందేశాన్ని ఛేదించడానికి. 104 00:04:25,000 --> 00:04:29,000 కానీ అది సందేశాలను గుప్తీకరించడానికి మరియు వ్యక్తీకరించడానికి మరింత ఖరీదైన ఉంది. 105 00:04:29,000 --> 00:04:33,000 నేడు ఇది తరచుగా p మరియు q కనీసం 1024 బిట్స్ అని మంచిది, 106 00:04:33,000 --> 00:04:37,000 ఇది 300 కంటే ఎక్కువ దశాంశ అంకెలు వద్ద ప్రతి సంఖ్యను. 107 00:04:37,000 --> 00:04:40,000 కానీ మేము ఈ ఉదాహరణకు ఈ చిన్న వాడవు. 108 00:04:40,000 --> 00:04:43,000 ఇప్పుడు మేము ఒక 3 వ సంఖ్య పొందడానికి కలిసి p మరియు q గుణిస్తారు చేస్తాము 109 00:04:43,000 --> 00:04:45,000 మేము n పిలుస్తాను ఇది. 110 00:04:45,000 --> 00:04:55,000 మా సందర్భంలో, n = 23 989 = ఇది * 43. 111 00:04:55,000 --> 00:04:58,000 మేము = 989 n చేశారు. 112 00:04:58,000 --> 00:05:02,000 Q 1 - - తదుపరి మేము p గుణిస్తారు చేస్తాము 1 113 00:05:02,000 --> 00:05:05,000 మేము మీ పిలుస్తాను ఒక 4 వ సంఖ్య,. పొందటానికి 114 00:05:05,000 --> 00:05:15,000 మా సందర్భంలో, చి = 22 924 = ఇది * 42. 115 00:05:15,000 --> 00:05:18,000 మేము చి = 924 ఉన్నాయి. 116 00:05:18,000 --> 00:05:22,000 ఇప్పుడు మేము చాలా ప్రధాన అని అనేక ఇ చేయాలి m 117 00:05:22,000 --> 00:05:25,000 మరియు మీ కంటే తక్కువ. 118 00:05:25,000 --> 00:05:28,000 రెండు సంఖ్యల సాపేక్షంగా ప్రధాన లేదా coprime ఉంటాయి 119 00:05:28,000 --> 00:05:33,000 రెండు సమానంగా విభజిస్తుంది వాటిని మాత్రమే సానుకూల పూర్ణాంక 1 ఉంటే. 120 00:05:33,000 --> 00:05:37,000 ఇ మరియు M యొక్క ఇతర మాటలలో, గొప్ప ఉమ్మడి విభాజకం 121 00:05:37,000 --> 00:05:39,000 1 ఉండాలి. 122 00:05:39,000 --> 00:05:44,000 ఆచరణలో, ప్రధాన సంఖ్య 65537 కు ఇ సాధారణంగా ఉంది 123 00:05:44,000 --> 00:05:48,000 కాలం ఈ సంఖ్య మీ కారకంగా సంభవించదు. 124 00:05:48,000 --> 00:05:53,000 మా కొరకు కీస్, మేము వాడవు ఇ = 5 125 00:05:53,000 --> 00:05:57,000 5 నుంచి 924 సాపేక్షంగా ప్రధాన ఉంది. 126 00:05:57,000 --> 00:06:01,000 చివరగా, మేము d పిలుస్తాను ఏది మరింత సంఖ్య, చెయ్యాలి. 127 00:06:01,000 --> 00:06:11,000 D సమీకరణం తృప్తిపరిచే విధంగా కొన్ని విలువ ఉండాలి డి = 1 (mod m). 128 00:06:11,000 --> 00:06:17,000 ఈ mod మీ మేము ప్రామాణిక అంక గణితం అనే ఉపయోగిస్తాము సూచిస్తుంది. 129 00:06:17,000 --> 00:06:21,000 ప్రామాణిక అంక గణితం లో, ఒకసారి ఒక సంఖ్య కొన్ని ఉన్నత బౌండ్ కంటే ఎక్కువ గెట్స్ 130 00:06:21,000 --> 00:06:24,000 ఇది 0 to చుట్టూ తిరిగి వ్రాప్ కనిపిస్తుంది. 131 00:06:24,000 --> 00:06:27,000 ఒక గడియారం, ఉదాహరణకు, ప్రామాణిక అంక గణితం ఉపయోగిస్తుంది. 132 00:06:27,000 --> 00:06:31,000 1:59 తర్వాత ఒక నిమిషం, ఉదాహరణకు, 2:00 ఉంది 133 00:06:31,000 --> 00:06:33,000 1:60 లేదు. 134 00:06:33,000 --> 00:06:36,000 నిమిషాల ముల్లు 0 to చుట్టూ చుట్టి ఉంది 135 00:06:36,000 --> 00:06:39,000 60 పర్యవేక్షింపబడుతున్న ఒక ఉన్నత చేరిన తర్వాత. 136 00:06:39,000 --> 00:06:46,000 కాబట్టి, మేము 60 0 (mod 60) సమానం చెప్పగలదు 137 00:06:46,000 --> 00:06:57,000 మరియు 125 65 సమానం 5 (mod 60) సమానం. 138 00:06:57,000 --> 00:07:02,000 మా పబ్లిక్ కీ జతను ఇ మరియు n ఉంటుంది 139 00:07:02,000 --> 00:07:09,000 ఈ సందర్భంలో ఇ 5 మరియు n 989 ఉంటుంది. 140 00:07:09,000 --> 00:07:15,000 మా ప్రైవేట్ కీ, జంట d మరియు n ఉంటుంది 141 00:07:15,000 --> 00:07:22,000 మా కేసులో ఇది 185 మరియు 989 ఉంది. 142 00:07:22,000 --> 00:07:25,000 మా అసలు పూర్ణాంకాల p మరియు q కనిపించవు అని గుర్తించలేకపోతే 143 00:07:25,000 --> 00:07:29,000 ఎక్కడైనా మా ప్రైవేట్ లేదా పబ్లిక్ కీలను లో. 144 00:07:29,000 --> 00:07:33,000 ఇప్పుడు మేము కీలను మా జంట కలిగి, మేము యొక్క గుప్తీకరించడానికి ఎలా పరిశీలించి తెలియజేయండి 145 00:07:33,000 --> 00:07:36,000 మరియు వ్యక్తీకరించడానికి ఒక సందేశాన్ని. 146 00:07:36,000 --> 00:07:38,000 నేను, రాబ్ ఒక సందేశాన్ని పంపాలని అనుకుంటున్నారా 147 00:07:38,000 --> 00:07:42,000 అందువలన అతను ఈ కీ జతను తయారు చేయడానికి ఒక ఉంటుంది. 148 00:07:42,000 --> 00:07:46,000 అప్పుడు నేను ఉపయోగిస్తాము తన పబ్లిక్ కీ, కోసం రాబ్ అడుగుతాము 149 00:07:46,000 --> 00:07:48,000 అతనికి పంపడానికి ఒక సందేశాన్ని గుప్తీకరించడానికి. 150 00:07:48,000 --> 00:07:53,000 రాబ్ నాకు తన పబ్లిక్ కీ భాగస్వామ్యం గుర్తుంచుకోండి, పూర్తిగా సరైందే. 151 00:07:53,000 --> 00:07:56,000 అయితే తన వ్యక్తిగత కీ పంచుకునేందుకు సరే కాదు. 152 00:07:56,000 --> 00:08:00,000 నేను అతని ప్రైవేట్ కీ ఏమిటి ఏ ఆలోచన లేదు. 153 00:08:00,000 --> 00:08:03,000 మేము అనేక భాగాలుగా మా సందేశం m విచ్ఛిన్నం చేయవచ్చు 154 00:08:03,000 --> 00:08:07,000 అన్ని తరువాత n కంటే చిన్న మరియు ఆ భాగాలు ప్రతి గుప్తీకరించడానికి. 155 00:08:07,000 --> 00:08:12,000 మేము 4 భాగాలుగా విచ్ఛిన్నం చేసే స్ట్రింగ్ CS50, గుప్తీకరించడానికి మీరు 156 00:08:12,000 --> 00:08:14,000 ప్రతి అక్షరం ఒక. 157 00:08:14,000 --> 00:08:17,000 నా సందేశాన్ని గుప్తీకరించడానికి చేయడానికి, నేను మార్చవలసి ఉంటుంది 158 00:08:17,000 --> 00:08:20,000 సంఖ్యా ప్రాతినిధ్యం రకమైన. 159 00:08:20,000 --> 00:08:25,000 నా సందేశంలో అక్షరాలు తో ASCII విలువలు concatenate లెట్. 160 00:08:25,000 --> 00:08:28,000 ఒక సందేశాన్ని m గుప్తీకరించడానికి క్రమంలో 161 00:08:28,000 --> 00:08:37,000 నేను ఇ (mod N) కు సి = m గణించడం చేయాలి. 162 00:08:37,000 --> 00:08:40,000 కానీ m, n కంటే తక్కువ ఉండాలి 163 00:08:40,000 --> 00:08:45,000 లేదంటే పూర్తి సందేశాన్ని మాడ్యులో n వ్యక్తం సాధ్యం కాదు. 164 00:08:45,000 --> 00:08:49,000 మేము n కంటే చిన్నవిగా ఉంటాయి అన్ని ఇది అనేక భాగాలు, లోకి m విచ్ఛిన్నం చేయవచ్చు 165 00:08:49,000 --> 00:08:52,000 మరియు ఆ భాగాలు ప్రతి గుప్తీకరించడానికి. 166 00:08:52,000 --> 00:09:03,000 ఈ రాళ్లను ప్రతి ఎన్క్రిప్టింగ్, మేము పొందండి C1 5 = 67 (mod 989) 167 00:09:03,000 --> 00:09:06,000 ఇది = 658. 168 00:09:06,000 --> 00:09:15,000 మా రెండవ భాగం కోసం మేము 5 (mod 989) కు 83 కలిగి 169 00:09:15,000 --> 00:09:18,000 ఇది = 15. 170 00:09:18,000 --> 00:09:26,000 మా మూడవ భాగం కోసం మేము 5 (mod 989) కు 53 కలిగి 171 00:09:26,000 --> 00:09:30,000 ఇది = 799. 172 00:09:30,000 --> 00:09:39,000 చివరకు, మా గత భాగం కోసం మేము 5 (mod 989) కు 48 కలిగి 173 00:09:39,000 --> 00:09:43,000 ఇది 975 =. 174 00:09:43,000 --> 00:09:48,000 ఇప్పుడు మేము రాబ్ ఈ ఎన్క్రిప్టెడ్ విలువల పంపవచ్చు. 175 00:09:54,000 --> 00:09:58,000 ఇక్కడ మీరు, రాబ్ వెళ్ళండి. 176 00:09:58,000 --> 00:10:01,000 మా సందేశం ఎగురుతున్నప్పుడు, యొక్క మరొక పరిశీలించి తెలియజేయండి 177 00:10:01,000 --> 00:10:07,000 ఎలా మేము d ఆ విలువ వచ్చింది. 178 00:10:07,000 --> 00:10:17,000 మా సంఖ్య d 5D = 1 (mod 924) సంతృప్తి అవసరమైన. 179 00:10:17,000 --> 00:10:24,000 ఈ d 5 మాడ్యులో 924 యొక్క గుణకార విలోమం చేస్తుంది. 180 00:10:24,000 --> 00:10:28,000 2 పూర్ణ, a మరియు b పొడిగించిన యూక్లిడ్ అల్గోరిథం ఇచ్చిన 181 00:10:28,000 --> 00:10:33,000 ఈ 2 పూర్ణాంకాల యొక్క గొప్ప ఉమ్మడి విభాజకం కనుగొనడానికి ఉపయోగిస్తారు. 182 00:10:33,000 --> 00:10:37,000 ఇది కూడా మా 2 ఇతర సంఖ్యలు, x మరియు y, ఇస్తుంది 183 00:10:37,000 --> 00:10:47,000 ఒక అండ్ బి యొక్క = గొప్ప ఉమ్మడి విభాజకం ద్వారా సమీకరణ గొడ్డలి + సంతృప్తి. 184 00:10:47,000 --> 00:10:49,000 ఎలా ఈ మాకు సహాయం చేస్తుంది? 185 00:10:49,000 --> 00:10:52,000 Well, ఒక కోసం ఇ = 5 పూరించే 186 00:10:52,000 --> 00:10:56,000 అండ్ బి కోసం చి = 924 187 00:10:56,000 --> 00:10:59,000 మేము ఇప్పటికే ఈ సంఖ్యలు coprime ఉన్నాయని తెలుసుకోండి. 188 00:10:59,000 --> 00:11:03,000 వారి గొప్ప ఉమ్మడి విభాజకం 1. 189 00:11:03,000 --> 00:11:09,000 ఈ + 924y = 1 మాకు 5x ఇస్తుంది 190 00:11:09,000 --> 00:11:17,000 లేదా 5x = 1 - 924y. 191 00:11:17,000 --> 00:11:22,000 కానీ మేము మాత్రమే ప్రతిదీ మాడ్యులో 924 శ్రద్ధ ఉంటే 192 00:11:22,000 --> 00:11:25,000 924y - అప్పుడు మేము డ్రాప్ చెయ్యవచ్చు. 193 00:11:25,000 --> 00:11:27,000 గడియారం తిరిగి థింక్. 194 00:11:27,000 --> 00:11:31,000 నిమిషాల ముల్లు 1 న మరియు అప్పుడు సరిగ్గా 10 గంటల, పాస్ ఉంటే 195 00:11:31,000 --> 00:11:35,000 మేము నిమిషాల ముల్లు ఇప్పటికీ 1 న తెలుసు. 196 00:11:35,000 --> 00:11:39,000 ఇక్కడ మేము, 1 వద్ద మొదలు మరియు తరువాత సరిగ్గా Y సార్లు చుట్టూ 197 00:11:39,000 --> 00:11:41,000 కాబట్టి మేము ఇంకా 1 వద్ద ఉంటాం. 198 00:11:41,000 --> 00:11:49,000 మేము = 1 (mod 924) 5x ఉన్నాయి. 199 00:11:49,000 --> 00:11:55,000 మరియు ఇక్కడ ఈ x, మేము ముందు వెతుకుతున్న d వలె ఉంటుంది 200 00:11:55,000 --> 00:11:58,000 మేము పొడిగించిన యూక్లిడ్ అల్గోరిథం ఉపయోగించడానికి అయితే 201 00:11:58,000 --> 00:12:04,000 ఈ సంఖ్య x పొందడానికి, మేము మా d వంటి వాడాలి సంఖ్య ఉంది. 202 00:12:04,000 --> 00:12:07,000 ఇప్పుడు ఒక = 5 విస్తరణకు యూక్లిడ్ అల్గోరిథం అమలు తెలియజేయండి 203 00:12:07,000 --> 00:12:11,000 మరియు b = 924. 204 00:12:11,000 --> 00:12:14,000 మేము పట్టిక పద్ధతి అనే పద్ధతి ఉపయోగిస్తారు. 205 00:12:14,000 --> 00:12:21,000 మా పట్టిక 4 నిలువు, x, y, d, మరియు k ఉంటుంది. 206 00:12:21,000 --> 00:12:23,000 మా పట్టిక 2 వరుసలు తో మొదలవుతుంది. 207 00:12:23,000 --> 00:12:28,000 మొదటి వరుసగా మేము అప్పుడు 1, 0, 5 ఇది మా విలువ, కలిగి 208 00:12:28,000 --> 00:12:37,000 మరియు మా రెండవ వరుస 0, 1, మరియు బి కోసం మా విలువ, ఇది 924 ఉంది. 209 00:12:37,000 --> 00:12:40,000 4 వ కాలమ్, k, విలువ ఫలితంగా ఉంటుంది 210 00:12:40,000 --> 00:12:45,000 d విలువ పై వరుసగా d విలువ విభజన యొక్క 211 00:12:45,000 --> 00:12:49,000 అదే వరుసలో. 212 00:12:49,000 --> 00:12:56,000 మేము 924 ద్వారా విభజించబడింది 5 కొన్ని మిగిలిన 0 ఉంటాయి. 213 00:12:56,000 --> 00:12:59,000 అంటే = 0 k కలిగివుంటాయి. 214 00:12:59,000 --> 00:13:05,000 ఇప్పుడు ప్రతి ఇతర సెల్ విలువ పై సెల్ 2 వరుసలు విలువ ఉంటుంది 215 00:13:05,000 --> 00:13:09,000 ఇది k పై వరుస యొక్క మైనస్ విలువ. 216 00:13:09,000 --> 00:13:11,000 3 వ వరుసలో d తో ప్రారంభిద్దాం. 217 00:13:11,000 --> 00:13:19,000 మేము 5 కలిగి - 924 * 0 = 5. 218 00:13:19,000 --> 00:13:25,000 0 ఇది 1 * 0 - మేము 0 కలిగి తదుపరి 219 00:13:25,000 --> 00:13:30,000 మరియు 1 - 0 * 0 ఇది 1 ఉంది. 220 00:13:30,000 --> 00:13:33,000 చాలా చెడు లేదు, కాబట్టి యొక్క తదుపరి వరుస కొనసాగండి తెలియజేయండి. 221 00:13:33,000 --> 00:13:36,000 మొదటి మేము k యొక్క మా విలువ అవసరం. 222 00:13:36,000 --> 00:13:43,000 924, కొన్ని మిగిలిన 5 = 184 ద్వారా విభజించబడింది 223 00:13:43,000 --> 00:13:46,000 కాబట్టి k కోసం మా విలువ 184 ఉంది. 224 00:13:46,000 --> 00:13:54,000 ఇప్పుడు 924 - 5 * 184 = 4. 225 00:13:54,000 --> 00:14:05,000 1 - 0 * 184 1 మరియు 0 - 1 * 184 -184 ఉంది. 226 00:14:05,000 --> 00:14:07,000 All right, తర్వాత వరుస చేయండి చూద్దాం. 227 00:14:07,000 --> 00:14:10,000 K మన విలువ 1 ఎందుకంటే ఉంటుంది 228 00:14:10,000 --> 00:14:15,000 5 కొన్ని మిగిలిన 4 = 1 ద్వారా విభజించబడింది. 229 00:14:15,000 --> 00:14:17,000 యొక్క ఇతర కాలమ్ నింపండి చూద్దాం. 230 00:14:17,000 --> 00:14:21,000 5 - 4 * 1 = 1. 231 00:14:21,000 --> 00:14:25,000 0 - 1 * 1 = -1. 232 00:14:25,000 --> 00:14:33,000 మరియు 1 - 184 * 1 185 ఉంది. 233 00:14:33,000 --> 00:14:35,000 K యొక్క మా తదుపరి విలువ చూద్దాం. 234 00:14:35,000 --> 00:14:40,000 మేము 4 ఇది 1, 4 విభజించబడింది ఉన్నట్లు సరే, కనిపిస్తోంది. 235 00:14:40,000 --> 00:14:43,000 మేము 1 విభజన ఎక్కడ ఈ సందర్భంలో ఆ k సమానంగా ఉంటుంది 236 00:14:43,000 --> 00:14:50,000 పైన వరుసగా d విలువ మేము మా అల్గోరిథం పూర్తి చేసిన అర్థం. 237 00:14:50,000 --> 00:14:58,000 మేము గత వరుసగా x = 185 మరియు y = -1 కలిగి ఇక్కడ చూడగలరు. 238 00:14:58,000 --> 00:15:00,000 యొక్క ఇప్పుడు మా అసలు లక్ష్యం వచ్చి లెట్. 239 00:15:00,000 --> 00:15:04,000 మేము ఫలితంగా x విలువ ఈ అల్గోరిథం నడుస్తున్న చెప్పారు 240 00:15:04,000 --> 00:15:08,000 ఒక (mod బి) యొక్క గుణకార విలోమం ఉంటుంది. 241 00:15:08,000 --> 00:15:15,000 ఆ 185 5 యొక్క గుణకార విలోమం (mod 924) అని అర్థం 242 00:15:15,000 --> 00:15:20,000 ఇది మేము d కోసం 185 యొక్క విలువను అర్థం. 243 00:15:20,000 --> 00:15:23,000 నిజానికి ఆ d = 1 గత వరుసగా 244 00:15:23,000 --> 00:15:26,000 ఇ మీ coprime జరిగినది నిర్థారిస్తుంది. 245 00:15:26,000 --> 00:15:30,000 అది 1 కాకపోయి ఉంటే అప్పుడు మేము ఒక కొత్త ఇ ఎంచుకోండి వుంటుంది. 246 00:15:30,000 --> 00:15:33,000 ఇప్పుడు రాబ్ నా సందేశం పొందింది లేదో యొక్క చూసేలా. 247 00:15:33,000 --> 00:15:35,000 ఎవరైనా నాకు ఒక ఎన్క్రిప్టెడ్ సందేశాన్ని పంపినప్పుడు 248 00:15:35,000 --> 00:15:38,000 కాలం నా ప్రైవేట్ కీ ఒక రహస్యంగా ఉంచారు చేసిన వంటి 249 00:15:38,000 --> 00:15:41,000 నేను ఎవరు సందేశాన్ని వ్యక్తీకరించవచ్చు మాత్రమే ఒక ఉన్నాను. 250 00:15:41,000 --> 00:15:46,000 వ్యక్తీకరించడానికి ఒక భాగం సి నేను అసలు సందేశం లెక్కించవచ్చు 251 00:15:46,000 --> 00:15:53,000 d శక్తి (mod N) కు భాగం సమానంగా ఉంటుంది. 252 00:15:53,000 --> 00:15:57,000 D మరియు n నా వ్యక్తిగత కీ నుండి గుర్తుంచుకోండి. 253 00:15:57,000 --> 00:16:01,000 మేము వ్యక్తీకరించడానికి ప్రతి భాగం దాని భాగాలు నుండి పూర్తి సందేశాన్ని పొందడానికి 254 00:16:01,000 --> 00:16:04,000 మరియు ఫలితాలు concatenate. 255 00:16:04,000 --> 00:16:08,000 RSA ఎలా సురక్షితం? 256 00:16:08,000 --> 00:16:10,000 నిజానికి, మనం చెప్పలేము. 257 00:16:10,000 --> 00:16:14,000 భద్రత ఒక సందేశాన్ని పగుళ్లు దాడి పడుతుంది ఎంత ఆధారంగా 258 00:16:14,000 --> 00:16:16,000 RSA గుప్తీకరించబడింది. 259 00:16:16,000 --> 00:16:19,000 ఒక అటాకర్ మీ పబ్లిక్ కీ ప్రాప్తి ఉంది గుర్తుంచుకోండి 260 00:16:19,000 --> 00:16:21,000 ఇది ఇ మరియు n రెండు కలిగి ఉంది. 261 00:16:21,000 --> 00:16:26,000 దాడి దాని 2 పూర్ణాంకాల, p మరియు q లోకి n కారణం చేస్తుంది ఉంటే 262 00:16:26,000 --> 00:16:30,000 అప్పుడు ఆమె పొడిగించిన యూక్లిడ్ అల్గారిథమ్ ఉపయోగించి d లెక్కించేందుకు కాలేదు. 263 00:16:30,000 --> 00:16:35,000 ఈ ఆమె ఏ సందేశాన్ని వ్యక్తీకరించవచ్చు ఉపయోగించే ప్రైవేట్ కీ, ఇస్తుంది. 264 00:16:35,000 --> 00:16:38,000 కానీ ఎంత త్వరగా మేము పూర్ణాంకాల కారణం కావచ్చు? 265 00:16:38,000 --> 00:16:41,000 మళ్లీ, మనం చెప్పలేము. 266 00:16:41,000 --> 00:16:43,000 ఎవరూ, అది చేయడం ఒక వేగవంతమైన మార్గం కనుగొన్న 267 00:16:43,000 --> 00:16:46,000 ఇది ఇచ్చిన అర్థం తగినంత పెద్ద n 268 00:16:46,000 --> 00:16:49,000 అది అవాస్తవ రీతిలో సుదీర్ఘ దాడి పడుతుంది 269 00:16:49,000 --> 00:16:51,000 సంఖ్య అంశం. 270 00:16:51,000 --> 00:16:54,000 ఎవరైనా కారక పూర్ణాంకాల యొక్క వేగవంతమైన మార్గం బహిర్గతం ఉంటే 271 00:16:54,000 --> 00:16:57,000 RSA విభజించబడినట్లు చేస్తుంది. 272 00:16:57,000 --> 00:17:01,000 కానీ కూడా పూర్ణాంక కారకాలకు అంతర్గతంగా నెమ్మదిగా 273 00:17:01,000 --> 00:17:04,000 RSA యాంత్రిక ఇంకా కొన్ని దోషం కలిగి ఉంటుంది 274 00:17:04,000 --> 00:17:07,000 ఆ సందేశాలను సులభంగా వ్యక్తీకరణకు అనుమతిస్తుంది. 275 00:17:07,000 --> 00:17:10,000 ఎవరూ ఇంకా ఒక దోషం కనుగొనబడింది మరియు వెల్లడించింది 276 00:17:10,000 --> 00:17:12,000 కానీ ఒక ఉనికిలో లేదు కాదు. 277 00:17:12,000 --> 00:17:17,000 సిద్ధాంతం, ఎవరైనా RSA గుప్తీకరించబడింది అన్ని డేటాను చదవడానికి అక్కడ ఉంటుంది. 278 00:17:17,000 --> 00:17:19,000 గోప్యతా సమస్యను మరొక బిట్ ఉంది. 279 00:17:19,000 --> 00:17:23,000 టామీ నా పబ్లిక్ కీని ఉపయోగించి కొన్ని సందేశాన్ని గుప్తీకరిస్తుంది ఉంటే 280 00:17:23,000 --> 00:17:26,000 మరియు దాడి నా పబ్లిక్ కీని ఉపయోగించి అదే సందేశం గుప్తీకరిస్తుంది 281 00:17:26,000 --> 00:17:29,000 దాడి 2 సందేశాలు వలె ఉంటాయి చూస్తారు 282 00:17:29,000 --> 00:17:32,000 మరియు ఆ విధంగా టామీ గుప్తీకరించబడింది తెలుసు. 283 00:17:32,000 --> 00:17:36,000 ఈ నివారించేందుకు, సందేశాలు సాధారణంగా యాదృచ్ఛిక బిట్స్ తో మందంగా ఉంటాయి 284 00:17:36,000 --> 00:17:39,000 అదే సందేశం గుప్తీకరించబడింది కాబట్టి గుప్తీకరించబడింది ముందు 285 00:17:39,000 --> 00:17:44,000 సందేశం న padding భిన్నంగా ఉంటుంది, అనేక సార్లు కాలం వివిధ కనిపిస్తుంది. 286 00:17:44,000 --> 00:17:47,000 కానీ మేము భాగాలుగా సందేశాలను విడిపోయినట్లు కలిగి ఎలా గుర్తు 287 00:17:47,000 --> 00:17:50,000 ప్రతి భాగం n కంటే తక్కువగా ఉంటుంది కాబట్టి? 288 00:17:50,000 --> 00:17:52,000 భాగాలుగా పాడింగ్ మేము విషయాలు విడిపోయారు ఉంటుంది అర్థం 289 00:17:52,000 --> 00:17:57,000 నుండి మరింత భాగాలుగా మందంగా భాగం n కంటే తక్కువగా ఉండాలి. 290 00:17:57,000 --> 00:18:01,000 మరియు గుప్తలేఖనం, RSA తో సాపేక్షంగా ఖరీదైనవి 291 00:18:01,000 --> 00:18:05,000 మరియు అనేక భాగాలుగా ఒక సందేశాన్ని విచ్ఛిన్నం అవసరం చాలా వ్యయంతో కూడుకొని ఉంటుంది. 292 00:18:05,000 --> 00:18:09,000 డేటా యొక్క ఒక భారీ మొత్తంలో ఎన్క్రిప్టెడ్ ఉండాలి మరియు మళ్లీ ఉంటే 293 00:18:09,000 --> 00:18:12,000 మేము సమాన కీ యాంత్రిక పద్ధతులు యొక్క ప్రయోజనాలు మిళితం చేయవచ్చు 294 00:18:12,000 --> 00:18:16,000 RSA తో భద్రత మరియు సామర్ధ్యం రెండూ పొందడానికి. 295 00:18:16,000 --> 00:18:18,000 మేము ఇక్కడ దీనిని కాదు ఉన్నప్పటికీ, 296 00:18:18,000 --> 00:18:23,000 AES విజెనెరే మరియు సీజర్ సాంకేతికలిపులు వంటి సమాన కీ యాంత్రిక ఉంది 297 00:18:23,000 --> 00:18:25,000 కానీ చాలా క్లిష్టంగా ఛేదించడానికి. 298 00:18:25,000 --> 00:18:30,000 అయితే, మేము ఒక భాగస్వామ్య రహస్య కీని రూపొందించడానికి లేకుండా AES ఉపయోగించలేరు 299 00:18:30,000 --> 00:18:34,000 2 వ్యవస్థల మధ్య, మరియు మేము ముందు ఆ సమస్య చూసింది. 300 00:18:34,000 --> 00:18:40,000 అయితే ఇప్పుడు మేము 2 వ్యవస్థల మధ్య భాగస్వామ్య రహస్య కీ స్థాపించడానికి RSA ఉపయోగించవచ్చు. 301 00:18:40,000 --> 00:18:43,000 మేము డేటా పంపినవారు పంపడం కంప్యూటర్ కాల్ చేస్తాము 302 00:18:43,000 --> 00:18:46,000 మరియు కంప్యూటర్ డేటా రిసీవర్ అందుకున్నాడు. 303 00:18:46,000 --> 00:18:49,000 రిసీవర్ ఒక RSA కీ జతను కలిగి ఉంది మరియు పంపుతుంది 304 00:18:49,000 --> 00:18:51,000 లేఖరికి పబ్లిక్ కీ. 305 00:18:51,000 --> 00:18:54,000 పంపినవారు, ఒక AES కీ ఉత్పత్తి 306 00:18:54,000 --> 00:18:57,000 రిసీవర్ యొక్క RSA పబ్లిక్ కీ తో గుప్తీకరిస్తుంది, 307 00:18:57,000 --> 00:19:00,000 మరియు రిసీవర్ AES కీ పంపుతుంది. 308 00:19:00,000 --> 00:19:04,000 రిసీవర్ దాని RSA ప్రైవేట్ కీని తో సందేశం వ్యక్తీకరిస్తుంది. 309 00:19:04,000 --> 00:19:09,000 పంపినవారు మరియు గ్రహీత ఇద్దరూ ఇప్పుడు వాటి మధ్య ఒక భాగస్వామ్య AES కీ ఉంది. 310 00:19:09,000 --> 00:19:14,000 RSA కంటే మరియు గుప్తలేఖనం వద్ద చాలా వేగంగా ఇది AES, 311 00:19:14,000 --> 00:19:18,000 ఇప్పుడు డేటా పెద్ద మొత్తాల గుప్తీకరించడానికి మరియు రిసీవర్ వాటిని పంపడానికి ఉపయోగిస్తారు, 312 00:19:18,000 --> 00:19:21,000 వ్యక్తీకరించడానికి అదే కీ ఎవరు ఉపయోగించి. 313 00:19:21,000 --> 00:19:26,000 RSA కంటే మరియు గుప్తలేఖనం వద్ద చాలా వేగంగా ఇది AES, 314 00:19:26,000 --> 00:19:30,000 ఇప్పుడు డేటా పెద్ద మొత్తాల గుప్తీకరించడానికి మరియు రిసీవర్ వాటిని పంపడానికి ఉపయోగిస్తారు, 315 00:19:30,000 --> 00:19:32,000 వ్యక్తీకరించడానికి అదే కీ ఎవరు ఉపయోగించి. 316 00:19:32,000 --> 00:19:36,000 మేము భాగస్వామ్యం చేసిన కీ బదిలీ RSA అవసరం. 317 00:19:36,000 --> 00:19:40,000 మేము ఇకపై అన్ని వద్ద RSA ఉపయోగించాలి. 318 00:19:40,000 --> 00:19:46,000 నేను ఒక సందేశాన్ని పొందారు కనిపిస్తుంది. 319 00:19:46,000 --> 00:19:49,000 ఎవరైనా పేపర్ విమానంపై ఏమి చదివి ఉంటే నేను క్యాచ్ ముందు అది పెద్ద విషయం కాదు 320 00:19:49,000 --> 00:19:55,000 నేను ప్రైవేట్ కీతో మాత్రమే ఒక ఉన్నాను ఎందుకంటే. 321 00:19:55,000 --> 00:19:57,000 సందేశంలో భాగాలుగా ప్రతి వ్యక్తీకరించడానికి యొక్క లెట్. 322 00:19:57,000 --> 00:20:07,000 మొదటి భాగం ఈ, 658, మేము, 185 ఉంది d శక్తి, గాథలకు 323 00:20:07,000 --> 00:20:18,000 989 ఇది mod N, 67 సమానం 324 00:20:18,000 --> 00:20:24,000 ASCII లో లేఖ సి ఇది. 325 00:20:24,000 --> 00:20:31,000 ఇప్పుడు, రెండవ భాగం లో. 326 00:20:31,000 --> 00:20:35,000 రెండవ భాగం, విలువ 15 ఉన్నాయి 327 00:20:35,000 --> 00:20:41,000 మేము 185th అధికారంలోకి పెంచడానికి, ఇది 328 00:20:41,000 --> 00:20:51,000 mod 989, మరియు ఈ 83 సమానం 329 00:20:51,000 --> 00:20:57,000 ASCII లో లేఖ S ఇది. 330 00:20:57,000 --> 00:21:06,000 ఇప్పుడు విలువ 799 ఉన్నాయి మూడవ భాగం, కోసం, మేము, 185 కు పెంచడానికి 331 00:21:06,000 --> 00:21:17,000 mod 989, మరియు ఈ 53 సమానం, 332 00:21:17,000 --> 00:21:24,000 ASCII లో పాత్ర 5 విలువ ఇది. 333 00:21:24,000 --> 00:21:30,000 ఇప్పుడు గత భాగం కోసం, ఇది విలువ 975 ఉంది 334 00:21:30,000 --> 00:21:41,000 మేము, 185 కు mod 989, పెంచడానికి 335 00:21:41,000 --> 00:21:51,000 మరియు ఈ ASCII లో పాత్ర 0 విలువ ఇది 48, సమానంగా ఉంటుంది. 336 00:21:51,000 --> 00:21:57,000 నా పేరు రాబ్ బౌడెన్, మరియు ఈ CS50 ఉంది. 337 00:21:57,000 --> 00:22:00,000 [CS50.TV] 338 00:22:06,000 --> 00:22:08,000 అన్ని వద్ద RSA. 339 00:22:08,000 --> 00:22:14,000 అన్ని వద్ద RSA. [నవ్వు] 340 00:22:14,000 --> 00:22:17,000 అన్ని వద్ద.