QRSA OTP Authentication

1ย เบžเบฑเบ™+
เบ”เบฒเบงเป‚เบซเบผเบ”
เบ›เบฐเป€เบžเบ”เป€เบ™เบทเป‰เบญเบซเบฒ
เบ—เบธเบเบ„เบปเบ™
เบฎเบนเบšเปœเป‰เบฒเบˆเป
เบฎเบนเบšเปœเป‰เบฒเบˆเป

เบเปˆเบฝเบงเบเบฑเบšเปเบญเบฑเบšเบ™เบตเป‰

เบ™เบตเป‰เปเบกเปˆเบ™ app เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰เบœเปˆเบฒเบ™เบ—เบฒเบ‡เป‚เบ—เบฅเบฐเบชเบฑเบšเบกเบทเบ–เบทเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เป‚เบ”เบเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ. app เปเบกเปˆเบ™เบ—เบตเปˆเบ‡เบฒเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰.
(เป€เบšเบดเปˆเบ‡เบšเบปเบšเบ•เบดเบ”เบ•เบฒเบกเบฅเบธเบ” GitHub เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡)
app เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบเบดเบ”เบˆเบฐเบเบฒเบ™เบญเบฒเป„เบช, เป€เบ›เบฑเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบ—เบธเบเบžเบฒเบเบชเปˆเบงเบ™. เป€เบกเบทเปˆเบญเปƒเบ”เบ—เบตเปˆ app เปเบกเปˆเบ™เป„เบ”เป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, app เบ—เบตเปˆเบชเป‰เบฒเบ‡ keypair เบญเบธเบ›เบฐเบเบญเบ™เบžเบดเป€เบชเบ”เบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบตเบงเบดเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ app เป„เบ”เป‰ (เบˆเบปเบ™เบเปˆเบงเบฒเบ–เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบ•เบปเบ™). เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ app เบˆเบฐเบšเปเปˆเบฅเบปเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก.

GitHub Tracker: https://github.com/sebastiannielsen/QRSA

prerequisites เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปƒเบŠเป‰ app เป„เบ”เป‰:
1 เป‚เบ—เบฅเบฐเบชเบฑเบšเบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเบฎเบฒเบ”เปเบง. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Chip" เบžเบฒเบเปƒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบšเป„เบ”เป‰, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบชเปเบฒเป€เบ™เบปเบฒเป€เบญเบปเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เป„เบ›เบ—เบฒเบ‡เป‚เบ—เบฅเบฐเบชเบฑเบšเป„เบ”เป‰.
2 เบฎเป‰เบฒเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบฎเป‰เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบซเบ™เป‰เบฒเบˆเป Lock PIN, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เป€เบ›เบฑเบ™. เบ–เบญเบ™เบซเบ™เป‰เบฒเบˆเป lock เป„เบ”เป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เบ™เบญเบเบˆเบฒเบเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบžเบทเปˆเบญเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบซเบ™เป‰เบฒเบˆเป lock.
3 เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบˆเป lock เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฎเบนเบšเปเบšเบšเป‚เบ—เบฅเบฐเบชเบฑเบš.
4 chip เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบžเบฒเบเปƒเบ™เป‚เบ—เบฅเบฐเบชเบฑเบš, เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ 2048 bit RSA / ECB / PKCS1.5
5 เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเป‚เบ—เบฅเบฐเบชเบฑเบšเบฎเบฒเบเบ–เบฒเบ™เบขเปˆเบฒเบ‡เบ–เบฒเบงเบญเบ™เบญเบฒเบ”เบˆเบฐเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™ chip เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.

เป€เบžเบทเปˆเบญเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™ qrsa URL: // e เบˆเบฒเบเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบซเบผเบทเบ—เบตเปˆเบ„เป‰เบฒเบเบเบฑเบ™. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบœเปˆเบฒเบ™ URL เป‚เบ—เบเบฑเบš, เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ qrsa: // u. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ u, เบ—เปˆเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบ›เบฑเบ™ "s" เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ HTTP, เบซเบผเบทเบซเบเบฑเบ‡เบญเบตเบเปเบ”เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ HTTP. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบตเปˆเบขเบนเปˆเป€เบงเบฑเบšเป„เบŠเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ, เป‚เบ”เบเบšเปเปˆเบกเบตเป‚เบ„เบ‡เบเบฒเบ™, เปƒเบ™เบฎเบนเบšเปเบšเบš URLSafe Base64. เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบœเบ™เบงเบเป€เบ‚เบปเป‰เบฒเบเบฑเบšเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡ URL. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบญเบธเบ›เบฐเบเบญเบ™เปเบกเปˆเบ™เบšเปเปˆ, เบกเบฑเบ™เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒ INCOMPATIBLE_DEVICE เปเบฅเบฐเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰.

เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบ—เปˆเบฒเบ™เป€เบ›เบตเบ” qrsa url เป„เบ”เป‰: // s เบซเบฅเบท qrsa: // c เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป‚เบ”เบเบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” URLSafe Base64 เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” RSA เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเปƒเบ™เบฎเบนเบšเปเบšเบš PADDING :: OTP :: เบ‚เปเป‰เบ„เบงเบฒเบก :: HASH :: PADDING. เป„เบ”เป‰ "s" เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบเบดเบ”เบˆเบฐเบเปเบฒเบเบฒเบ™เบชเบฐเปเบเบ™เปเบฅเบฐเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบก OTP เปƒเบ™เบซเบ™เป‰เบฒเบˆเป. "C" เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฅเบดเบเบเบดเบ”เบˆเบฐเบเปเบฒ. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบเบปเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบฅเบฐเบซเบฑเบ” OTP เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเปƒเบ™ clipboard เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ—เบฑเบ™เบ—เบตเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบงเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบžเบฒเบเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก OTP.
HASH เปเบกเปˆเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡ md5 เบญเบญเบเบˆเบฒเบ OTP + เบ‚เปเป‰เบ„เบงเบฒเบก + OTP, เบšเปˆเบญเบ™เบ—เบตเปˆ + เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบŠเปˆเบญเบเปเบ™เปˆ concatenation. HASH เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเบฒเบ‡เบฎเบนเบšเปเบšเบš rough เบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบต Malleable เบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ sandwiched เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบˆเบฒเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบเบเบฅเบฐเบซเบงเปˆเบฒเบ‡ OTP เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบก.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ screenshots เบ‚เบญเบ‡ app เป„เบ”เป‰เบ–เบทเบ censored เป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบเบฒเบ™เบ„เป‰เบฒเปเบฅเบฐ / เบซเบผเบทเบเบฒเบ™เบฅเบดเบ‚เบฐเบชเบดเบ”เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ” (UI เบ‚เบญเบ‡เบซเบธเปˆเบ™เบเบปเบ™เปเบฅเบฐเบญเบทเปˆเบ™เป†เบเบดเบ”เปเบกเปˆเบ™เบฅเบดเบ‚เบฐเบชเบดเบ”เบ›เป‰เบญเบ‡เบเบฑเบ™), เป€เบ›เบฑเบ™เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เปƒเบ™ app เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบฒเบ app เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™.

เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ app, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒ GitHub เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เป€เบ›เบฑเบ™ app เบ™เบตเป‰เปเบกเปˆเบ™ Open Source.
เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบชเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบปเบšเบ•เบดเบ”เบ•เบฒเบกเบฅเบธเบ” GitHub เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.
เบญเบฑเบšเป€เบ”เบ”เปเบฅเป‰เบงเป€เบกเบทเปˆเบญ
1 เบช.เบซ. 2016

เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™

เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเป€เบฅเบตเปˆเบกเบ”เป‰เบงเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบฑเบšเบเบณ เปเบฅเบฐ เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบ™เบงเปƒเบ”. เบงเบดเบ—เบตเบ›เบฐเบ•เบดเบšเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง เปเบฅเบฐ เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ™เบณเปƒเบŠเป‰, เบžเบฒเบเบžเบทเป‰เบ™ เปเบฅเบฐ เบญเบฒเบเบธเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰ เปเบฅเบฐ เบญเบฒเบ”เบˆเบฐเบญเบฑเบšเป€เบ”เบ”เบกเบฑเบ™เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›.
เบšเปเปˆเป„เบ”เป‰เป„เบ”เป‰เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก
เบชเบถเบเบชเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบเบฒเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปเบ™เบงเปƒเบ”
เบšเปเปˆเป„เบ”เป‰เป€เบเบฑเบšเบเบณเบ‚เปเป‰เบกเบนเบ™
เบชเบถเบเบชเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบเบฒเบ”เบเบฒเบ™เป€เบเบฑเบšเบเบณเบ‚เปเป‰เบกเบนเบ™เปเบ™เบงเปƒเบ”

เบกเบตเบซเบเบฑเบ‡เปƒเปเปˆ

1.4:
- Added Md5 hash verification, to further protect against malleability attacks.
1.3:
- Improved code so the app can more reliable kill itself.
1.2:
- Added OTP into @string/app_name to match Google Play app name.
1.1:
- Changed enroll function to exclude linebreaks in the public key.
- Added new "u" enroll function. Read the description or GitHub page for more information. The "u" enroll function is recommended when enrolling from a computer.

เบเปˆเบฒเบเบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เปเบญเบฑเบš