Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Biztonságos programozás

    A tantárgy angol neve: Secure Programming

    Adatlap utolsó módosítása: 2012. május 30.

    Tantárgy lejárati dátuma: 2015. június 30.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

     

    Villamosmérnöki szak 

    Mérnök informatikus szak

    Szabadon választható tantárgy

     

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIMIBV08   4/0/0/v 4  
    3. A tantárgyfelelős személy és tanszék Hornák Zoltán,
    A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/vimivb08/
    4. A tantárgy előadója

    Hornák Zoltán, mestertanár, okleveles mérnök informatikus

     

     

     

     

    5. A tantárgy az alábbi témakörök ismeretére épít C/C++ és JAVA programozási ismeretek

     

    Alapvető hálózati ismeretek

     

    6. Előtanulmányi rend
    Ajánlott:
    -
    7. A tantárgy célkitűzése

    Az előadások során a hallgatók megismerhetik a tipikus programozói hibákból eredő biztonsági lyukakat, az ezekre épülő támadási és védekezési módszereket, valamint a C/C++ és a JAVA nyelv, illetve a WEB-es technológiák specifikus sérülékenységeit. A tantárgy célja, hogy – nem csak biztonság-kritikus rendszereket fejleszteni kívánókkal – megismertesse a programhibákból eredő biztonsági lyukak veszélyeit és olyan fejlesztési módszerekre képezze őket, amelyek betartásával ezen hibák, ennek eredményeként pedig a tipikus biztonsági lyukak elkerülhetőek.

    8. A tantárgy részletes tematikája

     

     


    Biztonsági szempontból veszélyes programozói hibák
        Kihasználható biztonsági lyukak veszélyei
        Biztonsági lyukak rendszerezése
    Gyakori programozói hibákból eredő biztonsági lyukak
        Verem túlcsordulás (stack overflow / buffer overflow – BoF)
        Halom túlcsordulás (heap overflow)
        Szám túlcsordulás (integer overflow) / előjeles hiba (signedness bug)
        Formázó string sebezhetősége (printf format string vulnerability – PFS)
        Tömbindexelési hiba (array indexing error) / unicode bug
    Nem kifejezetten programozói hibákból eredő biztonsági lyukak
        Mellék csatornás támadások (side channel attacks) – RSA timing attack
        Sorrendi hibák, versenyhelyzetek (time-of-checking-to-time-of-usage – toctou / serialization errors / racing conditions)
        Protokoll hibák és következményeik
    Védekezés a biztonsági lyukak ellen – alapelvek
        IT biztonság tervezési alapmódszerek
        Védekezési alapelvek
        Specifikus védelem a típushibák ellen – veszélyforrás alapú megközelítés
        Különböző szintű specifikus védelmek
    Védekezés a biztonsági lyukak ellen – gyakorlati módszerek
        Verem túlcsordulás (stack overflow)
        Halom túlcsordulás (heap overflow)
        Szám túlcsordulás (integer overflow, signedness bug)
        Rejtett csatornák kivédése (timing channel)
    Biztonságos programozási technikák
        Saltzer 8 alapelve
        Bishop féle robosztus programozási alapelvek
    Az Internet technológia és a Web szolgáltatások veszélyei
        Az Internet technológia és veszélyei
        Internet biztonsági követelményei
        Veszélyforrások modellezése
        Web Services veszélyforrások
    Web szolgáltatások biztonsága
        Web services biztonsági alapok
        Személyazonosság-kezelés (Identity management)
        Alap technológiák
        Web Services biztonsági szabványok
        Security Assertion Markup Language (SAML)
        SAML Profilok
        SAML Architektúra
        Kapcsolódó szabványok
    J2EE Security
        Java 2 Platform Security alapok
        J2EE Biztonsági architektúrája
        Deklaratív és programozott biztonsági szolgáltatások
        J2EE Component/Tier-Level Security
        J2EE Security
        JAVA és a rejtjelezés
        J2EE Client Security
    JAVA specifikus sérülékenységek
        JAVA nyelv sajátosságai, biztonsági előnyei (C/C++-szal szemben)
        API hívások típushibái (API Abuse)
        Gyenge kódminőségből származó veszélyek (Code Quality)
        Információ-beágyazási hibák (Encapsulation)
        Környezeti veszélyek (Environment)
        Programhibákból származó biztonsági veszélyek (Errors)
        Bemenet-ellenőrzési hibák (Input validation and representation)
        Biztonsági funkciók (Security Features)
        Időzétési és állapotproblémák (Time and State)

     

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Előadás.

    10. Követelmények a.       A szorgalmi időszakban: kötelező házi feladat

     

    b.       A vizsgaidőszakban: szóbeli vizsga

     

    c.       Elővizsga: nincs

     

    11. Pótlási lehetőségek

    A házi feladat (új forma: otthoni feladat) beadása a pótlási időszakban is lehetséges.

    12. Konzultációs lehetőségek

    A konzultáció e-mailben történik: hornak@mit.bme.hu

    Szükség esetén szóban is van mód konzultációra.

     

    13. Jegyzet, tankönyv, felhasználható irodalom

    Elektronikus jegyzetek:

    cím: "Védekezés a biztonsági szempontból veszélyes programozói hibák ellen"  

    terjedelem: 50 oldal, magyar 

    szerző: Hornák Zoltán

    cím: "Secure C, C++, and Java Programming"  

    terjedelem: Power Point slide sorozat, 590 oldal, magyar 

    szerző: Hornák Zoltán 

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra56
    Félévközi készülés órákra20
    Felkészülés zárthelyire0
    Házi feladat elkészítése10
    Kijelölt írásos tananyag elsajátítása12
    Vizsgafelkészülés22
    Összesen120
    15. A tantárgy tematikáját kidolgozta

    Hornák Zoltán, mestertanár, okleveles mérnök informatikus

    Egyéb megjegyzések -