Basic Cryptography and Programming with Crypto API

بواسطة: Coursera

Overview

In this MOOC, we will learn the basic concepts and principles of crytography, apply basic cryptoanalysis to decrypt messages encrypted with mono-alphabetic substitution cipher, and discuss the strongest encryption technique of the one-time-pad and related quantum key distribution systems. We will also learn the efficient symmetric key cryptography algorithms for encrypting data, discuss the DES and AES standards, study the criteria for selecting AES standard, present the block cipher operating modes and discuss how they can prevent and detect the block swapping attacks, and examine how to defend against replay attacks. We will learn the Diffie-Hellman Symmetric Key Exchange Protocol to generate a symmetric key for two parties to communicate over insecure channel. We will learn the modular arithmetic and the Euler Totient Theorem to appreciate the RSA Asymmetric Crypto Algorithm, and use OpenSSL utility to realize the basic operations of RSA Crypto Algorithm. Armed with these knowledge, we learn how to use PHP Crypto API to write secure programs for encrypting and decrypting documents and for signing and verify documents. We then apply these techniques to enhance the registration process of a web site which ensures the account created is actually requested by the owner of the email account.

Syllabus

  • Basic Cryptography
    • In this module we learn the basic concepts and principles of crytography, introduce the basic concept of cryptoanalysis using mono-alphabetic substitution cipher as an example, and discuss the one-time-pad and quantum key distribution concepts.
  • Symmetric Key Cryptography
    • In this module we present the basic mechanism of symmetric key crytography algorithms, discuss the DES and AES standard, describe the criteria for selecting AES standard, present the block cipher operating modes and discuss how the block swapping attacks and replay attacks can be prevented and detected.
  • Asymmetric Key Cryptography
    • In this module we will learn the modular arithmetic, the Euler Totient Theorm, the RSA Asymmetric Crypto Algorithm, use OpenSSL to realize the basic operations of RSA Crypto Algorithm, and Diffie-Hellman Symmetric Key Exchange Protocol to derive session keys.
  • Develop Secure Programs with Crypto API
    • In this module, we learn how to use Crypto API to write secure programs for encrypting and decrypting documents, and for signing and verify documents. We then apply the techniques to enhance the registration process of a web site which ensures the account created is actually belonging to the owner of the email account the request profile.

Taught by

Edward Chow

Basic Cryptography and Programming with Crypto API
الذهاب الي الدورة

Basic Cryptography and Programming with Crypto API

بواسطة: Coursera

  • Coursera
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • intermediate
  • Arabic, French, Portuguese, Italian, German, Russian, English, Spanish, Kazakh, Hindi, Swedish, Korean, Greek, Chinese, Thai, Ukrainian, Japanese, Indonesian, Polish, Dutch, Turkish
8.1.2PHP Version305msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (198ms)
    • Application (106ms)
    • 1 x Booting (64.88%)
      197.94ms
      1 x Application (34.88%)
      106.41ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.55ms
      • select * from `courses` where `slug_ar` = 'basic-cryptography-and-programming-with-crypto-api' limit 1
        3.03ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. basic-cryptography-and-programming-with-crypto-api
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-02-10 20:16:15' where `id` = 702
        330μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-10 20:16:15
        • 1. 702
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (8)
        240μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (42) and `institutions`.`deleted_at` is null
        240μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 696 limit 1
        270μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 696
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        fgO5TCtbkNxg9dAZilEJYJx6gUPAAdCdTd85rKTO
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/basic-...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/basic-cryptography-and-programming-with-crypto-api
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "18.118.51.153" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "18.118.51.153" ] "cf-ray" => array:1 [ 0 => "90fec69eee1c2304-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "18.118.51.153" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "18.118.51.153" "HTTP_CF_RAY" => "90fec69eee1c2304-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "36128" "REMOTE_ADDR" => "172.71.254.200" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/basic-cryptography-and-programming-with-crypto-api" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1739218575.4243 "REQUEST_TIME" => 1739218575 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 10 Feb 2025 20:16:15 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ii85WUJaQXJQWTRzRnpFclh5WXVjaFE9PSIsInZhbHVlIjoiQ3pUN2hwQ3BCbFhjUFQvSW5zekJwWG9SbnBOZWEwYjFKRHdzcUtDanhqa3hENU11ZGdxUnFsN3lYUW9OdkZuRlVmZWY0YWhqVzlzWHE1OWFMRFNxZ1ZjazRiRExoa1J5U0h2OXdoalBFQUxialAwNHVvV2ZlbStNRDhzZDFpWTkiLCJtYWMiOiI0MTc1Y2Y5ODE4NGZlNWYxYzQwMjE1ODI1M2NkMmNlOGY2ZTk1ZjE2NDBhYWY3YTgwMGUzZmU3NjBhNWE3ZTY0IiwidGFnIjoiIn0%3D; expires=Mon, 10 Feb 2025 22:16:15 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ii85WUJaQXJQWTRzRnpFclh5WXVjaFE9PSIsInZhbHVlIjoiQ3pUN2hwQ3BCbFhjUFQvSW5zekJwWG9SbnBOZWEwYjFKRHdzcUtDanhqa3hENU11ZGdxUnFsN3lYUW9OdkZuRlVmZWY0Y" 1 => "laravel_session=eyJpdiI6Iml0Z2JJQjROb1ArT1I4QURRK1hoSUE9PSIsInZhbHVlIjoiSmVlektMbE5DTU0xWTlpcWNlYWVtVzlFbVZSQkVDakRiMVlveHR2UHRzSmNYbkx4T1llSkxYOWpXd3pwZ3hSc2VSMzIxS3ZpNnlOSjUzZVRKNnZ1dGQzLytWNDgvbi9yTy9Ob0hBWFdvUS9CbkV6ZmNSNGNySUdsUmpqZ05TUlgiLCJtYWMiOiJhMmU2MThiY2ZjMjcxY2JkODQzYmNiNGU1NmM5MmFmYTI1ZmIwMjdkYTViZjIyZThkNWEzNWViNDY2NWNiZTI0IiwidGFnIjoiIn0%3D; expires=Mon, 10 Feb 2025 22:16:15 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Iml0Z2JJQjROb1ArT1I4QURRK1hoSUE9PSIsInZhbHVlIjoiSmVlektMbE5DTU0xWTlpcWNlYWVtVzlFbVZSQkVDakRiMVlveHR2UHRzSmNYbkx4T1llSkxYOWpXd3pwZ3hSc2VS" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ii85WUJaQXJQWTRzRnpFclh5WXVjaFE9PSIsInZhbHVlIjoiQ3pUN2hwQ3BCbFhjUFQvSW5zekJwWG9SbnBOZWEwYjFKRHdzcUtDanhqa3hENU11ZGdxUnFsN3lYUW9OdkZuRlVmZWY0YWhqVzlzWHE1OWFMRFNxZ1ZjazRiRExoa1J5U0h2OXdoalBFQUxialAwNHVvV2ZlbStNRDhzZDFpWTkiLCJtYWMiOiI0MTc1Y2Y5ODE4NGZlNWYxYzQwMjE1ODI1M2NkMmNlOGY2ZTk1ZjE2NDBhYWY3YTgwMGUzZmU3NjBhNWE3ZTY0IiwidGFnIjoiIn0%3D; expires=Mon, 10-Feb-2025 22:16:15 GMT; path=/XSRF-TOKEN=eyJpdiI6Ii85WUJaQXJQWTRzRnpFclh5WXVjaFE9PSIsInZhbHVlIjoiQ3pUN2hwQ3BCbFhjUFQvSW5zekJwWG9SbnBOZWEwYjFKRHdzcUtDanhqa3hENU11ZGdxUnFsN3lYUW9OdkZuRlVmZWY0Y" 1 => "laravel_session=eyJpdiI6Iml0Z2JJQjROb1ArT1I4QURRK1hoSUE9PSIsInZhbHVlIjoiSmVlektMbE5DTU0xWTlpcWNlYWVtVzlFbVZSQkVDakRiMVlveHR2UHRzSmNYbkx4T1llSkxYOWpXd3pwZ3hSc2VSMzIxS3ZpNnlOSjUzZVRKNnZ1dGQzLytWNDgvbi9yTy9Ob0hBWFdvUS9CbkV6ZmNSNGNySUdsUmpqZ05TUlgiLCJtYWMiOiJhMmU2MThiY2ZjMjcxY2JkODQzYmNiNGU1NmM5MmFmYTI1ZmIwMjdkYTViZjIyZThkNWEzNWViNDY2NWNiZTI0IiwidGFnIjoiIn0%3D; expires=Mon, 10-Feb-2025 22:16:15 GMT; path=/; httponlylaravel_session=eyJpdiI6Iml0Z2JJQjROb1ArT1I4QURRK1hoSUE9PSIsInZhbHVlIjoiSmVlektMbE5DTU0xWTlpcWNlYWVtVzlFbVZSQkVDakRiMVlveHR2UHRzSmNYbkx4T1llSkxYOWpXd3pwZ3hSc2VS" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "fgO5TCtbkNxg9dAZilEJYJx6gUPAAdCdTd85rKTO" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/basic-cryptography-and-programming-with-crypto-api" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]