CINXE.COM
Prímteszt, Fermat-prímteszt, Miller-Rabin-prímteszt - YOUPROOF
<!doctype html> <html lang="hu" class="no-js" lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="pingback" href="https://youproof.hu/xmlrpc.php"> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO plugin v22.5 - https://yoast.com/wordpress/plugins/seo/ --> <title>Prímteszt, Fermat-prímteszt, Miller-Rabin-prímteszt - YOUPROOF</title> <meta name="description" content="Prímszámok keresése. Fermat-prímteszt. Carmichael számok és univerzális álprímek. Miller-Rabin-prímteszt. Fermat és Miller-Rabin-tanúk. Fermat-faktorizáció." /> <link rel="canonical" href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/" /> <meta property="og:locale" content="hu_HU" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Alice és Bob - Kriptográfia, rejtjelezés" /> <meta property="og:description" content="23. rész: Alice és Bob prímszámok után nyomoz" /> <meta property="og:url" content="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/" /> <meta property="og:site_name" content="YOUPROOF" /> <meta property="article:published_time" content="2020-06-09T07:04:38+00:00" /> <meta property="article:modified_time" content="2020-12-18T13:17:22+00:00" /> <meta property="og:image" content="https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_facebook-1.jpg" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="author" content="Moldvai Dávid" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:label1" content="Szerző:" /> <meta name="twitter:data1" content="Moldvai Dávid" /> <meta name="twitter:label2" content="Becsült olvasási idő" /> <meta name="twitter:data2" content="51 perc" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#article","isPartOf":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/"},"author":{"name":"Moldvai Dávid","@id":"https://youproof.hu/#/schema/person/529c774d4e6617f648fb33734de2dec4"},"headline":"Alice és Bob prímszámok után nyomoz","datePublished":"2020-06-09T07:04:38+00:00","dateModified":"2020-12-18T13:17:22+00:00","mainEntityOfPage":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/"},"wordCount":10282,"commentCount":0,"publisher":{"@id":"https://youproof.hu/#/schema/person/529c774d4e6617f648fb33734de2dec4"},"image":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#primaryimage"},"thumbnailUrl":"https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg","keywords":["asszociált","Bézout-lemma","Carmichael-szám","egység","euklidészi algoritmus","felbonthatatlan","Fermat-faktorizáció","Fermat-prímteszt","kínai maradéktétel","kis Fermat-tétel","kongruencia","kongruenciarendszer","maradékosztály","Miller-Rabin-prímteszt","prím","prímteszt","relatív prím","univerzális álprím"],"articleSection":["Elemi számelmélet"],"inLanguage":"hu","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#respond"]}]},{"@type":"WebPage","@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/","url":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/","name":"Prímteszt, Fermat-prímteszt, Miller-Rabin-prímteszt - YOUPROOF","isPartOf":{"@id":"https://youproof.hu/#website"},"primaryImageOfPage":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#primaryimage"},"image":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#primaryimage"},"thumbnailUrl":"https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg","datePublished":"2020-06-09T07:04:38+00:00","dateModified":"2020-12-18T13:17:22+00:00","description":"Prímszámok keresése. Fermat-prímteszt. Carmichael számok és univerzális álprímek. Miller-Rabin-prímteszt. Fermat és Miller-Rabin-tanúk. Fermat-faktorizáció.","breadcrumb":{"@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#breadcrumb"},"inLanguage":"hu","potentialAction":[{"@type":"ReadAction","target":["https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/"]}]},{"@type":"ImageObject","inLanguage":"hu","@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#primaryimage","url":"https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg","contentUrl":"https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://youproof.hu/"},{"@type":"ListItem","position":2,"name":"Alice és Bob prímszámok után nyomoz"}]},{"@type":"WebSite","@id":"https://youproof.hu/#website","url":"https://youproof.hu/","name":"YOUPROOF","description":"","publisher":{"@id":"https://youproof.hu/#/schema/person/529c774d4e6617f648fb33734de2dec4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://youproof.hu/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"hu"},{"@type":["Person","Organization"],"@id":"https://youproof.hu/#/schema/person/529c774d4e6617f648fb33734de2dec4","name":"Moldvai Dávid","image":{"@type":"ImageObject","inLanguage":"hu","@id":"https://youproof.hu/#/schema/person/image/","url":"https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_full_big-1.png","contentUrl":"https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_full_big-1.png","width":467,"height":155,"caption":"Moldvai Dávid"},"logo":{"@id":"https://youproof.hu/#/schema/person/image/"}}]}</script> <!-- / Yoast SEO plugin. --> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="YOUPROOF » hírcsatorna" href="https://youproof.hu/feed/" /> <link rel="alternate" type="application/rss+xml" title="YOUPROOF » hozzászólás hírcsatorna" href="https://youproof.hu/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="YOUPROOF » Alice és Bob prímszámok után nyomoz hozzászólás hírcsatorna" href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/youproof.hu\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.5"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://youproof.hu/wp-includes/css/dist/block-library/style.min.css?ver=6.5.5' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='cookie-notice-front-css' href='https://youproof.hu/wp-content/plugins/cookie-notice/css/front.min.css?ver=2.4.16' type='text/css' media='all' /> <link rel='stylesheet' id='minimumminimal-fonts-css' href='//fonts.googleapis.com/css?family=Muli%3A300%2C300i%2C600&subset=latin-ext&ver=6.5.5' type='text/css' media='all' /> <link rel='stylesheet' id='minimumminimal-mainstyle-css' href='https://youproof.hu/wp-content/themes/minimum-minimal/style.css?ver=6.5.5' type='text/css' media='all' /> <link rel='stylesheet' id='child-style-css' href='https://youproof.hu/wp-content/themes/minimum-minimal-child/style.css?ver=6.5.5' type='text/css' media='all' /> <script type="text/javascript" src="https://youproof.hu/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://youproof.hu/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <link rel="https://api.w.org/" href="https://youproof.hu/wp-json/" /><link rel="alternate" type="application/json" href="https://youproof.hu/wp-json/wp/v2/posts/6204" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://youproof.hu/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.5.5" /> <link rel='shortlink' href='https://youproof.hu/?p=6204' /> <link rel="alternate" type="application/json+oembed" href="https://youproof.hu/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fyouproof.hu%2Fkriptografia%2F23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://youproof.hu/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fyouproof.hu%2Fkriptografia%2F23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio%2F&format=xml" /> <style type="text/css"> @font-face { font-family: 'richicons'; src: url('https://youproof.hu/wp-content/themes/minimum-minimal/font/richicons.eot?13409119'); src: url('https://youproof.hu/wp-content/themes/minimum-minimal/font/richicons.eot?13409119#iefix') format('embedded-opentype'), url('https://youproof.hu/wp-content/themes/minimum-minimal/font/richicons.woff?13409119') format('woff'), url('https://youproof.hu/wp-content/themes/minimum-minimal/font/richicons.ttf?13409119') format('truetype'), url('https://youproof.hu/wp-content/themes/minimum-minimal/font/richicons.svg?13409119#richicons') format('svg'); font-weight: normal; font-style: normal; } #top-menu, .top-bar ul ul, ul.submenu { background-color:#FFFFFF; } a #sitetitle, .top-bar a, .icon-menu, #iconmenu li:before, .top-bar ul.submenu a, .menushop .is-dropdown-submenu a, .menushop .is-dropdown-submenu a:hover{ color:#000000; } a, a:hover, .top-bar a:hover, .top-bar .current-menu-item a, .top-bar ul.submenu a:hover, #iconmenu li:hover:before, .postbox a:hover .entry-title, #copyright a:hover, #footermenu a:hover, #footer-widget-area a:hover, #top-widget-area a:hover, .pagination .prev:hover, .pagination .next:hover, .comment-metadata a:hover, .fn a:hover { color:#0066cc; } .none { background:#0066cc; } .button, .button:hover, .button:focus, .add_to_cart_button:hover, .add_to_cart_button:focus { background-color:#0066cc; color: #FFFFFF; } .entry-content a.more-link, .button, .add_to_cart_button { color:#FFFFFF; } </style> <meta name="generator" content="Elementor 3.21.1; features: e_optimized_assets_loading, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto"> <link rel="icon" href="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_only_big-32x32.png" sizes="32x32" /> <link rel="icon" href="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_only_big-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_only_big-180x180.png" /> <meta name="msapplication-TileImage" content="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_only_big-270x270.png" /> <style type="text/css" id="wp-custom-css"> .typewriter { font-family: "Courier New", Courier, monospace; } .prerequisite-warning { color: red; font-style: italic; font-weight: bold; } </style> <!-- Facebook like/share --> <div id="fb-root"></div> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/hu_HU/sdk.js#xfbml=1&version=v3.3"></script> <!-- END Facebook like/share --> </head> <body class="post-template-default single single-post postid-6204 single-format-standard wp-custom-logo cookies-not-set elementor-default elementor-kit-4899" itemscope="itemscope" itemtype="http://schema.org/WebPage"> <header id="top-menu" class="top-bar" itemscope="itemscope"> <div class="menu-container-mobile" data-responsive-toggle="menu-container" data-hide-for="large"> <button class="icon-menu" type="button" data-toggle></button> </div> <div class="topbar-title title-logo" itemscope="itemscope" itemtype="http://schema.org/WPHeader" role="banner"> <a href="https://youproof.hu/" class="custom-logo-link" rel="home"><img fetchpriority="high" width="467" height="155" src="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_full_big-1.png" class="custom-logo" alt="YOUPROOF" decoding="async" srcset="https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_full_big-1.png 467w, https://youproof.hu/wp-content/uploads/2019/04/cropped-logo_full_big-1-300x100.png 300w" sizes="(max-width: 467px) 100vw, 467px" /></a> </div> <div id="menu-container" class="menu-container"> <nav class="richprimarymenu" itemtype="http://schema.org/SiteNavigationElement" role="navigation"><ul id="menu-header-navigation-menu" class="vertical large-horizontal menu" data-responsive-menu="accordion large-dropdown"><li id="menu-item-1551" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-1551"><a href="https://youproof.hu/blog/">Összes cikk</a></li> <li id="menu-item-1552" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1552"><a href="https://youproof.hu/kriptografia/">Kriptográfia</a></li> </ul></nav> <ul id="iconmenu" class="menu richiconmenu"> <li id="menu-item-1073" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1073"><a href="https://www.facebook.com/youproof.hu">Facebook</a></li> <li id="searchicon" class="icon-search menu-item"> <a> Search </a> </li> </ul> </div> </header> <div id="searchwrap"> <div class= "row"> <div class="columns"> <form role="search" method="get" id="searchform" action="https://youproof.hu/"> <div class="input-group"> <input type="text" class="input-group-field" value="" name="s" id="s" placeholder="Search"> <div class="input-group-button"> <input type="submit" id="searchsubmit" value="Search" class="button"> </div> </div> </form> </div> </div> </div> <div id="herofeaturedimage" class="coverimage"> <img width="1200" height="630" src="https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg" class="attachment-minimumminimal_single-post-cover size-minimumminimal_single-post-cover wp-post-image" alt="" decoding="async" srcset="https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1.jpg 1200w, https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1-768x403.jpg 768w, https://youproof.hu/wp-content/uploads/kriptografia_23_thumbnail_orig-1-1070x562.jpg 1070w" sizes="(max-width: 1200px) 100vw, 1200px" /> </div> <div id="container" class="row"> <div id="primary" class="large-7 medium-8 small-11 small-centered columns"> <article class="articlebox post-6204 post type-post status-publish format-standard has-post-thumbnail hentry category-elemi-szamelmelet tag-asszocialt tag-bezout-lemma tag-carmichael-szam tag-egyseg tag-euklideszi-algoritmus tag-felbonthatatlan tag-fermat-faktorizacio tag-fermat-primteszt tag-kinai-maradektetel tag-kis-fermat-tetel tag-kongruencia tag-kongruenciarendszer tag-maradekosztaly tag-miller-rabin-primteszt tag-prim tag-primteszt tag-relativ-prim tag-univerzalis-alprim yp_series-kriptografia"> <header class="yp-series-header"> <a href="https://youproof.hu/kriptografia/"> <div class="yp-series-logo"> <img src="https://youproof.hu/wp-content/uploads/logo_only_cryptography.png" /> </div> <div class="yp-series-title"> <h1>Episode <span class="yp-series-index">I</span></h1> <h2>Alice és Bob</h2> </div> </a> </header> <header class="entry-header entry-header-single"> <h1 class="entry-title"> 23. rész: Alice és Bob prímszámok után nyomoz </h1> <div class="entry-meta">Moldvai Dávid · <span class="screen-reader-text">Posted on</span> <time class="entry-date published" datetime="2020-06-09T09:04:38+02:00">2020.06.09.</time><time class="updated" datetime="2020-12-18T14:17:22+01:00">2020.12.18.</time></div> </header> <!-- Facebook like/share --> <div class="fb-like" data-href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/" data-width="100" data-layout="button" data-action="like" data-size="large" data-show-faces="false" data-share="true"></div> <!-- END Facebook like/share --> <div class="entry-content"> <p><strong><em>Az <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/" target="_blank">előző részben</a> igazoltuk, hogy az RSA rejtjelezési eljárás valóban minden esetben helyesen működik. Ezt alapvetően két fontos számelméleti összefüggés biztosította számunkra. Az első a kis Fermat-tétel (<a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5892" class="yp-element-link">22.1. Tétel</a>), amely a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/" target="_blank">20. részben</a> ismertetett Euler-Fermat tétel (<a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5507" class="yp-element-link">20.19. Tétel</a>) következménye a prímekre nézve. A másik összefüggés pedig a kínai maradéktétel (<a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5934" class="yp-element-link">22.2. Tétel</a>), amely az úgynevezett kongruenciarendszerek megoldhatóságával, illetve a megoldások számával volt kapcsolatos. Végül egyrészt ennek következményeként egy – egyébként a számelmélet más területein is – rendkívül fontos gyűrűizomorfizmussal, másrészt a kis Fermat-tétel egy egyszerű következményével ismerkedtünk meg, amelyek együtt lehetővé teszik a kommunikáló felek számára az RSA-dekódolás felgyorsítását.</em></strong></p> <p><strong><em>De vajon hogyan képes Alice és Bob az RSA-kulcsgeneráláshoz szükséges többszázjegyű prímszámokat találni? Hogyan tudják ezt megtenni anélkül, hogy az idők végezetéig osztáspróbákat kellene végezniük? Mik azok a prímtesztek, és pontosan hogyan működnek? Mely számokat nevezzük univerzális álprímeknek, és hogyan tudunk megszabadulni tőlük? Ebben a részben erről lesz szó…</em></strong></p> <p class="prerequisite-warning">Figyelem! Ez a rész erőteljesen épít a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/" target="_blank" rel="noreferrer noopener">16.</a>, <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/" target="_blank" rel="noreferrer noopener">20.</a> és <a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/" target="_blank" rel="noreferrer noopener">22. részekben</a> felépített alábbi definíciókra, valamint a hozzájuk kapcsolódó tételekre:</p> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">16.3. Definíció (Egység)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">R</span> egy tetszőleges <strong><em>kommutatív gyűrű</em></strong>. Ha egy adott <span class="wp-katex-eq" data-display="false">e</span> gyűrűelem esetén minden <span class="wp-katex-eq" data-display="false">a</span> gyűrűelemre teljesül az <span class="wp-katex-eq" data-display="false">e|a</span> oszthatósági reláció, akkor az <span class="wp-katex-eq" data-display="false">e</span> elemet <strong><em>egységnek</em></strong> nevezzük.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3915" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">16.6. Definíció (Asszociált)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Egy <strong><em>kommutatív gyűrű</em></strong> valamely <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> elemeire akkor mondjuk, hogy <strong><em>egymás asszociáltjai</em></strong>, ha pontosan ugyanazok a többszöröseik és az osztóik is. Pontosabban fogalmazva, ha tetszőleges <span class="wp-katex-eq" data-display="false">r</span> gyűrűelem esetén <span class="wp-katex-eq" data-display="false">a|r</span> <strong><em>akkor és csak akkor</em></strong> teljesül, amikor <span class="wp-katex-eq" data-display="false">b|r</span> is teljesül, valamint <span class="wp-katex-eq" data-display="false">r|a</span> <strong><em>akkor és csak akkor</em></strong> teljesül, amikor <span class="wp-katex-eq" data-display="false">r|b</span> is teljesül.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Azt, hogy <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> egymás asszociáltjai így jelöljük: <span class="wp-katex-eq" data-display="false">a\sim b</span>.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3934" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">16.11. Definíció (Felbonthatatlan elem)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">R</span> egy tetszőleges <strong><em>kommutatív gyűrű</em></strong>. Ha valamely <span class="wp-katex-eq" data-display="false">a</span>, <span class="wp-katex-eq" data-display="false">b</span> és <span class="wp-katex-eq" data-display="false">c</span> elemekre <span class="wp-katex-eq" data-display="false">a=b\cdot c</span> teljesül, akkor a <span class="wp-katex-eq" data-display="false">b\cdot c</span> szorzatot az <span class="wp-katex-eq" data-display="false">a</span> elem <strong><em>felbontásának</em></strong> nevezzük. Azokat a felbontásokat, amelyekben <span class="wp-katex-eq" data-display="false">b</span> és <span class="wp-katex-eq" data-display="false">c</span> közül az egyik egység, a másik pedig <span class="wp-katex-eq" data-display="false">a</span> asszociáltja, <strong><em>triviális felbontásoknak</em></strong> nevezzük. Ha egy gyűrűelem saját maga nem egység és nem létezik nemtriviális felbontása (azaz ha létezik is felbontása, az csak triviális lehet), akkor őt <strong><em>felbonthatatlannak vagy irreducibilisnek</em></strong> nevezzük. Ha egy elem nem felbonthatatlan és nem egység, akkor őt <strong><em>összetett elemnek</em></strong> nevezzük. Az egységeket nem tekintjük sem felbonthatatlannak, sem pedig összetettnek.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4039" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">16.13. Definíció (Prímtulajdonságú elem)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Egy <span class="wp-katex-eq" data-display="false">R</span> kommutatív gyűrű valamely <span class="wp-katex-eq" data-display="false">p</span> elemét <strong><em>prímtulajdonságú elemnek</em></strong> (vagy egyszerűen csak <strong><em>prímnek</em></strong>) nevezzük, ha nem a nullelem, nem egység, és <strong><em>csak úgy</em></strong> lehet osztója két gyűrűelem szorzatának, ha legalább az egyik tényezőnek osztója. Azaz ha valamely <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> gyűrűelemekre teljesül a <span class="wp-katex-eq" data-display="false">p|ab</span> oszthatóság, akkor a <span class="wp-katex-eq" data-display="false">p|a</span> vagy <span class="wp-katex-eq" data-display="false">p|b</span> oszthatóságok közül <strong><em>legalább az egyik</em></strong> ugyancsak teljesül.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4064" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">20.6. Definíció (Redukált maradékosztály)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">m\gt 0</span> egy tetszőleges <strong><em>pozitív</em></strong> egész szám. Ekkor a <span class="wp-katex-eq" data-display="false">\Z/m\Z</span>-vel jelölt modulo <span class="wp-katex-eq" data-display="false">m</span> maradékosztálygyűrű (lásd a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5352" class="yp-element-link">20.5. Tétel</a>t) invertálható elemeit <strong><em>modulo <span class="wp-katex-eq" data-display="false">m</span> redukált maradékosztályoknak</em></strong> nevezzük.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5370" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">20.7. Definíció (Az Euler-függvény)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">m\gt 0</span> tetszőleges <strong><em>pozitív</em></strong> egész szám. Ekkor a modulo <span class="wp-katex-eq" data-display="false">m</span> <strong><em>redukált maradékosztályok számát</em></strong> a <span class="wp-katex-eq" data-display="false">\varphi(m)</span>-mel jelölt függvény értéke adja meg. Ezt a függvényt <strong><em>Euler-féle <span class="wp-katex-eq" data-display="false">\varphi</span>-függvénynek (ejtsd: „fi”)</em></strong> nevezzük.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5378" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">22.1. Tétel (A kis Fermat-tétel)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">p\gt 0</span> egy tetszőleges <strong><em>pozitív</em></strong> prím, továbbá <span class="wp-katex-eq" data-display="false">a</span> egy tetszőleges egész szám, amely <strong><em>relatív prím</em></strong> <span class="wp-katex-eq" data-display="false">p</span>-hez. Ekkor teljesül az alábbi kongruencia:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^{p-1}\equiv 1\pmod p</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Az alábbi kongruencia tetszőleges <span class="wp-katex-eq" data-display="false">a</span> egész számra – tehát nem csak a <span class="wp-katex-eq" data-display="false">p</span>-hez relatív prímekre – teljesül:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^p\equiv a\pmod p</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p></p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5892" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <!-- Displayed element (recall-collapsed) --> <div class="yp-element-recall"> <!-- The expand button of the displayed element --> <div class="yp-element-expand-button yp-element-expand-button-inactive"> <div class="yp-element-expand-button-text">22.2. Tétel (Kínai maradéktétel)</div> </div> <!-- The collapsible container of the displayed element --> <div class="yp-element-recall-container"> <!-- Contents of the displayed element --> <div class="yp-element-recall-content"> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> tetszőleges, <span class="wp-katex-eq" data-display="false">p\gt 0</span> és <span class="wp-katex-eq" data-display="false">q\gt 0</span> pedig valamilyen <strong><em>pozitív</em></strong> egész számok. Tegyük fel továbbá, hogy <span class="wp-katex-eq" data-display="false">p</span> és <span class="wp-katex-eq" data-display="false">q</span> egymáshoz <strong><em>relatív prímek</em></strong>. Ekkor az alábbi kongruenciarendszer megoldható, és a megoldás egyetlen modulo <span class="wp-katex-eq" data-display="false">pq</span> maradékosztály lesz:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}x&\equiv a\pmod p \\ x&\equiv b\pmod q\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Más megfogalmazásban minden, a fenti két kongruenciát egyszerre kielégítő egész szám ugyanabba az egyetlen modulo <span class="wp-katex-eq" data-display="false">pq</span> maradékosztályba esik, továbbá ennek a bizonyos maradékosztálynak minden eleme kielégíti a fenti két kongruenciát.</p> <!-- /wp:paragraph --> </div> <div class="yp-element-recall-links"> <!-- Link to the related element --> <!-- Link to the embedding post --> <a class="yp-element-link-to-article" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5934" target="_blank">Kapcsolódó cikk</a> </div> </div> </div> <p class="prerequisite-warning">Ezek kontextusba helyezése miatt erőteljesen ajánlott elolvasni a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/" target="_blank">16.</a>, <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/" target="_blank">20.</a> és <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/" target="_blank">22. részeket</a>, mivel gyakran hivatkozni fogunk rájuk. A teljes cikksorozat elejét <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/1-alapfogalmak-caesar-vigenere-enigma-kulcsmegosztas/" target="_blank">itt</a> találod.</p> <p class="has-drop-cap">Alice és Bob tehát ott ülnek az RSA-algoritmus <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#rsa" target="_blank">21. részben</a> ismertetett leírása felett, és mindketten szeretnének maguknak egy-egy kulcspárt generálni. Ezután ezek publikus részeit megosztják majd egymással, és indulhat a biztonságos kommunikáció, azaz mindenki boldog. Igenám, csakhogy a kulcsgenerálási eljárás első lépéseként először is mindkettejüknek kellene találnia két-két többszázjegyű prímszámot. Azt a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4075" class="yp-element-link">16.14. Tétel</a> és a <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4246" class="yp-element-link">17.12. Tétel</a> következményeként tudják, hogy az egész számok <span class="wp-katex-eq" data-display="false">\Z</span> gyűrűjében a <strong><em>prímszámok</em></strong> (<a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4064" class="yp-element-link">16.13. Definíció</a>) és <strong><em>felbonthatatlan számok</em></strong> (<a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4039" class="yp-element-link">16.11. Definíció</a>) köre éppenséggel egybeesik. Emiatt a továbbiakban ezt a két – egyébként teljesen különböző – gyűrűelméleti fogalmat egymás szinonímájaként fogjuk használni.</p> <p>A prímszámok keresése szempontjából lényeges kérdés, hogy azok mennyire gyakran fordulnak elő ebben a számtartományban. Az úgynevezett <strong><em>prímszámláló függvény</em></strong> egy olyan függvény, amely azt adja meg bármilyen <span class="wp-katex-eq" data-display="false">n</span> pozitív egészre, hogy mennyi az <span class="wp-katex-eq" data-display="false">n</span>-nél nemnagyobb pozitív prímek száma. Ezt a függvényt <span class="wp-katex-eq" data-display="false">\pi</span>-vel jelöljük. Az alábbiakban a prímszámláló függvény értékét láthatjuk néhány pozitív egész számra:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}\pi(1)&=0 \\ \pi(2)&=1 \\ \pi(3)&=2 \\ \pi(3)&=2 \\ \pi(10)&=4 \\ \pi(100)&=25 \\ \pi(1000000)&=78498 \\ &\vdots \end{aligned}</span> <p>Az alábbi ábrán pedig a függvény grafikonja látható az első 60 pozitív egész számra:</p> <div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="300" height="238" src="https://youproof.hu/wp-content/uploads/kriptografia_23_primszamlalo_fuggveny_grafikon.jpg" alt="Prímszámláló függvény" class="wp-image-6444"/><figcaption>Prímszámláló függvény</figcaption></figure></div> <p>Sajnos a prímszámláló függvényre nincs képletünk, amelybe tetszőleges pozitív egész számot behelyettesítve varázslatos módon megkaphatnánk az értékét. Azonban az úgynevezett <strong><em>analitikus számelmélet</em></strong> egy nevezetes tétele szerint ez az érték viszonylag jól becsülhető egy másik, könnyen kiszámítható függvénnyel. Ez <strong><em><a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/Prime_number_theorem" target="_blank">„nagy prímszámtétel”</a></em></strong> néven ismeretes, amelynek részleteire ebben a cikksorozatban nem térünk ki. Ez alapján kiszámítható, hogy a 300-600 számjegyből álló számok tartományában – amelyben Alice és Bob-nak prímeket kéne keresnie az RSA-kulcsokhoz – hogyan alakul a prímek eloszlása. Eszerint ha Alice és Bob teljesen véletlenszerűen kisorsol számokat ebből a tartományból, akkor nagyjából minden párszázadik próbálkozásnál belebotlanak egy-egy prímszámba.</p> <p>Így már csak az a kérdés, hogy Alice és Bob hogyan tudja gyorsan eldönteni egy konkrét egész számról, hogy prím-e vagy sem. Az erre szolgáló algoritmusokat <strong><em>prímteszteknek</em></strong> nevezzük. A most következő prímtesztelő eljárás ismerős lehet az általános iskolából is.</p> <h4 class="wp-block-heading" id="naive-primality-test">Prímtesztelés osztáspróbákkal</h4> <p>Alice és Bob némi gondolkodás után néhány korábbi részben ismertetett összefüggés alapján az alábbi egyszerű, és mindenki számára jól ismert következtetésre jut a prímszámokkal kapcsolatban.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6217"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.1. Tétel:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\neq 0</span> egy tetszőleges <strong><em>nemnulla</em></strong> egész szám, amely <strong><em>nem egység</em></strong>. Ebben az esetben <span class="wp-katex-eq" data-display="false">n</span> <strong><em>akkor és csak akkor prím</em></strong> (azaz felbonthatatlan), ha <strong><em>nem létezik</em></strong> <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de <span class="wp-katex-eq" data-display="false">|n|</span>-nél kisebb osztója.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Ezzel ekvivalens megfogalmazás:</em></strong> Az <span class="wp-katex-eq" data-display="false">n</span> <strong><em>akkor és csak akkor összetett</em></strong> (tehát nem prím, azaz nem felbonthatatlan), ha <strong><em>létezik</em></strong> <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de <span class="wp-katex-eq" data-display="false">|n|</span>-nél kisebb osztója.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Itt <span class="wp-katex-eq" data-display="false">|n|</span> jelöli az <span class="wp-katex-eq" data-display="false">n</span> egész szám <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4359" class="yp-element-link">17.18. Definíció</a> szerinti <strong><em>abszolútértékét</em></strong>.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6219"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p><strong><em>Először nézzük azt az esetet, amikor <span class="wp-katex-eq" data-display="false">n</span> pozitív, azaz <span class="wp-katex-eq" data-display="false">n\gt 0</span>.</em></strong> Ekkor ugye <span class="wp-katex-eq" data-display="false">|n|=n</span> a <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4359" class="yp-element-link">17.18. Definíció</a> alapján.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">n</span>-nek létezik <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de <span class="wp-katex-eq" data-display="false">|n|=n</span>-nél kisebb osztója, amit jelöljünk <span class="wp-katex-eq" data-display="false">k</span>-val. Azaz egyrészt:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">1\lt k\lt n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Másrészt:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">k|n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez az oszthatóság a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3866" class="yp-element-link">16.1. Definíció</a> alapján azt jelenti, hogy létezik olyan <span class="wp-katex-eq" data-display="false">l</span> egész szám, hogy teljesül az alábbi egyenlet:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n=k\cdot l</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>A <strong><em>felbonthatatlanság</em></strong> <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4039" class="yp-element-link">16.11. Definíció</a>ja alapján azt kell bizonyítani, hogy ez a szorzat <span class="wp-katex-eq" data-display="false">n</span>-nek egy <strong><em>nemtriviális felbontása</em></strong>, azaz sem <span class="wp-katex-eq" data-display="false">k</span>, sem pedig <span class="wp-katex-eq" data-display="false">l</span> nem egység, és nem is asszociáltja <span class="wp-katex-eq" data-display="false">n</span>-nek.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Egyrészt a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3928" class="yp-element-link">16.5. Tétel</a> alapján az egész számok <span class="wp-katex-eq" data-display="false">\Z</span> gyűrűjében az <span class="wp-katex-eq" data-display="false">1</span>-en és a <span class="wp-katex-eq" data-display="false">-1</span>-en kívül nincs más egység. Mivel <span class="wp-katex-eq" data-display="false">1</span> pozitív, ezért a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3672" class="yp-element-link">15.12. Definíció</a> utáni megjegyzés alapján <span class="wp-katex-eq" data-display="false">-1</span> negatív. Emiatt <span class="wp-katex-eq" data-display="false">k</span> biztosan nem lehet egység, hiszen ő maga pozitív, továbbá határozottan nagyobb <span class="wp-katex-eq" data-display="false">1</span>-nél.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Másrészt a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3996" class="yp-element-link">16.10. Tétel</a> alapján <span class="wp-katex-eq" data-display="false">n</span>-nek mindössze két asszociáltja van, méghozzá önmaga, és az ellentettje, azaz <span class="wp-katex-eq" data-display="false">-n</span>. Mivel <span class="wp-katex-eq" data-display="false">n</span> pozitív, ezért a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3672" class="yp-element-link">15.12. Definíció</a> utáni megjegyzés alapján <span class="wp-katex-eq" data-display="false">-n</span> negatív. Emiatt viszont <span class="wp-katex-eq" data-display="false">k</span> biztosan nem lehet <span class="wp-katex-eq" data-display="false">n</span> asszociáltja sem, hiszen ő maga pozitív, továbbá határozottan kisebb <span class="wp-katex-eq" data-display="false">n</span>-nél.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>A <span class="wp-katex-eq" data-display="false">k</span> egész szám tehát egy olyan osztója <span class="wp-katex-eq" data-display="false">n</span>-nek, amely se nem egység, se nem asszociáltja <span class="wp-katex-eq" data-display="false">n</span>-nek. Most ugyanezt kellene megmutatni a fenti szorzat másik tényezőjéről, azaz <span class="wp-katex-eq" data-display="false">l</span>-ről is. Ez viszont automatikusan teljesül a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4053" class="yp-element-link">16.12. Tétel</a> miatt. Ha ugyanis <span class="wp-katex-eq" data-display="false">l</span> egység lenne, akkor ez alapján <span class="wp-katex-eq" data-display="false">k</span> szükségképpen <span class="wp-katex-eq" data-display="false">n</span>-nek asszociáltja lenne. Ha viszont <span class="wp-katex-eq" data-display="false">l</span> asszociáltja lenne <span class="wp-katex-eq" data-display="false">n</span>-nek, akkor <span class="wp-katex-eq" data-display="false">k</span> szükségképpen egység lenne. Mindkét esetről láttuk, hogy nem ez a helyzet.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Megtaláltuk tehát <span class="wp-katex-eq" data-display="false">n</span>-nek egy nemtriviális felbontását, így ő a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4039" class="yp-element-link">16.11. Definíció</a> alapján valóban összetett.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Visszafelé:</em></strong> Tegyük most fel <strong><em>indirekt</em></strong>, hogy <span class="wp-katex-eq" data-display="false">n</span> összetett ugyan, ám mégsem létezik olyan osztója, amely <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de <span class="wp-katex-eq" data-display="false">|n|=n</span>-nél kisebb. Mivel összetett, így a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4039" class="yp-element-link">16.11. Definíció</a> alapján létezik valamilyen nemtriviális felbontása. Például:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n=k\cdot l</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p><strong><em>Egyrészt</em></strong>, mivel <span class="wp-katex-eq" data-display="false">n\neq 0</span>, ezért a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3894" class="yp-element-link">16.2. Tétel</a> 4. pontja alapján <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> egyike sem lehet <span class="wp-katex-eq" data-display="false">0</span>. <strong><em>Másrészt</em></strong>, mivel a fenti felbontás ugye nemtriviális, ezért egyikük sem lehet egység, továbbá egyikük sem lehet asszociáltja <span class="wp-katex-eq" data-display="false">n</span>-nek. <strong><em>Harmadrészt</em></strong>, indirekt feltevésünk miatt egyikük sem eshet az <span class="wp-katex-eq" data-display="false">1</span> és az <span class="wp-katex-eq" data-display="false">|n|=n</span> közötti számtartományba. Végül <strong><em>negyedrészt</em></strong> a <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4180" class="yp-element-link">17.2. Lemma</a> alapján egyikük sem lehet nagyobb <span class="wp-katex-eq" data-display="false">n</span>-nél. <strong><em>Összefoglalva</em></strong> tehát <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> mindketten negatívak, határozottan kisebbek <span class="wp-katex-eq" data-display="false">-1</span>-nél, továbbá <span class="wp-katex-eq" data-display="false">-n</span>-től különbözőek. Ezt mutatja az alábbi ábra:</p> <!-- /wp:paragraph --> <!-- wp:image {"align":"center","id":6468,"sizeSlug":"large"} --> <div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="300" height="77" src="https://youproof.hu/wp-content/uploads/kriptografia_23_osztok_elhelyezkedese_2.jpg" alt="Osztók elhelyezkedése" class="wp-image-6468"/><figcaption>Osztók elhelyezkedése</figcaption></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>Az <span class="wp-katex-eq" data-display="false">n=k\cdot l</span> egyenlet miatt azonban a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3576" class="yp-element-link">15.1. Tétel</a> 4. pontja alapján teljesül az alábbi egyenlet is:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n=(-k)\cdot (-l)</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>A <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> egész számok ellentettjei tehát szintén osztói <span class="wp-katex-eq" data-display="false">n</span>-nek, mindketten pozitívak, határozottan nagyobbak <span class="wp-katex-eq" data-display="false">1</span>-nél, továbbá <span class="wp-katex-eq" data-display="false">n</span>-től különbözőek. Ezt az alábbi ábra mutatja:</p> <!-- /wp:paragraph --> <!-- wp:image {"align":"center","id":6469,"sizeSlug":"large"} --> <div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="300" height="80" src="https://youproof.hu/wp-content/uploads/kriptografia_23_osztok_elhelyezkedese_1.jpg" alt="Osztók ellentettjeinek elhelyezkedése" class="wp-image-6469"/><figcaption>Osztók ellentettjeinek elhelyezkedése</figcaption></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>A <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4180" class="yp-element-link">17.2. Lemma</a> miatt az <span class="wp-katex-eq" data-display="false">n</span>-nél nagyobb számtartományt ismételten kizárhatjuk. Így végülis indirekt feltételezésünkkel ellentétben mégiscsak találtunk két olyan osztót – nevezetesen a <span class="wp-katex-eq" data-display="false">-k</span> és <span class="wp-katex-eq" data-display="false">-l</span> egész számokat –, amelyek <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobbak, de <span class="wp-katex-eq" data-display="false">|n|=n</span>-nél kisebbek.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Végezetül nézzük most azt az esetet, amikor <span class="wp-katex-eq" data-display="false">n</span> negatív, azaz <span class="wp-katex-eq" data-display="false">n\lt 0</span>.</em></strong> Ekkor egyrészt a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3672" class="yp-element-link">15.12. Definíció</a> utáni megjegyzés alapján <span class="wp-katex-eq" data-display="false">-n</span> pozitív. Másrészt pedig a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3980" class="yp-element-link">16.8. Tétel</a> 1. pontja alapján ő <span class="wp-katex-eq" data-display="false">n</span>-nek asszociáltja, azaz pontosan ugyanazok az osztói, mint <span class="wp-katex-eq" data-display="false">n</span>-nek. Így <span class="wp-katex-eq" data-display="false">n</span> akkor és csak akkor prím, ha <span class="wp-katex-eq" data-display="false">-n</span> is, amelyre viszont pozitivitása miatt szóról szóra alkalmazható a fenti gondolatmenet.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>Ez alapján tehát egy adott <span class="wp-katex-eq" data-display="false">n</span> egész szám esetén elegendő osztáspróbákkal ellenőrizni, hogy teljesül-e valamelyik oszthatóság az alábbiak közül:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}2&|n \\ 3&|n \\ 4&|n \\ &\vdots \\ |n|-1&|n\end{aligned}</span> <p>Ha ezek közül akárcsak egyetlen oszthatóság is teljesül, akkor az iménti tétel alapján a prímtesztelő algoritmus leállhat azzal a válasszal, hogy <span class="wp-katex-eq" data-display="false">n</span> <strong><em>„biztosan összetett”</em></strong>. Ezzel szemben ha egyetlen oszthatóság sem teljesül a fentiek közül, akkor ugyancsak a fenti tétel alapján <span class="wp-katex-eq" data-display="false">n</span> <strong><em>„biztosan prím”</em></strong>.</p> <p>Például az <span class="wp-katex-eq" data-display="false">n=7</span> <strong><em>„biztosan prím”</em></strong>, hiszen:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}2&\nmid 7 \\ 3&\nmid 7 \\ 4&\nmid 7 \\ 5&\nmid 7 \\ 6&\nmid 7\end{aligned}</span> <p>Ezzel szemben az <span class="wp-katex-eq" data-display="false">n=35</span> <strong><em>„biztosan összetett”</em></strong>, hiszen:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}2&\nmid 35 \\ 3&\nmid 35 \\ 4&\nmid 35 \\ 5&|35\end{aligned}</span> <p>Főhőseink tehát ez alapján bármilyen egész számról el tudják dönteni, hogy prímszám-e vagy sem. Csakhogy <strong><em>van egy kis probléma</em></strong> ezzel az eljárással, amely akkor jelentkezik, amikor a gyakorlatban előforduló nagyságrendű számokra kezdjük el lefuttatni. Vizsgáljuk ezért meg, hogy mekkora az eljárás számításigénye a bemenet méretének függvényében. A „bemenet mérete” alatt itt értelemszerűen a leírásához szükséges számjegyek számát fogjuk érteni. Jelöljük ezt a számot mondjuk <span class="wp-katex-eq" data-display="false">k</span>-val, és tegyük fel, hogy tizes számrendszerben dolgozunk.</p> <p>A lehető legkisebb <span class="wp-katex-eq" data-display="false">k</span> számjegyből álló egész szám a <span class="wp-katex-eq" data-display="false">10^{k-1}</span> lesz. Vagyis ha a bemenet történetesen prímszám, akkor ez nagyságrendileg legalább ennyi osztáspróba után fog csak kiderülni. Ez bizony a bemenet méretének <strong><em>exponenciális függvénye</em></strong>, és így az algoritmus sajnos a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/7-algoritmus-bonyolultsag-problemaosztalyok-polinomialis-exponencialis-p-np-sejtes-tanu-tetel#algorithm-time-complexity" target="_blank">7. részben</a> tanultak alapján nem nevezhető hatékonynak. Nem sokkal jobb a helyzet akkor sem, ha a bemenet összetett szám, kivéve persze az olyan ritka eseteket, amikor viszonylag kicsi prímtényezője is van. A <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#rsa" target="_blank">21. részben</a> már említettük, hogy az RSA esetén manapság tipikusan 300-600 számjegyből álló prímszámokat használnak, ezért az algoritmus futása ebben a számtartományban az idők végezetéig is eltarthat, és így a gyakorlatban nem használható.</p> <p>Alice és Bob tehát tovább töri a fejét, hogyan tudnának ennél jóval kevesebb osztáspróbával is célt érni, és némi gondolkodás után az alábbi következtetésre jutnak.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6234"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.2. Tétel:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\neq 0</span> egy tetszőleges <strong><em>nemnulla</em></strong> egész szám, amely <strong><em>nem egység</em></strong>, valamint jelöljük <span class="wp-katex-eq" data-display="false">r</span>-rel a lehető <strong><em>legnagyobb</em></strong> olyan egész számot, amelyre <span class="wp-katex-eq" data-display="false">r^2\leq |n|</span> teljesül.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Ebben az esetben az <span class="wp-katex-eq" data-display="false">n</span> egész szám <strong><em>akkor és csak akkor prím</em></strong> (azaz felbonthatatlan), ha <strong><em>nem létezik</em></strong> olyan osztója, amely <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de legfeljebb <span class="wp-katex-eq" data-display="false">r</span>.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Ezzel ekvivalens megfogalmazás:</em></strong> Az <span class="wp-katex-eq" data-display="false">n</span> egész szám <strong><em>akkor és csak akkor összetett</em></strong> (tehát nem prím, azaz nem felbonthatatlan), ha <strong><em>létezik</em></strong> olyan osztója, amely <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb, de legfeljebb <span class="wp-katex-eq" data-display="false">r</span>.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6235"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p><strong><em>Előszöris</em></strong> az világos, hogy <span class="wp-katex-eq" data-display="false">r</span> <strong><em>nemnegatív</em></strong>, hiszen az ő és az ellentettjének a négyzete megegyezik, így ha negatív lenne, akkor nem ő lenne a legnagyobb olyan egész szám, amelyre <span class="wp-katex-eq" data-display="false">r^2\leq |n|</span> teljesül.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Másodszor</em></strong> <span class="wp-katex-eq" data-display="false">r</span> biztosan <strong><em>nem lehet nulla</em></strong> sem. A <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4365" class="yp-element-link">17.19. Tétel</a> alapján ugyanis az abszolútérték-függvény egy euklidészi norma az egész számok <span class="wp-katex-eq" data-display="false">\Z</span> gyűrűjén, és így a <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4316" class="yp-element-link">17.16. Definíció</a> 1. pontja alapján <span class="wp-katex-eq" data-display="false">n\neq 0</span>-ból <span class="wp-katex-eq" data-display="false">|n|\neq 0</span>, azaz végülis <span class="wp-katex-eq" data-display="false">1\leq |n|</span> következik. Ha mármost <span class="wp-katex-eq" data-display="false">r</span> nulla lenne, akkor igaz ugyan, hogy a négyzete nem haladná meg <span class="wp-katex-eq" data-display="false">|n|</span>-t, ám ekkor lenne nála nagyobb ugyanilyen tulajdonságú szám is (például az <span class="wp-katex-eq" data-display="false">1</span>).</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Összefoglalva</em></strong> <span class="wp-katex-eq" data-display="false">r</span>-re teljesülni fog az <span class="wp-katex-eq" data-display="false">1\leq r</span> egyenlőtlenség, ebből pedig a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3659" class="yp-element-link">15.11. Definíció</a>ban ismertetett 2. rendezési axióma alapján <span class="wp-katex-eq" data-display="false">r\leq r^2</span> következik. Ezt összevetve a tétel szövegében szereplő <span class="wp-katex-eq" data-display="false">r^2\leq |n|</span> feltétellel teljesül az alábbi:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">1\leq r\leq |n|</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p><strong><em>Ennyi előkészület után igazoljuk a tétel állítását.</em></strong> Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">n</span> prím. Ekkor a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6217" class="yp-element-link">23.1. Tétel</a> alapján egyáltalán nincsen osztója <span class="wp-katex-eq" data-display="false">1</span> és <span class="wp-katex-eq" data-display="false">|n|</span> között. Következésképp az ennél szűkebb, <span class="wp-katex-eq" data-display="false">1</span> és <span class="wp-katex-eq" data-display="false">r</span> közötti szakaszon „méginkább” nincs osztója.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Visszafelé:</em></strong> Először azt az esetet igazoljuk, amikoris <span class="wp-katex-eq" data-display="false">n</span> <strong><em>pozitív</em></strong>. Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">n</span> összetett, azaz létezik valamilyen <span class="wp-katex-eq" data-display="false">n=k\cdot l</span> nemtriviális felbontása. Az általánosság megsértése nélkül feltehetjük, hogy <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> mindketten pozitívak, máskülönben ellentettjüket véve ez az állapot elérhető. Azt kell igazolni, hogy <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> közül legalább az egyik nemnagyobb <span class="wp-katex-eq" data-display="false">r</span>-nél. Tegyük fel indirekt, hogy nem ez a helyzet, vagyis az alábbi két eset valamelyike áll fenn:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}r&\lt k\leq l \\ r&\lt l\leq k\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Első esetben a jobboldali egyenlőtlenség mindkét oldalát <span class="wp-katex-eq" data-display="false">k</span>-val megszorozva az alábbit kapjuk: <span class="wp-katex-eq" data-display="false">k^2\leq k\cdot l=n</span>. Ez viszont <span class="wp-katex-eq" data-display="false">r\lt k</span> miatt lehetetlen, hiszen a tétel szövege alapján <span class="wp-katex-eq" data-display="false">r</span> a legnagyobb olyan szám, amelynek négyzete <span class="wp-katex-eq" data-display="false">|n|=n</span>-t nem lépi túl.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Ehhez hasonlóan a második esetben a jobboldali egyenlőtlenség mindkét oldalát <span class="wp-katex-eq" data-display="false">l</span>-lel megszorozva ezt kapjuk: <span class="wp-katex-eq" data-display="false">l^2\leq l\cdot k=n</span>. Ez <span class="wp-katex-eq" data-display="false">r\lt l</span> miatt az előbb ismertetett okból szintén lehetetlen.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Indirekt feltételezésünk hibás volt, vagyis <span class="wp-katex-eq" data-display="false">k</span> és <span class="wp-katex-eq" data-display="false">l</span> közül az egyik biztosan nem lehet nagyobb <span class="wp-katex-eq" data-display="false">r</span>-nél, ahogyan a tétel állítja.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong><em>Végezetül nézzük most azt az esetet, amikor <span class="wp-katex-eq" data-display="false">n</span> negatív, azaz <span class="wp-katex-eq" data-display="false">n\lt 0</span>.</em></strong> Ekkor egyrészt a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3672" class="yp-element-link">15.12. Definíció</a> utáni megjegyzés alapján <span class="wp-katex-eq" data-display="false">-n</span> pozitív. Másrészt pedig a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3980" class="yp-element-link">16.8. Tétel</a> 1. pontja alapján ő <span class="wp-katex-eq" data-display="false">n</span>-nek asszociáltja, azaz pontosan ugyanazok az osztói, mint <span class="wp-katex-eq" data-display="false">n</span>-nek. Így <span class="wp-katex-eq" data-display="false">n</span> akkor és csak akkor prím, ha <span class="wp-katex-eq" data-display="false">-n</span> is, amelyre viszont pozitivitása miatt szóról szóra alkalmazható a fenti gondolatmenet.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>Ez alapján tehát az osztáspróbákkal elegendő addig a számig elmenni, amelynek a négyzete még épp <span class="wp-katex-eq" data-display="false">|n|</span> alatt marad. Ha eddig nem találunk osztót, akkor ezután sem fogunk. Például az <span class="wp-katex-eq" data-display="false">n=61</span> <strong><em>„biztosan prím”</em></strong>, hiszen:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}2&\nmid 61 \\ 3&\nmid 61 \\ 4&\nmid 61 \\ 5&\nmid 61 \\ 6&\nmid 61 \\ 7&\nmid 61\end{aligned}</span> <p>A további osztáspróbákat már nem érdemes elvégezni, hiszen <span class="wp-katex-eq" data-display="false">8</span> négyzetével már túllépnénk a <span class="wp-katex-eq" data-display="false">61</span>-et, így ha <span class="wp-katex-eq" data-display="false">7</span>-ig bezárólag nincs osztója a <span class="wp-katex-eq" data-display="false">61</span>-nek, akkor <span class="wp-katex-eq" data-display="false">7</span>-nél nagyobb osztója sem lesz.</p> <p><strong><em>Ez első látásra lényeges gyorsításnak tűnik, de sajnos nem az.</em></strong> Most nem teljes matematikai precizitással felvázoljuk, hogy miért.</p> <p>Tegyük fel ismét, hogy a bemeneti szám <span class="wp-katex-eq" data-display="false">k</span> darab számjegyből áll, és tizes számrendszerben dolgozunk. A lehető legkisebb <span class="wp-katex-eq" data-display="false">k</span> számjegyből álló szám a <span class="wp-katex-eq" data-display="false">10^{k-1}</span>. Egy ekkora számnak a teszteléséhez az iménti tétel alapján nagyságrendileg <span class="wp-katex-eq" data-display="false">r</span> darab osztáspróbát kell elvégezni, ahol <span class="wp-katex-eq" data-display="false">r</span> a legnagyobb olyan szám, amelyre teljesül, hogy <span class="wp-katex-eq" data-display="false">r^2\leq 10^{k-1}</span>. Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">r</span> a tizes számrendszerben <span class="wp-katex-eq" data-display="false">l</span> darab számjeggyel írható le, azaz <span class="wp-katex-eq" data-display="false">r</span> legalább <span class="wp-katex-eq" data-display="false">10^{l-1}</span>. Ezt négyzetre emelve azt kapjuk, hogy <span class="wp-katex-eq" data-display="false">r^2</span> legalább <span class="wp-katex-eq" data-display="false">10^{2\cdot (l-1)}</span>. Összefoglalva:</p> <span class="wp-katex-eq katex-display" data-display="true">10^{2\cdot (l-1)} \leq r^2 \leq 10^{k-1}</span> <p>Azaz:</p> <span class="wp-katex-eq katex-display" data-display="true">10^{l-1} \leq r \leq 10^{\frac{k-1}{2}}</span> <p>Ez az exponenciális függvény tulajdonságai miatt azt jelenti, hogy <span class="wp-katex-eq" data-display="false">r</span> felírásához legalább feleannyi számjegy kell, mint ahány számjegyből a bemeneti szám áll. Mivel <span class="wp-katex-eq" data-display="false">r</span> az elvégzendő osztáspróbák számát jelenti, ezért ez sajnos még mindig a <strong><em>bemenet méretének exponenciális függvénye</em></strong>.</p> <p>Alice és Bob tehát továbbra sem mennek sokra ezzel a prímtesztelési eljárással abban a számtartományban, ahol prímszámokat szeretnének keresni. Ezért most szintet lépünk, és egy lényegesen más elven működő prímtesztet ismertetünk.</p> <div id="fermat-primality-test"></div> <h4 class="wp-block-heading">A Fermat-prímteszt</h4> <p>Ennek a prímtesztelő eljárásnak az alapja az <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/" target="_blank">előző részben</a> megismert <strong><em>kis Fermat-tétel</em></strong>. Ez a tétel azt állítja, hogy <strong><em>HA</em></strong> egy <span class="wp-katex-eq" data-display="false">n\gt 0</span> pozitív egész szám prímszám, <strong><em>AKKOR</em></strong> minden <span class="wp-katex-eq" data-display="false">n</span>-hez <strong><em>relatív prím</em></strong> <span class="wp-katex-eq" data-display="false">a</span> egész szám esetén teljesülni fog az alábbi kongruencia:</p> <span class="wp-katex-eq katex-display" data-display="true">a^{n-1} \equiv 1 \pmod n</span> <p>Más megfogalmazásban azt is mondhatjuk, hogy amennyiben akárcsak egyetlen olyan <span class="wp-katex-eq" data-display="false">n</span>-hez relatív prím <span class="wp-katex-eq" data-display="false">a</span> egész szám is létezik, amelyre <strong><em>nem teljesül</em></strong> a fenti kongruencia, akkor <span class="wp-katex-eq" data-display="false">n</span> biztosan <strong><em>nem prím</em></strong> (azaz összetett, vagy egység). Egy ilyen <span class="wp-katex-eq" data-display="false">a</span> egész szám tehát <strong><em>„leleplezi”</em></strong> vagy <strong><em>„tanúsítja”</em></strong> <span class="wp-katex-eq" data-display="false">n</span> összetettségét. Könnyen adódik, hogyha egy <span class="wp-katex-eq" data-display="false">a</span> egész szám tanú a fenti értelemben, akkor minden olyan <span class="wp-katex-eq" data-display="false">b</span> egész szám is tanú, amely <span class="wp-katex-eq" data-display="false">a</span>-val azonos modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályban van. Ekkor ugyanis teljesül az <span class="wp-katex-eq" data-display="false">a\equiv b\pmod n</span> kongruencia, és így a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5263" class="yp-element-link">20.2. Tétel</a> 8. pontja miatt teljesül az alábbi kongruencia is:</p> <span class="wp-katex-eq katex-display" data-display="true">a^{n-1} \equiv b^{n-1} \pmod n</span> <p>Mármost ha a baloldal nem kongruens <span class="wp-katex-eq" data-display="false">1</span>-gyel – azaz <span class="wp-katex-eq" data-display="false">a</span> tanú –, akkor a jobboldal sem lehet kongruens <span class="wp-katex-eq" data-display="false">1</span>-gyel – azaz <span class="wp-katex-eq" data-display="false">b</span> is tanú. Az alábbi definícióban tehát a fenti értelemben vett „tanú” fogalmát praktikus módon komplett maradékosztályokra vonatkoztatjuk.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6264"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.3. Definíció (Fermat-tanú):</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> egy tetszőleges pozitív, <span class="wp-katex-eq" data-display="false">a</span> pedig tetszőleges egész szám, amely nem többszöröse <span class="wp-katex-eq" data-display="false">n</span>-nek, azaz <span class="wp-katex-eq" data-display="false">n\nmid a</span>. Tegyük fel továbbá, hogy nem teljesül a <strong><em>kis Fermat-tételben</em></strong> (<a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5892" class="yp-element-link">22.1. Tétel</a>) szereplő kongruencia, azaz:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^{n-1} \ \cancel{\equiv} \ 1 \pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ekkor az <span class="wp-katex-eq" data-display="false">a</span> egész szám által reprezentált <span class="wp-katex-eq" data-display="false">[a]_n</span> <strong><em>maradékosztályt</em></strong> az <span class="wp-katex-eq" data-display="false">n</span> egész szám <strong><em>Fermat-tanújának</em></strong> nevezzük.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6304"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Megjegyzés:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>A definícióban nem kell külön kikötni, hogy <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">n</span> legyen relatív prím – ami a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5482" class="yp-element-link">20.14. Tétel</a> értelmében azt jelentené, hogy <span class="wp-katex-eq" data-display="false">[a]_n</span> egy <strong><em>redukált maradékosztály</em></strong> –, hiszen ha nem ez lenne a helyzet, akkor az szintén tanúsítaná <span class="wp-katex-eq" data-display="false">n</span> összetettségét. Ez ugyanis egyrészt azt jelentené, hogy az <span class="wp-katex-eq" data-display="false">(a,n)</span> kitüntetett közös osztó különbözne az egységektől. Másrészt az <span class="wp-katex-eq" data-display="false">n\nmid a</span> feltételből az is következik, hogy ez a közös osztó <span class="wp-katex-eq" data-display="false">n</span>-től – és így <span class="wp-katex-eq" data-display="false">n</span> asszociáltjaitól – is különbözne. Ez nyilvánvaló is, hiszen <span class="wp-katex-eq" data-display="false">(a,n)=n</span> azt jelentené, hogy mégiscsak teljesül az <span class="wp-katex-eq" data-display="false">n|a</span> oszthatóság. Mármost ha az <span class="wp-katex-eq" data-display="false">(a,n)</span> kitüntetett közös osztó egyben <span class="wp-katex-eq" data-display="false">n</span>-nek is osztója, akkor <span class="wp-katex-eq" data-display="false">n</span>-nek lenne az egységektől és a saját asszociáltjaitól különböző osztója is, azaz nem lehetne prím.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Nem mellesleg megjegyezzük, hogy az <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> kongruencia a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-6746" class="yp-element-link">20.20. Tétel</a> értelmében amúgysem teljesülhetne, amennyiben <span class="wp-katex-eq" data-display="false">[a]_n</span> nem egy redukált maradékosztály, azaz <span class="wp-katex-eq" data-display="false">(a,n)\neq 1</span>. Ez tehát azt jelenti, hogy <strong><em>NEM Fermat-tanú csak redukált maradékosztály lehet</em></strong>. Az alábbi ábrán ezek elhelyezkedése látható az összes modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályok között. Az összes többi maradékosztály <strong><em>Fermat-tanú</em></strong>, ami ezen a halmazon kívül van – kivéve persze a <span class="wp-katex-eq" data-display="false">[0]_n</span> maradékosztályt.</p> <!-- /wp:paragraph --> <!-- wp:image {"align":"center","id":6470,"sizeSlug":"large"} --> <div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="300" height="261" src="https://youproof.hu/wp-content/uploads/kriptografia_23_nem_fermat_tanuk_elhelyezkedese.jpg" alt="A nem Fermat-tanúk elhelyezkedése" class="wp-image-6470"/><figcaption>A nem Fermat-tanúk elhelyezkedése</figcaption></figure></div> <!-- /wp:image --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <p>A <strong><em>kis Fermat-tétel</em></strong> eszerint úgy is megfogalmazható, hogy amennyiben egy <span class="wp-katex-eq" data-display="false">n</span> egész számnak <strong><em>létezik Fermat-tanúja</em></strong>, akkor <strong><em>„biztosan összetett”</em></strong>. Így ha <span class="wp-katex-eq" data-display="false">n</span>-ről szeretnénk eldönteni, hogy prím-e, akkor nincs más dolgunk, mint keresni egy Fermat-tanút a <strong><em>nemnulla</em></strong> modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályok között. Igenám, csakhogy e maradékosztályok száma borzasztóan nagy – egészen pontosan <span class="wp-katex-eq" data-display="false">n-1</span> –, így reménytelennek tűnik bármiféle ezek között való keresgélés. Az az érdekes, hogy ennek ellenére viszonylag gyorsan tudunk Fermat-tanút találni, amennyiben egyáltalán létezik ilyen. Most ennek okát fogjuk megvizsgálni.</p> <p>Az alábbi táblázatban néhány adatot láthatunk az összes 500 és 600 közötti páratlan számról. A táblázat első oszlopa magát a vizsgált <span class="wp-katex-eq" data-display="false">n</span> számot tartalmazza. A második oszlopban azt láthatjuk, hogy összesen hány modulo <span class="wp-katex-eq" data-display="false">n</span> <strong><em>redukált maradékosztály</em></strong> létezik. Ez tehát a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5378" class="yp-element-link">20.7. Definíció</a> alapján épp az <strong><em>Euler-féle <span class="wp-katex-eq" data-display="false">\varphi</span>-függvény</em></strong> értéke. A harmadik oszlop tartalmazza azt, hogy e <span class="wp-katex-eq" data-display="false">\varphi(n)</span> darab redukált maradékosztály között mennyi olyan van, amely <strong><em>nem Fermat-tanú</em></strong>. Ezt az értéket <span class="wp-katex-eq" data-display="false">l(n)</span>-nel jelöltük. Végül a negyedik oszlop azt tartalmazza, hogy <span class="wp-katex-eq" data-display="false">n</span> ténylegesen prím-e vagy sem:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{array}{c||c}\begin{array}{c|c|c|c} n & \varphi(n) & l(n) & \text{prím} \\ \hline 501 & 332 & 4 & \text{nem} \\ 503 & 502 & 502 & \text{igen} \\ 505 & 400 & 16 & \text{nem} \\ 507 & 312 & 4 & \text{nem} \\ 509 & 508 & 508 & \text{igen} \\ 511 & 432 & 36 & \text{nem} \\ 513 & 324 & 4 & \text{nem} \\ 515 & 408 & 4 & \text{nem} \\ 517 & 460 & 4 & \text{nem} \\ 519 & 344 & 4 & \text{nem} \\ 521 & 520 & 520 & \text{igen} \\ 523 & 522 & 522 & \text{igen} \\ 525 & 240 & 16 & \text{nem} \\ 527 & 480 & 4 & \text{nem} \\ 529 & 506 & 22 & \text{nem} \\ 531 & 348 & 4 & \text{nem} \\ 533 & 480 & 16 & \text{nem} \\ 535 & 424 & 4 & \text{nem} \\ 537 & 356 & 4 & \text{nem} \\ 539 & 420 & 4 & \text{nem} \\ 541 & 540 & 540 & \text{igen} \\ 543 & 360 & 4 & \text{nem} \\ 545 & 432 & 16 & \text{nem} \\ 547 & 546 & 546 & \text{igen} \\ 549 & 360 & 8 & \text{nem} \end{array} & \begin{array}{c|c|c|c} n & \varphi(n) & l(n) & \text{prím} \\ \hline 551 & 504 & 4 & \text{nem} \\ 553 & 468 & 36 & \text{nem} \\ 555 & 288 & 8 & \text{nem} \\ 557 & 556 & 556 & \text{igen} \\ 559 & 504 & 36 & \text{nem} \\ 561 & 320 & 320 & \boxed{\text{nem}} \\ 563 & 562 & 562 & \text{igen} \\ 565 & 448 & 16 & \text{nem} \\ 567 & 324 & 4 & \text{nem} \\ 569 & 568 & 568 & \text{igen} \\ 571 & 570 & 570 & \text{igen} \\ 573 & 380 & 4 & \text{nem} \\ 575 & 440 & 4 & \text{nem} \\ 577 & 576 & 576 & \text{igen} \\ 579 & 384 & 4 & \text{nem} \\ 581 & 492 & 4 & \text{nem} \\ 583 & 520 & 4 & \text{nem} \\ 585 & 288 & 32 & \text{nem} \\ 587 & 586 & 586 & \text{igen} \\ 589 & 540 & 36 & \text{nem} \\ 591 & 392 & 4 & \text{nem} \\ 593 & 592 & 592 & \text{igen} \\ 595 & 384 & 24 & \text{nem} \\ 597 & 396 & 4 & \text{nem} \\ 599 & 598 & 598 & \text{igen} \end{array} \end{array}</span> <p>A táblázatból legalábbis úgy tűnik, hogy amennyiben egy <span class="wp-katex-eq" data-display="false">n</span> egész szám összetett, akkor ezt rendkívül sok, sőt „majdnem mindegyik” modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztály tanúsítja. Ez abból látszik, hogy az összetett számok esetén a táblázat harmadik oszlopában lévő szám nagyon kicsi. Az egyetlen kakukktojás ebben a számtartományban az <span class="wp-katex-eq" data-display="false">561</span>, akire hamarosan visszatérünk még. Ez azt is jelenti, hogy véletlenszerűen választott redukált maradékosztályok vizsgálatával jó eséllyel nagyon hamar „leleplezhetjük” <span class="wp-katex-eq" data-display="false">n</span>-t, amennyiben összetett, hiszen kicsi az esélye, hogy épp a néhány nem Fermat-tanú valamelyikét választjuk. Ráadásul egy-egy ilyen vizsgálatot a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#modular-exponentiation" target="_blank">21. részben</a> tanult <strong><em>ismételt négyzetreemelések módszerével</em></strong> rettentően hamar el is tudunk végezni. Hamarosan általánosságban is igazolni fogunk egy alsó becslést a Fermat-tanúk számára vonatkozóan. Ez ugyan jóval szerényebb lesz annál, mint ami a táblázatból látszik, ám egy hatékonyan működő prímteszthez még ez is bőven elég lesz.</p> <p>Ehhez azonban először két segédtételre lesz szükségünk. Az első arra vonatkozik, hogy egy Fermat-tanúból hogyan tudunk előállítani egy másik Fermat-tanút.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6279"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.4. Lemma:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> tetszőleges pozitív egész szám. Tegyük fel, hogy adva van egy valamilyen <span class="wp-katex-eq" data-display="false">a</span> egész szám által reprezentált <span class="wp-katex-eq" data-display="false">[a]_n</span> redukált maradékosztály, amely <strong><em>Fermat-tanú</em></strong>. Legyen adott továbbá egy valamilyen <span class="wp-katex-eq" data-display="false">b\neq 0</span> egész szám által reprezentált <span class="wp-katex-eq" data-display="false">[b]_n</span> redukált maradékosztály, amely <strong><em>nem Fermat-tanú</em></strong>.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Ekkor e két maradékosztály szorzata, vagyis az <span class="wp-katex-eq" data-display="false">[a]_n \odot [b]_n</span> maradékosztály egyrészt <strong><em>Fermat-tanú</em></strong>, másrészt <strong><em>szintén redukált maradékosztály</em></strong>.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Itt „szorzás” alatt a modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztálygyűrű <span class="wp-katex-eq" data-display="false">\odot</span> szimbólummal jelölt szorzás műveletét értjük (lásd a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5352" class="yp-element-link">20.5. Tétel</a>t).</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6280"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Képezzük e két maradékosztály szorzatát, azaz az <span class="wp-katex-eq" data-display="false">[a]_n \odot [b]_n</span> maradékosztályt. A <span class="wp-katex-eq" data-display="false">\odot</span> művelet <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5352" class="yp-element-link">20.5. Tétel</a>ben ismertetett definíciója alapján ez épp az <span class="wp-katex-eq" data-display="false">[ab]_n</span> maradékosztály lesz. Először azt kell bizonyítanunk, hogy ez a maradékosztály Fermat-tanú. Ez a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a> alapján az alábbit jelenti:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">(ab)^{n-1} \ \cancel{\equiv} \ 1 \pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Az <span class="wp-katex-eq" data-display="false">(ab)^{n-1}</span> kifejezés a hatványozás azonosságairól szóló <a href="https://youproof.hu/kriptografia/18-modularis-aritmetika-homomorfizmus-kongruencia-reszgyuru-ideal-maradekosztalygyuru/#yp-element-4612" class="yp-element-link">18.8. Tétel</a> 1. pontja alapján így is írható: <span class="wp-katex-eq" data-display="false">a^{n-1}b^{n-1}</span>. Mivel <span class="wp-katex-eq" data-display="false">b\neq 0</span> és <span class="wp-katex-eq" data-display="false">[b]_n</span> <strong><em>nem Fermat-tanú</em></strong>, ezért a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a> alapján teljesül az alábbi kongruencia:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">b^{n-1}\equiv 1\pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Következésképp a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5263" class="yp-element-link">20.2. Tétel</a> 5. pontja miatt teljesül az alábbi kongruencia is:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\underbrace{a^{n-1}b^{n-1}}_{=(ab)^{n-1}} \equiv a^{n-1} \pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mivel <span class="wp-katex-eq" data-display="false">[a]_n</span> <strong><em>Fermat-tanú</em></strong>, ezért ugyancsak a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a> alapján a jobboldali kifejezés biztosan nem kongruens <span class="wp-katex-eq" data-display="false">1</span>-gyel modulo <span class="wp-katex-eq" data-display="false">n</span>. Így hát a baloldali kifejezés sem, azaz:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">(ab)^n \ \cancel{\equiv} \ 1\pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez tehát azt jelenti, hogy az <span class="wp-katex-eq" data-display="false">[ab]_n=[a]_n\odot [b]_n</span> maradékosztály valóban egy <strong><em>Fermat-tanú</em></strong>.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Most azt igazoljuk, hogy <span class="wp-katex-eq" data-display="false">[ab]_n</span> egy <strong><em>redukált maradékosztály</em></strong>. Mivel az <span class="wp-katex-eq" data-display="false">[a]_n</span> egy redukált maradékosztály, ezért <span class="wp-katex-eq" data-display="false">a</span> egy redukált maradékrendszer egyik eleme. Továbbá, mivel <span class="wp-katex-eq" data-display="false">[b]_n</span> szintén egy redukált maradékosztály, ezért <span class="wp-katex-eq" data-display="false">b</span> relatív prím <span class="wp-katex-eq" data-display="false">n</span>-hez. Így tehát az <span class="wp-katex-eq" data-display="false">ab</span> szorzat a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5498" class="yp-element-link">20.18. Tétel</a> miatt szintén egy redukált maradékrendszer egyik eleme lesz. Ebből következően az <span class="wp-katex-eq" data-display="false">[ab]_n</span> maradékosztály egy <strong><em>redukált maradékosztály</em></strong>.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>A második segédtétel arra vonatkozóan mond ki egy fontos állítást, hogy mi történik akkor, ha egymástól különböző maradékosztályokat egyesével végigszorozzuk ugyanazzal a redukált maradékosztállyal.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6283"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.5. Lemma:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Ha bármely két egymástól különböző <span class="wp-katex-eq" data-display="false">[a]_n</span> és <span class="wp-katex-eq" data-display="false">[b]_n</span> maradékosztályt megszorzunk egy tetszőleges <span class="wp-katex-eq" data-display="false">[c]_n</span> <strong><em>redukált maradékosztállyal</em></strong>, akkor az így kapott maradékosztályok is különböznek egymástól.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Azaz ha <span class="wp-katex-eq" data-display="false">[a]_n \neq [b]_n</span>, akkor <span class="wp-katex-eq" data-display="false">[c]_n \odot [a]_n \neq [c]_n \odot [b]_n</span>.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6284"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Tegyük fel <strong><em>indirekt</em></strong>, hogy nem ez a helyzet, vagyis annak ellenére, hogy <span class="wp-katex-eq" data-display="false">[a]_n</span> és <span class="wp-katex-eq" data-display="false">[b]_n</span> különböznek egymástól, mégiscsak teljesül az alábbi egyenlőség:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">[c]_n \odot [a]_n = [c]_n \odot [b]_n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>A <span class="wp-katex-eq" data-display="false">\odot</span> művelet <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5352" class="yp-element-link">20.5. Tétel</a>ben ismertetett definíciója alapján ez az alábbit jelenti:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">[ca]_n = [cb]_n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Az egész számok maradékosztályainak <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5345" class="yp-element-link">20.4. Tétel</a>ben bevezetett definíciója alapján ugyanezt a kongruenciák nyelvén is kifejezhetjük:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">ca\equiv cb\pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mivel <span class="wp-katex-eq" data-display="false">[c]_n</span> egy redukált maradékosztály, ezért a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5482" class="yp-element-link">20.14. Tétel</a> alapján <span class="wp-katex-eq" data-display="false">c</span> relatív prím <span class="wp-katex-eq" data-display="false">n</span>-hez, és így a kongruencia a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5333" class="yp-element-link">20.3. Tétel</a> utáni megjegyzés szerint minden további nélkül egyszerűsíthető <span class="wp-katex-eq" data-display="false">c</span>-vel. Ezt kapjuk tehát:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a\equiv b\pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez viszont azt jelenti, hogy indirekt feltételezésünkkel ellentétben <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> mégiscsak ugyanazt a maradékosztályt reprezentálja, ami ellentmondás.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>E két segédtétel segítségével mostmár könnyedén igazolhatjuk a Fermat-tanúk számára vonatkozó alsó becslésünket.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6273"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.6. Tétel:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> egy tetszőleges pozitív egész szám. Amennyiben <span class="wp-katex-eq" data-display="false">n</span>-nek <strong><em>létezik</em></strong> Fermat-tanúja a redukált maradékosztályok között, akkor a modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztályoknak <strong><em>legalább a fele</em></strong> Fermat-tanú.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6275"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Tegyük fel, hogy összesen <span class="wp-katex-eq" data-display="false">k</span> darab olyan modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztály van, amely <strong><em>nem Fermat-tanú</em></strong>. Legyenek például ezek az alábbiak, amelyek tehát páronként különböző redukált maradékosztályok:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}&[a_1]_n \\ &[a_2]_n \\ &[a_3]_n \\ &\vdots \\ &[a_k]_n \end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Tegyük fel továbbá, hogy <span class="wp-katex-eq" data-display="false">n</span>-nek <strong><em>létezik legalább egy Fermat-tanúja</em></strong> a redukált maradékosztályok között. Legyen ez például az alábbi redukált maradékosztály:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">[b]_n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Amennyiben ezzel a <span class="wp-katex-eq" data-display="false">[b]_n</span> Fermat-tanúval végigszorozzuk a fenti <span class="wp-katex-eq" data-display="false">k</span> darab nem Fermat-tanút, akkor az alábbi maradékosztályokat kapjuk, amelyek a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6279" class="yp-element-link">23.4. Lemma</a> alapján szintén mindannyian Fermat-tanúk és redukált maradékosztályok:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}[b]_n &\odot [a_1]_n \\ [b]_n &\odot [a_2]_n \\ [b]_n &\odot [a_3]_n \\ &\vdots \\ [b]_n &\odot [a_k]_n \end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mivel a szorzáshoz használt <span class="wp-katex-eq" data-display="false">[b]_n</span> egy redukált maradékosztály, továbbá az <span class="wp-katex-eq" data-display="false">[a_1]_n</span>, <span class="wp-katex-eq" data-display="false">[a_2]_n</span>, ..., <span class="wp-katex-eq" data-display="false">[a_k]_n</span> redukált maradékosztályok páronként különbözőek voltak, emiatt a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6283" class="yp-element-link">23.5. Lemma</a> alapján az eredményül kapott szorzatok is páronként különböző redukált maradékosztályok. Ráadásul ezek az <span class="wp-katex-eq" data-display="false">[a_1]_n</span>, <span class="wp-katex-eq" data-display="false">[a_2]_n</span>, ..., <span class="wp-katex-eq" data-display="false">[a_k]_n</span> redukált maradékosztályoktól is biztosan különböznek, hiszen azok nem is voltak Fermat-tanúk.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Ha tehát teljesül a tétel feltétele, miszerint <span class="wp-katex-eq" data-display="false">n</span>-hez létezik legalább egy Fermat-tanú a redukált maradékosztályok között, akkor minden nem Fermat-tanúhoz elő tudunk állítani egy-egy újabb Fermat-tanút szintén a redukált maradékosztályok között. Más szavakkal a redukált maradékosztályok között minimum annyi Fermat-tanú van, mint ahány nem Fermat-tanú, ráadásul létezhetnek további Fermat-tanúk is. A modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztályoknak tehát valóban legalább a fele Fermat-tanú.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p><strong><em>Na és akkor mi van?!</em></strong> – kérdezhetné az Olvasó. Nos, az a helyzet, hogy ezt az első látásra nem túl érdekes tényt Alice és Bob egy meglehetősen pofátlan kis trükkel prímteszteléshez tudja felhasználni. Ezt az eljárást <strong><em>Fermat-prímtesztnek</em></strong> nevezzük, és a következőképpen néz ki:</p> <ol><li>Az algoritmus bemenete egy <span class="wp-katex-eq" data-display="false">n\gt 1</span> pozitív egész szám, amelyről el kellene dönteni, hogy prím-e vagy összetett.</li><li>Válasszunk véletlenszerűen egy tetszőleges <span class="wp-katex-eq" data-display="false">1</span> és <span class="wp-katex-eq" data-display="false">n</span> közötti <span class="wp-katex-eq" data-display="false">a</span> egész számot, azaz <span class="wp-katex-eq" data-display="false">1\lt a\lt n</span>.</li><li>A <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4345" class="yp-element-link">17.17. Tétel</a> bizonyításában ismertetett <strong><em>euklidészi algoritmus</em></strong> segítségével számítsuk ki az <span class="wp-katex-eq" data-display="false">(a,n)</span> kitüntetett közös osztót. Ha <span class="wp-katex-eq" data-display="false">(a,n)\neq 1</span>, akkor az algoritmus leáll a következő válasszal: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám biztosan összetett, és az egyik osztója <span class="wp-katex-eq" data-display="false">(a,n)</span>.</em></strong> Ha <span class="wp-katex-eq" data-display="false">(a,n)=1</span>, akkor folytassuk a 4. lépéstől.</li><li>A <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere/" target="_blank">21. részben</a> ismertetett <strong><em>ismételt négyzetreemelések módszerével</em></strong> ellenőrizzük le, hogy teljesül-e az <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> kongruencia. Amennyiben <strong><em>nem</em></strong> teljesül a kongruencia, akkor az algoritmus leáll a következő válasszal: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám biztosan összetett, de nem találtuk meg egyetlen osztóját sem</em></strong>. Amennyiben teljesül a kongruencia, akkor az algoritmus a következő válasszal áll le: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám „valószínűleg” prím</em></strong>.</li></ol> <h4 class="wp-block-heading">„Valószínűleg” prím?!</h4> <p>Ez az egész elsőre teljesen értelmetlennek tűnik, ezért most vizsgáljuk meg, hogy miről is van szó tulajdonképpen. Képzeljük el, hogy a bemenő <span class="wp-katex-eq" data-display="false">n</span> egész szám valójában összetett, ám ezt szeretné minél jobban eltitkolni előlünk. Mi azonban a <strong><em>kis Fermat-tételből</em></strong> (<a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5892" class="yp-element-link">22.1. Tétel</a>) tudjuk, hogy <span class="wp-katex-eq" data-display="false">n</span> esetleges összetettségét egy <strong><em>Fermat-tanú</em></strong> egyértelműen leleplezné.</p> <p>Ezért az összes <strong><em>nemnulla</em></strong> modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályt szépen bedobáljuk egy képzeletbeli kalapba, majd becsukjuk a szemünket, és teljesen véletlenszerűen kihúzunk közülük egyet. Olyan ez, akárcsak egy lottósorsolás. Ez lenne tehát az algoritmus <strong><em>2. lépése</em></strong>. A <strong><em>3. lépésben</em></strong> azt vizsgáljuk meg, hogy egy redukált maradékosztályt húztunk-e ki. Annak, hogy nem, gyakorlatilag 0 az esélye, de ha mégis, akkor ez leleplezi <span class="wp-katex-eq" data-display="false">n</span>-et, ráadásul még egy osztóját is megkapjuk. Majdnem biztos azonban, hogy tovább kell mennünk a <strong><em>4. lépésre</em></strong>.</p> <p>Ezen a ponton már tudjuk, hogy a kiválasztott maradékosztály egy redukált maradékosztály. Ebben a lépésben azt ellenőrizzük le, hogy véletlenül nem egy <strong><em>Fermat-tanút</em></strong> találtunk-e. Ha igen – azaz a vizsgált kongruencia nem teljesült – akkor <span class="wp-katex-eq" data-display="false">n</span> lelepleződött, hiszen a <strong><em>kis Fermat-tétel</em></strong> miatt biztosan összetett. Ha azonban <strong><em>nem Fermat-tanút</em></strong> fogtunk ki – azaz a vizsgált kongruencia teljesül –, akkor nem tudunk semmi biztosat mondani <span class="wp-katex-eq" data-display="false">n</span>-ről, ugyanis a <strong><em>kis Fermat-tétel megfordítása nem igaz</em></strong>.</p> <p>Azt viszont az előző szakaszban bizonyított <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6273" class="yp-element-link">23.6. Tétel</a> alapján tudjuk, hogy a kalapban lévő redukált maradékosztályoknak <strong><em>legalább a fele</em></strong> – ám a tapasztalat alapján általában ennél jóval nagyobb része – <strong><em>Fermat-tanú</em></strong>. Így annak valószínűsége meglehetősen kicsi, hogy pont belehúztunk abba a néhány kósza nem Fermat-tanúba, miközben <span class="wp-katex-eq" data-display="false">n</span> összetett. Ennél sokkal valószínűbb, hogy <span class="wp-katex-eq" data-display="false">n</span> ténylegesen prím, és emiatt valóban nincs egyetlen Fermat-tanú sem abban a bizonyos kalapban. Ám biztosat ezen a ponton nem tudunk mondani, és ez az oka ennek a meglehetősen furcsán hangzó <strong><em>„valószínűleg prím”</em></strong> válasznak.</p> <p>A Fermat-tanúk számára vonatkozó, a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6273" class="yp-element-link">23.6. Tétel</a>ben bizonyított alsó becslés ugyan önmagában nem túl erős, azonban Alice és Bob megteheti, hogy többször is húz a kalapból. A Fermat-tanúság ellenőrzése ugyanis – mint említettük – az <strong><em>ismételt négyzetreemelések módszerével</em></strong> rendkívül gyorsan elvégezhető. Tegyük fel, hogy a lehető legrosszabb a helyzet, és a redukált maradékosztályoknak mindössze csak a fele Fermat-tanú. Ekkor 50% annak valószínűsége, hogy főhőseink egy véletlenszerű választással pont a másik feléből választanak egy redukált maradékosztályt. Annak pedig már csak 25%, hogy ez kétszer egymás után is megtörténik. Az, hogy egy újabb, harmadik húzással sem találunk Fermat-tanút, már csak 12.5% valószínűséggel következik be. És így tovább, minden újabb húzással megfeleződik annak valószínűsége, hogy tévesen prímszámmá nyilvánítjuk <span class="wp-katex-eq" data-display="false">n</span>-et.</p> <p>Tegyük fel például, hogy 100 teljesen véletlenszerűen kiválasztott redukált maradékosztály egyike sem bizonyul Fermat-tanúnak. Ennek már csupán annyi az esélye, mint 100-szor zsinórban eltalálni, hogy egy feldobott pénzérme fej vagy írás lesz-e. Ez nagyságrendileg kevésbé valószínű, mint hogy valakinek 3-szor egymás után telitalálata lesz az 5-ös lottón.</p> <p>Van azonban <strong><em>egy kis probléma</em></strong> ezzel a prímteszttel: sajnos léteznek olyan összetett számok, amelyeket nem lehet ilyen módon kiszűrni.</p> <h4 class="wp-block-heading">Univerzális álprímek</h4> <p>Térjünk vissza egy kicsit az előző szakasz elején szereplő táblázathoz. Itt a második oszlop a modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztályok számát mutatja – ezt <span class="wp-katex-eq" data-display="false">\varphi(n)</span>-nel jelöltük –, a harmadik pedig azt, hogy ezek közül hány olyan van, amely <strong><em>NEM Fermat-tanú</em></strong> – ezt pedig <span class="wp-katex-eq" data-display="false">l(n)</span>-nel jelöltük.</p> <p>Értelemszerűen a prímszámok esetén ez a két érték megegyezik, hiszen egy prímszámhoz nyilván nem létezik az összetettségét igazoló Fermat-tanú. Kérdés, hogy vajon létezik-e olyan <strong><em>összetett</em></strong> szám, amelyhez szintén nincs Fermat-tanú a redukált maradékosztályok között. A táblázatban felhívtuk a figyelmet az <span class="wp-katex-eq" data-display="false">561</span> egész számra, amely épp ezzel a szemtelen tulajdonsággal rendelkezik. Ezeknek a számoknak külön nevük is van.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6315"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.7. Definíció (Univerzális álprímek, Carmichael-számok):</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> tetszőleges pozitív, továbbá <span class="wp-katex-eq" data-display="false">a</span> egy <span class="wp-katex-eq" data-display="false">n</span>-hez relatív prím egész szám, és tegyük fel, hogy <span class="wp-katex-eq" data-display="false">n</span> <strong><em>összetett</em></strong>. Amennyiben az <span class="wp-katex-eq" data-display="false">[a]_n</span> redukált maradékosztály <strong><em>NEM Fermat-tanú</em></strong>, akkor azt mondjuk, hogy <strong><em><span class="wp-katex-eq" data-display="false">n</span> álprím az <span class="wp-katex-eq" data-display="false">a</span> alapra nézve</em></strong>.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Amennyiben a modulo <span class="wp-katex-eq" data-display="false">n</span> redukált maradékosztályok között <strong><em>egyáltalán nem létezik Fermat-tanú</em></strong>, akkor <span class="wp-katex-eq" data-display="false">n</span>-et <strong><em>univerzális álprímnek</em></strong> vagy <strong><em>Carmichael-számnak</em></strong> nevezzük.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <p>Ha tehát véletlenül épp egy Carmichael-számba botlunk, akkor a Fermat-prímteszt azt nagyon nagy valószínűséggel tévesen prímnek fogja minősíteni, hiszen akárhány redukált maradékosztályt is húzunk ki a kalapból, azokra mind teljesülni fog a Fermat-kongruencia. Az ilyen számok összetettségét egyedül akkor fogjuk tudni detektálni, ha sikerül épp egy <strong><em>nem redukált maradékosztályt</em></strong> kisorsolni a kalapból. Ilyenkor ugyanis a 3. lépésben végrehajtott euklidészi algoritmus <span class="wp-katex-eq" data-display="false">1</span>-től különböző eredménye lebuktatja a számunkat. Erre azonban gyakorlatilag semmi esély nincs, hiszen egy nagy szám esetén a maradékosztályoknak általában csak elenyésző hányada nem redukált maradékosztály.</p> <p>A figyelmes Olvasó észreveheti az említett táblázatból, hogy egy <span class="wp-katex-eq" data-display="false">n</span> univerzális álprímet mindössze az különbözteti meg egy valódi prímtől, hogy összetettsége miatt a <span class="wp-katex-eq" data-display="false">[0]_n</span> maradékosztályon kívül vannak még egyéb nem redukált maradékosztályok is. Ez onnan látszik, hogy a táblázat második oszlopában nem <span class="wp-katex-eq" data-display="false">\varphi(n)=n-1</span> fog szerepelni, ahogyan a prímek esetében a <a href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere/#yp-element-5700" class="yp-element-link">21.5. Tétel</a> alapján elvárható, hanem egy ennél kisebb szám. Ez valóban lebuktatja álprímünket. A gond csak az, hogy – mint ahogyan a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#euler-function" target="_blank">21. részben</a> már említettük – az Euler-féle <span class="wp-katex-eq" data-display="false">\varphi</span>-függvény kiszámítására csak <span class="wp-katex-eq" data-display="false">n</span> prímtényezőinek ismeretében van esélyünk, máskülönben az idők végezetéig is eltarthat. Így erre nem tudunk támaszkodni.</p> <p>Érdekes kérdés, hogy vajon hány Carmichael-szám létezik? Ha esetleg ezek száma véges, akkor ezeket nyilvántarthatnánk a számítógép memóriájában, az algoritmus pedig leellenőrizhetné, hogy <span class="wp-katex-eq" data-display="false">n</span> véletlenül nem szerepel-e ebben a listában. Régóta ismeretes, hogy tetszőleges <span class="wp-katex-eq" data-display="false">a\gt 1</span> egész szám esetén végtelen sok <span class="wp-katex-eq" data-display="false">a</span> alapú álprím létezik, az azonban sokáig nyitott kérdés volt, hogy vajon az univerzális álprímek száma is végtelen-e. Sajnálatos módon 1992-ben ezt is sikerült igazolni. Emiatt nem mehetünk el szó nélkül a probléma mellett, és az <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> kongruencia ellenőrzésén kívül egyéb dolgokat is meg kell vizsgálnunk annak érdekében, hogy a Carmichael-számokat is ki tudjuk szűrni.</p> <div id="miller-rabin-primality-test"></div> <h4 class="wp-block-heading">A Miller-Rabin prímteszt</h4> <p>Ebben a szakaszban a Fermat-prímtesztünket fogjuk egy kicsit feljavítani annak érdekében, hogy a Carmichael-számokat is ki tudjuk szűrni. Előszöris szögezzük le, hogy a továbbiakban csak a <strong><em>páratlan</em></strong> <span class="wp-katex-eq" data-display="false">n</span>-ekkel fogunk foglalkozni. Ez nem jelent tényleges megszorítást, hiszen az utolsó számjegyből azonnal látszik, hogy páratlan vagy páros-e a bemenetünk. Ez utóbbi esetben nyilván megállhatunk, és összetettnek nyilváníthatjuk a számunkat, hiszen az osztható <span class="wp-katex-eq" data-display="false">2</span>-vel.</p> <p>Az általánosság megsértése nélkül feltételezhetjük tehát, hogy <span class="wp-katex-eq" data-display="false">n\gt 1</span> egy páratlan egész szám. Ekkor azonban az <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> Fermat-kongruenciában szereplő <span class="wp-katex-eq" data-display="false">n-1</span> kitevő biztosan páros lesz. Vagyis létezik olyan <span class="wp-katex-eq" data-display="false">k_1</span> egész szám, amelyre teljesül az alábbi – és ezt meg is kapjuk, ha <span class="wp-katex-eq" data-display="false">n-1</span>-et „elosztjuk” <span class="wp-katex-eq" data-display="false">2</span>-vel:</p> <span class="wp-katex-eq katex-display" data-display="true">n-1 = 2\cdot k_1</span> <p>Ezután <span class="wp-katex-eq" data-display="false">k_1</span>-re vizsgáljuk meg, hogy páratlan-e vagy páros. Utóbbi esetben hasonlóképpen tovább bonthatjuk <span class="wp-katex-eq" data-display="false">n-1</span>-et, azaz létezni fog olyan <span class="wp-katex-eq" data-display="false">k_2</span> egész szám, amelyre teljesül az alábbi:</p> <span class="wp-katex-eq katex-display" data-display="true">n-1 = 2\cdot 2\cdot k_2</span> <p>És így tovább mindaddig bontjuk tovább a jobboldali tényezőt, amíg páratlan számot nem kapunk. Ez garantáltan be fog következni véges számú lépés után, máskülönben <span class="wp-katex-eq" data-display="false">n-1</span> prímtényezős felbontásában végtelen sok <span class="wp-katex-eq" data-display="false">2</span>-es tényező szerepelne, ami lehetetlen. Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">e</span> darab lépés után egy valamilyen <span class="wp-katex-eq" data-display="false">k</span> páratlan számot kapunk. Ekkor <span class="wp-katex-eq" data-display="false">n-1</span>-re az alábbi kifejezést kaptuk:</p> <span class="wp-katex-eq katex-display" data-display="true">n-1=\underbrace{2\cdot 2\cdot \ldots \cdot 2}_{e \text{ darab}}\cdot k=2^e\cdot k</span> <p>Például ha az <span class="wp-katex-eq" data-display="false">n=561</span> Carmichael-szám a bemenetünk, akkor <span class="wp-katex-eq" data-display="false">n-1=560</span>-ra az iménti felbontás után <span class="wp-katex-eq" data-display="false">e=4</span> és <span class="wp-katex-eq" data-display="false">k=35</span> adódik, hiszen:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}n-1=560&=2\cdot 280=\\&=2^2\cdot 140=\\&=2^3\cdot 70=\\&=2^4\cdot 35\end{aligned}</span> <p>Ilymódon kiszámítva az <span class="wp-katex-eq" data-display="false">e</span> és <span class="wp-katex-eq" data-display="false">k</span> értékét, a Fermat-tesztben használt <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> kongruencia az alábbi alakot ölti:</p> <span class="wp-katex-eq katex-display" data-display="true">a^{2^e\cdot k}\equiv 1\pmod n</span> <p>Amennyiben tehát <span class="wp-katex-eq" data-display="false">[a]_n</span> egy redukált maradékosztály és <span class="wp-katex-eq" data-display="false">n</span> prím, akkor teljesül a fenti kongruencia. Ez viszont a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5254" class="yp-element-link">20.1. Tétel</a> 3. pontja alapján azt jelenti, hogy <span class="wp-katex-eq" data-display="false">n</span> osztója az alábbi kifejezésnek:</p> <span class="wp-katex-eq katex-display" data-display="true">a^{2^e\cdot k}-1</span> <p>Most ezt a kifejezést fogjuk szorzattá alakítani a következő tétel segítségével.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6335"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.8. Tétel:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyenek adottak valamilyen tetszőleges <span class="wp-katex-eq" data-display="false">e\geq 1</span> és <span class="wp-katex-eq" data-display="false">k\geq 1</span> egész számok. Ekkor bármilyen <span class="wp-katex-eq" data-display="false">a</span> egész szám esetén teljesül az alábbi összefüggés:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^{2^e\cdot k}-1 = (a^k-1)\cdot (a^k+1)\cdot (a^{2k}+1)\cdot (a^{4k}+1)\cdot \ldots \cdot (a^{2^{e-1}k}+1)</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p></p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6338"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Azt a jól ismert azonosságot fogjuk használni, miszerint bármilyen kommutatív gyűrű tetszőleges <span class="wp-katex-eq" data-display="false">x</span> és <span class="wp-katex-eq" data-display="false">y</span> elemeire teljesül az alábbi:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">x^2-y^2=(x-y)\cdot (x+y)</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez a <a href="https://youproof.hu/kriptografia/14-egesz-szam-szorzas-absztrakt-algebra-neutralis-elem-inverz-kivonas-gyuru-ferdetest-test/#yp-element-3471" class="yp-element-link">14.12. Definíció</a>ben szereplő gyűrűaxiómák közvetlen következménye, amelyet most le is ellenőrzünk. Rögtön alkalmazhatjuk az 5. pontban lévő első disztributivitási szabályt:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">(x-y)\cdot (x+y)=(x-y)\cdot x + (x-y)\cdot y=\ldots</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>A kapott összeg két tagjára a második disztributivitási szabályt alkalmazhatjuk. Figyelembe véve a <a href="https://youproof.hu/kriptografia/15-rendezett-gyuru-absztrakt-algebra-egesz-szam-rendezesi-relacio-rendezesi-axiomak/#yp-element-3576" class="yp-element-link">15.1. Tétel</a> 3. pontját valóban a fent szereplő kifejezést kapjuk:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\ldots = x^2-yx + xy-y^2 = x^2-y^2</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ezek után alkalmazhatjuk ezt az azonosságot az <span class="wp-katex-eq" data-display="false">a^{2^ek}-1</span> kifejezésre. Ez ugyanis a hatványozás azonosságairól szóló <a href="https://youproof.hu/kriptografia/18-modularis-aritmetika-homomorfizmus-kongruencia-reszgyuru-ideal-maradekosztalygyuru/#yp-element-4612" class="yp-element-link">18.8. Tétel</a> 2. és 3. pontjai alapján a következőképpen alakítható át:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^{2^ek}-1=a^{2^{e-1}\cdot k\cdot 2}-1=(a^{2^{e-1}\cdot k})^2-1</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Erre már alkalmazhatjuk a fenti azonosságot <span class="wp-katex-eq" data-display="false">x=a^{2^{e-1}\cdot k}</span> és <span class="wp-katex-eq" data-display="false">y=1</span> szereposztással:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">(\underbrace{a^{2^{e-1}\cdot k}}_{=x})^2-(\underbrace{1}_{=y})^2=(\underbrace{a^{2^{e-1}\cdot k}}_{=x}-\underbrace{1}_{=y})\cdot (\underbrace{a^{2^{e-1}\cdot k}}_{=x}+\underbrace{1}_{=y})=\ldots</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Amennyiben az <span class="wp-katex-eq" data-display="false">e-1</span> kitevő még mindig nagyobb <span class="wp-katex-eq" data-display="false">0</span>-nál, akkor a kapott szorzat első tényezőjére megismételhetjük a fenti eljárást:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\ldots=\underbrace{(a^{2^{e-2}\cdot k}-1)\cdot (a^{2^{e-2}\cdot k}+1)}_{=a^{2^{e-1}\cdot k}-1}\cdot (a^{2^{e-1}\cdot k}+1)=\ldots</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ha még az <span class="wp-katex-eq" data-display="false">e-2</span> kitevő is nagyobb <span class="wp-katex-eq" data-display="false">0</span>-nál, akkor az első tényezőt ugyanígy tovább bonthatjuk. Minden lépésben tovább fog csökkenni a kitevő, és előbb-utóbb – egészen pontosan <span class="wp-katex-eq" data-display="false">e</span> lépés után – eléri a <span class="wp-katex-eq" data-display="false">0</span>-t. Ekkor épp a tételben szereplő szorzatot fogjuk kapni.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>Tegyük fel például, hogy továbbra is az <span class="wp-katex-eq" data-display="false">n=561</span> Carmichael-szám a bemenetünk. Az <span class="wp-katex-eq" data-display="false">n-1=560</span>-ból ugye már korábban kiszámítottuk az <span class="wp-katex-eq" data-display="false">e=4</span> és <span class="wp-katex-eq" data-display="false">k=35</span> értékeket. Ekkor az <span class="wp-katex-eq" data-display="false">a^{n-1}-1=a^{560}-1</span> kifejezés az iménti tétel alapján így alakítható szorzattá:</p> <span class="wp-katex-eq katex-display" data-display="true">a^{560}-1=(a^{35}-1)\cdot (a^{35}+1)\cdot (a^{70}+1)\cdot (a^{140}+1)\cdot (a^{280}+1)</span> <p>Ha tehát <span class="wp-katex-eq" data-display="false">[a]_{561}</span> egy tetszőleges redukált maradékosztály, és az <span class="wp-katex-eq" data-display="false">n=561</span> egy prímszám lenne, akkor ő garantáltan osztója lenne a baloldali <span class="wp-katex-eq" data-display="false">a^{560}-1</span> kifejezésnek. Természetesen ez az oszthatóság teljesülhet egészen más okból is, és – minthogy az <span class="wp-katex-eq" data-display="false">n=561</span> egy Carmichael-szám – jelen esetben teljesül is bármilyen <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztályra. A Fermat-prímteszt ezen a ponton annak rendje és módja szerint meg is bukik, hiszen néhány véletlenszerűen kiválasztott <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztály vizsgálata után tévesen arra a következtetésre jut, hogy az <span class="wp-katex-eq" data-display="false">n=561</span> „valószínűleg prím”.</p> <p>Ezen a ponton a <strong><em>Miller-Rabin-prímteszt</em></strong> továbbmegy, és az <span class="wp-katex-eq" data-display="false">n=561</span> esetleges <strong><em>prímtulajdonságát</em></strong> (<a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4064" class="yp-element-link">16.13. Definíció</a>) próbálja meg cáfolni a kiválasztott <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztály segítségével. Ha ugyanis <span class="wp-katex-eq" data-display="false">n=561</span> osztója a baloldali <span class="wp-katex-eq" data-display="false">a^{560}-1</span> egész számnak, akkor a <strong><em>prímtulajdonság</em></strong> miatt a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4064" class="yp-element-link">16.13. Definíció</a> utáni megjegyzés alapján osztója kell legyen <strong><em>legalább az egyik</em></strong> jobboldalon szereplő tényezőnek is. Azaz teljesülnie kell az alábbi oszthatóságok közül legalább egynek tetszőleges <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztály esetén:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}561&|a^{35}-1 \\ 561&|a^{35}+1 \\ 561&|a^{70}+1 \\ 561&|a^{140}+1 \\ 561&|a^{280}+1\end{aligned}</span> <p>Ez viszont a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5254" class="yp-element-link">20.1. Tétel</a> 3. pontja alapján azt jelenti, hogy teljesülnie kell <strong><em>legalább az egyik</em></strong> alábbi kongruenciának tetszőleges <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztály esetén:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}a^{35}&\equiv +1\pmod{561} \\ a^{35}&\equiv -1\pmod{561} \\ a^{70}&\equiv -1\pmod{561} \\ a^{140}&\equiv -1\pmod{561} \\ a^{280}&\equiv -1\pmod{561} \end{aligned}</span> <p>Más megfogalmazásban ez azt jelenti, hogy amennyiben találunk egy olyan <span class="wp-katex-eq" data-display="false">[a]_{561}</span> redukált maradékosztályt, amely esetén a fenti kongruenciák közül <strong><em>egyik sem</em></strong> teljesül, akkor az <span class="wp-katex-eq" data-display="false">n=561</span> biztosan <strong><em>nem lehet prím</em></strong>. Egy ilyen maradékosztály tehát <strong><em>„leleplezi”</em></strong> vagy <strong><em>„tanúsítja”</em></strong> az <span class="wp-katex-eq" data-display="false">n=561</span> összetettségét. Vizsgáljuk meg például a <span class="wp-katex-eq" data-display="false">[2]_{561}</span> redukált maradékosztályt, azaz legyen <span class="wp-katex-eq" data-display="false">a=2</span>. Az <a rel="noreferrer noopener" href="https://www.mtholyoke.edu/courses/quenell/s2003/ma139/js/powermod.html" target="_blank">itt</a> lévő kalkulátor segítségével leellenőrizhetjük a fenti kongruenciákat:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}2^{35} \equiv 263 \ &\cancel{\equiv}\ +1\pmod{561} \\ 2^{35} \equiv 263 \ &\cancel{\equiv}\ -1\pmod{561} \\ 2^{70}\equiv 166 \ &\cancel{\equiv}\ -1\pmod{561} \\ 2^{140}\equiv 67 \ &\cancel{\equiv}\ -1\pmod{561} \\ 2^{280}\equiv 1 \ &\cancel{\equiv}\ -1\pmod{561} \end{aligned}</span> <p>Minthogy egyetlen kongruencia sem teljesül, ezért az eddigi okfejtés alapján az <span class="wp-katex-eq" data-display="false">n=561</span> Carmichael-szám <strong><em>biztosan összetett</em></strong>, azaz megbukott a Miller-Rabin-prímteszten.</p> <p>Az eljárás általános megfogalmazásához most bevezetünk egy új tanú fogalmat.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6359"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.9. Definíció (Miller-Rabin-tanú):</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> egy tetszőleges páratlan szám, <span class="wp-katex-eq" data-display="false">a</span> pedig tetszőleges egész szám, amely nem többszöröse <span class="wp-katex-eq" data-display="false">n</span>-nek, azaz <span class="wp-katex-eq" data-display="false">n\nmid a</span>. Képezzük azt az <span class="wp-katex-eq" data-display="false">e\geq 1</span> kitevőt és <span class="wp-katex-eq" data-display="false">k\geq 1</span> páratlan számot, amelyekre teljesül az alábbi:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n-1=2^e\cdot k</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Tegyük fel továbbá, hogy az alábbi kongruenciák <strong><em>egyike sem</em></strong> teljesül:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}a^k&\equiv +1\pmod n \\ a^k&\equiv -1\pmod n \\ a^{2k}&\equiv -1\pmod n \\ a^{4k}&\equiv -1\pmod n \\ &\vdots \\ a^{2^{e-1}\cdot k}&\equiv -1\pmod n\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ekkor az <span class="wp-katex-eq" data-display="false">a</span> egész szám által reprezentált <span class="wp-katex-eq" data-display="false">[a]_n</span> <strong><em>maradékosztályt</em></strong> az <span class="wp-katex-eq" data-display="false">n</span> egész szám <strong><em>Miller-Rabin-tanújának</em></strong> nevezzük.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6361"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Megjegyzés:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>A Fermat-tanú <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a>jához hasonlóan itt is teljes maradékosztályokra célszerű vonatkoztatni ezt a fogalmat. Ha ugyanis egy <span class="wp-katex-eq" data-display="false">b</span> egész szám <span class="wp-katex-eq" data-display="false">a</span>-val azonos modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályban van, akkor teljesül az <span class="wp-katex-eq" data-display="false">a\equiv b\pmod n</span> kongruencia, és így a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5263" class="yp-element-link">20.2. Tétel</a> 8. pontja alapján teljesülnek az alábbi kongruenciák is:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}a^k&\equiv b^k\pmod n \\ a^{2k}&\equiv b^{2k}\pmod n \\ a^{4k}&\equiv b^{4k}\pmod n \\ &\vdots \\ a^{2^{e-1}\cdot k}&\equiv b^{2^{e-1}\cdot k}\pmod n\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mármost ha a baloldal nem kongruens a definícióban szereplő számokkal, akkor a jobboldal sem. Így tehát az <span class="wp-katex-eq" data-display="false">[a]_n</span> maradékosztálynak vagy minden eleme teljesíti a Miller-Rabin-tanúkkal szemben támasztott kritériumokat, vagy egyik sem.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Szintén a Fermat-tanú <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a>jához hasonlóan itt sem kell kikötni, hogy <span class="wp-katex-eq" data-display="false">[a]_n</span> egy <strong><em>redukált maradékosztály</em></strong>, hiszen ha van egységtől különböző közös osztója <span class="wp-katex-eq" data-display="false">a</span>-nak és <span class="wp-katex-eq" data-display="false">n</span>-nek, akkor <span class="wp-katex-eq" data-display="false">n</span> nyilván összetett. Nem mellesleg itt is megjegyezzük, hogy a Miller-Rabin-kongruenciák amúgysem teljesülhetnének, amennyiben <span class="wp-katex-eq" data-display="false">[a]_n</span> nem egy redukált maradékosztály, azaz <span class="wp-katex-eq" data-display="false">(a,n)</span> nem egység. Ennek indoklása szinte szóról szóra megegyezik a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6264" class="yp-element-link">23.3. Definíció</a> utáni megjegyzésben leírtakkal.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Ez tehát azt jelenti, hogy <strong><em>NEM Miller-Rabin-tanú csak redukált maradékosztály lehet</em></strong>. Ezen túlmenően a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6335" class="yp-element-link">23.8. Tétel</a> miatt ha egy <span class="wp-katex-eq" data-display="false">[a]_n</span> redukált maradékosztály <strong><em>NEM Miller-Rabin tanú</em></strong> – azaz teljesül a definícióban szereplő kongruenciák közül legalább az egyik –, akkor <strong><em>Fermat-tanú SEM lehet</em></strong>. Ha ugyanis teljesül legalább az egyik kongruencia, akkor a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5254" class="yp-element-link">20.1. Tétel</a> 3. pontja alapján <span class="wp-katex-eq" data-display="false">n</span> osztója az alábbi kifejezések közül legalább az egyiknek:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}&a^k-1 \\ &a^k+1 \\ &a^{2k}+1 \\ &a^{4k}+1 \\ &\vdots \\ &a^{2^{e-1}\cdot k}+1\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ám e kifejezések szorzata a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6335" class="yp-element-link">23.8. Tétel</a> alapján épp <span class="wp-katex-eq" data-display="false">a^{n-1}-1</span>, aminek <span class="wp-katex-eq" data-display="false">n</span> a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-3894" class="yp-element-link">16.2. Tétel</a> 7. pontja miatt szintén osztója. Azaz teljesül az <span class="wp-katex-eq" data-display="false">a^{n-1}\equiv 1\pmod n</span> kongruencia, és így az <span class="wp-katex-eq" data-display="false">[a]_n</span> redukált maradékosztály valóban nem Fermat-tanú. Másként fogalmazva ez azt jelenti, hogy <strong><em>minden Fermat-tanú egyúttal Miller-Rabin-tanú is</em></strong>, vagyis az új definíció tágítani igyekszik a lehetséges tanúk körét.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>Az alábbi ábrán a <strong><em>NEM Miller-Rabin-tanúk</em></strong> és a <strong><em>NEM Fermat-tanúk</em></strong> elhelyezkedése látható a modulo <span class="wp-katex-eq" data-display="false">n</span> maradékosztályok között.</p> <!-- /wp:paragraph --> <!-- wp:image {"align":"center","id":6471,"sizeSlug":"large"} --> <div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="300" height="255" src="https://youproof.hu/wp-content/uploads/kriptografia_23_nem_miller_rabin_tanuk_elhelyezkedese.jpg" alt="A nem Miller-Rabin-tanúk elhelyezkedése" class="wp-image-6471"/><figcaption>A nem Miller-Rabin-tanúk elhelyezkedése</figcaption></figure></div> <!-- /wp:image --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <p>Felmerül a kérdés, hogy vajon a tanúk körének tágítását nem vittük-e túlzásba. Azaz nem lehetséges-e, hogy ha Fermat-tanúja nem is, de Miller-Rabin-tanúja már lehet esetleg prímszámoknak is. Az alábbi tétel szerint szerencsére nem ez a helyzet.</p> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6365"> <!-- Title of the displayed element --> <h4 class="yp-element-indexed-header">23.10. Tétel:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Semmilyen <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb páratlan prímszámnak nincs Miller-Rabin-tanúja. Másként fogalmazva ha egy <span class="wp-katex-eq" data-display="false">1</span>-nél nagyobb <span class="wp-katex-eq" data-display="false">n</span> páratlan számnak van Miller-Rabin-tanúja, akkor <span class="wp-katex-eq" data-display="false">n</span> összetett.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">♣</span></div> <!-- Displayed element (normal) --> <div class="yp-element-normal" id="yp-element-6367"> <!-- Title of the displayed element --> <h4 class="yp-element-non-indexed-header">Bizonyítás:</h4> <!-- Link to the related element --> <!-- Contents of the displayed element --> <!-- wp:paragraph --> <p>Legyen <span class="wp-katex-eq" data-display="false">n\gt 1</span> egy tetszőleges páratlan prímszám, továbbá legyen adva egy tetszőleges <span class="wp-katex-eq" data-display="false">[a]_n</span> redukált maradékosztály. Képezzük azt az <span class="wp-katex-eq" data-display="false">e\geq 1</span> kitevőt és <span class="wp-katex-eq" data-display="false">k\geq 1</span> páratlan számot, amelyekre teljesülnek az alábbiak:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n-1=2^e\cdot k</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Azt kell igazolni, hogy <span class="wp-katex-eq" data-display="false">[a]_n</span> nem lehet Miller-Rabin-tanú, azaz az alábbi kongruenciák közül legalább az egyiknek teljesülnie kell:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}a^k&\equiv +1\pmod n \\ a^k&\equiv -1 \\ a^{2k}&\equiv -1\pmod n \\ a^{4k}&\equiv -1\pmod n \\ &\vdots \\ a^{2^{e-1}\cdot k}&\equiv -1\pmod n\end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mivel <span class="wp-katex-eq" data-display="false">n</span> prím, továbbá <span class="wp-katex-eq" data-display="false">(a,n)=1</span> – hiszen <span class="wp-katex-eq" data-display="false">[a]_n</span> egy redukált maradékosztály –, ezért a <strong><em>kis Fermat-tétel</em></strong> (<a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5892" class="yp-element-link">22.1. Tétel</a>) miatt teljesül rá az alábbi kongruencia:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">a^{\overbrace{2^e\cdot k}^{=n-1}}\equiv 1\pmod n</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez a <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5254" class="yp-element-link">20.1. Tétel</a> 3. pontja alapján azt jelenti, hogy teljesül az alábbi oszthatóság:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n|a^{2^e\cdot k}-1</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Az oszthatóságban szereplő jobboldali kifejezést a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6335" class="yp-element-link">23.8. Tétel</a> alapján szorzatba fejthetjük:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">n|(a^k-1)\cdot (a^k+1)\cdot (a^{2k}+1)\cdot (a^{4k}+1)\cdot \ldots \cdot (a^{2^{e-1}k}+1)</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Mivel <span class="wp-katex-eq" data-display="false">n</span> <strong><em>prím</em></strong>, ezért a <a href="https://youproof.hu/kriptografia/16-oszhatosag-egyseg-asszocialt-felbonthatatlan-prim-szamelmelet-alaptetele/#yp-element-4064" class="yp-element-link">16.13. Definíció</a> utáni megjegyzés szerint legalább az egyik jobboldali tényezőnek osztója kell legyen. Azaz az alábbi oszthatóságok közül legalább az egyiknek teljesülnie kell:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}n&|a^k-1 \\ n&|a^k+1 \\ n&|a^{2k}+1 \\ n&|a^{4k}+1 \\ &\vdots \\ n&|a^{2^{e-1}k}+1 \end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>A <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5254" class="yp-element-link">20.1. Tétel</a> 3. pontja alapján ez tehát azt jelenti, hogy <strong><em>legalább az egyik</em></strong> kongruenciának teljesülnie kell az alábbiak közül:</p> <!-- /wp:paragraph --> <!-- wp:shortcode --> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}a^k\equiv +1\pmod n \\ a^k\equiv -1\pmod n \\ a^{2k}\equiv -1\pmod n \\ a^{4k}\equiv -1\pmod n \\ &\vdots \\ a^{2^{e-1}k}\equiv -1\pmod n \end{aligned}</span> <!-- /wp:shortcode --> <!-- wp:paragraph --> <p>Ez viszont a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6359" class="yp-element-link">23.9. Definíció</a> szerint épp azt jelenti, hogy az <span class="wp-katex-eq" data-display="false">[a]_n</span> maradékosztály <strong><em>nem Miller-Rabin-tanú</em></strong>.</p> <!-- /wp:paragraph --> <!-- End character --> <span class="yp-element-end-character">∎</span></div> <p>Ezekután ismertetjük a Miller-Rabin-prímtesztelő eljárást, amely tehát a Fermat-prímtesztnek a továbbfejlesztett változata:</p> <ol><li>Az algoritmus bemenete egy <span class="wp-katex-eq" data-display="false">n\gt 1</span> <strong><em>páratlan</em></strong> egész szám, amelyről el kellene dönteni, hogy prím-e vagy összetett.</li><li>Válasszunk véletlenszerűen egy tetszőleges <span class="wp-katex-eq" data-display="false">1</span> és <span class="wp-katex-eq" data-display="false">n</span> közötti <span class="wp-katex-eq" data-display="false">a</span> egész számot, azaz <span class="wp-katex-eq" data-display="false">1\lt a\lt n</span>.</li><li>A <a href="https://youproof.hu/kriptografia/17-euklideszi-algoritmus-maradekos-osztas-legnagyobb-kozos-oszto-euklideszi-gyuru/#yp-element-4345" class="yp-element-link">17.17. Tétel</a> bizonyításában ismertetett <strong><em>euklidészi algoritmus</em></strong> segítségével számítsuk ki az <span class="wp-katex-eq" data-display="false">(a,n)</span> kitüntetett közös osztót. Ha <span class="wp-katex-eq" data-display="false">(a,n)\neq 1</span>, akkor az algoritmus leáll a következő válasszal: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám biztosan összetett, és az egyik osztója <span class="wp-katex-eq" data-display="false">(a,n)</span>.</em></strong> Ha <span class="wp-katex-eq" data-display="false">(a,n)=1</span>, akkor folytassuk a 4. lépéstől.</li><li>Képezzük azt az <span class="wp-katex-eq" data-display="false">e\geq 1</span> kitevőt és <span class="wp-katex-eq" data-display="false">k\geq 1</span> páratlan számot, amelyre <span class="wp-katex-eq" data-display="false">n-1=2^e\cdot k</span> teljesül.</li><li>A <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere/" target="_blank">21. részben</a> ismertetett <strong><em>ismételt négyzetreemelések módszerével</em></strong> ellenőrizzük le, hogy az <span class="wp-katex-eq" data-display="false">[a]_n</span> maradékosztályra teljesül-e legalább az egyik a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6359" class="yp-element-link">23.9. Definíció</a>ban felsorolt kongruenciák közül. Amennyiben <strong><em>nem</em></strong> teljesül egyetlen kongruencia sem, akkor Miller-Rabin-tanút találtunk, és az algoritmus leáll a következő válasszal: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám biztosan összetett, de nem találtuk meg egyetlen osztóját sem</em></strong>. Amennyiben teljesül legalább az egyik kongruencia, akkor az algoritmus a következő válasszal áll le: <strong><em>az <span class="wp-katex-eq" data-display="false">n</span> egész szám „valószínűleg” prím</em></strong>.</li></ol> <p><strong><em>Már megint csak „valószínűleg” prím?</em></strong> – kérdezhetné teljes joggal az Olvasó. Látszólag valóban nem kerültünk közelebb a prímek azonosításához, hiszen ismét csak összetett számokat tudunk egyértelműen leleplezni. Ha azonban szerencsétlenül épp egy olyan maradékosztályt sikerült kihúzni a kalapból, amely nem Miller-Rabin-tanú, akkor ismét csak annyit mondhatunk, hogy a kérdéses szám <strong><em>„valószínűleg” prím</em></strong>.</p> <p>Ez valóban így van, azonban a Fermat-prímteszthez hasonlóan itt is megtehetjük, hogy többször húzunk a kalapból. Ezen túlmenően a Miller-Rabin-tanú <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6359" class="yp-element-link">23.9. Definíció</a>ja utáni megjegyzés alapján egy adott <span class="wp-katex-eq" data-display="false">n</span>-hez tartozó Miller-Rabin-tanúk köre biztosan nem szűkebb, mint az ugyanezen <span class="wp-katex-eq" data-display="false">n</span>-hez tartozó Fermat-tanúk köre. Sőt, azt is láthattuk, hogy az <span class="wp-katex-eq" data-display="false">n=561</span>-nek egyáltalán nincs Fermat-tanúja – hiszen Carmichael-számról van szó. Ezzel szemben például a <span class="wp-katex-eq" data-display="false">[2]_{561}</span> maradékosztály „lebuktatja” ezt a számot is, hiszen ő egy Miller-Rabin-tanú, amely bizonyítja az <span class="wp-katex-eq" data-display="false">561</span> összetettségét.</p> <p>Úgy tűnik tehát, mintha a Miller-Rabin-prímteszt elől még a Carmichael-számok sem tudnának „elbújni”, ami kétségkívül hatalmas előrelépés. De vajon tényleg nem léteznek univerzális álprímek erre a tesztre nézve? Sajnos ahhoz, hogy ezt megválaszolhassuk, az absztrakt algebra egy rendkívül fontos ágának, nevezetesen az úgynevezett <strong><em>csoportelméletnek</em></strong> az eszköztárára lesz szükségünk. Így ezt csak a következő részben tudjuk majd igazolni.</p> <p>Most azonban térjünk vissza egy kicsit az RSA-kulcsgenerálás kérdésköréhez. Nem árt ugyanis, ha felhívjuk Alice és Bob figyelmét néhány fontos dologra, amire vigyázniuk kell, ha nem akarják, hogy Eve és Mallory borsot törjön az orruk alá.</p> <h4 class="wp-block-heading">A Fermat-faktorizáció</h4> <p>Az RSA implementációja során sok apró részleten múlhat a biztonság. Számos hatékony támadás ismert ugyanis, amelyek az üzenethalmaz, a kulcsgeneráláshoz használt prímpár, valamint a kódoló és dekódoló kulcs nem elég körültekintő megválasztását használják ki. Ezt néhány példán keresztül illusztráljuk, amelyek közül az első az úgynevezett Fermat-faktorizációs algoritmus.</p> <p>Ez az eljárás bizonyos körülmények között lehetővé teszi egy támadó számára, hogy hatékonyan kiszámíthassa a kódoláshoz és dekódoláshoz használt <span class="wp-katex-eq" data-display="false">n</span> modulus prímtényezőit, és így tulajdonképpen ő maga is a titkos kulcs birtokába juthasson. Erre akkor nyílik lehetősége, ha a prímtényezők közötti <strong><em>különbség</em></strong> nem eléggé nagy. Ebben az esetben a két prímtényező közel van a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6234" class="yp-element-link">23.2. Tétel</a>ben szereplő <span class="wp-katex-eq" data-display="false">r</span> számhoz. Ez ugye a legnagyobb olyan egész szám, amelynek négyzete még éppen nemnagyobb <span class="wp-katex-eq" data-display="false">n</span>-nél. Így ennek a környékén jó eséllyel hamar megtalálhatjuk a prímtényezőket. Az erre szolgáló alább ismertetett módszer magától <a rel="noreferrer noopener" href="https://hu.wikipedia.org/wiki/Pierre_de_Fermat" target="_blank">Pierre de Fermat</a>-tól származik, amely a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6335" class="yp-element-link">23.8. Tétel</a> bizonyításának elején már említett <span class="wp-katex-eq" data-display="false">x^2-y^2 = (x+y)\cdot (x-y)</span> összefüggésen alapul.</p> <p>Képzeljük magunkat Eve helyébe, és tegyük fel, hogy az <span class="wp-katex-eq" data-display="false">n=57\ 319\ 249\ 499</span> RSA-modulus prímtényezőit szeretnénk megtalálni. Azaz keressük azt a <span class="wp-katex-eq" data-display="false">p</span> és <span class="wp-katex-eq" data-display="false">q</span> prímszámot, amelyre teljesül az alábbi egyenlet – itt nyugodtan feltételezhetjük, hogy <span class="wp-katex-eq" data-display="false">p\gt q</span>, ha pedig mégsem, akkor nevezzük el őket fordítva:</p> <span class="wp-katex-eq katex-display" data-display="true">n=p\cdot q</span> <p>Ez első látásra reménytelennek tűnik, azonban abban reménykedhetünk, hogy az ismeretlen <span class="wp-katex-eq" data-display="false">p</span> és <span class="wp-katex-eq" data-display="false">q</span> prímtényezőket a kulcsgeneráláskor óvatlanul választották ki, és a különbségük kicsi. Most megmutatjuk, hogy mindig léteznek olyan <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> egész számok, amelyeknek összege <span class="wp-katex-eq" data-display="false">p</span>-vel, különbsége pedig <span class="wp-katex-eq" data-display="false">q</span>-val egyenlő. Azaz:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}p&=a+b \\ q&=a-b\end{aligned}</span> <p>Adjuk össze, és vonjuk ki egymásból a két egyenletet:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}p+q&=2a \\ p-q&=2b\end{aligned}</span> <p>Mivel <span class="wp-katex-eq" data-display="false">p</span> és <span class="wp-katex-eq" data-display="false">q</span> is biztosan páratlan – hiszen mindketten <span class="wp-katex-eq" data-display="false">2</span>-től különböző prímek – ezért a fenti két egyenlet baloldalán álló <span class="wp-katex-eq" data-display="false">p+q</span> összeg és <span class="wp-katex-eq" data-display="false">p-q</span> különbség biztosan páros, azaz osztható <span class="wp-katex-eq" data-display="false">2</span>-vel. A keresett <span class="wp-katex-eq" data-display="false">a</span> és <span class="wp-katex-eq" data-display="false">b</span> egész számok tehát valóban léteznek. Ekkor a fentebb említett összefüggés alapján:</p> <span class="wp-katex-eq katex-display" data-display="true">n=(\underbrace{a+b}_{=p})\cdot (\underbrace{a-b}_{=q})=a^2-b^2</span> <p>Ha valóban igaz a feltételezésünk, miszerint a két prím egymáshoz közel van, akkor a <span class="wp-katex-eq" data-display="false">p-q=2b</span> összefüggés alapján <span class="wp-katex-eq" data-display="false">b</span> kicsi. Ha viszont <span class="wp-katex-eq" data-display="false">b</span> kicsi, akkor a négyzete is kicsi, amit az <span class="wp-katex-eq" data-display="false">n=a^2-b^2</span> összefüggés jobboldaláról elhanyagolhatunk. Azaz feltételezhetjük, hogy a keresett <span class="wp-katex-eq" data-display="false">a</span> közel lesz a <a href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#yp-element-6234" class="yp-element-link">23.2. Tétel</a>ben szereplő <span class="wp-katex-eq" data-display="false">r</span> számhoz, ami ugye a legnagyobb olyan egész szám, amelynek a négyzete nemnagyobb <span class="wp-katex-eq" data-display="false">n</span>-nél. Ha most az <span class="wp-katex-eq" data-display="false">n=a^2-b^2</span> összefüggésből kifejezzük <span class="wp-katex-eq" data-display="false">b^2</span>-et, akkor az alábbit kapjuk:</p> <span class="wp-katex-eq katex-display" data-display="true">b^2=a^2-n</span> <p>Feladatunk <span class="wp-katex-eq" data-display="false">a</span> megkeresése. Azt tudjuk, hogy <span class="wp-katex-eq" data-display="false">r</span> környékén van, ezért innen kiindulva elkezdünk tippelni mindaddig, míg a jobboldali kifejezésre nem négyzetszámot kapunk.</p> <p>A fenti példában tehát <span class="wp-katex-eq" data-display="false">n=57\ 319\ 249\ 499</span>. Ekkor <span class="wp-katex-eq" data-display="false">r=239\ 414</span>, mivel ez az a legnagyobb szám, amelynek a négyzete még nemnagyobb <span class="wp-katex-eq" data-display="false">n</span>-nél. Ebből kiindulva adunk tippeket <span class="wp-katex-eq" data-display="false">a</span>-ra, és vizsgáljuk, hogy az <span class="wp-katex-eq" data-display="false">a^2-n</span> négyzetszám-e:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{array}{c|c|c}a & a^2-n & \text{négyzetszám?} \\ \hline 239\ 415 & 292\ 726 & \text{nem} \\ 239\ 416 & 771\ 557 & \text{nem} \\ 239\ 417 & 1\ 250\ 390 & \text{nem} \\ 239\ 418 & 1\ 729\ 225 & \text{igen} \end{array}</span> <p>Meglepően gyorsan, mindössze <span class="wp-katex-eq" data-display="false">4</span> lépés után négyzetszámot kaptunk a második oszlopban, amely tehát <span class="wp-katex-eq" data-display="false">b^2</span>-tel egyezik meg. Ebből <span class="wp-katex-eq" data-display="false">b=1315</span> adódik, és mivel <span class="wp-katex-eq" data-display="false">a</span>-t is sikerült megtippelnünk, végülis megkaptuk a két prímtényezőt is:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}p&=a+b=239\ 418 + 1315 = 240\ 733 \\ q&=a-b=239\ 418 - 1315=238\ 103\end{aligned}</span> <p>Látható, hogy eléggé hatékonyan sikerült prímtényezőire bontani a bemeneti számunkat. Mostmár látszik is, hogy miért: a két prím különbsége mindössze <span class="wp-katex-eq" data-display="false">2630</span> volt, ami nagyon kicsi a két prímhez képest. </p> <p>Amikor tehát Alice és Bob kulcspárt generálnak maguknak, vigyázniuk kell, hogy a kiválasztott prímszámok átlagosan az őket leíró bitek felében különbözzenek egymástól. Ezzel viszonylag hamar elvehetik Eve kedvét a fenti eljárástól, a keresett <span class="wp-katex-eq" data-display="false">a</span> ugyanis ebben az esetben nagyon messze lesz <span class="wp-katex-eq" data-display="false">r</span>-től, amelyet így az idők végezetéig keresgélhet.</p> <h4 class="wp-block-heading">A kicsi kódoló kulcsok problémája</h4> <p>A <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas#residue-class-ring-decomposition" target="_blank">22. részben</a> a RSA dekódolás gyorsítási lehetőségei kapcsán megemlítettük, hogy az RSA biztonsága nem függ a publikus <span class="wp-katex-eq" data-display="false">e</span> kódoló kitevő megválasztásától. Az <strong><em>ismételt négyzetreemelések módszerét</em></strong> vizsgálva a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#modular-exponentiation" target="_blank">21. részben</a> megállapítottuk, hogy célszerű olyan kitevőt választani, amelynek bináris számábrázolásában kevés számú <span class="wp-katex-eq" data-display="false">1</span>-es bit szerepel. Emiatt racionális megfontolásnak tűnhet, ha a megvalósítás során úgy döntünk, hogy egy viszonylag alacsony számtartományból választjuk ki a rendszer felhasználóihoz tartozó <span class="wp-katex-eq" data-display="false">e</span> publikus kitevőket a kulcsgenerálás során. Ez azonban bizonyos körülmények között a nyílt üzenet kiszámítására adhat lehetőséget egy támadó számára anélkül, hogy feltörné a titkosító kódolást.</p> <p>Tegyük fel ugyanis, hogy egy sokfelhasználós rendszerről van szó, és kicsi az a számtartomány, amelyből kisorsoljuk a felhasználók számára a publikus <span class="wp-katex-eq" data-display="false">e</span> kitevőt. Ekkor előfordulhat, hogy több felhasználó is ugyanazt a kitevőt kapja. Tegyük fel, hogy <span class="wp-katex-eq" data-display="false">k</span> darab felhasználó kapta ugyanazt az <span class="wp-katex-eq" data-display="false">e</span> kitevőt. Szerencsétlen, ugyanakkor nem túl ritka esetekben még az is megeshet, hogy <span class="wp-katex-eq" data-display="false">e\leq k</span> is teljesül. Ez látszólag nem jelent problémát, hiszen természetesen más és más prímpárokat sorsolunk hozzájuk, tehát e <span class="wp-katex-eq" data-display="false">k</span> darab felhasználóhoz különböző modulusok és dekódoló kitevők fognak tartozni.</p> <p>Képzeljük el azonban, hogy valaki egy bizalmas körlevelet küld felhasználók egy csoportjának, amelybe történetesen a fenti <span class="wp-katex-eq" data-display="false">k</span> darab felhasználó is beletartozik. Ebben az esetben tehát az <span class="wp-katex-eq" data-display="false">x</span> nyílt szöveg ugyanaz lesz. A küldő fél egyenként előkeresi a publikus kulcstárból a címzettek publikus kulcsait, és mindenki számára egyedileg kódolja az üzenetet a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#rsa-encoding-decoding" target="_blank">21. részben</a> leírt módon. A szerencsétlenül járt <span class="wp-katex-eq" data-display="false">k</span> darab felhasználónak kiküldött <span class="wp-katex-eq" data-display="false">y_1</span>, <span class="wp-katex-eq" data-display="false">y_2</span>, …, <span class="wp-katex-eq" data-display="false">y_k</span> rejtett üzenetekből a támadó az alábbi kongruenciarendszert tudja felírni:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}y_1&\equiv x^e\pmod{m_1} \\ y_2&\equiv x^e\pmod{m_2} \\ &\vdots \\ y_k&\equiv x^e\pmod{m_k}\end{aligned}</span> <p>Ebben a kongruenciarendszerben a támadó számára egyedül az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenet ismeretlen, hiszen egyrészt a felhasználókhoz tartozó <span class="wp-katex-eq" data-display="false">e</span> kitevő és a modulusok számára is elérhetők a publikus kulcstárból, másrészt pedig az <span class="wp-katex-eq" data-display="false">y_1</span>, <span class="wp-katex-eq" data-display="false">y_2</span>, …, <span class="wp-katex-eq" data-display="false">y_k</span> rejtett üzeneteket a kommunikációs csatorna lehallgatásával ismeri meg. Most megmutatjuk, hogy a támadó a fent ismertetett szerencsétlen körülmények fennállása esetén ebből a kongruenciarendszerből egy pillanat alatt megkaphatja az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenetet.</p> <p>Azt mindjárt az elején feltehetjük, hogy az <span class="wp-katex-eq" data-display="false">m_1</span>, <span class="wp-katex-eq" data-display="false">m_2</span>, …, <span class="wp-katex-eq" data-display="false">m_k</span> modulusok <strong><em>páronként relatív prímek</em></strong>. Ezek ugyanis véletlenszerűen sorsolt prímpárok szorzataiként állnak elő, így annak gyakorlatilag nincs esélye, hogy van közöttük két olyan, amelynek közös legalább az egyik prímtényezője. Emlékeztetnénk az olvasót a <strong><em>kínai maradéktételhez</em></strong> kapcsolódó <a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5985" class="yp-element-link">22.4. Tétel</a>re, valamint a <a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5993" class="yp-element-link">22.5. Tétel</a>re, amelyek így már alkalmazhatók.</p> <p>Ezek többszöri alkalmazásával azt kapjuk, hogy a <span class="wp-katex-eq" data-display="false">\Z/m_1\Z \times \Z/m_2\Z \times \ldots \times \Z/m_k\Z</span> szorzatgyűrű (lásd a <a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-6067" class="yp-element-link">22.7. Tétel</a>t) elemei kölcsönösen egyértelmű megfeleltetésben állnak a <span class="wp-katex-eq" data-display="false">\Z/m_1m_2\ldots m_k\Z</span> maradékosztálygyűrű elemeivel. A fenti kongruenciarendszer a szorzatgyűrűben tulajdonképpen az alábbi elemet írja le:</p> <span class="wp-katex-eq katex-display" data-display="true">([x^e]_{m_1};[x^e]_{m_2};\ldots;[x^e]_{m_k})</span> <p>Ennek a <span class="wp-katex-eq" data-display="false">\Z/m_1m_2\ldots m_k\Z</span> maradékosztálygyűrűben a <a href="https://youproof.hu/kriptografia/22-kinai-maradektetel-konguenciarendszerek-kis-fermat-tetel-rsa-bizonyitas-gyuruk-direkt-szorzata-rsa-dekodolas/#yp-element-5993" class="yp-element-link">22.5. Tétel</a> alapján az alábbi maradékosztály felel meg:</p> <span class="wp-katex-eq katex-display" data-display="true">[x^e]_{m_1\cdot m_2\cdot \ldots \cdot m_k}</span> <p>Vegyük észre azonban, hogy az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenetet a küldő az <strong><em>előkódolás</em></strong> során úgy választotta meg, hogy az <span class="wp-katex-eq" data-display="false">0</span> és a legkisebb modulus közé essen. Az <strong><em>előkódolásról</em></strong> a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#rsa-encoding-decoding" target="_blank">21. részben</a> írtunk bővebben. Teljesülnek tehát az alábbi egyenlőtlenségek:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}0\leq x &\lt m_1 \\ 0\leq x&\lt m_2 \\ &\vdots \\ 0\leq x &\lt m_k\end{aligned}</span> <p>Mivel azt mondtuk, hogy szerencsétlen módon az <span class="wp-katex-eq" data-display="false">e\leq k</span> egyenlőtlenség is fennáll, ezért ebben az esetben nyilván teljesül az alábbi is:</p> <span class="wp-katex-eq katex-display" data-display="true">0\leq x^e \lt m_1m_2\ldots m_k</span> <p>Így a támadó valójában az <span class="wp-katex-eq" data-display="false">[x^e]_{m_1m_2\ldots m_k}</span> maradékosztály legkisebb nemnegatív reprezentánselemét kapja meg, amely nem más, mint a nyílt üzenetnek ténylegesen az <span class="wp-katex-eq" data-display="false">e</span>-edik hatványa – és nem pedig annak modulo megfelelője. Ebből viszont az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenetet már egyszerűen megkaphatja.</p> <p>Alice-nak és Bob-nak tehát azt javasolhatjuk, hogy a kulcsgeneráláskor semmiképpen se korlátozzák az <span class="wp-katex-eq" data-display="false">e</span> kitevőt egy szűk számtartományra, nehogy a fenti kellemetlenségben legyen részük. A kódolás gyorsasága szempontjából a lényeg úgyis az, hogy kevés számú <span class="wp-katex-eq" data-display="false">1</span>-es legyen <span class="wp-katex-eq" data-display="false">e</span> bináris ábrázolásában, nem pedig az, hogy ő maga kicsi legyen. Ezen túlmenően amikor ugyanazt az üzenetet nagyszámú résztvevőnek továbbítjuk, akkor célszerű az üzenet egyes példányaiba valamilyen véletlentől függő elemet is belevinni. Például megtehetjük, hogy az utolsó valahány biten hasznos tartalom helyett elhelyezünk egy véletlenszámot.</p> <p>Ennek az az előnye, hogy így az eredeti <span class="wp-katex-eq" data-display="false">x</span> üzenet egyes példányai különböző kódolandó nyílt üzenetekké válnak, amivel a fenti támadás lehetőségét egycsapásra kiiktattuk. Természetesen ekkor a küldő és fogadó félnek meg kell egyezniük egymással, hogy melyek lesznek a haszontalan bitek.</p> <div id="common-modulus-attack"></div> <h4 class="wp-block-heading">Közös modulus választásának hibája</h4> <p>Végül egy nagyon súlyos potenciális rendszertervezési hibára hívnánk fel a figyelmet. Mivel az RSA meglehetősen számításigényes, ezért csábító lehet az a gondolat, hogy a teljes rendszer számára egyetlen <span class="wp-katex-eq" data-display="false">m</span> modulust generálunk, és csak az egyes felhasználókhoz tartozó <span class="wp-katex-eq" data-display="false">e</span> publikus és <span class="wp-katex-eq" data-display="false">d</span> titkos kitevők lesznek különbözőek a kulcsgenerálás során. Ez látszólag előnyös lehet, hiszen így például előre le tudunk gyártatni egy célhardvert, amely a modulo <span class="wp-katex-eq" data-display="false">m</span> maradékosztálygyűrűben való számolásra van optimalizálva.</p> <p>Képzeljük el, hogy az előző szakaszhoz hasonlóan ismét egy közös <span class="wp-katex-eq" data-display="false">x</span> üzenet – például egy körlevél – érkezik mondjuk két felhasználóhoz. Tegyük fel, hogy e két felhasználóhoz az <span class="wp-katex-eq" data-display="false">e_1</span> és <span class="wp-katex-eq" data-display="false">e_2</span> publikus kitevők vannak rendelve. Nagy az esély rá, hogy e két kitevő egymáshoz <strong><em>relatív prím</em></strong>, azaz <span class="wp-katex-eq" data-display="false">(e_1,e_2)=1</span>, és ebben az esetben egy támadó sajnos meg tudja fejteni az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenetet. Ő ugyanis az alábbi kongruenciákat írhatja fel:</p> <span class="wp-katex-eq katex-display" data-display="true">\begin{aligned}y_1&\equiv x^{e_1}\pmod m \\ y_2&\equiv x^{e_2}\pmod m\end{aligned}</span> <p>Ebben a kongruenciarendszerben a támadó számára ismét egyedül az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenet ismeretlen, hiszen az összes többi paraméter a nyilvános kulcstárból, valamint a kommunikációs csatorna lehallgatásával megismerhető. Nézzük, hogy mihez kezd mindezzel a támadó.</p> <p>A <strong><em>Bézout-lemmából</em></strong> (<a href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere/#yp-element-5620" class="yp-element-link">21.1. Tétel</a>) tudjuk, hogy bármely két egész szám kitüntetett közös osztója kifejezhető a két szám <strong><em>lineáris kombinációjaként</em></strong>. Ezt jelen esetben az <span class="wp-katex-eq" data-display="false">e_1</span> és <span class="wp-katex-eq" data-display="false">e_2</span> kitevőkre alkalmazhatjuk. Mivel róluk azt mondtuk, hogy relatív prímek – azaz <span class="wp-katex-eq" data-display="false">(e_1,e_2)=1</span> –, ezért a <strong><em>Bézout-lemma</em></strong> alapján léteznek olyan <span class="wp-katex-eq" data-display="false">u</span> és <span class="wp-katex-eq" data-display="false">v</span> egész számok, amelyekre teljesül az alábbi:</p> <span class="wp-katex-eq katex-display" data-display="true">(e_1,e_2)=1=u\cdot e_1 + v\cdot e_2</span> <p>Ráadásul a támadó a keresett <span class="wp-katex-eq" data-display="false">u</span> és <span class="wp-katex-eq" data-display="false">v</span> egész számokat hatékonyan elő tudja állítani a <strong><em>kibővített euklidészi algoritmus</em></strong> segítségével, amelyről a <a rel="noreferrer noopener" href="https://youproof.hu/kriptografia/21-rsa-algoritmus-kibovitett-euklideszi-algoritmus-euler-fuggveny-kulcsgeneralas-ismetelt-negyzetreemeles-modszere#extended-euclidean-algorithm" target="_blank">21. részben</a> volt szó részletesen. Most vizsgáljuk meg, hogy a kiszámított <span class="wp-katex-eq" data-display="false">u</span> és <span class="wp-katex-eq" data-display="false">v</span> egész számokból, valamint a kommunikációs csatornán elfogott <span class="wp-katex-eq" data-display="false">y_1</span> és <span class="wp-katex-eq" data-display="false">y_2</span> kódszövegekből képzett alábbi kifejezés mivel kongruens modulo <span class="wp-katex-eq" data-display="false">m</span>:</p> <span class="wp-katex-eq katex-display" data-display="true">y_1^u\cdot y_2^v \equiv ?\pmod m</span> <p>Mivel <span class="wp-katex-eq" data-display="false">y_1\equiv x^{e_1}\pmod m</span> és <span class="wp-katex-eq" data-display="false">y_2\equiv x^{e_2}\pmod m</span> az RSA-kódolás alapján, ezért a <strong><em>kongruencia tulajdonságairól</em></strong> szóló <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5263" class="yp-element-link">20.2. Tétel</a> 8. és 5. pontjait alkalmazva ezt kapjuk:</p> <span class="wp-katex-eq katex-display" data-display="true">(\underbrace{x^{e_1}}_{\equiv y_1})^u\cdot (\underbrace{x^{e_2}}_{\equiv y_2})^v \equiv \ ?\pmod m</span> <p>A baloldali kifejezést a <strong><em>hatványozás azonosságairól</em></strong> szóló <a href="https://youproof.hu/kriptografia/18-modularis-aritmetika-homomorfizmus-kongruencia-reszgyuru-ideal-maradekosztalygyuru/#yp-element-4612" class="yp-element-link">18.8. Tétel</a> 2. és 3. pontjai alapján átírhatjuk az alábbi módon:</p> <span class="wp-katex-eq katex-display" data-display="true">x^{u\cdot e_1 + v\cdot e_2}\equiv \ ?\pmod m</span> <p>A Bézout-lemma alapján a kitevőről viszont már tudjuk, hogy az az <span class="wp-katex-eq" data-display="false">(e_1,e_2)=1</span> kitüntetett közös osztóval egyezik meg, azaz teljesül az alábbi:</p> <span class="wp-katex-eq katex-display" data-display="true">x^{\overbrace{u\cdot e_1 + v\cdot e_2}^{=1}}\equiv x\pmod m</span> <p>A támadó tehát pusztán publikusan, illetve a csatorna lehallgatása által megszerezhető információkból ki tudja számítani az <span class="wp-katex-eq" data-display="false">x</span> nyílt szöveget anélkül, hogy feltörte volna az RSA-t. A fentiek alapján ugyanis nincs más dolga, mint kiszámítani az <span class="wp-katex-eq" data-display="false">y_1^u\cdot y_2^v</span> kifejezést, amely tehát biztosan az <span class="wp-katex-eq" data-display="false">x</span> nyílt üzenettel lesz kongruens modulo <span class="wp-katex-eq" data-display="false">m</span>.</p> <p>Felhívnánk a figyelmet azonban egy apró „csalásra”, amelyet a fenti okfejtésben elkövettünk. Vizsgáljuk meg ugyanis jobban a Bézout-lemmából kapott <span class="wp-katex-eq" data-display="false">u\cdot e_1 + v\cdot e_2=1</span> egyenletet. Mivel itt az <span class="wp-katex-eq" data-display="false">e_1</span> és <span class="wp-katex-eq" data-display="false">e_2</span> kitevők mindketten pozitívak, ezért ebből következik, hogy <span class="wp-katex-eq" data-display="false">u</span> és <span class="wp-katex-eq" data-display="false">v</span> közül pontosan az egyik szükségképpen <strong><em>negatív</em></strong>. Ők viszont a fenti <span class="wp-katex-eq" data-display="false">y_1^u\cdot y_2^v</span> kifejezésben kitevőkként szerepelnek. Márpedig ebben az esetben elvileg nem használhatnánk a <strong><em>hatványozás azonosságairól</em></strong> szóló <a href="https://youproof.hu/kriptografia/18-modularis-aritmetika-homomorfizmus-kongruencia-reszgyuru-ideal-maradekosztalygyuru/#yp-element-4612" class="yp-element-link">18.8. Tétel</a>t és a <strong><em>kongruencia tulajdonságairól</em></strong> szóló <a href="https://youproof.hu/kriptografia/20-kongruencia-redukalt-maradekosztaly-euler-fuggveny-linearis-kongruencia-maradekrendszer-euler-fermat-tetel/#yp-element-5263" class="yp-element-link">20.2. Tétel</a>t, hiszen ezeket csak pozitív kitevőkre bizonyítottuk. Arról már nem is beszélve, hogy az eddigi definícióink alapján negatív kitevőket egyelőre nem is tudunk értelmezni.</p> <p>Ennek a kis hiányosságnak a pótlását a következő részre halasztjuk, mivel ehhez fel kell építeni néhány újabb fontos algebrai fogalmat. Ám elöljáróban megjegyezzük, hogy a hatványozás azonosságai és a kongruenciák tulajdonságai ebben a kibővített értelmezésben is érvényben fognak maradni. Így válik majd a fenti érvelés teljessé. Konklúzióként azonban elmondhatjuk, hogy a közös modulus választását mindenképpen el kell kerülni az RSA-algoritmuson alapuló kriptográfiai rendszerekben.</p> <p><strong><em>Ebben a részben tehát főként azzal a problémával foglalkoztunk, hogy hogyan tud Alice és Bob az RSA-kulcsgeneráláshoz szükséges óriási prímszámokat találni. Ennek keretében megmutattuk, hogy a hagyományos, osztáspróbákon alapuló módszer a gyakorlatban a lassúsága miatt nem alkalmazható. Ezért bemutattunk két valószínűségi prímtesztet, amelyek a kis Fermat-tételen alapulnak. Az első a Fermat-prímteszt volt, amelynek fő hátránya, hogy léteznek olyan összetett számok, amelyeket nem tud kiszűrni. Ezeket univerzális álprímeknek vagy Carmichael-számoknak nevezzük, amelyekről a közelmúltban kimutatták, hogy sajnos végtelen sok van belőlük. Ezt a problémát kiküszöbölendő bemutattuk a Miller-Rabin-prímtesztet, amely – úgy tűnik – kiszűri az univerzális álprímeket is. Végül felhívtuk a figyelmet pár olyan dologra, amelyekre Alice-nak és Bob-nak oda kell figyelniük a kulcsgenerálás során.</em></strong></p> <p><strong><em>A következő részben megismerkedünk az absztrakt algebra talán legfontosabb ágának, az úgynevezett csoportelméletnek az alapjaival. Ezután az így felépített eszközök segítségével igazolni fogjuk, hogy a Miller-Rabin-prímtesztre nézve valóban nem léteznek univerzális álprímek. Végül adunk egy felső korlátot is annak valószínűségére, hogy egy összetett számot tévesen prímmé nyilvánít ez a teszt.</em></strong></p> <p><strong><em>A következő részt <a href="https://youproof.hu/kriptografia/24-csoport-reszcsoport-mellekosztaly-lagrange-tetel-csoport-rendje-elem-rendje-miller-rabin-primteszt/">itt</a> találod…</em></strong></p> </div><!-- .entry-content --> <!-- Facebook like/share --> <!--div><strong><em>Tetszett a cikk? Oszd meg másokkal is!</em></strong></div--> <div class="fb-like" data-href="https://youproof.hu/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/" data-width="100" data-layout="button" data-action="like" data-size="large" data-show-faces="false" data-share="true"></div> <!-- END Facebook like/share --> <!-- Facebook follow --> <div class="yp-facebook-follow"> <a class="button" href="https://www.facebook.com/youproof.hu" target="_blank">Látogass el Facebook-oldalunkra!</a> </div> <!-- END Facebook follow --> </article> <!-- Ads --> <div class="yp-ads"> <h5>Kapcsolódó oldal:</h5> <a href="http://ematlap.hu" target="_blank"> <img src="https://youproof.hu/wp-content/themes/minimum-minimal-child/assets/images/erinto_logo.png" width="85%" height="85%" alt="Érintő - Elektronikus Matematikai Lapok"> </a> </div> <!-- END Ads --> <div class="entry-meta cat-and-tags"> <div id="categories"><span class="icon-archive"></span> <p><a href="https://youproof.hu/kategoria/elemi-szamelmelet/" rel="category tag">Elemi számelmélet</a></p></div> <div id="tags"><span class="icon-tags"></span> <p><a href="https://youproof.hu/cimke/asszocialt/" rel="tag">asszociált</a>, <a href="https://youproof.hu/cimke/bezout-lemma/" rel="tag">Bézout-lemma</a>, <a href="https://youproof.hu/cimke/carmichael-szam/" rel="tag">Carmichael-szám</a>, <a href="https://youproof.hu/cimke/egyseg/" rel="tag">egység</a>, <a href="https://youproof.hu/cimke/euklideszi-algoritmus/" rel="tag">euklidészi algoritmus</a>, <a href="https://youproof.hu/cimke/felbonthatatlan/" rel="tag">felbonthatatlan</a>, <a href="https://youproof.hu/cimke/fermat-faktorizacio/" rel="tag">Fermat-faktorizáció</a>, <a href="https://youproof.hu/cimke/fermat-primteszt/" rel="tag">Fermat-prímteszt</a>, <a href="https://youproof.hu/cimke/kinai-maradektetel/" rel="tag">kínai maradéktétel</a>, <a href="https://youproof.hu/cimke/kis-fermat-tetel/" rel="tag">kis Fermat-tétel</a>, <a href="https://youproof.hu/cimke/kongruencia/" rel="tag">kongruencia</a>, <a href="https://youproof.hu/cimke/kongruenciarendszer/" rel="tag">kongruenciarendszer</a>, <a href="https://youproof.hu/cimke/maradekosztaly/" rel="tag">maradékosztály</a>, <a href="https://youproof.hu/cimke/miller-rabin-primteszt/" rel="tag">Miller-Rabin-prímteszt</a>, <a href="https://youproof.hu/cimke/prim/" rel="tag">prím</a>, <a href="https://youproof.hu/cimke/primteszt/" rel="tag">prímteszt</a>, <a href="https://youproof.hu/cimke/relativ-prim/" rel="tag">relatív prím</a>, <a href="https://youproof.hu/cimke/univerzalis-alprim/" rel="tag">univerzális álprím</a></p></div> </div> </div><!-- #primary --> <div class="row"> <div class="large-7 medium-8 small-11 small-centered columns"> <div id="above-comments-widget-area" class="widget-area" role="complementary"> <aside class="widget_text row widget"><div id="custom_html-2" class="widget_text medium-12 columns widget_custom_html"><h2 class="widget-title">Add meg az email címed, hogy értesülhess a legújabb tartalmakról!</h2><div class="textwidget custom-html-widget"><div id="mc_embed_signup" class="medium-12"> <form action="https://youproof.us20.list-manage.com/subscribe/post?u=fb18d5fa12302b3158f19d229&id=e596e966ba" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> <div id="mc_embed_signup_scroll"> <div class="mc-field-group"> <label for="mce-EMAIL">Email cím</label> <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" required="true"/> <label> <input name="AGREE_TO_TERMS" type="checkbox" value="1" required="true"> <a href="https://youproof.hu/adatkezeles/" target="_blank" rel="noopener">Elolvastam és elfogadom a felhasználási feltételeket</a> </label> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> <div style="position: absolute; left: -5000px;" aria-hidden="true"> <input type="text" name="b_fb18d5fa12302b3158f19d229_e596e966ba" tabindex="-1" value=""> </div> <div class="clear"> <input type="submit" value="Feliratkozok" name="subscribe" id="mc-embedded-subscribe" class="button"> </div> </div> </form> </div></div></div></aside> </div><!-- #above-comments-posts-widget-area --> <div id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Vélemény, hozzászólás? <small><a rel="nofollow" id="cancel-comment-reply-link" href="/kriptografia/23-primteszteles-fermat-primteszt-miller-rabin-primteszt-carmichael-szam-univerzalis-alprim-fermat-faktorizacio/#respond" style="display:none;">Válasz megszakítása</a></small></h3><form action="https://youproof.hu/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Az e-mail címet nem tesszük közzé.</span> <span class="required-field-message">A kötelező mezőket <span class="required">*</span> karakterrel jelöltük</span></p><p class="comment-form-comment"><label for="comment">Hozzászólás <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Név <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p> <p class="comment-form-email"><label for="email">E-mail cím <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p> <p class="comment-form-url"><label for="url">Honlap</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit button" value="Hozzászólás küldése" /> <input type='hidden' name='comment_post_ID' value='6204' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="076de30e9f" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="6"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div><!-- #respond --> </div><!-- .comments-area --> </div> </div> </div> <!-- #container --> <footer id="site-footer" > <div id="footermenu" class="row"> <div class="columns"> <div class="menu footernav"><ul id="footer-navigation" class="menu"><li id="menu-item-36" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-36"><a href="https://youproof.hu/impresszum/">Impresszum</a></li> <li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40"><a href="https://youproof.hu/suti-cookie-kezelese/">Süti-Cookie</a></li> <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-58"><a rel="privacy-policy" href="https://youproof.hu/adatkezeles/">Adatkezelés</a></li> <li id="menu-item-65" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-65"><a href="https://youproof.hu/jogi-nyilatkozat/">Jogi nyilatkozat</a></li> </ul></div> </div> </div><!-- #footernav --> <div id="copyright" class="row"> <div class="columns"> © 2024 YOUPROOF - Minden jog fenntartva </div> <div class="columns">v1.2.2</div> </div><!-- #copyright --> <link rel='stylesheet' id='katex-css' href='https://youproof.hu/wp-content/plugins/wp-katex/assets/katex.min.css?ver=0.11.0' type='text/css' media='all' /> <script type="text/javascript" id="cookie-notice-front-js-before"> /* <![CDATA[ */ var cnArgs = {"ajaxUrl":"https:\/\/youproof.hu\/wp-admin\/admin-ajax.php","nonce":"162003720d","hideEffect":"fade","position":"bottom","onScroll":false,"onScrollOffset":100,"onClick":false,"cookieName":"cookie_notice_accepted","cookieTime":2592000,"cookieTimeRejected":2592000,"globalCookie":false,"redirection":false,"cache":false,"revokeCookies":false,"revokeCookiesOpt":"automatic"}; /* ]]> */ </script> <script type="text/javascript" src="https://youproof.hu/wp-content/plugins/cookie-notice/js/front.min.js?ver=2.4.16" id="cookie-notice-front-js"></script> <script type="text/javascript" src="https://youproof.hu/wp-content/themes/minimum-minimal/assets/js/app.js?ver=1.0" id="minimumminimal-main-js"></script> <script type="text/javascript" src="https://youproof.hu/wp-content/themes/minimum-minimal/foundation.js?ver=1" id="minimumminimal-foundation-init-js-js"></script> <script type="text/javascript" src="https://youproof.hu/wp-includes/js/comment-reply.min.js?ver=6.5.5" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" src="https://youproof.hu/wp-content/plugins/youproof-plugin/js/yp-element-expander.js?ver=1.0" id="yp-element-script-js"></script> <script type="text/javascript" src="https://youproof.hu/wp-content/plugins/wp-katex/assets/katex.min.js?ver=0.11.0" id="katex-js"></script> <script defer type="text/javascript" src="https://youproof.hu/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1713534996" id="akismet-frontend-js"></script> <script>!function(){"use strict";for(var e=document.querySelectorAll(".wp-katex-eq"),t=0;t<e.length;t++){var r=e[t],a=document.createElement("span");try{katex.render(r.textContent,a,{displayMode:"true"===r.getAttribute("data-display"),throwOnError:!1})}catch(n){a.style.color="red",a.textContent=n.message}r.parentNode.replaceChild(a,r)}}();</script> <!-- Cookie Notice plugin v2.4.16 by Hu-manity.co https://hu-manity.co/ --> <div id="cookie-notice" role="dialog" class="cookie-notice-hidden cookie-revoke-hidden cn-position-bottom" aria-label="Cookie Notice" style="background-color: rgba(0,0,0,1);"><div class="cookie-notice-container" style="color: #fff"><span id="cn-notice-text" class="cn-text-container">Kedves Látogató! Tájékoztatjuk, hogy a felhasználói élmény fokozásának érdekében sütiket alkalmazunk. A honlapunk használatával ön a tájékoztatásunkat tudomásul veszi.</span><span id="cn-notice-buttons" class="cn-buttons-container"><a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button cn-button-custom button" aria-label="Elfogadom">Elfogadom</a><a href="https://youproof.hu/suti-cookie-kezelese/" target="_blank" id="cn-more-info" class="cn-more-info cn-button cn-button-custom button" aria-label="Tájékoztató">Tájékoztató</a></span><span id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon" title="Nem"></span></div> </div> <!-- / Cookie Notice plugin --> </body> </html>