{"id":3299,"date":"2021-05-07T11:36:02","date_gmt":"2021-05-07T10:36:02","guid":{"rendered":"https:\/\/cyberschool.univ-rennes.fr\/?page_id=3299"},"modified":"2026-03-12T14:29:33","modified_gmt":"2026-03-12T13:29:33","slug":"maths-for-security","status":"publish","type":"page","link":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/","title":{"rendered":"Maths for Security"},"content":{"rendered":"\n<section class=\"txt\">\n    <div class=\"container\">\n        <div class=\"bloc-txt\">\n                            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Teaching goals<\/h2>\n                        <p>En math\u00e9matiques : Connaitre les algorithmes d\u2019arithm\u00e9tique multipr\u00e9cision et leur classe de complexit\u00e9 (addition, soustraction, multiplication, r\u00e9duction, carr\u00e9, inversion, exponentiation). \u00c9tant donn\u00e9 un algorithme op\u00e9rant sur des entiers multipr\u00e9cisions, en donner sa complexit\u00e9.<\/p>\n<p>En programmation C : savoir utiliser gitlab (principes de base du versionnement de fichier) \u00e0 plusieurs, organiser un module de code C (fichiers en-t\u00eate, fichiers source, tests), Makefile, tester, d\u00e9bugger, g\u00e9rer les dates limites de rendu.<\/p>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<section class=\"txt\">\n    <div class=\"container\">\n        <div class=\"bloc-txt\">\n                            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Course description<\/h2>\n                        <div class=\"contain-txt\">\n<div class=\"contain-txt\">\n<p>Le cours sur 8 semaines d\u00e9crit l\u2019arithm\u00e9tique modulaire des entiers multipr\u00e9cision qui sont des entiers dont la taille d\u00e9passe la pr\u00e9cision des types de base support\u00e9s par un processeur (couramment 64 bits). L\u2019arithm\u00e9tique multipr\u00e9cision est n\u00e9cessaire en cryptographie asym\u00e9trique, et des biblioth\u00e8ques d\u00e9di\u00e9es impl\u00e9mentant ces calculs sont utilis\u00e9es dans d\u2019autres cours (BC en M1, BCS en M2 notamment). Le but de ce cours est d\u2019exp\u00e9rimenter les op\u00e9rations multipr\u00e9cision, de comprendre les structures utilis\u00e9es, et de d\u00e9couvrir les classes de complexit\u00e9 associ\u00e9es \u00e0 diff\u00e9rents algorithmes (par exemple addition, multiplication, inversion modulaire, exponentiation modulaire). Les TPs en langage C permettent d\u2019obtenir au 8<sup>e<\/sup> TP une impl\u00e9mentation compl\u00e8te d\u2019un chiffrement et d\u00e9chiffrement RSA de taille cryptographique (jusqu\u2019\u00e0 2048 bits).<\/p>\n<p>La programmation en C se fait dans le cadre \u00ab\u00a0C pour l\u2019embarqu\u00e9\u00a0\u00bb, autrement dit la m\u00e9moire est allou\u00e9e \u00e0 la compilation. Un soin particulier est apport\u00e9 aux tests\u00a0: tests unitaires, vecteurs de tests, tests des cas limites.<\/p>\n<\/div>\n<\/div>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<section class=\"txt\">\n    <div class=\"container\">\n        <div class=\"bloc-txt\">\n                            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Course content<\/h2>\n                        <ul>\n<li>Les types de base en C, les op\u00e9rations de base, la repr\u00e9sentation des mots-machine<\/li>\n<li>Structure en C pour la multipr\u00e9cision<\/li>\n<li>Utilisation de la multipr\u00e9cision en cryptographie<\/li>\n<li>Sch\u00e9ma de chiffrement et d\u00e9chiffrement RSA en cryptographie et op\u00e9rations modulaires<\/li>\n<li>Algorithmes d\u2019arithm\u00e9tique multi-pr\u00e9cision (addition, soustraction, n\u00e9gation, multiplication, pgcd avec algorithme d\u2019Euclide, identit\u00e9 de B\u00e9zout avec Euclide \u00e9tendu)<\/li>\n<li>Algorithmes d\u2019arithm\u00e9tique modulaire multi-pr\u00e9cision (r\u00e9duction modulaire, multiplication schoolbook, Karatsuba, Montgomery, exponentiation binaire, inversion modulaire)<\/li>\n<li>Conversions d\u2019affichage entre hexad\u00e9cimal et d\u00e9cimal en multi-pr\u00e9cision<\/li>\n<li>Classes de complexit\u00e9<\/li>\n<li>S\u00e9curit\u00e9 math\u00e9matique de RSA : difficult\u00e9 de la factorisation des grands entiers<\/li>\n<li>Nombres premiers, densit\u00e9, test de composition probabiliste : Miller-Rabin pour g\u00e9n\u00e9rer des cl\u00e9s RSA<\/li>\n<\/ul>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"tuiles\">\n    <div class=\"container\">\n                <div class=\"bloc\">\n            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Prerequisites<\/h2>\n            <p>Notions qui sont abord\u00e9es en premi\u00e8re ann\u00e9e de licence d\u2019informatique ou de math\u00e9matiques : Avoir des notions d\u2019arithm\u00e9tique enti\u00e8re et arithm\u00e9tique modulaire (pgcd, r\u00e9duction modulaire), avoir des notions de codage de l\u2019information et d\u2019architecture des ordinateurs (octet, notation hexad\u00e9cimale\u2026), connaitre dans un langage de programmation les types de base : entiers, entiers non sign\u00e9s, les op\u00e9rations de base : +, -, *, \/, %, et les structures de base comme les tableaux.<\/p>\n<p>Se rem\u00e9morer le cours de th\u00e9orie de l\u2019information de L1 (TIC) par exemple.<\/p>\n<p>Aucun pr\u00e9requis sp\u00e9cifique en programmation n\u2019est demand\u00e9, cependant les \u00e9tudiants doivent suivre conjointement le cours LLP (Low Level Programming, 5 ECTS) et conna\u00eetre un minimum le terminal unix.<\/p>\n\n                    <\/div>\n            <\/div>\n<\/section>\n\n\n\n<section class=\"txt\">\n    <div class=\"container\">\n        <div class=\"bloc-txt\">\n                            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Bibliography<\/h2>\n                        <p>Pour la programmation en langage C :<\/p>\n<ul>\n<li><a href=\"https:\/\/www.rocq.inria.fr\/secret\/Anne.Canteaut\/COURS_C\/cours.pdf\" target=\"_blank\" rel=\"noopener\">Programmation en language C, by Anne Canteaut<\/a><\/li>\n<li><a href=\"http:\/\/h.garreta.free.fr\/polys\/PolyC.pdf\" target=\"_blank\" rel=\"noopener\">Le langage C, by Henri Garreta, 2015<\/a><\/li>\n<\/ul>\n<p>Pour l\u2019arithm\u00e9tique modulaire multi-pr\u00e9cision\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/cacr.uwaterloo.ca\/hac\/\" target=\"_blank\" rel=\"noopener\">Handbook of Applied Cryptography, by Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone, chapter 14, 2001<\/a><\/li>\n<li>The Art of Computer Programming, Volume 2: Seminumerical Algorithms, third edition, by Donald E. Knuth, Section 4.3 Multiple Precision Arithmetic, 1997<\/li>\n<li><a href=\"https:\/\/maths-people.anu.edu.au\/~brent\/pd\/mca-cup-0.5.9.pdf\" target=\"_blank\" rel=\"noopener\">Modern Computer Arithmetic, by Richard P. Brent and Paul Zimmermann, 2010<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<section class=\"txt\">\n    <div class=\"container\">\n        <div class=\"bloc-txt\">\n                            <h2><span class=\"elipse\"><\/span><span class=\"trait\"><\/span>Biography<\/h2>\n                        <p><strong>Aurore Guillevic<\/strong> has been a research scientist at Inria Nancy since 2016 and Rennes since 2024 (CAPSULE group), specialised in asymmetric cryptography, elliptic curves, and record computations.<br \/>\nShe was a PhD student at the Laboratoire Chiffre, Thales Communications, in 2010-2013, where she took part in the development of the company&#8217;s multi-precision library LibCryptoLCH in C language.<br \/>\nShe was adjunct assistant professor at \u00c9cole Polytechnique in 2017-2020 and visiting professor at Aarhus University (Denmark) in 2021-2022.<\/p>\n\n        <\/div>\n    <\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":11707,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Maths for Security - CyberSchool<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maths for Security - CyberSchool\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/\" \/>\n<meta property=\"og:site_name\" content=\"CyberSchool\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CSchoolRennes\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T13:29:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cyberschool.univ-rennes.fr\/app\/uploads\/2021\/02\/cover-social-network.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@CSchoolRennes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/\",\"url\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/\",\"name\":\"Maths for Security - CyberSchool\",\"isPartOf\":{\"@id\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/#website\"},\"datePublished\":\"2021-05-07T10:36:02+00:00\",\"dateModified\":\"2026-03-12T13:29:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Education\",\"item\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Master\u2019s and postgraduate programmes\",\"item\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Master\u2019s Cybersecurity, Science of Software and Hardware Security\",\"item\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Study programme of the Master\u2019s Cybersecurity, Science of Software and Hardware Security\",\"item\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Maths for Security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/#website\",\"url\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/\",\"name\":\"CyberSchool\",\"description\":\"Just another WordPress site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cyberschool.univ-rennes.fr\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maths for Security - CyberSchool","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/","og_locale":"en_US","og_type":"article","og_title":"Maths for Security - CyberSchool","og_url":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/","og_site_name":"CyberSchool","article_publisher":"https:\/\/www.facebook.com\/CSchoolRennes\/","article_modified_time":"2026-03-12T13:29:33+00:00","og_image":[{"width":1500,"height":500,"url":"https:\/\/cyberschool.univ-rennes.fr\/app\/uploads\/2021\/02\/cover-social-network.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@CSchoolRennes","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/","url":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/","name":"Maths for Security - CyberSchool","isPartOf":{"@id":"https:\/\/cyberschool.univ-rennes.fr\/en\/#website"},"datePublished":"2021-05-07T10:36:02+00:00","dateModified":"2026-03-12T13:29:33+00:00","breadcrumb":{"@id":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/maths-for-security\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cyberschool.univ-rennes.fr\/en\/"},{"@type":"ListItem","position":2,"name":"Education","item":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/"},{"@type":"ListItem","position":3,"name":"Master\u2019s and postgraduate programmes","item":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/"},{"@type":"ListItem","position":4,"name":"Master\u2019s Cybersecurity, Science of Software and Hardware Security","item":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/"},{"@type":"ListItem","position":5,"name":"Study programme of the Master\u2019s Cybersecurity, Science of Software and Hardware Security","item":"https:\/\/cyberschool.univ-rennes.fr\/en\/education\/masters-and-postgraduate-programmes\/masters-cybersecurity-science-of-software-and-hardware-security\/study-programme-of-the-masters-cybersecurity-science-of-software-and-hardware-security\/"},{"@type":"ListItem","position":6,"name":"Maths for Security"}]},{"@type":"WebSite","@id":"https:\/\/cyberschool.univ-rennes.fr\/en\/#website","url":"https:\/\/cyberschool.univ-rennes.fr\/en\/","name":"CyberSchool","description":"Just another WordPress site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cyberschool.univ-rennes.fr\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/pages\/3299"}],"collection":[{"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/comments?post=3299"}],"version-history":[{"count":25,"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/pages\/3299\/revisions"}],"predecessor-version":[{"id":18444,"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/pages\/3299\/revisions\/18444"}],"up":[{"embeddable":true,"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/pages\/11707"}],"wp:attachment":[{"href":"https:\/\/cyberschool.univ-rennes.fr\/en\/wp-json\/wp\/v2\/media?parent=3299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}