9P by GN⁺ | ★ favorite | 댓글 1개
  • Stanford University의 Dan Boneh가 진행하는 무료 온라인 암호학 강좌로, 전체 강의 목록을 공개하고 공식 과제·프로젝트·기말시험은 Coursera에서 제공함
  • 무료 교재 A Graduate Course in Applied Cryptography가 함께 쓰이며, 강의보다 깊은 내용과 보안 증명, 연습문제를 보완함
  • 커리큘럼은 스트림 암호에서 디지털 서명까지 7주차로 이어지고, 각 주차가 교재 장·강의 영상·슬라이드와 연결됨
  • one-time pad, PRG, DES, AES, MAC, HMAC, TLS 1.2, Diffie-Hellman, RSA, ElGamal, 해시 기반 서명 등 실용 암호 구성 요소를 폭넓게 다룸
  • 개별 강의는 Coursera 영상으로 볼 수 있으며, 평가와 수료가 필요하면 Coursera 강좌에 등록하는 방식임

수강 방식과 교재

  • Stanford University의 Dan Boneh가 진행하는 온라인 암호학 강좌임
  • 무료 강좌의 전체 강의가 한 페이지에 정리되어 있음
  • 과제, 프로젝트, 기말시험까지 포함해 공식적으로 수강하려면 Coursera 강좌 페이지를 이용해야 함
  • 무료 교재는 D. Boneh와 V. Shoup의 A Graduate Course in Applied Cryptography
    • 강의보다 더 깊은 내용을 다루며 보안 증명과 많은 연습문제를 포함함

1주차: 강좌 개요와 스트림 암호

2주차: 블록 암호

3주차: 메시지 무결성과 충돌 저항 해시

4주차: 인증 암호와 구현상 함정

5주차: 키 교환과 수론 기초

6주차: 공개키 암호

7주차: 디지털 서명

  • 7주차는 교재 13–14장에 해당하며 디지털 서명과 해시 기반 서명을 다룸
  • 슬라이드는 Digital signatures와 Hash-based signatures 주제로 제공됨

댓글과 토론

Hacker News 의견들
  • Stanford 학생 때 CS255 Intro to Cryptography가 가장 좋아하던 과목 중 하나였고, Dan은 정말 뛰어난 강사였음
    Stanford 보안 강의 자료를 더 원한다면 CS253 Web Security (https://web.stanford.edu/class/cs253/)도 추천함. 공개하자면 이 과목은 내가 만들었고, CS356 Topics in Computer and Network Security (https://cs356.stanford.edu/)도 괜찮음
    CS253 영상은 여기 있음: https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...

    • 동의함. Boneh 교수의 155, 255, 251을 정말 좋아했고, 여러 해 동안 가장 좋아한 강사 중 한 명이었음
      재능이 뛰어나고 개념 설명을 아주 잘함
  • 몇 년 전에 이 교수의 온라인 암호학 강의를 들었는데 매우 좋았음
    수학 배경이 있는데도 그 수업을 듣고 전문 암호학자가 되고 싶지는 않다는 걸 깨달았고, 그것만으로도 꽤 괜찮은 수확이었음
    농담은 제쳐두고, 암호 시스템을 악마와 게임으로 분석하면서 암호화된 바이트에서 무작위 비트열을 구별하려는 방식이 정말 즐거웠음

    • 나도 몇 년 전 Coursera에서 그 강의를 들었고 정말 좋았음
      결론은 제대로 하기가 어렵기 때문에 직접 암호를 만들지 말라는 것. 꽤 냉소적이지만, 더 파고들고 싶은 흥미를 어느 정도 꺾어버렸음
  • 훌륭한 강의임. 다만 완료 예상 시간인 23시간은 해당 주제에 대한 사전 숙련도에 따라 크게 달라질 수 있음
    그 점을 감안해서 준비하고 페이스를 조절하는 게 좋음

  • 좋아 보이지만, 수학부터 시작하지 않고 암호 라이브러리 사용법을 실무자 관점에서 다루는 자료가 있으면 좋겠음
    RSA의 세부 구조를 알아야 하는 게 아니라, 원하는 성질을 가진 시스템을 만들기 위해 다른 기본 요소들과 어떻게 안전하게 조합할지 알아야 함

    • 기존 프로토콜을 사용하는 프로그램을 더 자신 있게 작성하고 싶어서 암호를 더 잘 이해하려고 David Wong의 Real-World Cryptography를 읽기 시작했음
      지금 4분의 3쯤 읽었고 만족 중임. 수학은 가볍게 다루지만 조금은 들어가며, 내부 동작을 이해하지 않으면 쓰기 불편하지만 실제로 내부 구현 작업을 할 필요는 없는 사람을 대상으로 한 책처럼 보임
      이 책 덕분에 겉보기에는 의도한 대로 동작하는 프로토콜을 기본 요소들로 조합할 수 있을 정도는 배웠다고 느낌. 동시에 프로토콜을 완전히 깨뜨릴 수 있는 미묘한 부분이 많고, 기본 요소 조합이 예상치 못한 약점을 만들 수 있으며, 나보다 훨씬 암호를 잘 아는 사람들도 안전한 기본 요소로 망가진 프로토콜을 만든다는 것도 배웠음
      찾던 책이 아닐 수도 있지만, 직접 설계하려는 게 아니라 암호를 이해하고 싶다면 좋은 책이라고 봄
    • 새로운 시스템에서 얻을 수 있다고 생각하는 능력에 대해서는 조심해야 함. 소프트웨어 개발자는 자신도 모르게 참신함의 방사선량을 여러 시버트씩 맞고 있는 경우가 많고, 지루한 이론을 충분히 다지지 않은 상태일 수 있음
      예를 들어 100명의 다른 개발자가 이미 성공적으로 해온 방식 그대로 libsodium을 쓴다면 괜찮음. 하지만 아주 작고 미묘한 몇 단계를 거치면, 자신도 모르게 새 암호 시스템을 합성하게 됨. libsodium 기본 요소로 보안 메시징 시스템을 만들려는 시도가 그런 예임
      이론을 많이 배워야 함. 중요함
    • Google에서 Cryptographic Right Answers를 검색해보면 됨. 몇 가지 글이 있고, 대부분 찾게 될 내용에서는 대체로 의견이 일치함
      예: https://gist.github.com/tqbf/be58d2d39690c3b366ad 또는 https://www.latacora.com/blog/2018/04/03/cryptographic-right...
    • 필요한 건 아마 Cryptography Engineering: Design Principles and Practical Applications 같은 책일 수 있음
      Bruce Schneier, Niels Ferguson, Tadayoshi Kohno의 책임
    • 안전한 조합은 이 강의에서 분명히 다룸. RSA의 세부 사항만 이야기하는 건 아니고, 물론 관련 강의도 있긴 하지만, 여러 기본 요소가 어떤 보안 성질을 만족하는지와 그것들을 안전하게 조합하는 방법도 다룸
      현대 암호학의 큰 부분은 안전한 조합을 찾아내는 일임
  • 이 스레드에서 많은 사람이 이론 없는 실습 중심 암호학 학습에 관심 있어 보임. 그런 경우라면 HN MVP tptacek의 cryptopals.com을 보면 좋음

  • 이런 내용을 CTF 형식으로 연습하고 싶다면 https://cryptohack.org/를 추천함. 훌륭한 사이트임

  • 훌륭한 강의이고 내 커리어 성장에 중요한 역할을 했음
    Dan Boneh가 a16z crypto 연구팀의 어드바이저이기도 하며[1], 그들과 함께 블록체인 관련 콘텐츠를 많이 만든다는 점도 눈여겨볼 만함[2]
    [1]: https://a16zcrypto.com/research/
    [2]: https://a16zcrypto.com/team/dan-boneh/

  • 공개키 암호화
    전부 RSA임. 암호학 튜토리얼들도 이제 타원곡선 암호를 좀 넣어주면 안 되나?

    • 서로 다른 걸 보고 있는 걸 수도 있지만, 링크에는 ElGamal 암호화가 나오고, 이는 이산 로그 기반임
      현대 구현은 타원곡선을 쓰고, 역사적으로는 큰 소수체의 부분군에서 이산 로그를 썼을 것임. 또한 BLS 서명도 다루는데, 이건 전적으로 타원곡선 기반임
      대체로 보안이 이산 로그에 의존하는 것은 무엇이든 타원곡선으로 구현할 수 있음. 하지만 입문 암호학 수업에서는 대부분 필요한 것이 소수 차수 군이고, 타원곡선도 대체로 블랙박스 소수 차수 군처럼 다룰 수 있어서 이를 구현 세부사항으로 취급함
      BLS 서명은 예외임. 쌍선형 페어링이 필요하고, 이는 단순한 블랙박스 소수 차수 군이 아닌 특별한 종류의 타원곡선을 요구함
      타원곡선으로 할 수 있는 훌륭한 대수기하학 트릭은 많지만, 그런 내용은 입문 암호학 수업에서는 거의 나오지 않을 것이고, 어쩌면 어떤 컴퓨터과학 수업에서도 보기 어려울 수 있음
  • Coursera의 Cryptography II 강의를 아직 기다리는 사람?

  • 그가 공동 저술한 책 A Graduate Course in Applied Cryptography가 매우 도움이 됐음
    https://toc.cryptobook.us/