Crypto
-
[Crypto][theory]Private Set IntersectionCrypto 2025. 2. 20. 00:51
최근 동형 암호를 공부하면서 관련된 응용 주제 중 Private Set Intersection에 대해 논문을 읽고 이를 Linux 환경에서 구현해보고 있다.오늘은 PSI에 대한 개념을 가볍게 알아보자. Private Set IntersectionPSIAlice와 Bob이 있다. Alice는 {1, 2, 3}을 가지고 있고, Bob은 {1, 3, 4, 5, 9}를 가지고 있다.Alice는 자신과 Bob의 교집합에는 어떤 원소가 있는지, 즉 공통으로 가지고 있는 원소가 무엇인지 알고 싶다. 그럴러면 Bob의 원소에는 무엇이 있는지 Alice가 직접 확인해야 할 것이다. 그렇게 되면 Bob의 정보가 Alice에게 유출되는 것으로 볼 수 있다.Private Set Intersection은 위의 상황을 ..
-
[Crypto][lecture]1. 동형 암호homomorphicencryption란?Crypto 2025. 1. 8. 00:29
오늘날 우리에게 클라우드 서비스는 실생활에서 많이 접하는 서비스 중 하나이다.iCloud, Google photo 등.. 나온 예시 중에 구글 포토를 예로 들어보자. 구글 포토 어플을 들어가보면 단순히 사진들을 저장해 놓는게 아니라, 특정 주제별로 분류를 자동으로 알아서 해준다.인물 각각 한명씩, 문서를 찍은 사진들, 등등..이러한 분류는 단순히 이뤄지는 게 아니다. 머신러닝을 이용한 분류classification이다. 구글 포토를 운영하는 서버 어디선가 우리의 사진들은 끊임없이 어떤 모델들에게 학습되는 재료로 사용되고 있을 것이다. 그런데 만약 우리 사진들 중에 누군가에게 보여져선 안되는 개인 정보가 포함되어있다면 어떨까? 그 사진들이 클라우드 서버 어딘가 정처를 떠돌고 있는걸 상상하면, 당장은 무..
-
[Crypto][CTF]hashbrown - Length Extension AttackCrypto 2024. 11. 13. 01:19
DescriptionI made fresh hashbrowns fresh hash function. - hashbrown.pyimport os# pip install pycryptodomefrom Crypto.Cipher import AESflag = "bctf{????????????????}"secret = os.urandom16my_message = "\n".join( [ "Grate the raw potatoes with a cheese grater, place them into a bowl and cover completely with water. Let sit for 10 minutes.", "Drain the grated potatoes well; if thi..
-
[Crypto][CTF]Bigger is Better - RSA Wiener AttackCrypto 2024. 10. 29. 19:06
DescriptionI heard choosing a small value for e when creating an RSA key pair is a bad idea. So I switched it up! - dist.txtN = 0xa0d9f425fe1246c25b8c3708b9f6d7747dd5b5e7f79719831c5cbe19fb7bab66ed62719b3fc6090120d2cfe1410583190cd650c32a4151550732b0fc97130e5f02aa26cb829600b6ab452b5b11373ec69d4eaae6c392d92da8bcbea85344af9d4699e36fdca075d33f58049fd0a9f6919f3003512a261a00985dc3d9843a822974df30b81732..
-
[Crypto][CTF]YYYES - AES CBC AttackCrypto 2024. 10. 13. 22:59
Description- YYY가 AES 플래그 서버를 운영하고 있어요. 무엇이든 암호화하고 복호화 할 수 있다던데… 플래그를 획득해주세요! - prob.py#!/usr/bin/env python3from Crypto.Util.Padding import pad, unpadfrom Crypto.Cipher import AESimport osBLOCK_SIZE = 16flag = open"flag", "rb".readkey = os.urandomBLOCK_SIZE# perfectly protected!iv = keyprintivfor _ in range5: iv = AES.newkey, AES.MODE_CBC, b'\x00' * 16.encryptivprintivencrypt..