김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2026년 2월 25일 수요일

태블릿에서 양자내성암호(격자암호) 돌려보기

 SecureKim     오후 7:30     Encrypt, Lattice-based Cryptography, Quantum, Security     No comments   

 

Termux에서 양자 내성 암호 돌려보기

많은 시행 착오 끝에 성공 !


1. Playstore에서 Termux를 설치한다.


2. 양자 내성 암호 라이브러리 빌드를 위한 셋업


pkg update && pkg upgrade -y

pkg install clang cmake ninja python git -y

pip install setuptools


3. 양자내성암호 소스코드 직접 빌드 (pip로 하면 안됨)

git clone -b main https://github.com/open-quantum-safe/liboqs.git 

cd liboqs 

mkdir build && cd build


- 잦은 에러를 유발 알고리즘 (NTRU Prime) 제외하고 ML-KEM 활성화 설정해서 cmake

cmake -GNinja .. -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PREFIX -DOQS_USE_OPENSSL=OFF -DOQS_KEM_DEFAULT=OFF -DOQS_SIG_DEFAULT=OFF -DOQS_KEM_ML_KEM=ON -DOQS_ENABLE_KEM_NTRUPRIME=OFF


- 빌드

ninja install


- 잘 빌드 되었는지 확인

export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH python -c "import oqs; print('ML-KEM 성공 여부:', 'KeyEncapsulation' in dir(oqs))"


4. C로 만든 엔진을 python에서 쓸 수 있도록 연결

pip install liboqs-python 

# 파이썬이 라이브러리를 찾을 수 있도록 경로 설정

export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH


5. 예제

pip install pycryptodome


import oqs, hashlib, binascii, os

from Crypto.Cipher import AES

from Crypto.Util.Padding import pad, unpad


# 1. ML-KEM 기반 키 교환 (양자 내성)

with oqs.KeyEncapsulation("ML-KEM-768") as alice:

    alice_pub = alice.generate_keypair()

    with oqs.KeyEncapsulation("ML-KEM-768") as bob:

        ciphertext, bob_secret = bob.encap_secret(alice_pub)

    alice_secret = alice.decap_secret(ciphertext)


# 2. 6자리 인증 코드 생성 (중간자 공격 방지)

auth_code = hashlib.sha256(alice_secret).hexdigest()[:6]

print(f"[*] 인증 코드 확인: {auth_code}")


# 3. AES-256-CBC 암호화 통신

key = hashlib.sha256(alice_secret).digest()

iv = os.urandom(16)

msg = "양자 보안 메시지입니다."


# 암호화

cipher = AES.new(key, AES.MODE_CBC, iv)

enc_msg = cipher.encrypt(pad(msg.encode(), 16))

print(f"[-] 암호문: {binascii.hexlify(enc_msg[:10])}...")


# 복호화

dec_cipher = AES.new(key, AES.MODE_CBC, iv)

dec_msg = unpad(dec_cipher.decrypt(enc_msg), 16).decode()

print(f"[+] 복호화 결과: {dec_msg}")








  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
이전 게시물 홈

0 개의 댓글:

댓글 쓰기

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

Blog Archive

  • ▼  2026 (2)
    • ▼  2월 (2)
      • 태블릿에서 양자내성암호(격자암호) 돌려보기
      • 양자컴퓨터와 보안 위협 (쇼어 알고리즘)
  • ►  2025 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  7월 (1)
  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates