Ask for mentor - Improve Bcrypt

Juan Lang juan.lang at gmail.com
Thu May 9 23:09:57 CDT 2013


Hi Kaiyi Zhang,

(or is Zhang Kaiyi?)

I think there's a little misconception in your proposal. Bcrypt the
algorithm is not the same as the BCrypt functions in crypt32. I believe
that Microsoft redesigned their CryptoAPI and more or less renamed their
functions BCrypt*. I don't believe they have any relationship to the Bcrypt
algorithm by Niels Provos and David Mazieres. I don't know how many
applications depend on the Bcrypt* functions in newer crypt32
implementations, vs. the the Crypt* functions that are present in all
versions of crypt32.

If you want feedback on Wine crypto stuff, I'm probably the best to help
you with that. Sorry if I've been a little absent, I'm pretty busy between
my family and my day job of late.

I have another idea for you that I think is tractable, and perhaps up your
alley. The DH and DSS algorithms are still unimplemented in Wine. We
already have tests for them, so I think it should be possible to contribute
implementations. See the tests in dlls/dssenh/tests.

I hope that helps.
--Juan


On Thu, May 9, 2013 at 8:35 PM, Kaiyi Zhang <zky.own.star at gmail.com> wrote:

> Hello everyone:
>
> I am Kaiyi Zhang,A Computer Science and Engineering student from china, my
> major is information security. My nickname in #winehackers is KaiyiZhang. I
> heard the GSOC and I'm very interested in this, wine is tempting to me.I
> have submitted my wine application before the deadline of GSOC. However,
> There are some exams which takes a lot of time, So lack of communication
> with the wine developers. I know it is late to apply for GSoC, however, I'm
> still interesting to the cryptography work in Wine even if I'm not accept
> as an official GSoC2013 student. Cryptography work is difficult, and Wine
> is difficult, so cryptography in Wine is double difficult for a beginner
> like me, could I ask for a mentor for the cryptography work even if my
> proposal is not accepted? To my dear kindly future mentor: I don't know how
> to thank you, but I'll work hard on contributing to the Wine project as
> more as I can. Sincerely appreciate.
>
>
> My idea is bcrypt improvement, I think it's very suitable for me, I
> learned the information security. Cryptography is one of my courses. I
>  once development a Elliptic curve cryptography Demonstration system which
> makes the ECC Graphical. And i found there is blank in bcrypt, I want to do
> some improvement in this. I know there it's difficult for me to develop.
> but i can code some test code firstly. I read the
> dlls/rsaendh/tests/rsaenh.c: test_hashes(),test_des(),test_rsa() etc. and
> test the code on ubuntu successfully.
>
> Here is my  plan:
>
> Week 1 - Week 2
> - Get the Winedebug and document more adept
> - Get more information about bcrypt
> - Bcrypt Wiki: http://en.wikipedia.org/wiki/Bcrypt
>  - A Future-Adaptable Password Scheme:
> http://static.usenix.org/events/usenix99/provos/provos_html/node1.html
>  - File of Bcrypt: http://bcrypt.sourceforge.net/
>  - Read the Document of MSDN about Bcrypt and code some examples
>  - MSDN about Bcrypt:
> http://msdn.microsoft.com/en-us/library/windows/desktop/aa833130(v=vs.85).aspx
>
> Week 3 - Week 5
> -Read some wine tests code and run some tests like:
>  - the basic encryption dll/crypt32/
> - Understand the bcrypt algorithm, there is a lot of code for learning
> like:
>  - A Future-Adaptable Password Scheme:
> http://static.usenix.org/events/usenix99/provos/provos_html/node1.html
>  - https://github.com/rg3/bcrypt
>  - https://code.google.com/p/py-bcrypt/source/browse/bcrypt/bcrypt.c
>
> Week 6 - Week 11
> - Code the BCrypt. According to the MSDN The Steps of Bcrypt
>         - Open the Algorithm Provider
>         - Get or Set Algorithm Properties
>         - Create or Import a key
>         - Perform Cryptiographic Operations
>         - Close the Algorithm Provider
>     There is a cross platform Bcrypt at  http://bcrypt.sourceforge.net.
> if it is possible we can use it and its license compatible with the wine
> lgpl license.
>  - add stub functions for Tests functions() and code the Tests
> functions(). The dlls/rsaenh/tests/rsaenh.c is a good reference. encrypt
> the pdData and compare with the right value. stub BCryptCreateHash()
> BCryptHashData() BCryptDuplicateHash() BCryptDuplicateHash
>  BCryptDestroyHash() for test_hashes(). stub BCryptGenerateSymmetricKey()
> BCryptKeyDerivation() BCryptDestroyKey() for test_key_derivation(). stub
> BCryptGenRandom() for test_gen_random().
>
> Week 12 - End
> - There are also some more cryptions need to tests, I can do more
> improvement these
>
> Thank you.
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20130509/0d9dd33c/attachment-0001.html>


More information about the wine-devel mailing list