How to Implement Deterministic Encryption Safely in .NET The Next CEO of Stack OverflowUsing HMAC as a nonce with AES-CTR encrypt-and-MACWhat Are the Risks of AES-GCM [Key, Nonce, Message] where Nonce = MessageDeterministic nonces in CTR modeWhich gives better deterministic encryption SIV or Plain ECB mode?Security of this deterministic encryption scheme(Re-)Using deterministic IV in CTR mode / How to: deterministic AESWhy is synthetic IV (SIV) mode considered deterministic authenticated encryption (DAE)?Deterministic encryption for a limited space: using HMAC as IVIs deterministic encryption appropriate for low entropy plaintext when CPA is not a concern?Are there any misuse-resistant asymmetric encryption schemes?What Are the Risks of AES-GCM [Key, Nonce, Message] where Nonce = MessageDeterministic Authenticated Encryption with AES-OFB and HMAC

Is there a difference between "Fahrstuhl" and "Aufzug"?

Traveling with my 5 year old daughter (as the father) without the mother from Germany to Mexico

Does destroying a Lich's phylactery destroy the soul within it?

How to get the last not-null value in an ordered column of a huge table?

Can Sneak Attack be used when hitting with an improvised weapon?

Aggressive Under-Indexing and no data for missing index

AB diagonalizable then BA also diagonalizable

Pulling the principal components out of a DimensionReducerFunction?

How to find image of a complex function with given constraints?

How to use ReplaceAll on an expression that contains a rule

Regression vs Random Forest - Combination of features

Decide between Polyglossia and Babel for LuaLaTeX in 2019

Can I calculate next year's exemptions based on this year's refund/amount owed?

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

Is "three point ish" an acceptable use of ish?

Is a distribution that is normal, but highly skewed, considered Gaussian?

Is it okay to majorly distort historical facts while writing a fiction story?

Why doesn't UK go for the same deal Japan has with EU to resolve Brexit?

Is French Guiana a (hard) EU border?

Is dried pee considered dirt?

What is the difference between "hamstring tendon" and "common hamstring tendon"?

Inexact numbers as keys in Association?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

How do I fit a non linear curve?



How to Implement Deterministic Encryption Safely in .NET



The Next CEO of Stack OverflowUsing HMAC as a nonce with AES-CTR encrypt-and-MACWhat Are the Risks of AES-GCM [Key, Nonce, Message] where Nonce = MessageDeterministic nonces in CTR modeWhich gives better deterministic encryption SIV or Plain ECB mode?Security of this deterministic encryption scheme(Re-)Using deterministic IV in CTR mode / How to: deterministic AESWhy is synthetic IV (SIV) mode considered deterministic authenticated encryption (DAE)?Deterministic encryption for a limited space: using HMAC as IVIs deterministic encryption appropriate for low entropy plaintext when CPA is not a concern?Are there any misuse-resistant asymmetric encryption schemes?What Are the Risks of AES-GCM [Key, Nonce, Message] where Nonce = MessageDeterministic Authenticated Encryption with AES-OFB and HMAC










2












$begingroup$


I am trying to implement a deterministic encryption scheme in .NET. This link suggests I use AES-SIV mode encryption. An alternative is to use AES-CTR [ k1, nonce, message] mode with HMAC[ k2, message] as the nonce. This is effectively the same as AES-SIV.



In .NET, there is no implementation of AES-SIV. AES-CTR mode is also not available in .NET. The only .NET compatible library which implements AES-SIV I can find is Miscreant .NET. This is not FIPS validated.



Does anyone have any suggestions on how to implement a deterministic encryption scheme in .NET?



This post is a continuation of a previous post.



My Project: I have several bankers who will send the balance information for thousands of bank accounts to a server. The account numbers will be encrypted using this scheme prior to sending to the server for security purposes. The server deliberately will not have the private key [I'm setting up a zero-knowledge encryption scheme]. On the client side, Banker1 and Banker2 must be able to encrypt the account number in a deterministic way that allows any Banker to decrypt account numbers returned from the server. For this reason, I decided to use HMAC(message) as the nonce for my encryption scheme and append it to the ciphertext. AES-CTR[ k1, nonce, message] || HMAC[ k2, message] where nonce = HMAC[ k2, message].



Thank you!










share|improve this question









New contributor




user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$
















    2












    $begingroup$


    I am trying to implement a deterministic encryption scheme in .NET. This link suggests I use AES-SIV mode encryption. An alternative is to use AES-CTR [ k1, nonce, message] mode with HMAC[ k2, message] as the nonce. This is effectively the same as AES-SIV.



    In .NET, there is no implementation of AES-SIV. AES-CTR mode is also not available in .NET. The only .NET compatible library which implements AES-SIV I can find is Miscreant .NET. This is not FIPS validated.



    Does anyone have any suggestions on how to implement a deterministic encryption scheme in .NET?



    This post is a continuation of a previous post.



    My Project: I have several bankers who will send the balance information for thousands of bank accounts to a server. The account numbers will be encrypted using this scheme prior to sending to the server for security purposes. The server deliberately will not have the private key [I'm setting up a zero-knowledge encryption scheme]. On the client side, Banker1 and Banker2 must be able to encrypt the account number in a deterministic way that allows any Banker to decrypt account numbers returned from the server. For this reason, I decided to use HMAC(message) as the nonce for my encryption scheme and append it to the ciphertext. AES-CTR[ k1, nonce, message] || HMAC[ k2, message] where nonce = HMAC[ k2, message].



    Thank you!










    share|improve this question









    New contributor




    user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      2












      2








      2





      $begingroup$


      I am trying to implement a deterministic encryption scheme in .NET. This link suggests I use AES-SIV mode encryption. An alternative is to use AES-CTR [ k1, nonce, message] mode with HMAC[ k2, message] as the nonce. This is effectively the same as AES-SIV.



      In .NET, there is no implementation of AES-SIV. AES-CTR mode is also not available in .NET. The only .NET compatible library which implements AES-SIV I can find is Miscreant .NET. This is not FIPS validated.



      Does anyone have any suggestions on how to implement a deterministic encryption scheme in .NET?



      This post is a continuation of a previous post.



      My Project: I have several bankers who will send the balance information for thousands of bank accounts to a server. The account numbers will be encrypted using this scheme prior to sending to the server for security purposes. The server deliberately will not have the private key [I'm setting up a zero-knowledge encryption scheme]. On the client side, Banker1 and Banker2 must be able to encrypt the account number in a deterministic way that allows any Banker to decrypt account numbers returned from the server. For this reason, I decided to use HMAC(message) as the nonce for my encryption scheme and append it to the ciphertext. AES-CTR[ k1, nonce, message] || HMAC[ k2, message] where nonce = HMAC[ k2, message].



      Thank you!










      share|improve this question









      New contributor




      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I am trying to implement a deterministic encryption scheme in .NET. This link suggests I use AES-SIV mode encryption. An alternative is to use AES-CTR [ k1, nonce, message] mode with HMAC[ k2, message] as the nonce. This is effectively the same as AES-SIV.



      In .NET, there is no implementation of AES-SIV. AES-CTR mode is also not available in .NET. The only .NET compatible library which implements AES-SIV I can find is Miscreant .NET. This is not FIPS validated.



      Does anyone have any suggestions on how to implement a deterministic encryption scheme in .NET?



      This post is a continuation of a previous post.



      My Project: I have several bankers who will send the balance information for thousands of bank accounts to a server. The account numbers will be encrypted using this scheme prior to sending to the server for security purposes. The server deliberately will not have the private key [I'm setting up a zero-knowledge encryption scheme]. On the client side, Banker1 and Banker2 must be able to encrypt the account number in a deterministic way that allows any Banker to decrypt account numbers returned from the server. For this reason, I decided to use HMAC(message) as the nonce for my encryption scheme and append it to the ciphertext. AES-CTR[ k1, nonce, message] || HMAC[ k2, message] where nonce = HMAC[ k2, message].



      Thank you!







      ctr nonce deterministic-encryption siv






      share|improve this question









      New contributor




      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 33 mins ago









      kelalaka

      8,60022351




      8,60022351






      New contributor




      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 2 hours ago









      user67091user67091

      111




      111




      New contributor




      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      user67091 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          1 Answer
          1






          active

          oldest

          votes


















          3












          $begingroup$

          You can safely use HMAC-SHA256 instead of the SIV mode custom PRF to derive the nonce/authentication tag. There's some caveats:



          • HMAC-SHA256 gives a 256-bit output; you'll have to truncate it to the nonce size.


          • HMAC-SHA256 takes in a single bit string, so it can't distinguish the boundary between a header (unencrypted associated data) and payload (encrypted message); the SIV mode custom PRF is defined on a tuple of bit strings. So make sure that if you compute HMAC over more than just a ciphertext, you uniquely encode the tuple of $(a, c)$ as a bit string you pass to HMAC-SHA256.



          • Beware limits on total volume of data for AES-SIV or similar! For example, if your ‘AES-CTR’ takes a 96-bit nonce (as AES-GCM uses), you must limit your total volume of data to well below $2^48$ messages, so that there is no danger of nonce collision. For example, you might limit it to a billion messages, $2^30$.



            AES-SIV internally uses $operatornameAES_k(n) mathbin| operatornameAES_k(n + 1) mathbin| operatornameAES_k(n + 2) mathbin| cdots$ with a 128-bit nonce $n$, instead of what is usually meant by AES-CTR, which is $operatornameAES_k(n mathbin| 0) mathbin| operatornameAES_k(n mathbin| 1) mathbin| operatornameAES_k(n mathbin| 2) mathbin| cdots$ with a (say) 96-bit nonce $n$ and 32-bit block counter like AES-GCM uses. The details don't matter that much as long as you pay close attention to the advertised adversary advantage and data volume limits.



          • Make sure to write known-answer test vectors for the system you think you're implementing, using another tool or another library, so that you can do quick self-tests to confirm interoperability.



          • Avoid the term ‘zero-knowledge’ unless you're actually doing cryptography involving zero-knowledge proofs, which are a specific technical concept involving provers, verifiers, extractors, and simulators. Saying ‘zero-knowledge encryption’ proudly announces that you have more money for a marketing department than for a cryptography engineering department.



            • Even if you encrypt identifiers, there's lots of information to be learned from network structures and databases with ‘anonymized’ (really, pseudonymized) identifiers. So ‘zero-knowledge’ is especially inappropriate here if you're only concealing the labels, not the structure of the database.


            • In this scenario, I would advise you to either (a) persuade your management to invest more money in cryptography engineering including hiring competent implementors and auditors, or (b) start polishing your CV, because this job is doomed. This is not a comment on your value or intelligence as a person! Obviously you're working hard to learn. But it is not confidence-inspiring to hear that your management are tasking someone who has to ask a pseudonymous forum of strangers on the internet for help with cryptographic basics in order to handle private banking information for thousands of clients over the internet.







          share|improve this answer











          $endgroup$












          • $begingroup$
            1. I will truncate the nonce size appropriately.
            $endgroup$
            – user67091
            17 mins ago











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "281"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          user67091 is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcrypto.stackexchange.com%2fquestions%2f68443%2fhow-to-implement-deterministic-encryption-safely-in-net%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3












          $begingroup$

          You can safely use HMAC-SHA256 instead of the SIV mode custom PRF to derive the nonce/authentication tag. There's some caveats:



          • HMAC-SHA256 gives a 256-bit output; you'll have to truncate it to the nonce size.


          • HMAC-SHA256 takes in a single bit string, so it can't distinguish the boundary between a header (unencrypted associated data) and payload (encrypted message); the SIV mode custom PRF is defined on a tuple of bit strings. So make sure that if you compute HMAC over more than just a ciphertext, you uniquely encode the tuple of $(a, c)$ as a bit string you pass to HMAC-SHA256.



          • Beware limits on total volume of data for AES-SIV or similar! For example, if your ‘AES-CTR’ takes a 96-bit nonce (as AES-GCM uses), you must limit your total volume of data to well below $2^48$ messages, so that there is no danger of nonce collision. For example, you might limit it to a billion messages, $2^30$.



            AES-SIV internally uses $operatornameAES_k(n) mathbin| operatornameAES_k(n + 1) mathbin| operatornameAES_k(n + 2) mathbin| cdots$ with a 128-bit nonce $n$, instead of what is usually meant by AES-CTR, which is $operatornameAES_k(n mathbin| 0) mathbin| operatornameAES_k(n mathbin| 1) mathbin| operatornameAES_k(n mathbin| 2) mathbin| cdots$ with a (say) 96-bit nonce $n$ and 32-bit block counter like AES-GCM uses. The details don't matter that much as long as you pay close attention to the advertised adversary advantage and data volume limits.



          • Make sure to write known-answer test vectors for the system you think you're implementing, using another tool or another library, so that you can do quick self-tests to confirm interoperability.



          • Avoid the term ‘zero-knowledge’ unless you're actually doing cryptography involving zero-knowledge proofs, which are a specific technical concept involving provers, verifiers, extractors, and simulators. Saying ‘zero-knowledge encryption’ proudly announces that you have more money for a marketing department than for a cryptography engineering department.



            • Even if you encrypt identifiers, there's lots of information to be learned from network structures and databases with ‘anonymized’ (really, pseudonymized) identifiers. So ‘zero-knowledge’ is especially inappropriate here if you're only concealing the labels, not the structure of the database.


            • In this scenario, I would advise you to either (a) persuade your management to invest more money in cryptography engineering including hiring competent implementors and auditors, or (b) start polishing your CV, because this job is doomed. This is not a comment on your value or intelligence as a person! Obviously you're working hard to learn. But it is not confidence-inspiring to hear that your management are tasking someone who has to ask a pseudonymous forum of strangers on the internet for help with cryptographic basics in order to handle private banking information for thousands of clients over the internet.







          share|improve this answer











          $endgroup$












          • $begingroup$
            1. I will truncate the nonce size appropriately.
            $endgroup$
            – user67091
            17 mins ago















          3












          $begingroup$

          You can safely use HMAC-SHA256 instead of the SIV mode custom PRF to derive the nonce/authentication tag. There's some caveats:



          • HMAC-SHA256 gives a 256-bit output; you'll have to truncate it to the nonce size.


          • HMAC-SHA256 takes in a single bit string, so it can't distinguish the boundary between a header (unencrypted associated data) and payload (encrypted message); the SIV mode custom PRF is defined on a tuple of bit strings. So make sure that if you compute HMAC over more than just a ciphertext, you uniquely encode the tuple of $(a, c)$ as a bit string you pass to HMAC-SHA256.



          • Beware limits on total volume of data for AES-SIV or similar! For example, if your ‘AES-CTR’ takes a 96-bit nonce (as AES-GCM uses), you must limit your total volume of data to well below $2^48$ messages, so that there is no danger of nonce collision. For example, you might limit it to a billion messages, $2^30$.



            AES-SIV internally uses $operatornameAES_k(n) mathbin| operatornameAES_k(n + 1) mathbin| operatornameAES_k(n + 2) mathbin| cdots$ with a 128-bit nonce $n$, instead of what is usually meant by AES-CTR, which is $operatornameAES_k(n mathbin| 0) mathbin| operatornameAES_k(n mathbin| 1) mathbin| operatornameAES_k(n mathbin| 2) mathbin| cdots$ with a (say) 96-bit nonce $n$ and 32-bit block counter like AES-GCM uses. The details don't matter that much as long as you pay close attention to the advertised adversary advantage and data volume limits.



          • Make sure to write known-answer test vectors for the system you think you're implementing, using another tool or another library, so that you can do quick self-tests to confirm interoperability.



          • Avoid the term ‘zero-knowledge’ unless you're actually doing cryptography involving zero-knowledge proofs, which are a specific technical concept involving provers, verifiers, extractors, and simulators. Saying ‘zero-knowledge encryption’ proudly announces that you have more money for a marketing department than for a cryptography engineering department.



            • Even if you encrypt identifiers, there's lots of information to be learned from network structures and databases with ‘anonymized’ (really, pseudonymized) identifiers. So ‘zero-knowledge’ is especially inappropriate here if you're only concealing the labels, not the structure of the database.


            • In this scenario, I would advise you to either (a) persuade your management to invest more money in cryptography engineering including hiring competent implementors and auditors, or (b) start polishing your CV, because this job is doomed. This is not a comment on your value or intelligence as a person! Obviously you're working hard to learn. But it is not confidence-inspiring to hear that your management are tasking someone who has to ask a pseudonymous forum of strangers on the internet for help with cryptographic basics in order to handle private banking information for thousands of clients over the internet.







          share|improve this answer











          $endgroup$












          • $begingroup$
            1. I will truncate the nonce size appropriately.
            $endgroup$
            – user67091
            17 mins ago













          3












          3








          3





          $begingroup$

          You can safely use HMAC-SHA256 instead of the SIV mode custom PRF to derive the nonce/authentication tag. There's some caveats:



          • HMAC-SHA256 gives a 256-bit output; you'll have to truncate it to the nonce size.


          • HMAC-SHA256 takes in a single bit string, so it can't distinguish the boundary between a header (unencrypted associated data) and payload (encrypted message); the SIV mode custom PRF is defined on a tuple of bit strings. So make sure that if you compute HMAC over more than just a ciphertext, you uniquely encode the tuple of $(a, c)$ as a bit string you pass to HMAC-SHA256.



          • Beware limits on total volume of data for AES-SIV or similar! For example, if your ‘AES-CTR’ takes a 96-bit nonce (as AES-GCM uses), you must limit your total volume of data to well below $2^48$ messages, so that there is no danger of nonce collision. For example, you might limit it to a billion messages, $2^30$.



            AES-SIV internally uses $operatornameAES_k(n) mathbin| operatornameAES_k(n + 1) mathbin| operatornameAES_k(n + 2) mathbin| cdots$ with a 128-bit nonce $n$, instead of what is usually meant by AES-CTR, which is $operatornameAES_k(n mathbin| 0) mathbin| operatornameAES_k(n mathbin| 1) mathbin| operatornameAES_k(n mathbin| 2) mathbin| cdots$ with a (say) 96-bit nonce $n$ and 32-bit block counter like AES-GCM uses. The details don't matter that much as long as you pay close attention to the advertised adversary advantage and data volume limits.



          • Make sure to write known-answer test vectors for the system you think you're implementing, using another tool or another library, so that you can do quick self-tests to confirm interoperability.



          • Avoid the term ‘zero-knowledge’ unless you're actually doing cryptography involving zero-knowledge proofs, which are a specific technical concept involving provers, verifiers, extractors, and simulators. Saying ‘zero-knowledge encryption’ proudly announces that you have more money for a marketing department than for a cryptography engineering department.



            • Even if you encrypt identifiers, there's lots of information to be learned from network structures and databases with ‘anonymized’ (really, pseudonymized) identifiers. So ‘zero-knowledge’ is especially inappropriate here if you're only concealing the labels, not the structure of the database.


            • In this scenario, I would advise you to either (a) persuade your management to invest more money in cryptography engineering including hiring competent implementors and auditors, or (b) start polishing your CV, because this job is doomed. This is not a comment on your value or intelligence as a person! Obviously you're working hard to learn. But it is not confidence-inspiring to hear that your management are tasking someone who has to ask a pseudonymous forum of strangers on the internet for help with cryptographic basics in order to handle private banking information for thousands of clients over the internet.







          share|improve this answer











          $endgroup$



          You can safely use HMAC-SHA256 instead of the SIV mode custom PRF to derive the nonce/authentication tag. There's some caveats:



          • HMAC-SHA256 gives a 256-bit output; you'll have to truncate it to the nonce size.


          • HMAC-SHA256 takes in a single bit string, so it can't distinguish the boundary between a header (unencrypted associated data) and payload (encrypted message); the SIV mode custom PRF is defined on a tuple of bit strings. So make sure that if you compute HMAC over more than just a ciphertext, you uniquely encode the tuple of $(a, c)$ as a bit string you pass to HMAC-SHA256.



          • Beware limits on total volume of data for AES-SIV or similar! For example, if your ‘AES-CTR’ takes a 96-bit nonce (as AES-GCM uses), you must limit your total volume of data to well below $2^48$ messages, so that there is no danger of nonce collision. For example, you might limit it to a billion messages, $2^30$.



            AES-SIV internally uses $operatornameAES_k(n) mathbin| operatornameAES_k(n + 1) mathbin| operatornameAES_k(n + 2) mathbin| cdots$ with a 128-bit nonce $n$, instead of what is usually meant by AES-CTR, which is $operatornameAES_k(n mathbin| 0) mathbin| operatornameAES_k(n mathbin| 1) mathbin| operatornameAES_k(n mathbin| 2) mathbin| cdots$ with a (say) 96-bit nonce $n$ and 32-bit block counter like AES-GCM uses. The details don't matter that much as long as you pay close attention to the advertised adversary advantage and data volume limits.



          • Make sure to write known-answer test vectors for the system you think you're implementing, using another tool or another library, so that you can do quick self-tests to confirm interoperability.



          • Avoid the term ‘zero-knowledge’ unless you're actually doing cryptography involving zero-knowledge proofs, which are a specific technical concept involving provers, verifiers, extractors, and simulators. Saying ‘zero-knowledge encryption’ proudly announces that you have more money for a marketing department than for a cryptography engineering department.



            • Even if you encrypt identifiers, there's lots of information to be learned from network structures and databases with ‘anonymized’ (really, pseudonymized) identifiers. So ‘zero-knowledge’ is especially inappropriate here if you're only concealing the labels, not the structure of the database.


            • In this scenario, I would advise you to either (a) persuade your management to invest more money in cryptography engineering including hiring competent implementors and auditors, or (b) start polishing your CV, because this job is doomed. This is not a comment on your value or intelligence as a person! Obviously you're working hard to learn. But it is not confidence-inspiring to hear that your management are tasking someone who has to ask a pseudonymous forum of strangers on the internet for help with cryptographic basics in order to handle private banking information for thousands of clients over the internet.








          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 1 hour ago

























          answered 1 hour ago









          Squeamish OssifrageSqueamish Ossifrage

          21.8k132100




          21.8k132100











          • $begingroup$
            1. I will truncate the nonce size appropriately.
            $endgroup$
            – user67091
            17 mins ago
















          • $begingroup$
            1. I will truncate the nonce size appropriately.
            $endgroup$
            – user67091
            17 mins ago















          $begingroup$
          1. I will truncate the nonce size appropriately.
          $endgroup$
          – user67091
          17 mins ago




          $begingroup$
          1. I will truncate the nonce size appropriately.
          $endgroup$
          – user67091
          17 mins ago










          user67091 is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          user67091 is a new contributor. Be nice, and check out our Code of Conduct.












          user67091 is a new contributor. Be nice, and check out our Code of Conduct.











          user67091 is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Cryptography Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcrypto.stackexchange.com%2fquestions%2f68443%2fhow-to-implement-deterministic-encryption-safely-in-net%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          acmart: Multiple authors: all with same affiliation, one author an additional affiliationHow to Write Names of Multiple Authors with Shared Affiliation in ACM 2017 Template?Multiple authors with different primary affiliation, but same additional affiliationSame affiliation for all authors without extra packagesIOS-Book-Article.cls: one author with multiple affiliationacmart: Shared Author AffiliationMultiple authors with different primary affiliation, but same additional affiliationAuthor affiliation with only 1 authorAdding Multiple Authors with Different Affiliation in LaTeX ArticleLaTeX: Multiple authors stays on same lineHow to Label Multiple Authors with Same DescriptionHow to make two authors use the same affiliationTwo authors with same affiliation on finished front page

          How to write “ä” and other umlauts and accented letters in bibliography?Accents in BibTeXSorting references with special characters alphabeticallyUse ae ligature in bibliographyEastern European nameInverted circumflex in BibTexBibTex, non-ascii initials and nameptr fproblems with accent in LatexHow to add a Ø to my bibliography from Jabref?References without accentsTroubles when trying to cite St“omer-Verlet in ”title" field of a bib entryComprehensive list of accented charactersHow to type the letter “i” with two dots (diaeresis) in math mode?Problem with glossary text and accented lettersSpecial character in bibliographyAccented letters, Unicode and LaTeX accentsHow to stop natbib from modifying bibliography styleCitation of a paper with non-standard characters by BibtexWrite accented characters to file using writeHow to group the bibliography alphabetically, if some surnames start with “accented” characters?How can I automatically capitalize significant words in my bibliography?

          How to force a table into page width?How to make table spanning textwidthMaking table width fit into text widthTable with tabular, column type p grabbing available spaceMaking widths of tables equal to width of textblocklatex tabular width the same as the textwidthMake tabular span textwidth exactlySet width of table to be the whole line or a given portion of itIs the tabu package obsolete?What is the difference between tabular, tabular* and tabularx environments?How can i set the width of a table?Making table width fit into text widthTabular and grid typesettingMake table use page widthTable exceeds page widthtable width automatically to page widthHow to shrink table to page widthForce table column to be zero widthTable width exceeds the page widthTable extending beyond the page widthforce longtable to text width